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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6838|回复: 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端程序起始。
8 ]% N' R3 f" b. k/ s5 }7 f    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
0 |( O7 `% i4 O5 l0 P  R+ w4 W1 r& `" {- k
/*
' ?$ ^8 {6 c7 r *  ======== config.bld ========
# s' s" p! }, }- K, |; y1 ]: s  s *1 A4 O% Z7 c; {: G  J- Q5 b
*/
' ~+ @3 R+ B# D8 s; ~3 m- G- ^/ }& W: F' d6 t
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
7 v$ S7 r; E, {, E: W% o6 c
4 s' w& ?( {" R0 y/*  Memory Map for ti.platforms.evmOMAPL138
5 C: V2 N. c; f" O! D *
" Z5 c2 j5 y! Z4 K) E" Z' j4 o *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
4 w; b0 H- M6 d3 l9 L% A$ r- P *  ------------------------------------------------------------------------8 a$ R. e% B. f6 }! A/ t
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
" H+ E# ?( C" ?. m8 o, u; e4 p *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
5 \# Q) L/ ?9 U$ G$ ~% G *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
$ {2 m3 g* C2 X# }$ X *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
# v$ _8 u* K( J$ J; o *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
2 e0 v3 h0 ?  f *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
6 d+ D$ r5 r4 Q1 T; K0 K *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux8 L3 e8 o2 |% W3 d
*/
8 k& q3 q. U! r) T  s/ l$ R6 M# m3 e+ m. }3 ^6 h# q
var SR_0 = {. |# o0 M- L$ p
        name: "SR_0", space: "data", access: "RWX",
/ q+ c/ h' {" T        base: 0xC2000000, len: 0x10000,4 G/ k7 ?3 Q7 R  t* e3 U  f  k
        comment: "SR#0 Memory (64 KB)"
" x, }8 A% o' C7 F: \    };! W- R1 j( X, [) S3 E1 D2 `

/ Q$ ^, r9 ]: g$ t7 T/ u# Tvar SR_1 = {
+ k$ l9 }  w$ m' d; G' ?3 \        name: "SR_1", space: "data", access: "RWX",* @& T4 L) Q* p! _$ D3 _/ r
        base: 0xC2010000, len: 0x20000,
7 L$ j! r' H7 @- }& Q$ L        comment: "SR#1 Memory (128 KB)"
3 g% {% D$ }$ u0 T0 h" x    };& T; ~4 @- P) _# d; W# c4 U

0 U" W1 V4 z% |Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
& q" X4 B: R, |# ~* e4 U+ U    externalMemoryMap: [
7 v3 V! Q! `4 S0 B% ?# |$ G        [ SR_0.name, SR_0 ]," ^' @1 k4 n: [0 X* P# T
        [ SR_1.name, SR_1 ],
  l% J( ]' X& j; u8 z" w; v        [ "DSP_PROG", {
8 f- x/ \$ j- N5 B3 S  _1 ~            name: "DSP_PROG", space: "code/data", access: "RWX",7 D  }9 J# t! P: h9 S7 _
            base: 0xC2100000, len: 0x1E00000,; ], E5 X5 k; {# }8 K: h
            comment: "DSP Program Memory (31 MB)"
2 J% I2 d/ [# y% p        }]
4 ^2 Y2 p9 ]  d2 V# J) h% s, ?    ],3 c6 J' P+ \- y$ B
    codeMemory:  "DSP_PROG",
. y. ~: ~! i3 g3 D9 J9 F. C) Z    dataMemory:  "DSP_PROG",
7 d4 x2 m, I& M2 S0 R3 A& l3 R    stackMemory: "DSP_PROG"," i" l1 S2 f9 F! p* N5 {
    l1DMode: "32k",
: D" r5 {) G3 O* F7 U6 h& [! Z    l1PMode: "32k",
7 x5 U, a: G$ p5 H* c: p2 U    l2Mode: "64k"
+ o0 _' @" a- ?' w};, L  `9 G$ R: H1 o# U' q

) ^3 Z# U& L* X/*
3 _( H5 M8 Q3 D, E6 ` *  ======== ti.targets.elf.C674 ========4 }/ l+ S- v& v& e- W
*/) C* F% z, R" `/ a: N( p
var C674 = xdc.useModule('ti.targets.elf.C674');! S; X9 F4 l/ x0 i0 L, _
C674.ccOpts.suffix += " -mi10 -mo ";
; q# U. I+ p$ A2 F' a0 pBuild.targets.$add(C674);
5 ]; O- E6 W) M4 Y; O: h
+ m% X3 W0 L; F5 e" }- l. b3 C; `" M) _9 t, W& y
====================
+ k. x  r* _$ i! W% z原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
1 E0 k' J+ X4 r6 d, P* o& J' U+ K+ {+ P
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?. q* w2 t: _# d  E/ ~/ p
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& k" g( Q. V0 E/ S! O$ k
*4 T2 {% c  x) ~
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory: p8 Z( f+ L1 ^5 [4 }- r, E
*  ------------------------------------------------------------------------9 G5 i$ @& [: a4 \: f
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux, P+ M  O5 y/ s% p  e, r" V6 i
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)( E6 A. a' h2 ^1 _% b7 m) A
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
# D2 V* M6 X7 T- I$ b$ T4 x *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------7 |. t: g- q& M! v; M0 U) o6 e* S( ~
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
( r7 S& [4 b% ~9 u& G *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------; V- w1 u' i! u" Z9 ~- _' }1 ^, T
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
2 m' y' y) I# c9 L */! s5 g7 ]. c& v' ]
如何将 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 F6 `& X6 r9 |2 c
合并为一块大的区域作为dsp程序的所有空间% V2 K; `! R2 K4 N

1 v, B3 ^" n+ t现在发现修改平台文件只要用到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文件显示的地址。
- o! A* m7 K  g* D& |
! {1 N: B0 b* J; u: v  j% I# I目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。# O& a- U9 F5 D  x' }
; L6 I3 [- A4 A" S+ X+ g, B) B! f
40 /*  Memory Map for ti.platforms.evmOMAPL138
( q, M2 g- g' K; v; b# q+ I; n 41  *
+ e2 D" R% P1 w' E5 i. Z 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
- S9 L+ \- G! H  E* M 43  *  ------------------------------------------------------------------------
4 m. E7 v. a8 `+ j5 a4 Z0 D 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
/ }* k8 f1 o2 B. d! b7 I! W 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
* r" J8 S! ~% e% E8 p 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
* }' `1 K8 {( w$ a4 ]; n 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
/ C* Q4 z* a8 {7 d 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)3 g, g# q5 o" j
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
# S& W" q. I0 V4 B3 v7 [& \ 50  */; F' K5 x$ v0 _& q

+ u: ~7 c! q9 {( u  [  p+ C  f如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。# g3 C! X& ]! s, p
# q8 D' Y% i6 H, z' p7 s7 b
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。& Z& m' ~5 F7 w) ~

7 w% p4 P4 {' h/ e! x; P, j5 H如果需要分配大容量的内存空间:
7 A% F6 a+ q+ U1.改动mem_args参数(u-boot环境变量);2 E# v6 P4 D$ w; m# y
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=
7 d+ R- h" l- w7 w这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
% m4 `9 D/ `% U( {share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效' M. f9 I8 Q0 s( H, _( G  E
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 18:29 , Processed in 0.042363 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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