OMAPL138arm核跑linux+ipc,dsp核跑sysbios+ipc,重设dsp端程序起始 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9036|回复: 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端程序起始。3 X8 e) q8 d  b- P5 I( A
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:  x8 M4 d$ S8 \: b! U5 `

; E" q  Z) g- e- N/*& q" j/ ~1 G1 I2 }' E/ h5 f
*  ======== config.bld ========4 K0 g( b( k  f0 \3 i# @$ ^' N
*
  o. m" V! a% s) P2 w  r% N */
4 q- f3 N  X+ O5 I# {$ A1 \& z( E: g8 Q$ r
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
( Z( O5 h4 [* i. M/ R2 k- Z+ H& T- ]
/*  Memory Map for ti.platforms.evmOMAPL138: E1 ], k$ p! Q; D( R6 P( R/ y/ M1 N
*
* Y/ y$ q! J, z; [' p *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
& a# v% X  W6 e5 [2 z! Z *  ------------------------------------------------------------------------1 U% m( O0 u5 Q0 E
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
/ S& e! f  t4 G$ r- v *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
2 ]% X% J( x: g! Q7 U* C *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
( \9 M! V; k& f7 W *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------( U% g; B3 T8 W
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
5 c1 Y7 m) J6 s" M! y/ w0 E" C. U) x *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------0 R. Z$ ^$ g, I0 [
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
4 Z7 C) v3 o! G) N */
6 n0 \; ^' K( O1 e
+ N+ ^3 ~% G2 zvar SR_0 = {  U& H; E( k. z5 l# }7 k9 A2 n
        name: "SR_0", space: "data", access: "RWX",- `2 \6 ~. M' K, A" G6 D& E) F
        base: 0xC2000000, len: 0x10000,
5 T) l, h" u$ _- [0 j2 L        comment: "SR#0 Memory (64 KB)"8 U4 d) ^7 T8 |8 c, T& K
    };
3 M( z+ {& j6 s  ]8 Q1 D1 U9 Q% l8 Y5 l+ J/ \) }/ }/ a$ W
var SR_1 = {
# L/ Z7 @! _5 d! X9 m$ A4 g        name: "SR_1", space: "data", access: "RWX",5 E5 Y: g3 g7 {0 V+ O
        base: 0xC2010000, len: 0x20000,
- C+ M& T8 N7 J) K- ]        comment: "SR#1 Memory (128 KB)"
7 q! v/ j4 v# R9 e    };
4 f: C9 O2 R2 D" x) H  e7 g' S3 ^: X  i7 Z9 \- Z2 X0 |
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {' O: ?, h3 i" l. i( f9 q3 p
    externalMemoryMap: [
1 l7 r/ {$ [( p& k3 P0 \- F) O9 z: Y. ]  f        [ SR_0.name, SR_0 ],
& O$ j  T, ]) z2 A8 j' c, ^( ^+ \        [ SR_1.name, SR_1 ],
1 h# H1 z+ T* e( E/ i/ x* I3 j        [ "DSP_PROG", {% Q' N& V) B; c! ?& E
            name: "DSP_PROG", space: "code/data", access: "RWX",
* ~3 ~0 g; l2 D            base: 0xC2100000, len: 0x1E00000,% H5 J( L: P( L4 z! [2 _
            comment: "DSP Program Memory (31 MB)"" z3 B; r, B3 @4 w+ i& M
        }]& }1 T7 M' e# p8 ~# R. Z* A, @3 u
    ],- w- Q+ f" `7 D4 z3 c
    codeMemory:  "DSP_PROG",
+ @/ V" ~0 @' T+ ?! F    dataMemory:  "DSP_PROG",& g. ~& V8 `+ q
    stackMemory: "DSP_PROG",
8 J% w: ]$ l, V    l1DMode: "32k",
6 t. |6 C/ H6 D! h    l1PMode: "32k",' j, |; [- V. O5 j7 L
    l2Mode: "64k"$ @! i5 A  r: S" [  h  i+ Y
};# i! |( r) _9 A; i2 T
9 n" b3 d1 s4 _( M' v! y
/*7 i' D4 f* @1 O' N1 _- i
*  ======== ti.targets.elf.C674 ========
! C4 ~" z5 o+ W */- r% j2 W! G1 J/ H' v! ?
var C674 = xdc.useModule('ti.targets.elf.C674');
( K! T5 M) L0 Y* f; w0 _C674.ccOpts.suffix += " -mi10 -mo ";
* R  X3 I+ y* TBuild.targets.$add(C674);
& ~. a* M: c# f/ B+ ^+ i' D
- K/ v! o3 X6 ^( ~! P' G1 Q* G* U  \: l! F% z) d" J
====================
0 n6 ~7 d9 {% A6 X0 m" P6 C原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。' o  C( B0 h/ c- N' f  I
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?0 C' G- s- U+ r) c9 p  S
2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138
8 K; a9 l2 J) M. q/ F *: ~1 b. r/ |  }
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory( b" }# P  v9 _( @+ X2 L4 ?5 ~! S
*  ------------------------------------------------------------------------
+ G, R" M5 S; l8 L *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
+ r" P: f7 r+ z: H! F' v+ M *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)% W. q3 F" L9 j: t& P6 l
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)  k, }" y: `, p3 c* q# {; e5 A
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------3 r  H; @! G- N8 Q% Y! K( t
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data), ^& i* J% M" H3 C& }2 \7 ?9 ~8 i/ b
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------6 ]& z$ e/ C: u% S
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux. Y& q" o' K' g9 u0 k
*/  t$ G( @( [8 e. W+ e+ L+ f* u
如何将 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 E: f0 ?  t! k, F7 O2 @; b' o合并为一块大的区域作为dsp程序的所有空间
" I+ M+ f( w5 H/ x6 K1 x' h6 I
9 ?' Z' q- ]0 G/ G% ^. R现在发现修改平台文件只要用到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文件显示的地址。
" F: C+ `$ c9 i+ Y5 @
  i7 x! M5 x! p! S6 e8 F目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。# u* E, D4 u; m( c: D

8 K$ H% x4 c) P& F/ c1 f7 k 40 /*  Memory Map for ti.platforms.evmOMAPL138
' t2 b0 t. K* Z: I5 [ 41  *
4 Y0 ]& z; C6 r5 {- d 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
5 i& C: ]9 j/ P+ q- _# m. k; H! @3 P 43  *  ------------------------------------------------------------------------
8 f9 z5 A9 Q7 q0 D( Q2 h 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux. y3 j2 W5 D# ?8 x- ~$ T/ A
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
, b& d! g) w6 U: v 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
7 p2 M( k  r% U/ }; Y' v$ W: G 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)6 l0 L3 u$ X& B
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)* ~: f. E. [5 b
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
; E: ~+ y; _! n1 Q, I( r 50  */+ t" D4 x5 t  D2 R' \9 ^

/ B6 Q' k7 p2 z( l1 B( M5 }) S如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。2 y  I/ H4 o8 w: G. n; z

8 p7 V2 C( h  Y5 E2 c! M5 e% u一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。' L$ U( k4 x7 _! O) q3 r  T
9 N1 p2 m* m- v1 t) W
如果需要分配大容量的内存空间:2 y; t7 p2 n, a+ W8 v, L
1.改动mem_args参数(u-boot环境变量);* \8 z# z+ M1 Y, a( ^& {
2.改动双核通信工程里面的: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=
4 A( H: S# b7 l4 |. h这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。4 B  V+ U2 G: v+ {
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效' L. l3 C  R8 K, n: h8 x9 Z
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-6 00:14 , Processed in 0.042904 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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