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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8446|回复: 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端程序起始。; V$ J. Z& G. V3 q
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
, l( m  h1 _% y" ]) h
1 L, m/ F8 i" Y$ k# {8 I/*, P! N* d- u$ T8 \! Q9 j
*  ======== config.bld ========0 L/ ^" i, f2 D1 h. D! i
*% b! k$ q+ q9 A. e
*/; _( K8 \' j6 ]& \9 W
2 M% c/ w$ X: Q/ ]- z) n
var Build = xdc.useModule('xdc.bld.BuildEnvironment');$ l" O2 q9 }9 ~1 ~2 m
, r2 j  p& B: {5 E& M) T3 ?
/*  Memory Map for ti.platforms.evmOMAPL138% y8 ^+ [" `. o4 r5 J
*
+ o( O7 ]. A" j' z0 U *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
4 l4 l5 y4 O  ] *  ------------------------------------------------------------------------) L3 J) ^# r: L- }
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux8 h+ o3 O$ W. v2 y" k& R5 \
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)9 X7 s3 _- j, v0 s$ R6 r/ F& R3 j
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
1 ^/ C3 z+ A0 C  {/ l) o, ~ *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------0 n- g6 K0 _" @( x- p
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
8 R0 k& z/ P& b *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
; ~. u, g6 Z) p" b2 d *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux/ x! ^, t- Y. V
*/
% S4 c0 n  {6 S1 x
8 u; ?/ ~3 z2 C  Mvar SR_0 = {' F3 @1 G3 i% F0 C
        name: "SR_0", space: "data", access: "RWX",
4 G: V3 r* R6 k. {- [        base: 0xC2000000, len: 0x10000,
. H% n$ K# u8 Z( X0 v        comment: "SR#0 Memory (64 KB)"* o6 O/ a! K: `. \4 q
    };
; i5 s) Q. `& P) [  j* t
8 p) s1 z# ?- C8 Gvar SR_1 = {8 T) _5 R( F0 u# O/ s( P
        name: "SR_1", space: "data", access: "RWX",
+ q9 q& t* i5 N! W' O4 N/ P        base: 0xC2010000, len: 0x20000,
) Q6 q7 L! r# k) ]2 E0 A& L. }        comment: "SR#1 Memory (128 KB)"3 l  w9 d8 u8 P8 |. X+ ?
    };6 ~$ }+ j3 Y9 M4 x3 Y7 R

& R# [/ b8 B! U& F5 UBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {( @! O4 D/ I# s* v6 ~
    externalMemoryMap: [2 J" m: i1 L: {3 o
        [ SR_0.name, SR_0 ],: K; o, _- e0 Y4 M5 Q, j) n! x
        [ SR_1.name, SR_1 ],
5 k+ |+ x, s) h) S/ B  t. i        [ "DSP_PROG", {
! o" ?* B. p4 `; X2 [            name: "DSP_PROG", space: "code/data", access: "RWX",
) d0 z, l$ G1 q5 o$ q$ K" P  D5 E0 i$ f1 G            base: 0xC2100000, len: 0x1E00000,
  J% w, \( `: S2 `. I! U5 D            comment: "DSP Program Memory (31 MB)". P; D9 w8 `! t. I7 C' f( `
        }]+ i8 b' o2 }1 h6 j2 j$ h  J0 M
    ],2 c4 l3 {* {( z/ H. z/ g$ T% R1 d
    codeMemory:  "DSP_PROG",
: ]' R4 Y2 K& U4 h0 X: X( p" u    dataMemory:  "DSP_PROG",5 r9 |9 u4 O' A9 i& w
    stackMemory: "DSP_PROG",7 x8 ?5 z7 |5 m" A
    l1DMode: "32k",
5 l( m4 j$ G# e) [! U, M    l1PMode: "32k",
1 q$ i8 K# s7 o# B& H: J& b    l2Mode: "64k"- s$ o  q1 S: |' G
};
9 l& z$ A8 h* X+ S* K- {7 x' N3 b& B" M9 l; S8 q5 T+ P* J: R
/*
' ^+ {% s/ T: a" \ *  ======== ti.targets.elf.C674 ========5 v  g9 z# U  Y, z5 I6 Q) i5 @
*/6 {  N3 y/ g  _0 ~1 u+ O2 [3 i3 d1 u8 p
var C674 = xdc.useModule('ti.targets.elf.C674');
; S: m! r) _8 ^. g' QC674.ccOpts.suffix += " -mi10 -mo ";
0 Z1 R+ o5 o6 c0 I4 O9 l  N* ABuild.targets.$add(C674);/ V/ ~8 c7 n  T& A/ ^5 v- n
- ?' F  ~  H& ?" \9 }

- i, }( }1 j% S====================
# l% H4 t  \; S4 E& [! U原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
. u2 N  z& Y3 \
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?, `, I3 M8 t; r, F3 p& g9 d
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
0 ]1 w0 I5 Z9 O' D. b! ~7 E9 E6 B* f *
7 [; @* n) h3 V* y8 |" |8 s3 Z *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory8 x9 }* }. V- }$ a+ w
*  ------------------------------------------------------------------------, G0 N% O! L, M/ x
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux, Q, q( K* ~' f# ^
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
" }& Z5 j, c+ Y! [& b: X& b *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
  @) Q5 t7 S! O& V) K *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------  v8 w0 h( F9 i5 g7 R& g  @
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)% M* ~, [0 y4 J" F: h
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------+ R& M; W5 ?0 C
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
1 m$ P" i( B- [ */
" ?: I. S% @; I! f8 k0 T1 v/ X: ~: ^如何将 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)9 \& |. w# D7 J: |
合并为一块大的区域作为dsp程序的所有空间
3 O1 H4 D: O& [3 I0 z" r
- u! H2 ], {- F$ P; E现在发现修改平台文件只要用到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文件显示的地址。
, L: h4 h, H7 ?0 t/ o5 F9 `
8 B7 P4 a+ [% _, W5 O, S( K目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。3 d  I6 Z- g! g) f" x! x

+ H- K' S+ u3 i% C1 c 40 /*  Memory Map for ti.platforms.evmOMAPL138
& ^& j6 u+ u4 C) _4 i 41  *" t* _) O% T+ [7 r- e$ N- }
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory& u( q: n% v2 f& ^4 W$ f
43  *  ------------------------------------------------------------------------
; J. y; |5 ~+ ? 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
: t8 j& w5 G2 J- U- A- X( v/ N 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)! {6 ?* F0 q3 D$ W" y4 K
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
* l  I0 O6 q, g( U 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)8 v7 ~: X5 J% J1 X
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)/ K  ], P- }# }% \/ d  u
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
6 K: U7 ?1 ~4 t0 C7 A7 q5 @ 50  */6 l% a4 m2 O- o% Z+ z+ y% p
( z; V/ A1 A& ]0 q% E+ H" Z8 r
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
6 n6 s2 d2 `/ N$ @
+ J# t! K: [5 f& `( ~一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
/ R1 B0 i, p! D* `% o( E
# e" R/ @# {+ e% E5 x: h如果需要分配大容量的内存空间:3 E. Y4 Z: X  w' I
1.改动mem_args参数(u-boot环境变量);
" p9 Z  o5 x: R2.改动双核通信工程里面的: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=
9 x* h" Q! y# M* L' i1 c; J5 {, C这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
3 C1 k$ \' T1 ]/ t' d7 d/ j, |share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效1 b; ~. j6 p0 ]* _* l1 `" C
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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