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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6896|回复: 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端程序起始。) P- f1 ?3 i, F- h! n. o5 |/ x
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
* x1 t! u( U+ V* l; f( D( w
) }& P+ K! i# e7 l/*$ g) Y* y' x8 x5 I7 f, Y
*  ======== config.bld ========  I- \' V  V# I. N
*
. m6 E/ _5 K6 ~8 Q4 g */& D* D7 R8 D. T! y  G" u; \
0 H& s( l+ h( ]0 ^' D0 ^& a- L
var Build = xdc.useModule('xdc.bld.BuildEnvironment');: r& f3 H; l. l/ w8 f+ ~. A
8 n* _7 J  r4 Y* a  g5 H6 ]
/*  Memory Map for ti.platforms.evmOMAPL138
4 c/ z$ A$ u# n: m. C5 g *8 J  T: i6 D. y1 b4 h. n7 ]( _
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory4 u/ A) V# K$ ~) y' [& a  g9 e
*  ------------------------------------------------------------------------
' r+ `3 O1 s- x8 m. I3 O *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
2 U0 o0 O# P! T- R8 L *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
6 W2 ~& k  Z& m5 _& D8 }: O *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers); @, T7 m; ^+ M2 p- ^# J) a
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------* A& D& C( c1 t$ z3 `9 Y
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
. p: }+ V7 v2 S+ B, { *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------/ ~0 ?" B& [  ^5 _7 z) O
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux1 u+ m8 }# a% o- ], l* e9 r* L& u
*/
8 t  y' m0 W; K' c( b- |
) ^' {  `* b3 n: C5 _+ H1 bvar SR_0 = {
, A5 w1 a# o* n; ~        name: "SR_0", space: "data", access: "RWX",0 s# ^9 x- c$ B' S0 E
        base: 0xC2000000, len: 0x10000,9 ?' _. r7 \, `& h3 K- Z
        comment: "SR#0 Memory (64 KB)"/ E5 t9 }1 q" j* @6 \
    };
& b. L9 P& ?6 b8 @  C2 D, C: n
9 S, b) S2 G+ A4 k1 e; Mvar SR_1 = {
0 |  Z0 k9 L6 ^* j! Y        name: "SR_1", space: "data", access: "RWX",
  R' P0 \$ R. S1 F7 [: f. }! H        base: 0xC2010000, len: 0x20000,
5 {& [+ [! `5 i+ t, S, \. a& B        comment: "SR#1 Memory (128 KB)"( t* ^0 G7 c( L4 I7 y4 m0 g
    };
7 L+ r& |! b" Y* P
/ d& l4 T- J& w# {' U5 K1 P0 `* PBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {8 C; m) ], `( l9 d* U8 D* @; {
    externalMemoryMap: [
, l+ d* [; ?4 A1 n6 g; z        [ SR_0.name, SR_0 ],
! E  c1 g1 I+ {9 x5 d, V# D# E! l. p& \        [ SR_1.name, SR_1 ],
$ J2 D! F/ J  `' d( Z0 J6 l8 M  k        [ "DSP_PROG", {5 l. M5 P% X+ _- b
            name: "DSP_PROG", space: "code/data", access: "RWX",1 @! g: ^! G3 y% \( v3 a" L
            base: 0xC2100000, len: 0x1E00000,
! d% c# n$ B; {, l% \) j9 R) `            comment: "DSP Program Memory (31 MB)"
; |" }- e0 n) N/ K        }], R3 e0 y% @+ e* T* e
    ],) Y. L5 `0 T1 ]
    codeMemory:  "DSP_PROG",  q* Z1 u, t: K# f: f
    dataMemory:  "DSP_PROG",1 Q# Q9 r  |1 z( r
    stackMemory: "DSP_PROG",
) c- X3 Q; W$ t8 e    l1DMode: "32k",
) l% e$ K- P4 s5 j- {    l1PMode: "32k",! o7 c& k" e/ M' O9 _
    l2Mode: "64k"1 y& k  G/ M' J% ^, T
};# M' B: t7 O  b; q! q3 W
- A' d( ]/ v; E, J- d
/*6 o8 I* e& S! q& x
*  ======== ti.targets.elf.C674 ========9 I, z9 J0 T4 ^# I8 E9 [, R
*/
9 L& u/ Q, J  i4 zvar C674 = xdc.useModule('ti.targets.elf.C674');
9 C; U6 _" V8 S9 |C674.ccOpts.suffix += " -mi10 -mo ";
6 w$ F. r, I2 c9 s1 ^' O! CBuild.targets.$add(C674);6 ~2 B6 C8 o4 T
: O0 Q. L3 `: ~3 t  {
% ?+ f& F1 z% O0 z# M, Z
====================
) l. E7 @$ z; x+ s8 R原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
- O( c. t+ }2 Z1 r7 N4 D
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?  d" W; `% G6 Y% o$ Q0 I! @; ]
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$ V+ N; G: j8 V0 n* B, ?: D+ n) [
*
0 @0 U- {/ B8 _ *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
+ t) N$ t$ A" N *  ------------------------------------------------------------------------
9 c1 ]9 s- a4 Z8 k5 B( B& H *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux* f3 ~( x+ j0 f. H7 T  O1 s/ B
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
/ \  V, a$ Y+ y7 j" ? *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)9 F' _) @9 e  J5 a$ |
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------8 W5 z2 R# \1 R6 o" @1 S8 `1 n  @
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)# @! v+ Z  ]0 y! s
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
: [: S- G  j/ @, l* m4 S& s *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux) L, ]5 P, U# y
*/
/ U5 |* k5 D+ {1 u) ?$ 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)4 e/ Q1 J' z2 N: E
合并为一块大的区域作为dsp程序的所有空间
! `) o7 ~7 V( l4 @6 y; P# @5 H: [  f! d- j
现在发现修改平台文件只要用到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文件显示的地址。4 a0 d- W1 j4 C! ^+ \
/ L" A" g/ d( S
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
  J; j/ ]* T* T  s* @
# H3 o, U6 J0 e 40 /*  Memory Map for ti.platforms.evmOMAPL138
9 }: N* ~% b+ R5 C" [7 ~ 41  *
! Z9 e; Q, |" n! d. O/ n 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory( x9 K; h( N0 d
43  *  ------------------------------------------------------------------------
- K4 Y5 f. j8 f6 x/ L+ o/ b 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
. [% }. B6 O# |! i- [ 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
( q3 q: E3 L0 ^ 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
0 c) m5 x9 L4 y$ \2 Y8 y9 t* y 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)4 e$ I8 Z# G6 J
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)1 ^2 {3 F+ k" n) R- d% b
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux) d5 u& h, }) V; j
50  */
) b8 ^; Z0 K6 \( P5 E8 G( N
9 j) s8 F( _  v, x* Z- p& M如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。8 Y9 f2 j" V# V# y. Y
; Y* L6 M8 W- }+ L! p
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
# x- w, A% z& S' H  G& M& }6 n- j2 Y! K% R  i
如果需要分配大容量的内存空间:
/ S% h: j+ C! p( v+ d4 X1.改动mem_args参数(u-boot环境变量);* N3 m+ o  q& z3 p* B5 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=
) v: w+ Y4 _* U3 I+ b: c1 ]这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
. P# e4 b' O8 D1 k( ~- k% ^  |6 nshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效0 h8 ^! A6 l( g1 D% C) g* j
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 10:39 , Processed in 0.049374 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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