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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8257|回复: 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端程序起始。- ~+ Z5 D, \/ a- P% j7 s6 K3 R% j
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
3 H; {' U7 o, ]* a% x; _& j# U* }8 m7 s( C! D- F3 ^
/*& }2 p; y; F2 y5 s, }( t  v6 ?" c5 Z
*  ======== config.bld ========
; h) c: C9 U3 `8 q *2 E5 e- F# s; M) V  j& y, l. m) T
*/' u$ Q: u( O; l) }3 e9 R

# X  c2 t8 k" fvar Build = xdc.useModule('xdc.bld.BuildEnvironment');9 `; _9 i! a0 Y+ c0 ^  }- W

( d' A! N* C# n' [" \/*  Memory Map for ti.platforms.evmOMAPL138
  ~! P* G( W7 O. ?7 }7 _ *9 v( S3 h1 X$ P
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
+ v/ t: I( o) c *  ------------------------------------------------------------------------2 O$ _+ W& @# F% a7 }' H
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
: D8 ~3 D9 Z0 _, G& R) y/ Q  S *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
. y7 p4 [7 j9 m *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
& K, Y3 D! c& ?/ ?2 N *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------' _# i0 |3 }* ^+ e! a5 H
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data); n& J6 D* @& {4 [4 _2 E
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
) K& ^, C0 r- B) b" I) [ *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux. b0 q" F. b- ~* i
*/
7 j6 M1 ]6 |3 s  Q4 u: v) |, `# d' H
9 M7 _+ |5 T! {& {# U, qvar SR_0 = {
0 R" |1 X# U+ }: ]4 ^3 z* n: f        name: "SR_0", space: "data", access: "RWX",
. l* d) ~! V; p        base: 0xC2000000, len: 0x10000,
# l. S0 Q9 V4 q        comment: "SR#0 Memory (64 KB)"# |# x2 q/ c0 H; b- |7 T6 s* i$ T
    };  w$ }) i) J, m, w4 N& R

* @. j0 }- r; ]4 Z: \var SR_1 = {
7 d$ s/ i0 P6 O. h, C7 c        name: "SR_1", space: "data", access: "RWX",) G8 U4 p# C5 S
        base: 0xC2010000, len: 0x20000,. i! @8 I; i! p% I( Y
        comment: "SR#1 Memory (128 KB)"
5 w  z  j2 m5 Y) B8 |7 f1 O; H    };% `4 h1 x5 Y" M7 U$ k: s' G& B
" g8 o4 O; Y0 |# k
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {% T" w, v6 Q# D1 K0 R
    externalMemoryMap: [
: c$ a$ \) F4 G+ b3 b; h9 H% n        [ SR_0.name, SR_0 ],
% m7 b: H+ m1 H/ U% l        [ SR_1.name, SR_1 ],
$ Z9 y8 y5 ~* i+ G! W. v) R$ |        [ "DSP_PROG", {0 t! _' h. n% G$ v3 O8 H
            name: "DSP_PROG", space: "code/data", access: "RWX",, }6 W* r) r: J
            base: 0xC2100000, len: 0x1E00000,  ^$ Q9 Q5 ?; t+ c" R- W  [
            comment: "DSP Program Memory (31 MB)"4 l9 r" u+ V+ r* U, W  \4 x" p
        }]5 Z1 ^* t5 a4 C; F4 y
    ],
+ f# L! _  D5 }/ r    codeMemory:  "DSP_PROG",; `$ M( T2 ]9 W; T
    dataMemory:  "DSP_PROG",
3 L  G# F& ^) B$ ^3 J    stackMemory: "DSP_PROG",
2 N# p# y7 a7 w6 m    l1DMode: "32k",* m: f3 g$ k' @+ k* Q
    l1PMode: "32k",0 `9 p6 r0 c* S( B" |* m
    l2Mode: "64k"
0 i" W8 b  P0 W3 y};
+ g3 f8 Y% h! J- A% z( W/ m: t8 c0 d7 N5 `7 |( ]! J2 |
/*
, x9 i  t) s, y/ D) A+ ^ *  ======== ti.targets.elf.C674 ========# y) d0 ~( s4 F( B, i6 M1 x) G
*/5 k; H) I7 Q% g' ]. a5 ?5 @0 m
var C674 = xdc.useModule('ti.targets.elf.C674');1 N3 Z/ _* Y; H4 B2 o) \6 W
C674.ccOpts.suffix += " -mi10 -mo ";
9 y; D9 B0 t/ X+ JBuild.targets.$add(C674);; D" _* a  U" p9 Q0 _
5 `, k0 [/ S* i4 J

- T% d- _$ e% Q) |# o9 H: X====================
3 ^% Z5 J" R' b& M9 |9 T( T. e原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。, Z+ C( ^) P. r6 c
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?, f$ S9 k( Z5 h$ q! q6 Z
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/ N- L  @2 f  `: s, E7 q$ {6 m
*
9 h% j1 C# N, f5 X) Q7 G  ~ *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory, H$ i& o! q* f& {5 n7 [: t# X
*  ------------------------------------------------------------------------& y" |  C# k9 f0 f! [; ?
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
% E. W8 M- _9 u6 t- u: r *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
) v& F! G; [6 m8 L8 Z) T, B& A* ? *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)/ \! l& _% ]; v9 v  F0 s
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------4 G5 b  |1 E& A& p3 T) y' J2 V
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
# W& a, X& d2 Q9 r0 }+ ^ *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
" ^6 z8 ?- @2 \, C5 J9 O *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
; K/ D# o+ M& j$ t/ k# Y */6 g. s8 {1 h; F: p3 t" T$ U# c
如何将 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)8 y& B" }" H. X( v$ P! I7 ]
合并为一块大的区域作为dsp程序的所有空间* h% d0 E* }$ a

5 O+ }1 J, \, W- n- u8 o3 k现在发现修改平台文件只要用到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文件显示的地址。8 V2 a, `1 J6 S% ~" j/ m
" f% f: C7 O0 e! k0 q2 i5 l
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
8 V4 c% s; d* Z. A* o5 A% o/ O4 Z! F- k4 \8 A! l  D3 t
40 /*  Memory Map for ti.platforms.evmOMAPL138, c4 r: d3 |3 P! z/ n! u. N" p
41  *$ b/ c2 s1 @) y  M- S& n7 k' Q
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
3 B0 I0 C# R: V1 I1 X- E) x: b 43  *  ------------------------------------------------------------------------- N  `$ T) O3 ^
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
4 y; R! s) @2 A3 ~ 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
- J% h- B# r3 ]: P) K( |( g* `1 o 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
, N$ [+ l& }- C! Q) k 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)) o7 i: d$ L' X! Z8 g
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)' f* p+ D/ e, S3 M7 {
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux$ e" F- }- W9 }6 a
50  */5 `  t7 ]6 Y* g* {5 n5 ?' w: J
+ o* }2 a' T  V! Q7 l( X% W+ T. ^
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。/ R0 V+ y& H% i$ e5 d7 c- o
; Q9 V6 M  o  O: l8 Y2 I6 L" b! S
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
2 x$ g, c& ?2 c# Z9 B9 C7 Z& Z8 x$ v" d! i
如果需要分配大容量的内存空间:
! e( ^' Q, V6 S1.改动mem_args参数(u-boot环境变量);! v5 m8 e7 [& ~$ u8 n2 A; c
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=
/ o" I0 ^' M* u$ ]& p/ x5 {* |这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
. [; l% V: t0 ^; b& J- E1 _share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效: g3 l8 P) d1 W! |
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-2 21:01 , Processed in 0.044145 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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