OMAPL138arm核跑linux+ipc,dsp核跑sysbios+ipc,重设dsp端程序起始 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9686|回复: 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端程序起始。
0 ?) N) D: o! }    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:& t; R' p* s! @0 Y$ }
1 a/ Q6 y; t  z  k- y
/*( x: j; l: G* t( H$ e9 x" v: F# ]
*  ======== config.bld ========- T5 O! u6 d8 _( `/ E! J9 C  U/ F/ ^* }
*
; p6 b& U: g: i0 C% g */4 `7 x( L% a8 |, F4 x9 G( C# r

5 S1 K9 t7 S, U: `. _5 {, zvar Build = xdc.useModule('xdc.bld.BuildEnvironment');
# z$ h$ e% K; f5 z6 V) J
: w" v- d8 S, Z, Z/*  Memory Map for ti.platforms.evmOMAPL138
: _$ H% O# W+ |& ]7 R4 \. F *) ~3 m/ k6 Z; U* @
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory2 o" y/ `7 D; h6 Q0 O
*  ------------------------------------------------------------------------
$ W  u) m2 T/ g  z, m3 G- ?6 M: o *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
* Y/ v0 Z" b% g: X/ F *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
# o( U- N1 N( Y* x+ ~% X4 j *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
/ T, X6 k  B' @ *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
# M* ?6 m& Q# w5 I4 n *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)% d( y4 a1 W4 Z/ Z0 W
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------4 a1 }$ C0 r) _# g3 G
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
- R1 V/ j4 y  |- [! \$ m' O */
( E& M' j8 h; @4 U2 i4 V& g5 x9 h0 M5 s* B) l. r
var SR_0 = {& b! z( }. W% Z# z2 n
        name: "SR_0", space: "data", access: "RWX",
. b; z7 b  r5 \. N- ]/ G        base: 0xC2000000, len: 0x10000,
% S5 S2 i. I8 ?: Y% q9 _  E        comment: "SR#0 Memory (64 KB)"
" Z/ m' p1 ~9 M3 e* s    };9 W( n8 W% D8 W$ n. S% J* e1 x

. P1 s, f+ K( P% x0 u) Kvar SR_1 = {4 g1 R6 E/ E3 ~8 U( g% v' j
        name: "SR_1", space: "data", access: "RWX",& }8 C* z8 t% G& Q! S
        base: 0xC2010000, len: 0x20000,. y& Q, u- \) R
        comment: "SR#1 Memory (128 KB)"
' e" N/ k2 s, w5 @; z& n: Y) E/ c    };
% w7 N  R' @5 b* w: N8 |* e8 Y# |, K. k2 d0 F
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {1 R8 M- i, U* g. F* N7 \; V
    externalMemoryMap: [$ ]+ n: O# a  t. ?8 P
        [ SR_0.name, SR_0 ],: T2 E& L7 W3 `% c. z+ k. y
        [ SR_1.name, SR_1 ],& J7 N+ P% q8 ~5 J0 v' t! g
        [ "DSP_PROG", {3 N6 W2 E6 g9 j. C) @4 h- y% A8 |
            name: "DSP_PROG", space: "code/data", access: "RWX",
- Q. m1 H. Q4 @0 c$ m            base: 0xC2100000, len: 0x1E00000,
9 ]8 t5 ]6 ^2 Q            comment: "DSP Program Memory (31 MB)"
; v1 w- @. F  R3 Z        }]
, ]9 M! _$ I' d7 K5 L$ Z+ O6 p    ],
* @9 P, z% c  E3 ~9 l9 W6 w+ M- U    codeMemory:  "DSP_PROG",
  C1 a' @2 k, C# m- G8 P    dataMemory:  "DSP_PROG",5 k! E. b, m: @6 W
    stackMemory: "DSP_PROG",
" b4 G4 J+ ]6 b* l1 e1 {    l1DMode: "32k"," D8 g3 g8 y+ D
    l1PMode: "32k",, B% W" }$ P0 c0 Y
    l2Mode: "64k"
" j% V) |9 W4 O* n% N' s# L8 n4 ~};% N# R4 v) ?. B% O7 B$ Z# i
& p8 T3 z3 B9 n( N+ `# I" k
/*2 O$ r8 I( k+ {2 B8 ?$ _+ r
*  ======== ti.targets.elf.C674 ========, U9 T9 \7 q4 ?  q  |' e8 C
*/
* \" M. J6 ^; b. v6 B. Rvar C674 = xdc.useModule('ti.targets.elf.C674');
1 X  R4 g8 c8 z' }6 xC674.ccOpts.suffix += " -mi10 -mo ";
! c" m. P8 l4 m& F  U# SBuild.targets.$add(C674);
5 o. V# i( }5 a
" g( a2 {" a: X: u0 Y- F
  G+ {* {0 D3 G7 }: z+ ]% I) u====================
5 d! f; b' q! b4 m& {原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
0 n8 V; L8 Z6 w4 v
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
  B$ l% a. H) p, [9 R& ~4 i$ b2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138# V0 L0 {8 F; t
*
# v9 U4 ]3 ]  l( g) V# ]0 ? *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
/ p8 D6 ?1 `) |# O8 {3 x# Y *  ------------------------------------------------------------------------
# D7 r5 N5 t2 U: e *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux) y- O! _4 X$ H& O1 R+ y
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
. T: c- H! l3 T0 A *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
' H/ E1 z; {% c' ^& p+ s5 J *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
- v% Q' _* L# `) ^ *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)% J# R+ z" W! i# i6 e  W& ~
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------! l2 }% V& l: }) v; m, F/ }% r- D7 S
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux" ]+ c2 l" Q' b/ o! I. Q
*/
3 H3 h& T2 W5 ]& m- ~' `如何将 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)
$ s% v3 b0 p# h) c  E9 l" }合并为一块大的区域作为dsp程序的所有空间
7 U7 ^. V: V; t9 I! V$ m, P
7 r, h8 E5 B1 Y& F5 k1 U0 `4 X现在发现修改平台文件只要用到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文件显示的地址。  K0 O" K9 Y3 n( ?+ M  V' F# [

6 M8 F4 H: [' b7 b9 K, X( R! f) h目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
* t: n! z! |1 W" j) N1 q+ s; i" U2 }
40 /*  Memory Map for ti.platforms.evmOMAPL138
1 ~# L2 d! e; [' F6 O 41  *
7 y8 Q, W9 {5 J: a- k$ ?1 K5 Q 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
+ j% v2 k; S, T; x/ b 43  *  ------------------------------------------------------------------------4 j: |1 ^. o" n, F. }
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux! n8 U1 X9 ?$ J5 V4 R( P
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
, {7 g$ F6 Q. f 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)- c3 s: f7 H7 z) N+ y, a
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)& E1 o0 Y; p: n! T3 x4 s
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
' z  ^" I) l4 b$ y7 ^  | 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux* u! ]& b% {- Z" Q+ n
50  */
6 \# U) p# g9 K+ y- G
) O( _. E) {2 n9 `( t如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
2 s, l7 `1 V' T! d" f. j/ K: |6 [3 f4 h; z1 u/ i
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
( G' g- a2 d& _5 b2 }0 b
  a$ m/ v  i& k0 B* v! \, N3 ~如果需要分配大容量的内存空间:
$ \$ e' A! O- D- x1 T1.改动mem_args参数(u-boot环境变量);4 c" ]" u# G) C3 @! `( H2 T
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=+ s; I) {$ S4 i$ Z' H, j6 N
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。6 k4 X% \- J* o* b3 F& T- e
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效* D% U6 O0 I1 l6 g3 @# Q$ n
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-30 23:37 , Processed in 0.042712 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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