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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9468|回复: 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端程序起始。2 k! |2 K/ R5 O  h& ]& i. Y
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:3 u) [# Z7 X5 [
) @/ n1 B9 {3 F+ ?4 x
/*. y6 f4 }9 B2 E- q
*  ======== config.bld ========
; }9 e! J  l" f/ ` *% X3 I) U( `' S5 I5 p& B/ v/ L' ]
*/
) l' h2 h% N  b  h
5 i( h$ X& V& p0 kvar Build = xdc.useModule('xdc.bld.BuildEnvironment');
: U7 Z% W; D/ Y& s; W: M
4 J  k; {1 ?( t/*  Memory Map for ti.platforms.evmOMAPL138
' W- }% F7 }$ w$ x& m4 ^) X6 k *0 G* e" _6 J, E4 i& S) ?# ^* B
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
& E9 ~! J) ^) L( ]* K *  ------------------------------------------------------------------------
8 a5 J* N3 a* g1 k( L; t- k *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
+ }) q0 [  X8 ?% |5 f *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
0 x* P* p2 q$ m *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)3 {# l3 u7 S, s: ^
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------- K5 l2 G" T0 j
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
9 ?! T7 o' R, f% M/ o# ^9 A *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
7 Z0 O, g; s, V* x8 x7 x  i *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux" ?5 t4 U: E7 D0 M
*/
; |5 z1 K+ e/ j! a7 ~) K5 n& d' n1 W/ o- p4 b
var SR_0 = {  l/ {/ B2 d& I+ t; R
        name: "SR_0", space: "data", access: "RWX",
- u& O* M. L8 _        base: 0xC2000000, len: 0x10000,% B% F7 q! D2 l3 l  u: M
        comment: "SR#0 Memory (64 KB)"8 P2 m1 t3 \% V" @+ M. m
    };. g; u1 s: \! X- {+ _  m
3 i+ z2 [2 w) s
var SR_1 = {2 M' c: T% h$ W! n3 g
        name: "SR_1", space: "data", access: "RWX",
$ ?  Q2 n9 G1 E        base: 0xC2010000, len: 0x20000,) w1 F) r5 l0 i" X
        comment: "SR#1 Memory (128 KB)"' K0 J4 Q' b4 y
    };' ~8 f/ \2 M9 K

( Q' p  I* \6 w7 c+ d( X, G5 ^Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
# _* ?# N. t8 \: b    externalMemoryMap: [
# c% r9 ~) X6 r8 F9 s. u' m$ I        [ SR_0.name, SR_0 ],5 _+ ^  h5 _: @' I
        [ SR_1.name, SR_1 ],% _( p5 c4 z- U2 ^# H
        [ "DSP_PROG", {4 k$ d1 [9 n, p9 t
            name: "DSP_PROG", space: "code/data", access: "RWX",7 k7 Y" O, f" A
            base: 0xC2100000, len: 0x1E00000,
  J6 w6 I1 D9 B* |  c            comment: "DSP Program Memory (31 MB)"3 p- R& k, e5 X2 r& y
        }]
/ N( ~& t7 [4 b# E( [. c: @. J# d    ],1 o, Q+ k! I' u( v9 i; y( M" ?
    codeMemory:  "DSP_PROG",
, }9 r) p9 M; T4 G5 u( \    dataMemory:  "DSP_PROG",
  C& j$ a* ^& G+ m/ R$ m    stackMemory: "DSP_PROG",
; D( i  Q1 ]( v6 i: q! n    l1DMode: "32k",2 k* p  ]5 d  ?( Q
    l1PMode: "32k",
. t3 g2 F; l+ z* E+ X) I    l2Mode: "64k"1 T0 T/ J/ z! p6 ~. ^
};. w% i: l$ H7 c0 S& F, W

0 d: T$ X3 a4 u/ I6 L/*, ^1 A1 |9 s( U* ~9 E0 W
*  ======== ti.targets.elf.C674 ========1 }8 W* D6 i) k8 x7 k: ]
*/
* W" }; b- M0 G$ D( Y: x. ?var C674 = xdc.useModule('ti.targets.elf.C674');
8 U4 O5 e5 B1 a" j' iC674.ccOpts.suffix += " -mi10 -mo ";
+ f4 a8 m2 p) n# h/ [Build.targets.$add(C674);  ^# I+ y; U9 Z- Q: {- G# `

1 l0 e* J" i3 G# b" k: X4 z
7 w+ r7 w2 Q+ {6 m====================
& `4 x5 z  @& H$ E  R$ `6 q原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。1 C) J- u2 T+ z0 h  R8 `' C1 _
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
- k+ ?, h  \% d+ |* y* X2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138% c3 L$ M/ b) A' V  Q& G
*
0 l5 l# W0 H* E3 Z, ]1 E7 K+ H! [ *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory% V( q1 \$ Z. b
*  ------------------------------------------------------------------------
. Y& ]5 A9 o9 t *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux3 X5 |7 i4 }) f- K
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
8 I/ Q1 D& j# k* R0 U" C/ T *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)3 H: f  E; Q+ w
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
7 B( G; J4 {( ?1 \ *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)! X( [; I; _  H% N" Q; j
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------' [5 u, m5 ~1 L+ {' H  G
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
  K3 c5 q- M5 f& w" J */* l/ J* W- W7 J& p
如何将 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)
& z) o0 B* b3 z6 [: x合并为一块大的区域作为dsp程序的所有空间: a( n9 x6 T7 }0 B! {$ ~. x, j

& V# c8 N7 `. O8 C, `4 G现在发现修改平台文件只要用到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文件显示的地址。
9 T- w$ z0 S5 n
1 r7 q) X0 P4 M' |目前将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 E1 {% r9 M- v; |6 R. }0 \2 w# }& l( `: L4 @% K
40 /*  Memory Map for ti.platforms.evmOMAPL1382 F5 o% E2 g2 h( D& q" [
41  *
: |" W2 [; ?& C" } 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory1 G# b+ r) A5 h( P8 q% O
43  *  ------------------------------------------------------------------------" Q& h- n' m$ l! G9 g0 ^( Y. Q3 |$ Q5 S9 u
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux& L5 |+ H$ _, P( ^9 y5 k- J
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)) w9 B* d- {$ o$ e
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
( s, P9 f( T6 z( q 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)5 [: Q; f; V) U
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)- }: o0 g) Q1 x
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
; n7 s3 l% N9 n3 E 50  */
, R; E  M4 q1 \8 p  y
9 p& N% y  K  m9 U+ C/ n/ b如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
4 R3 Y1 b0 w. a8 l8 d5 X9 c  }
$ i$ {5 h0 @) {3 P0 F* u" M一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。- \- e  `; ?+ Y, r" a' ~. a

1 s9 n0 h" \, A% p* G! ~5 `如果需要分配大容量的内存空间:
" W+ m1 l5 B+ y7 D6 y1.改动mem_args参数(u-boot环境变量);6 Q- ]9 T. ], K" }
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=
' \2 x' P1 U. [. A) k这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
9 R- y2 o4 H6 H; l& yshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
$ N' `( c; Z' i6 J6 q
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-14 19:05 , Processed in 0.041419 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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