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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8447|回复: 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端程序起始。9 Q; ]6 k0 J$ P; `" u
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:5 [: G9 n5 x! E/ g; O

4 B1 e% y; D0 z/*
$ |7 |! o. X% k8 Q4 V- [( S3 a& H *  ======== config.bld ========4 i9 ]+ G4 X  a9 ?2 Y. _7 A! }+ E
*
+ q. |: Z" c; w7 p */% f, q" h% d) ?$ ]$ E' }1 X
* _5 T) n2 {  e7 p/ R+ P  h7 w
var Build = xdc.useModule('xdc.bld.BuildEnvironment');; b' z- q! `! ^8 K9 e, Z3 i; i

0 Y4 e3 W: k5 s4 A: k4 z" z: R1 K/*  Memory Map for ti.platforms.evmOMAPL1385 ~; s2 G+ q, d! e& ]# B& C: S
*
- E$ y. @5 @: b5 J/ v2 Z *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
# P! K+ J) X2 R( p *  ------------------------------------------------------------------------
" r" z4 y6 m7 e8 s( _: V- q2 p" F5 c *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
$ `) P0 b6 m1 H5 U1 Y& N) {& [ *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)0 E; ]' S, Y- F$ m2 q% _3 t
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
+ U/ }/ A: i/ A2 p% e) y *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
7 P8 }& _* U0 _$ s *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
. B/ S0 {+ Z  p *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------% c9 K* W* C2 Z; ~" E6 @
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
% j  F/ j0 M& A% n */
! h6 m2 @4 ~$ }' z9 b
8 f9 A: E2 l* t8 u# \var SR_0 = {
) R/ n6 Z; h# y3 G% a* l' O        name: "SR_0", space: "data", access: "RWX",
9 c& l' n0 v5 a# a" W        base: 0xC2000000, len: 0x10000,% u% G( f! |& C9 m$ Q# f0 d, m
        comment: "SR#0 Memory (64 KB)"
* N% @! o# y( k! L    };1 \4 o& s  Y; v3 l% ~! n

' M+ i% u5 s$ x4 ?var SR_1 = {" ]$ q- Z, a: o3 p* I5 F) W6 `
        name: "SR_1", space: "data", access: "RWX",
) W' O4 b# _; j- A        base: 0xC2010000, len: 0x20000,
2 o! z' r0 |+ `5 x. y7 @6 \        comment: "SR#1 Memory (128 KB)"
% V- J4 e! Q% g2 R    };
8 {5 T" m5 _5 Z0 q$ I( E' {  A" {+ `9 \; R
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
2 j0 H$ h0 d+ w' h    externalMemoryMap: [7 U- y% b) T% x' I# C  U
        [ SR_0.name, SR_0 ],
. a- r( m6 h' `2 m( l7 A& ]9 E        [ SR_1.name, SR_1 ],
5 \/ U8 h+ i4 Z+ a0 A. B0 u' x        [ "DSP_PROG", {
6 a+ ]1 t+ x5 N$ T$ v, t; L2 i" z  c2 M            name: "DSP_PROG", space: "code/data", access: "RWX",! x0 l+ x* R9 C9 O1 v5 P0 A
            base: 0xC2100000, len: 0x1E00000," X1 `' N1 V% V4 R' z
            comment: "DSP Program Memory (31 MB)"
0 ~2 o3 c: @% N. O+ W1 ]        }], J, b* W' E& e
    ],
" y4 K. x* o2 R    codeMemory:  "DSP_PROG",- R( P3 h* p- C0 s8 D3 Q
    dataMemory:  "DSP_PROG",
1 @, ]" Y5 g/ J% F; m2 x' k    stackMemory: "DSP_PROG",* H& ?5 H- a1 w0 e' p
    l1DMode: "32k",1 {$ G# E6 J2 w$ |2 R2 G' c- F
    l1PMode: "32k",
+ A- W7 ]% j6 r" H    l2Mode: "64k"3 G" V0 b8 H0 _5 n5 Y" }
};6 K: u. g/ q# B% }
, X8 T6 d0 L% a  Y( T- \* m3 k4 C4 `7 t
/*3 h( e7 T$ k& q2 |% M( ~
*  ======== ti.targets.elf.C674 ========
% D; R3 j# l: L' ^/ K( _ */3 H" c. t  F5 b" o6 i
var C674 = xdc.useModule('ti.targets.elf.C674');
) S' |: g6 `$ k8 S2 q  d) gC674.ccOpts.suffix += " -mi10 -mo ";( n4 k. |0 h+ o& Y2 ~/ K5 s* r" O
Build.targets.$add(C674);: S- a& ]. @6 m8 X4 P! A) h

+ I% Y; a; u2 l" E
, g; q3 X, Z/ ]% ?" y====================6 ~* c  K- G; P. L: [
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
& k0 S, D$ M0 r& w, w0 Y
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?/ P' h: f9 g9 n2 V; a5 E$ X
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" A4 E+ @3 _1 Q/ s' }; c* d' ^' a
*( ~8 K: R& `# q. P' A& D
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
+ l1 H$ G4 J- `' @7 i* Y2 h- K+ { *  ------------------------------------------------------------------------
9 }1 E, u' C8 B" c# W- I *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux. d  t. |. Q) X$ D! B* z6 Q# R4 ?
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)/ Q- A$ |1 ?% r3 b7 A6 D
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)7 C' `, x6 D3 |6 @' ?  y8 k4 @
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
0 R/ D0 m/ V, h" T1 H! f1 O0 y *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)4 k0 a3 b# z$ I3 ~/ i& g- q
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------  U; z; v, h# |$ d& z( G
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
$ t, K7 `+ ?7 z2 H$ E+ o */
3 S1 K( }! D5 v0 n如何将 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" C/ I5 I2 _+ o) A2 X* x, `合并为一块大的区域作为dsp程序的所有空间+ C0 s  W8 D+ c! p- x, W3 s9 ^6 P( W
+ |/ r  m/ j5 D) t1 `) f
现在发现修改平台文件只要用到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文件显示的地址。; u2 ~% N$ h2 f

( C" v8 c, `$ |" B1 Y9 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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
0 q( Y7 p- k+ H, X1 \6 L0 |  V8 B& [; U
2 [( x, R, \' b) w, Q1 l2 {7 V* M 40 /*  Memory Map for ti.platforms.evmOMAPL138
1 l2 s, p% q6 l, l. `& H% d 41  *
3 U3 k2 p+ O8 I5 E% g+ ~- k4 K 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
1 `* T2 x1 }% Z, w 43  *  ------------------------------------------------------------------------/ E, z+ k( x6 `8 U* f
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
2 b" j3 X+ z1 Y0 [% K5 v+ p 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
# [1 p; t! Z" z# ]2 x; X4 O* p 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
& a7 n7 \6 T0 O& X5 ]  z4 w  L 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
  ^' Q- g. A  }* o- n0 k 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
0 {/ f0 \/ [% b6 n3 y0 R' | 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux7 Y4 Y$ s1 F3 b* M! Z1 M
50  */
$ R6 U+ z7 V5 @* t# _
6 X- G4 q' u+ C如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
5 O+ d8 a7 y* j9 I2 m
; C% R( u$ q0 N# C一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
  c4 G9 A. d* V% `
- m" g6 m1 P( n# b1 p% t- @# T如果需要分配大容量的内存空间:- N5 C/ L( C7 W% e, T; n
1.改动mem_args参数(u-boot环境变量);. f  d- L0 V6 H! C
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=, w7 l, O' f, l) ^, U! G
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
9 d' E  f* K9 u' C% mshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
. N4 t; M4 F9 h. S$ d: o$ P" ?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-19 01:44 , Processed in 0.041122 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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