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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8681|回复: 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端程序起始。
) q" K( I& l; m  \/ R3 Z# B    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:3 C1 s0 w' w4 M. m- }3 p; ]
( b& U6 b3 Y! P8 Y7 Z
/*9 K4 z# j8 T8 f* P6 p* Q
*  ======== config.bld ========
* G9 U/ Y6 ~& b' W, x *
$ c# ~! d" z" e) r4 _  x */
) B0 |8 s% u( P, a8 F4 s& S+ |1 s2 I: U7 D3 F$ F6 C
var Build = xdc.useModule('xdc.bld.BuildEnvironment');  s+ l6 R7 a: M4 t: c9 I

! `; u  I! P. h: N# {/*  Memory Map for ti.platforms.evmOMAPL138
; F+ @; o3 n5 w% {4 r; g *
7 c3 x' w) g5 ?: g *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory. d' |/ G/ P% _  T; y, }$ T
*  ------------------------------------------------------------------------" D( w; T# C: \; p' Z* u
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
* M( o2 a4 k* Z. t/ `- b *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc). s5 ?- Q$ w3 }; c1 q
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
+ p# Y8 r. a5 b6 B5 U1 j' d* p; l *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------2 f; A8 \& D% N1 n
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)5 k7 ?$ x; }2 ~% h# I9 Z' B9 K
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------3 Q4 j& N; Q! `* ]9 I+ n: y
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux6 \3 c( C% r+ U" ]. O# L
*/
( ?# q* P# a/ G+ r, G) a; D( q
8 v4 m$ L+ J5 X- R' B5 j; I% {var SR_0 = {
4 S' f7 @! y% x/ `: [. t, V        name: "SR_0", space: "data", access: "RWX"," `/ W& D' D' r5 k) \
        base: 0xC2000000, len: 0x10000,
  H) @) V& z0 t% |. N% @5 L/ {        comment: "SR#0 Memory (64 KB)"' O8 ~6 I8 f8 s1 T2 ^  ^8 ]; T
    };8 Y4 D6 |3 B7 W9 N  q8 H7 Y
# m$ I3 ]: e0 Y' R0 y
var SR_1 = {
, U; x& U$ T* I" N+ Z8 b: b        name: "SR_1", space: "data", access: "RWX",
+ X' h1 e; }0 q        base: 0xC2010000, len: 0x20000,1 f3 e8 d  [: f) k' @* _% H# C! o
        comment: "SR#1 Memory (128 KB)"
& t$ h9 {2 j7 K    };
) \/ _( n* ?0 H1 }6 }4 {! `) d  X
, |: n# o/ I  V& L4 U# TBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {/ D$ n' R! ^8 u0 `. {4 `0 u
    externalMemoryMap: [: {. _7 O- g) t( `& O( p
        [ SR_0.name, SR_0 ],
* E$ }3 }/ V, t        [ SR_1.name, SR_1 ],: ?. _- U5 c% m* S& K# p" r  K  A
        [ "DSP_PROG", {# _- ?( E% c/ C- i
            name: "DSP_PROG", space: "code/data", access: "RWX",4 c/ T4 X# a0 E3 S3 A; K! v1 J
            base: 0xC2100000, len: 0x1E00000,
, k* p; v5 Y( y- q0 q* E# O            comment: "DSP Program Memory (31 MB)"4 b: u) F& n- n3 C# {4 M+ A3 l
        }]
* @* |3 M& ~" ~. K    ],
1 O* |/ O. n( B/ Z  }/ v    codeMemory:  "DSP_PROG",! F" c& u. I' p7 g2 P
    dataMemory:  "DSP_PROG",! \% R* o5 p7 D
    stackMemory: "DSP_PROG",% m2 [, L5 }& [6 M) z( ~1 I+ O% L* u
    l1DMode: "32k",
6 ~* V* W# }4 g: G" ^- P0 g    l1PMode: "32k",9 x; X9 O) E4 E5 e3 I9 _% X- m/ M
    l2Mode: "64k"- ?. t) ^& Y. q. W, b2 A0 T3 }  Z
};
. Y8 h! @5 l8 K& C; d- {9 a9 K
1 G( j* F1 B( f3 Z: h8 C" \/*) M7 E& u6 k( ?
*  ======== ti.targets.elf.C674 ========
+ u0 S0 n# K" w* c+ e  w. S */1 m9 q% Y1 I* @9 m
var C674 = xdc.useModule('ti.targets.elf.C674');
, x  U; S6 s) Q' B" t9 bC674.ccOpts.suffix += " -mi10 -mo ";! `4 k) N+ Q4 A
Build.targets.$add(C674);
/ ?) r" @: q0 O& q% X, `  v! z' _( T$ U8 F
' Q5 k: C, }3 g5 j& o0 N+ K+ [; Q
====================) M' I& J# ]1 l' v' D
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。) H( A) N5 U0 N: x1 d+ t0 v# _" G
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
& d  r" Z7 C1 x4 }% G2、修改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 \7 i4 V% h# N; m' D4 t* r! j, _! X *
9 ?5 j; _, J9 U# U *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
, A7 E  U5 _# \2 m *  ------------------------------------------------------------------------( S9 ~7 i- U# e  Q- n4 w2 ]. S" I
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
9 t1 Z# s6 Q0 c! ]9 u: H *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
: D% F6 i5 o7 ~4 X9 m *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
( p' G2 Z1 L( O  m8 H& G7 [7 t *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
. ?8 n5 t5 Z$ S" n6 c% H *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)2 G/ B% P2 q+ B9 Z8 p( p1 b3 C* D
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
4 n+ N. l9 }7 W! f  t1 n *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux1 D8 X/ Z' B' i3 d: W  t
*/" d) ]7 U; q5 Q+ u" @; z. T, z
如何将 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)1 l# @9 m! J' z
合并为一块大的区域作为dsp程序的所有空间7 _* _& c6 b; D
# [* X( ]+ d( Z/ a5 u* W# V
现在发现修改平台文件只要用到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文件显示的地址。6 e8 ^9 a: L3 E& p5 `3 J

" f9 {" _1 W2 @4 [2 R目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
$ t2 T# v* A/ O  r2 H  ~
+ m2 u9 p  H& ~/ u1 j$ {3 T 40 /*  Memory Map for ti.platforms.evmOMAPL1384 l0 F! q' W3 G7 `2 I% s* g
41  *
: i% Q4 U7 w& G2 s. w! E/ Q 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory0 |- Z* L& e; {) a& ?# B% s
43  *  ------------------------------------------------------------------------. B% H) a3 \0 [# }# t
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux6 I5 X8 q: R. X3 z, M$ i
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
* h6 w' n( \8 O, F  q% y; { 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
# |0 a! T' i" R; J9 {2 _3 ]$ V* b 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
. O0 k/ @; E/ L% F: p7 z+ r 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)* X% w2 R" Y8 h
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
( C# \4 S3 J# O8 F8 a9 O 50  */
/ w$ C/ Q; b/ j: l. d+ Z3 U1 L- v7 S
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
; [( d6 g: _' s$ f% G
8 H2 _* n7 N' u% u( u一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
1 r8 {3 b3 T& @' ~7 Z; |- Y5 a, p& v, }- e2 A; i# L. h1 C( D/ D
如果需要分配大容量的内存空间:( }+ i& r: O& K+ z) f9 b; t
1.改动mem_args参数(u-boot环境变量);
+ U! Y- e2 ~" Q" T6 x, O9 h5 c- C0 O2.改动双核通信工程里面的: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=
, b: j; U+ ?9 F- o. d/ K这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
( w7 O( y0 T9 G# g0 K- V4 Xshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效! e# ]7 S! L' p% F
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-16 22:05 , Processed in 0.042043 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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