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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6947|回复: 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 y# |( H; T$ f5 P8 i' ?' @
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:6 w: C) @9 G6 u  y! y$ m: `
* T/ `: K) T5 N& \
/*
# ~- L# d$ D3 X0 w; S# }' D *  ======== config.bld ========& L, X5 x, Z# R9 E9 t: \
*$ r& _. O& _9 f' H) |  a' V
*/. {: e4 Z- _: B4 ^, U- a

" N+ j2 C( q$ B  b7 b' O2 fvar Build = xdc.useModule('xdc.bld.BuildEnvironment');
1 _) e$ a1 A' J/ i4 S" S. B# `* j+ L4 o6 C& `2 U" @
/*  Memory Map for ti.platforms.evmOMAPL138% R5 o( S! R. i5 l9 J4 y/ |
*
7 m: R# M! d$ w' U% P+ d" K *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory! h) F- [  x$ L- u2 [) c
*  ------------------------------------------------------------------------
7 |4 z) m  e2 L9 f  W' K *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
/ V" T1 f. p: X3 k5 S8 X *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
8 Z) Z) A- U- W' F  M* C7 Y- [  K *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
' N* e- S- X* g  h5 _/ I! m% t *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------  B% j3 P1 i% V( }( v
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)) H- a$ r% D* N2 Q. ~: ~% \4 v: B
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------- {: L" W7 a, [* t) I
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux+ k# n6 q' V5 q2 V& Q
*/! ]) C2 r4 w4 A8 e) U, g
0 `/ J/ `/ Q- u) o& e
var SR_0 = {  R) [$ d. A! e
        name: "SR_0", space: "data", access: "RWX",
' T1 R3 u; V+ L+ R8 ^        base: 0xC2000000, len: 0x10000,% q+ J9 q  o! @( F( W0 M8 e. Y
        comment: "SR#0 Memory (64 KB)"& q, V4 s7 c! ~. z8 M& v% z
    };
5 Q: V+ V' Y' A( d  n6 p
4 L  F7 h0 y- M/ r. u. ~var SR_1 = {( _, V5 \" ^) _
        name: "SR_1", space: "data", access: "RWX",
. A% S# N1 h7 H+ Q- z; p        base: 0xC2010000, len: 0x20000,
2 s7 |6 G8 c2 u3 o( i  Q( A6 W        comment: "SR#1 Memory (128 KB)"
' i5 [# |3 f* y# r! J    };/ Z# P4 `7 }. K

4 o/ n4 k; Y% Z2 EBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
) y0 j5 A, ?4 Y/ K- X1 r3 V5 T" ?. v    externalMemoryMap: [8 L% S# S& ~' U( G* Y' X' Z
        [ SR_0.name, SR_0 ],! S& u' i/ K7 g5 R' T1 ^5 i
        [ SR_1.name, SR_1 ],/ f" X0 |6 K& }6 W, x
        [ "DSP_PROG", {* t0 A0 i  E8 X/ t
            name: "DSP_PROG", space: "code/data", access: "RWX",9 e- Q8 g! s) X# q, T
            base: 0xC2100000, len: 0x1E00000,
6 _5 N- K# S% S2 _' J            comment: "DSP Program Memory (31 MB)"* N, O4 j! |) t( l4 T+ C* a* ]
        }]4 q" G" z& A& K( a/ ?! u
    ],
$ ]; M/ I, {+ c3 }/ S    codeMemory:  "DSP_PROG",! G" ?: o! D9 q- c
    dataMemory:  "DSP_PROG",9 m4 q) q. Z; u% K! Z* j% G9 r
    stackMemory: "DSP_PROG",
0 P7 p: P) u& t- e    l1DMode: "32k"," U; k( W  m" |+ q% v
    l1PMode: "32k",
2 j2 C9 }5 G$ b    l2Mode: "64k"
6 N% A* W) r# m5 S! @+ Y5 p};, {! H0 N3 O% Y8 u

1 ]- Y0 Z6 g( b" E/ W+ V5 Q$ @/*
9 [* R, W4 F7 c6 w+ T. _" X3 R *  ======== ti.targets.elf.C674 ========
& @* ?5 C' {: x; \. X* L* A */+ o4 Y: j- X  N5 [2 F$ l: i
var C674 = xdc.useModule('ti.targets.elf.C674');
! @. N& `) _% v% [( X% JC674.ccOpts.suffix += " -mi10 -mo ";2 Q: g3 @5 B- s& [6 x6 _5 H
Build.targets.$add(C674);
) V$ I$ O! {7 @9 U4 M2 a0 J, Q! _
* d4 |2 W. V) w( T3 C
7 z7 N$ W! h; z====================
7 l; M/ F) z4 _原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
" F' c) l- x1 x% G2 `: D+ E
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
8 T3 ~3 ~# @; Q3 e) s5 D9 h2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL1381 o: b6 `0 d( N& e& E, R
*
4 X! C3 }1 I6 y3 ^3 ~# s+ x+ |8 \ *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
4 l8 m3 q# k" e, ]0 K; U" A *  ------------------------------------------------------------------------
, B& h% H- r, i, z( I *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
3 K7 J! i1 Z% S0 C9 R! F *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)  d$ Q6 I0 J6 \9 \( P; V
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
# V" v$ j+ C+ V: R *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
7 L6 D' B: L9 b2 w! m *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)- w0 v+ v; ~# J, r" ^
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
, d0 V% G/ G& J3 H' c3 `  p* M+ w9 r *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux7 ]$ ^5 X7 Y! x9 s/ |( W) X, a2 T0 J
*// i! F1 `# E4 f( E5 S1 w1 s
如何将 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)
5 L" ?/ i- Y8 n合并为一块大的区域作为dsp程序的所有空间
& ^  c7 D( |2 f1 U% P
: ?8 K* k9 ]/ B/ 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文件显示的地址。
) g5 t- k  G1 e' h5 I( t3 N3 `) b4 `4 X+ @5 x' q
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
! ]0 {5 y* {, Y, z; q9 r
8 t8 _9 w5 e) S6 U5 s1 c9 H 40 /*  Memory Map for ti.platforms.evmOMAPL138
" N" _3 S& F# z- K( ^" t 41  *
# i; \* k: F+ n( T# `1 q1 Q; } 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
! [6 s+ o: s- h# P9 _+ q7 x1 S/ C 43  *  ------------------------------------------------------------------------
$ Z7 [" j$ }4 a6 z; I) L3 M6 H 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux  C3 I7 a, q" k7 @" k( ?9 T
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
3 U7 x, ?& R+ \1 \! ]8 o4 M 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)- a/ C4 c+ r" q8 ?3 }* N
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)6 r1 s+ }5 G, F  L
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
# s* Z; n' h6 U* z 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux1 ~9 q# B6 L( t  |) T
50  */6 e1 H9 o6 p* ]1 }- X2 b
5 c, U/ R: t1 ]9 w
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
2 m. _' a7 \. V% J( A% o  M5 I) d5 c* d1 u" D
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。' O7 U* n( k  \6 L) n
$ S4 I, u3 T2 U# Y3 ?  L  y5 j
如果需要分配大容量的内存空间:
0 t; I+ H( _3 k$ [1 Q. X% N4 Z1.改动mem_args参数(u-boot环境变量);  \5 B. Q5 \/ z, V5 c. w9 ?
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=
) d- i$ w- C9 d) @1 i4 x# h' }这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。4 n; V' w* U* Y0 [# ^
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
  y) t3 u) V) M: q1 {' G* _0 ]  Q/ Q
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-25 01:19 , Processed in 0.039569 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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