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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8682|回复: 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端程序起始。$ D+ E; [+ D' o9 y
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:, k, Z+ p) O4 v7 S3 d! {" O: T/ `

2 t0 i/ @/ @* E" n$ \7 A/*
- r" A% I# P. Q9 ^ *  ======== config.bld ========2 d5 m' |6 _* r! A
*5 `# a: y/ r/ y: {$ ]4 Y- D" V/ s* t" l
*/5 d) A2 q8 E1 _

! K. Y9 e6 G* u3 f% g3 Vvar Build = xdc.useModule('xdc.bld.BuildEnvironment');& F# h0 ~% }+ M6 a- s& a; M9 f

7 Y( c4 S+ t; B. `$ a8 m( K/*  Memory Map for ti.platforms.evmOMAPL138
5 c5 k7 f$ h* H6 v; x7 W *' B# B( C2 J& W# H
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory1 @$ F! H+ Z- L7 x& }: ]
*  ------------------------------------------------------------------------- A# r9 h/ d% J, U4 F
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux: j! H* |0 Z7 N% ?- A) G" C( z# x
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)7 y; k! ~5 E) N- B9 ~
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)9 ~% j- u5 x( S7 j/ ], k, J
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------# m5 J/ @5 Z1 ]0 ^
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)) }( S+ y; \5 z3 H" b
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------5 ?$ a" t, `) p5 f5 i/ I
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
# N' Y. f3 W4 _1 k- V( P */
0 q6 j/ u, X& l7 a' E7 r. @4 A+ G' f% }5 G
var SR_0 = {
) Z3 x8 @- n* V/ P) M        name: "SR_0", space: "data", access: "RWX",
8 I1 S4 [% `9 T        base: 0xC2000000, len: 0x10000,
& s, v* [' w, T7 L( a        comment: "SR#0 Memory (64 KB)"# H; D0 }$ g; q6 R) n
    };/ W! |; B0 e/ \

2 s6 v7 |2 u& O; n; |9 o0 g! V7 S$ [var SR_1 = {8 i, j: t$ d2 v- C8 ]! B: o
        name: "SR_1", space: "data", access: "RWX",0 c4 a( y. y$ c
        base: 0xC2010000, len: 0x20000,8 L  L4 w0 Q0 p: ?+ X' J
        comment: "SR#1 Memory (128 KB)"+ u  j/ w; C0 l# |: h, w
    };
4 v  G) b+ _' I* Y) T' M7 s* R6 n9 I1 J; H& y
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {' j& o2 H4 I+ h* M: j8 F
    externalMemoryMap: [, [9 y4 J6 [* N: n- n0 b! D& N
        [ SR_0.name, SR_0 ],
' ~. U: |1 D$ G        [ SR_1.name, SR_1 ],
0 @9 D' n! \' `7 p" T$ \- h* ?        [ "DSP_PROG", {
3 q2 I& C9 F$ K" l! f$ a! e            name: "DSP_PROG", space: "code/data", access: "RWX",+ R2 F! I* n. Z5 s/ s. o3 j+ }
            base: 0xC2100000, len: 0x1E00000,
+ e* x6 L) I6 f* X: u2 H4 Q            comment: "DSP Program Memory (31 MB)"! v9 P  n- t3 P  n( v8 F$ V2 n+ T6 C
        }]  @" j- R5 ]2 s) O4 W
    ],
! c9 ~3 T- S! P: [6 ~) P( |( _    codeMemory:  "DSP_PROG",1 r1 t. D* E! S6 {4 a7 g6 u5 T
    dataMemory:  "DSP_PROG",2 m) `+ _' ]- L/ w- X7 f* N
    stackMemory: "DSP_PROG",
0 a7 D. o. ]5 l1 ]8 z, \4 }' Z    l1DMode: "32k",5 i0 E. n) Y2 v$ q2 g& m) \
    l1PMode: "32k",5 D" ~1 [' O' Q% c' V
    l2Mode: "64k"/ g7 K  u  B" Z
};& U- h9 z, u' w* q' v4 I, F% b
: k* r' P& d. [  k- l; Y/ l
/*
* S" |4 {  z7 f3 k *  ======== ti.targets.elf.C674 ========& J/ j8 @4 B6 e
*/9 e# N  M& K  q/ s5 F* E% r  {! F
var C674 = xdc.useModule('ti.targets.elf.C674');6 y" b3 [$ z3 n& s4 U! [
C674.ccOpts.suffix += " -mi10 -mo ";
' B& u! w9 @3 g8 `6 S7 m, |Build.targets.$add(C674);3 ~5 K  i( Y  a

5 w, ~: {4 B/ x6 T% [, g; X5 K* @: m& d5 \6 ?# o5 g
====================
, y- u, P' o' v( s: o' N0 |3 }原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
/ x5 M$ ]* \* ~& r- c# o4 X
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
1 c, n: g+ x8 c; X" Q; w$ Q( ]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
2 r# \( D% S4 Z *. U: [" j" v! W0 a9 w3 L! y
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory: y8 D/ {. g+ d) [, W
*  ------------------------------------------------------------------------
+ K4 K2 ^9 u! d6 I7 B: T *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
; w% V& H: }7 M: _* R *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
$ w% g; |, t+ J* L *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
: T5 o8 K' a6 n7 S* b* b4 A9 B *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
) \+ O' r+ w( @- x* w! Z *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
2 A6 Y; Q5 f$ ]8 P# \1 H' U *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------+ O5 R6 W  ?9 d' |6 h
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
8 }, U$ c4 h' @: {8 p */4 m0 Y; |7 X2 a, i+ T
如何将 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)$ j# ^9 |+ r' V  p( u& B
合并为一块大的区域作为dsp程序的所有空间8 O0 E5 n- T0 b/ M! }, d, r6 \$ T

. i7 A4 B# e" |7 {) N7 M现在发现修改平台文件只要用到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文件显示的地址。7 l% z; A5 A) h& M0 ~

% I1 O) o0 {5 h; U目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。( B3 g% Q1 ]8 C, n5 z8 m

6 v7 d6 \) y$ d9 V. [. [/ U6 _ 40 /*  Memory Map for ti.platforms.evmOMAPL138
4 d6 C  S6 C! j2 Y& M; i, a$ O7 R2 c& A7 k 41  *
* V5 p& q) c5 R& ?5 {  ?# r 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
. ^# D2 Q4 T: b* v. g 43  *  ------------------------------------------------------------------------5 }+ Q( c& G* y+ c
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
3 _# b5 z9 `$ G! _% w7 _, T 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)2 H- Y/ {& Z: o+ p& N9 g' _7 [7 W- k
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)& t; p* x3 v8 U( a. @6 T
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
& a+ `! x- k9 A1 T" d- \; y# | 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc), U; u& G' I% T% M9 g
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
9 D. |0 W' U3 q: X2 I 50  */
8 D$ X- {% x! l4 K( X
8 a! S+ j8 ?4 F如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。# T% N9 X* t1 ?* P' v) a, A/ B/ p- G
7 Q3 T( I" d3 s; _- B! u. t
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。* Z% t( d" c9 ]5 x, T9 ^1 s# X: G) C

$ c0 {$ R# q: s' i' M如果需要分配大容量的内存空间:! m. x; A5 k4 a* ?
1.改动mem_args参数(u-boot环境变量);$ I1 ?/ C+ F2 b  W  i
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=+ @" M" K6 c4 P/ @/ R# C9 [
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。6 S0 q7 ]: O3 f) e& W
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效9 o1 i. T( G. f+ y% b: W: m8 k3 V
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-17 00:00 , Processed in 0.048442 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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