OMAPL138arm核跑linux+ipc,dsp核跑sysbios+ipc,重设dsp端程序起始 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9695|回复: 6
打印 上一主题 下一主题

[未解决] OMAPL138arm核跑linux+ipc,dsp核跑sysbios+ipc,重设dsp端程序起始

[复制链接]

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
跳转到指定楼层
楼主
发表于 2017-5-22 12:48:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    OMAPL138arm核跑linux+ipc,dsp核跑sysbios+ipc,如何重设dsp端程序起始。
/ `& \4 G& O' ?2 g# r    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:) ]5 _! L. Q+ T* B
& C5 N$ K/ I% d+ v3 \5 n0 Y$ C
/*. W7 t& v5 _1 i6 v7 N6 c! F* O
*  ======== config.bld ========7 o1 b2 L8 e3 ^- m
*
( M; @$ y  {  \ */
  W/ l$ ?/ |7 W$ V9 E5 A3 {& E
( e' Z% T$ k! z' V4 y3 q( u; D, B# qvar Build = xdc.useModule('xdc.bld.BuildEnvironment');
. L5 u4 W' O- g5 \6 {6 N+ m: N: e" A1 N9 w% r6 o
/*  Memory Map for ti.platforms.evmOMAPL138
$ _! _6 I* m9 d: o% B1 X0 X *
4 Y( p1 Q6 w% F: X* @/ r *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory0 ?6 x  l$ v7 U! ]" h# V5 j3 C* e
*  ------------------------------------------------------------------------& C7 U& @$ _4 ?: {8 {
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
! x5 B! v5 Z/ y. J *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)" s2 ]1 J1 _7 i
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)+ t/ ^( g$ n( `  i
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
" b; J# t$ S4 ]- P *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
# F" P8 y0 i; {( n1 U1 J) q *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------0 o; d' F, G& F' }4 T3 ]
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux% ?1 c  k3 \6 T1 X: f' {
*/
: `( J2 c! @- x1 R- p% n
% ?1 O! \# t) l* o# hvar SR_0 = {
- X& d. U# k# C$ J( t1 M, R, T        name: "SR_0", space: "data", access: "RWX",
' i6 A/ g) v% O        base: 0xC2000000, len: 0x10000,
5 u! R( p' |8 G, n  b        comment: "SR#0 Memory (64 KB)"
2 u) z# g% D/ k. p- Z" S    };9 N3 f, c( \' u" U! |
  f; J% U* P2 a, K
var SR_1 = {5 ^8 `5 Q. [5 [5 g4 V6 Q) q
        name: "SR_1", space: "data", access: "RWX",
3 C' m% s' F' l8 v' P8 J        base: 0xC2010000, len: 0x20000,
: q1 c* z1 C% \8 J7 v        comment: "SR#1 Memory (128 KB)"6 C: }# \) p* w% g
    };
$ {; H2 J' u/ ?& \" _1 i* k* L
8 m* ?( Q% j2 Q, jBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {" R; B, f* \$ |" n8 H0 U
    externalMemoryMap: [
& ]% W, J5 R% p# W) w        [ SR_0.name, SR_0 ],
7 c& q5 L( L" H2 t& w$ [; P        [ SR_1.name, SR_1 ],# f' w6 j, B% N- v2 F2 w! F) V) i
        [ "DSP_PROG", {
; r8 ~) B/ {" R; }3 @( m' \% @# p            name: "DSP_PROG", space: "code/data", access: "RWX",; A: A) W2 @; O. S7 W: w& J* E
            base: 0xC2100000, len: 0x1E00000,
6 [4 t- Y  D2 F" Z$ u- K            comment: "DSP Program Memory (31 MB)"
# {! M, B7 X4 Q) D; z( v, S2 d        }]
' x7 q' Z( Z) k5 w- u5 D( f+ x    ],3 |# R) D4 k6 s* ?% u; `
    codeMemory:  "DSP_PROG",0 f" c# f+ ^/ q4 u! r0 f% ]. \
    dataMemory:  "DSP_PROG",
6 g+ D* a  F9 R$ C! S1 u5 A7 n    stackMemory: "DSP_PROG",
3 ~, ~, c& C- s0 x4 }8 J2 T    l1DMode: "32k",
% b7 g% t9 P  A( d; b    l1PMode: "32k",
+ E0 a, u7 c5 ^+ H5 T    l2Mode: "64k"
0 ~; x$ H( H# A7 R};& [$ ]6 `% p# W$ t5 Q3 }9 X; T

7 j$ ^4 ]) i% _. n9 m% z/*/ u/ j, ]) A3 [& {( {
*  ======== ti.targets.elf.C674 ========2 t6 C7 R# s+ u  t# P
*/
$ @( ^- h3 ]4 f9 p5 _% _2 dvar C674 = xdc.useModule('ti.targets.elf.C674');
: c( }* o) D3 w" RC674.ccOpts.suffix += " -mi10 -mo ";" s  ?: P  H' Z, ]' ?
Build.targets.$add(C674);: U( R2 o" ~/ x

% L7 q2 j/ b4 i7 _
) B" x% |5 u4 F5 v! I7 {; t====================
2 Y, x6 H* ~2 c5 ?. {原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。7 _8 k3 r) m- s6 F7 ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
沙发
 楼主| 发表于 2017-5-22 16:44:41 | 只看该作者
1、直接修改config.bld的DSP_PROG,编译出来的文件map起始不是设定的0xC2100000,还是0xC3000000,为什么?删除了这个文件,工程又编译不了,这个文件有何用?, Z; n# [" A; e, o- }  \
2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL1382 ^3 k. L/ }- g8 |3 z0 d, a
*6 {$ `3 v, b# Y9 a8 X
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory4 E2 G' Y; m4 J( R+ [
*  ------------------------------------------------------------------------
6 j; Q4 r1 B$ v$ k& S *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux! J8 r* ]& ]6 B3 P2 c
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
* K( l( @( q4 x, q *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
. N. {9 ~/ S$ X5 Y *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
* i. r$ q! x- m7 m! H/ R4 V *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)8 @- g5 n' q+ c* g
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
6 n! h6 @* c# L *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
* f. w  G" n! D' B6 L */
8 f$ Z" B" X9 z" }+ E如何将 C2100_0000 - C2FF_FFFF    FF_0000  ( 15 MB)和C380_0000 - C3FF_FFFF    80_0000  (   8 MB)与C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)6 t- E1 x4 i' w# t* }2 B0 c& e! T
合并为一块大的区域作为dsp程序的所有空间5 G1 ^. o8 l3 n( }

' I$ P7 T/ T9 _2 }: l  j现在发现修改平台文件只要用到0xc3000000之前的空间就出现arm和dsp之间的ipc相关都出问题
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
地板
 楼主| 发表于 2017-5-23 16:16:08 | 只看该作者
请教这个slaveloader的list map怎么阅读,同时这些内存入口定义在哪里?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
5#
 楼主| 发表于 2017-5-23 16:53:03 | 只看该作者
发现slaveloader的list map就是编译时的map文件显示的地址。
5 [2 s* s# v* V) `  k
, L: K0 N* R3 T9 l6 w1 y目前将dsp的地址由0xc3000000改为0xc2100000(或0xc2800000)起始,编译之后的程序,arm端和dsp端的ipc建立不起连接,不知道创龙这个还需要修改哪个位置?如果是c300000前面8m和后面c3800000起始的8m一起使用程序没有问题,这是为何?是不是c3000000前面的地址在linux端有什么设置啊?
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
6#
发表于 2017-5-23 17:31:09 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。! Q/ }. N: o2 u5 o7 j& B

' ~8 @# \4 C; Q5 T' Z  \5 ] 40 /*  Memory Map for ti.platforms.evmOMAPL138
/ h5 }/ \+ n3 S: H. E5 S 41  *
9 b+ [! f# a" d% h: k 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory" m6 x( x# `) c& t
43  *  ------------------------------------------------------------------------
; ~  X# @0 s# \# K# e 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux* C4 }; T6 K0 O+ \/ H5 k1 b, |
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
' A- l% [' O* Q# Q: d5 ~ 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)! [6 s* H% P4 u' P$ |# s
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)" q) j' H$ R0 F- t: O
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)( U8 y8 a1 E5 C5 g
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux* s5 U" z0 n1 J) Y' b8 `7 Q: p4 s8 ^
50  */
# S) Y/ t/ |# o$ Z6 J5 N8 |2 e; ?2 [0 Q7 g9 d! O) \3 v
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
5 p5 j9 ]. M! `- {# Y6 V; @: ^! j' N4 g1 K+ l7 N
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。) t; T$ s; S% `* x' O# r

! x0 p2 b' a; o3 }$ E$ }$ }& u  }* D如果需要分配大容量的内存空间:* N4 A$ M% H8 N* M% ^; B7 y/ G
1.改动mem_args参数(u-boot环境变量);
' R9 L+ S3 {8 t. {! h2.改动双核通信工程里面的:shared/config.bld和dsp/Dsp.cfg文件。
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
7#
 楼主| 发表于 2017-5-31 15:55:12 | 只看该作者
这个问题是和http://www.51ele.net/forum.php?mod=viewthread&tid=1872&extra=
6 F: U9 Z' t  J8 y3 e这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
: I0 ~! G, l+ ^8 X& ^share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
. _4 e3 H4 u, V0 P/ P- z7 X' T3 _1 t% I
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

点击跳转“创龙科技服务通”

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2026-1-31 05:08 , Processed in 0.049683 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表