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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8171|回复: 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端程序起始。
& {/ x  V4 t: k  h% W    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:9 |6 j- ?7 R" ], t9 z( d0 V% B2 O
+ Y& j& W2 ~( E1 H  f
/** w" e. g  C) n9 T7 e) ?
*  ======== config.bld ========
6 I3 D% m  o" w *7 ~( ~2 a% L, a1 r% T, |  @
*/1 P1 ]9 U8 ?$ p3 e4 ]$ \

$ I" Z" k( E: zvar Build = xdc.useModule('xdc.bld.BuildEnvironment');$ m9 o6 i2 M7 o

9 X" r+ r! r3 k! X" f8 T/*  Memory Map for ti.platforms.evmOMAPL138
9 Q) R& x/ B8 e1 h. W *
1 f7 U0 C+ R3 B" Z, {( B+ L4 i8 m *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
2 e  t" ]/ u+ f) y  @8 {; }" L *  ------------------------------------------------------------------------6 z5 Y) l8 U( C8 x: j( @/ ~
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux9 T  f* Q& x% L, j$ [) ?' n
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
0 r' ^- L5 A6 v/ z6 f. Z$ z *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
# [2 _* t* o! \2 B+ s7 h/ i+ N *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
0 \9 }* v% Q0 B$ l4 H *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)4 C; Q) E* y5 J# @
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
9 j: U2 B( V; i$ @3 z *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux8 S/ i3 @  n- Y3 |
*/
' h: x/ f' c: T9 M5 }7 E- V# U& H- t2 j) c) y
var SR_0 = {
% C# M1 M4 T1 M" `8 ~        name: "SR_0", space: "data", access: "RWX",3 ~! L$ O, @* F+ ~5 \
        base: 0xC2000000, len: 0x10000,
% x" A" N5 R6 @! ]) V        comment: "SR#0 Memory (64 KB)"
: p* |( a0 M, S* H1 _1 p    };8 }6 M2 t: Y- J7 @2 |/ J) O
& Y& z2 b: d9 Z9 z7 r
var SR_1 = {
+ P( ^# P, V6 Y9 M        name: "SR_1", space: "data", access: "RWX",+ A. e% O% R# P  r
        base: 0xC2010000, len: 0x20000,6 q2 S; H  @4 K. n) k4 n
        comment: "SR#1 Memory (128 KB)"6 M. d  O% o! O! ^! O  L
    };1 ~$ P, T$ _' e6 g' G, `
& h( H, p! U' N  }3 e0 E( j
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {+ ?- @/ i+ ]: r! B& h
    externalMemoryMap: [+ H, ~- f/ d! Q( Y  F( T- p
        [ SR_0.name, SR_0 ],5 K/ n& D$ M4 [. j+ E, K( c% e
        [ SR_1.name, SR_1 ],
7 m, P) ?* p- _; M3 N        [ "DSP_PROG", {7 ^# u1 b+ r4 v' n
            name: "DSP_PROG", space: "code/data", access: "RWX",1 R2 `5 n/ Z0 ]- x$ r; R3 M
            base: 0xC2100000, len: 0x1E00000,
; J" s2 a1 O/ x. l# {4 E0 R! P' o            comment: "DSP Program Memory (31 MB)") B" c  O: E% K/ U' B  {5 e
        }]2 C% M8 W8 C4 S1 s  {$ d
    ],5 W* i5 i3 y% A1 e
    codeMemory:  "DSP_PROG",
6 m2 F* S1 @8 X" }7 `    dataMemory:  "DSP_PROG",
% l$ I3 H7 c' H    stackMemory: "DSP_PROG",* @1 _9 z4 G3 f- A
    l1DMode: "32k",
& d% w' ?0 [$ g% E    l1PMode: "32k",& C4 l0 g# O+ K5 T& U, \3 k% [
    l2Mode: "64k": v4 a( b( i% ?8 o  O9 g' @: y
};; B9 G7 b' Z' n- ~3 y. D2 S) z
( B' `; Y( s& C" E4 ?7 y
/*/ G2 t1 j; x+ a% ^, ]
*  ======== ti.targets.elf.C674 ========
3 ]" N% l& Y+ C: s, |; ~6 P: @+ q9 X */
2 R7 Q  ]: A; x( E/ X7 Gvar C674 = xdc.useModule('ti.targets.elf.C674');
4 ~' Q+ d& n( x9 J. i% t7 U, bC674.ccOpts.suffix += " -mi10 -mo ";+ Q4 m: C* w6 B1 D9 V. u* l' ?8 {
Build.targets.$add(C674);
+ T! E- s$ |- I* h1 O! P  Y! c6 u
: H, A% |; L- n0 N5 l% t% l1 [& Z* n% K4 s; {+ Z
====================, t: C. g5 y9 e% A
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。$ f; O1 v3 ?6 {# x, X: O$ X
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?+ R2 s" v( j7 F) i1 X# r& V
2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL1389 r1 `5 m0 Q/ C0 C- w! W
*9 U0 R" [* z7 }; R
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory0 c5 E9 o0 u; I
*  ------------------------------------------------------------------------% d' c' g( y- u3 I1 L
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
# n$ g# I9 q4 F' ]; n& _- s/ Z *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)0 n, j6 |' d+ P/ k5 R2 r
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
: ^/ r2 v' S& S  b4 P *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
  Y7 h2 [' I- @1 P: Q4 p *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
6 n' K' G" S. J; O# ~& D) | *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------: g! ]" i9 _- Q7 H
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
) r/ R% U6 ^- f# Y9 M */: J7 c" `6 s8 Z( ]6 A
如何将 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)
. c: }8 p' ?5 w* M, [( ~1 y' g# S合并为一块大的区域作为dsp程序的所有空间
+ d, K" v8 }) r: s: S$ n
. ?% k+ y7 x3 `现在发现修改平台文件只要用到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文件显示的地址。( h/ h# ~" g. z( M& K
/ ^# d% b) S. X( r( u  }1 u/ 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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
6 m9 e3 |2 f% R2 i# f# |  s$ o" Z  ]/ w, ~) ?3 c$ d
40 /*  Memory Map for ti.platforms.evmOMAPL138
; K' `$ U+ v) ~* K 41  *
6 w3 N* X+ p0 p" i  Z! r 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
7 E8 t- Z+ C' F$ d, Y* k0 r% R8 Y* s7 B 43  *  ------------------------------------------------------------------------
. _, E9 V/ ?+ c' k8 t 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux, r6 ^; j1 I7 S
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
8 P% c! ^6 h2 q! S% O 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)8 b0 ^8 J0 d$ |$ _' V' y
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
3 z, B. ]9 q2 m% J$ t7 _ 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
9 w  \9 O" g4 t3 C 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
; L4 y! N" K6 R  k2 K) O& q) ?$ A: t 50  */  R; p4 E3 J/ r
& Y8 o$ N4 F, H8 j
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
* |& u& E, H: o+ K" q- Z* A
! k  `: H3 O5 P6 _9 q# [4 M一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
& h/ I; j, C3 k2 m
% V3 l0 Y; p) H如果需要分配大容量的内存空间:3 c: a0 M0 s7 |+ d) x0 K7 o
1.改动mem_args参数(u-boot环境变量);" b' t+ _; A& W; v5 N2 t- ^% f
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=- @# a+ @, w$ ?$ |  r
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。9 h& p! O1 Z2 f- H- ^% u: h% O
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
4 I+ E/ @& O5 E' D% [
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 17:30 , Processed in 0.042612 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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