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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8259|回复: 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端程序起始。
$ ]' U" a) `7 ?3 [    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:  j7 r3 ^5 c5 u. F/ e

0 A" o" E* ?6 x0 `1 s/*
& w# T5 X! U, g/ s7 F1 D$ R2 E4 Z5 W *  ======== config.bld ========
  s6 s0 \' O# p: W* f *, i  H6 [6 b7 K, z; z9 U5 ]+ q4 K
*/
6 g2 p6 \/ M9 }( Q& a" d5 v4 F  @4 |% `1 ~# r2 Q
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
7 a/ n4 _- q& v# J7 D, b
  d8 y- _& [  Q" a) k; J/ h/*  Memory Map for ti.platforms.evmOMAPL1387 @, U0 X& @0 h
*; d4 F% P  x9 D  j& I' i9 Z$ Q* N
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory! w0 }4 s( F; g) \) @
*  ------------------------------------------------------------------------
5 @. h5 u# L: ]2 E7 _4 U5 r *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
7 _3 r; [. V- n  x6 {, { *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
& s3 Y: v0 l0 @& @9 K% ` *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)7 n+ S. `1 L; B" i$ z) [
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
9 l3 _- O8 S8 f0 K *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)1 n' x2 w, K- A' M- v7 K9 z/ l) ^
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------0 g8 ?! ]6 B; K* u# S& f) ]
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux7 v$ _. |  M! ]7 v( D6 n# l: G1 `
*/; E) }1 g6 b/ o

; z# _! j3 f, j* M; Mvar SR_0 = {3 E0 ^! V# s3 j
        name: "SR_0", space: "data", access: "RWX",
' z( S* O! _! P        base: 0xC2000000, len: 0x10000,
6 Q6 r$ l  d; u! |: P3 t* k        comment: "SR#0 Memory (64 KB)"
7 b, B: ^6 Q# Q7 F, E. s/ o' _    };8 ?. n7 L2 x) n% m+ r

) e' j- r/ Q% ~8 g1 }var SR_1 = {2 }1 O$ F1 v4 Z7 r3 Z' D
        name: "SR_1", space: "data", access: "RWX",
. s0 {* ~& Z. x2 @        base: 0xC2010000, len: 0x20000,
# }4 Q' M/ C8 D) z        comment: "SR#1 Memory (128 KB)"
& c5 l, ]) ?) D    };8 D7 }2 v: r' d

( ?5 U- P, j) ]; a/ P6 G$ `Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {. B; @- E& @# q8 ?7 }
    externalMemoryMap: [# h" @1 V7 I; T, l# g
        [ SR_0.name, SR_0 ],
- V0 K, k$ w3 J$ ?$ Z" m( l        [ SR_1.name, SR_1 ],1 J) s. C* ^% k& v0 }8 V
        [ "DSP_PROG", {
7 e( Q* D, g" A- D            name: "DSP_PROG", space: "code/data", access: "RWX",! s  w( Y5 J7 X1 S+ w9 W
            base: 0xC2100000, len: 0x1E00000,3 b# V' F: o9 `6 H- g0 \% v
            comment: "DSP Program Memory (31 MB)"( {/ [. {6 K2 o& N' q! T2 j
        }]
" u3 F& j( z! L! l8 p  n    ],
% a6 ]9 u, B, f& e( X! H# ~    codeMemory:  "DSP_PROG",9 n, M3 a7 A% w) Y% L3 |
    dataMemory:  "DSP_PROG",& ^/ |' G7 K3 @8 H  }( Q5 i2 ^0 M( j# ~2 U
    stackMemory: "DSP_PROG",# E8 ]9 r4 K, @/ d4 s2 x
    l1DMode: "32k",/ B- a  }  W. a% l
    l1PMode: "32k",7 x" @3 C0 x: M! A7 g) x  J; k5 H7 C: @
    l2Mode: "64k"! A1 {% e; S; O
};( J" _  T1 d+ ?* k

+ I( }/ g0 |' C2 S8 E. g/*; B* Q7 q! w/ K- f  p
*  ======== ti.targets.elf.C674 ========" c# n& B0 d2 S
*/: A3 k6 l9 A; l/ r
var C674 = xdc.useModule('ti.targets.elf.C674');
$ z0 ]6 }0 w, W4 D9 ZC674.ccOpts.suffix += " -mi10 -mo ";
2 I5 W3 q9 x4 T& y- s7 hBuild.targets.$add(C674);
, [% l/ D0 F/ u" b6 M9 q" c% B# X& @& M
$ ]$ L5 |' W/ q/ g5 \
====================
& O5 j; v7 m: E8 w( W原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
$ y, y6 B1 |5 f' C( M/ A; j! T
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
' n- e, d  T" [3 T: s2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138
% X' r) f6 K! _4 l- Q- F3 w; I" \ *8 j: ^/ A; \; o3 V* z  Z
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
: K$ Q4 R- n8 `  b *  ------------------------------------------------------------------------* F. P0 o: s& C% `! s/ }; E
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux* Z+ L0 G# d0 y: @
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)' E" S5 `2 {$ M; i
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)( o9 D3 T, R- ^& x: a) Z
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------: ~$ x7 _  q6 J# q8 i; R# S' N
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data): A" O- ~& I% V1 Z$ E$ ~
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
$ x- G+ U; Z' L4 P# [/ c *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
) O0 i8 l* g8 h, @/ b$ ~/ K */9 [+ I  |* _2 j4 q% @( J
如何将 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)
+ e( J! n) y6 j合并为一块大的区域作为dsp程序的所有空间
; U+ S4 X6 A/ s4 y; C. ~3 z1 L
现在发现修改平台文件只要用到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文件显示的地址。" |% z$ j- z: k! Y* Q$ l% {5 }

8 k$ B: h, l# R+ ~7 M' |& q3 e: N目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
- ~1 c. J/ Z( ^' A2 }
, v8 w3 ?+ W' K# d 40 /*  Memory Map for ti.platforms.evmOMAPL138
  C3 M  b4 M% A% c9 N! u" t0 P- S 41  *
1 B4 o2 V- S8 b+ w4 f0 S 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
" Y3 I' v  P3 {% @( e) ~ 43  *  ------------------------------------------------------------------------
" _8 u# N+ P3 R, c% x0 G) } 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
" Z9 i, c( `7 M& [2 A; ] 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)) G: M; [( I/ {4 M( o( M
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
1 C. ~$ o' \/ W) o2 V8 J  ]* q 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
" E9 ?# J7 d3 W4 G( Y: w  K 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
' {- V8 O; y/ @: q6 E0 U 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
$ g, ~. k6 j" X* u: p6 k- A' f 50  */
1 g& A0 f( n" m& c- F1 t" |0 y" y1 m7 C' ?4 ^  `  P1 \
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。3 j; z1 U2 }0 u# L# C
4 H# R. h2 K& U9 N# e( I, e
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
3 W, r' K* \3 a9 j
$ P4 k, A3 H# y如果需要分配大容量的内存空间:( L! w9 I# N& ^: F; _: e
1.改动mem_args参数(u-boot环境变量);
0 w2 w. C! d1 f; W% \& L2.改动双核通信工程里面的: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=
" E) c2 S* o+ T% K' \& q! s这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
& m$ a) _% x( i1 f; {+ |share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效1 W$ I: u/ a+ ~& ]- }3 d
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-3 05:50 , Processed in 0.041237 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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