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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9480|回复: 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端程序起始。3 u. k( ~3 l7 @
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
, Q, w7 d  e! p+ Q9 a- S* R, D- j0 Z8 M3 z3 A- c: k2 J6 y* E
/*8 y- R7 S/ e4 L
*  ======== config.bld ========  k, ?: B. m6 r$ G
*
3 u  P8 Y% B/ l0 D, B4 Y& V */
* f' ^$ D. W8 C+ J5 O
# |: ?$ i+ K; ivar Build = xdc.useModule('xdc.bld.BuildEnvironment');9 m" Z# C: ^3 U+ r

, N$ v  S& t+ A, a# D. U/*  Memory Map for ti.platforms.evmOMAPL138
/ l' C& U2 i+ |' O( i9 z) v *
6 F$ [/ A  J) y *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory& Z! J8 I% j6 g1 s, K6 [
*  ------------------------------------------------------------------------( w- P5 J% D3 L4 `) V* @* O, e
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux2 [4 u% m1 R9 @% ]4 q; p
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
1 B5 f& T9 D9 V *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
& w4 L) h4 B$ B/ Z) [6 a *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
6 b. C( c, Z* Z8 ~ *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)* U5 l+ n$ m$ c1 r3 T) A* [+ m! W$ g
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
( G9 K* x# d9 Y" Y& x *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
/ T1 ]: U9 k2 U* D" C( n: W */. j  |7 d; G9 D) P. x
5 [0 \; A% P% z- q; b
var SR_0 = {5 E3 k- @! x# _: d7 C
        name: "SR_0", space: "data", access: "RWX",
* b' E$ z9 M! Z0 K& T& z        base: 0xC2000000, len: 0x10000,
+ C8 f. `: R: `4 _        comment: "SR#0 Memory (64 KB)"2 ^0 z! E7 j! h" y! W
    };) o- b" ^! k- `/ S' _- d- g
3 D$ k; D( ]7 P1 y* q9 f% N4 x7 L2 }
var SR_1 = {2 `0 Q, t0 Q# R" {& I2 C3 Q
        name: "SR_1", space: "data", access: "RWX",
) N& p5 D6 h* n2 P        base: 0xC2010000, len: 0x20000,7 c5 \% Z" [. e, p
        comment: "SR#1 Memory (128 KB)"
; r$ c5 T) J* n3 N/ }0 [6 l1 d" r    };8 m* F5 U2 C8 j5 q; @2 Y0 E

: z6 @7 y0 U  k0 O/ `Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
9 O: C9 f  x2 f    externalMemoryMap: [0 D% t0 q( Z' H% i7 N8 l2 R
        [ SR_0.name, SR_0 ],2 e, h5 m# k  G9 s5 Y' a
        [ SR_1.name, SR_1 ],
6 L8 E  ~* d2 B6 |) |6 a        [ "DSP_PROG", {
9 e# ]$ r* M3 O5 y7 B$ m: s' O5 r            name: "DSP_PROG", space: "code/data", access: "RWX",
1 U  r7 K" Y7 }& X            base: 0xC2100000, len: 0x1E00000,/ g+ U# o) |, e( b6 e6 A0 Z0 b) J& Y. A4 j
            comment: "DSP Program Memory (31 MB)"
" v0 g0 j6 Y+ a8 w: a1 ~' H% \        }]: ?7 u0 V! C0 W3 ], i
    ],
9 k0 `* V  z" k9 Q- V0 I8 J" c3 e    codeMemory:  "DSP_PROG",; F! c: Y, D9 `/ V2 g
    dataMemory:  "DSP_PROG",
5 N( T4 Y/ L2 z3 D( I$ b! O    stackMemory: "DSP_PROG",
( U. P  `$ x& j  R* Y* F* \    l1DMode: "32k",  C/ c9 [% K6 S0 _8 V0 M6 i, V
    l1PMode: "32k",2 Y6 y! {' S* }$ H, v9 L
    l2Mode: "64k"" q& N# F& }4 g% p, v- g3 T# V
};8 p  e) N* ]& g" \3 ]& s
7 ~. Z0 y* t8 f" g. ~1 X% _/ {
/*: X+ t* V+ G& Z' ~" ]+ q2 \& z
*  ======== ti.targets.elf.C674 ========2 o0 q" f  E+ O7 N
*/7 |1 G0 g* c. `( G& C+ t: v2 e
var C674 = xdc.useModule('ti.targets.elf.C674');
0 [; Q0 w: H9 b; |% E- SC674.ccOpts.suffix += " -mi10 -mo ";, C( l! U4 B8 `9 e$ m# b
Build.targets.$add(C674);
1 E( j1 D9 e2 m
/ _+ Y7 {: d' l! n) W3 j% e: M1 D* K% M( F( f
====================
% N* J. x1 ~  v2 y% t原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
0 ^5 t! \; j2 ^. o1 P2 |% t/ K
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
0 R: O+ Z8 x7 ]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# w, k1 R1 z; J( b9 F
*& J/ \- g. f- H- K; {
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
; h( R4 Z: E: Y8 U; I *  ------------------------------------------------------------------------5 T' y; j$ t. ^6 T7 m
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
( d3 I. R( L: V1 ^" k$ A/ d% L *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
+ T; R9 M3 Z# ^: R# O0 l *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
( v% s2 L% }% h) U9 Y" C *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------1 g7 n* }7 n  [9 T' N
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
6 c+ i4 `. v. K8 Q& q *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
5 }- V5 R' Z- E# k: B *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
/ ]  ?2 n1 z% Q2 N$ d; q; S& y$ c */* H3 W; {+ p! o
如何将 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)
% C2 h% `, m: {: C8 |! h. q& L: p. M合并为一块大的区域作为dsp程序的所有空间
/ u( }0 V# _, `9 \, c9 |; a5 A, `: g% T& v
现在发现修改平台文件只要用到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文件显示的地址。2 z9 c# G9 K% F4 c1 b
* T$ e9 T/ g! c
目前将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 c0 z6 D0 F* T9 e0 {" b
2 p  G9 B5 t3 t' e 40 /*  Memory Map for ti.platforms.evmOMAPL138
8 P" |  m  x8 h0 z/ e 41  *
6 L8 Y1 X4 }% \1 \ 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
5 o! u5 D# P  t0 { 43  *  ------------------------------------------------------------------------% t7 \5 s6 O, ~/ U8 [, ^7 `
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
% F" r, @9 [" |6 ^' @$ ^ 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
3 W( s9 `% ?$ `* b! t 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)/ H  `( F+ L( H2 W7 O- i" w  I
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
/ |# d* w/ [/ U4 }' |0 \$ ]: |9 }- D 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
3 v  f# Q& D- l8 J7 L: [ 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
* c$ P* c' G2 d& m1 w2 ?* f 50  */
5 T9 i; V2 z0 R% R1 k, F7 D  N5 y9 f: @
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。  i9 ~& l1 s0 J) @3 h8 X
  A& D& m% a+ V5 [6 q! {/ Z! U
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
0 J  @- g/ z$ F% R
8 J( ^8 V2 ^3 _1 ?& b如果需要分配大容量的内存空间:7 ~: M# c5 N) `& h3 a
1.改动mem_args参数(u-boot环境变量);
* [2 S2 i. I* \! Q2.改动双核通信工程里面的: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=
1 W; E9 \7 X2 a# d! ^, U2 E这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
) z) j! b& Z: y9 Gshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
: A. `9 u6 A( x. p/ q% }6 E1 j
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-15 05:44 , Processed in 0.042484 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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