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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7008|回复: 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端程序起始。
% Y* L. Q9 J- X5 h  d    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
1 ]. ?% l3 t6 v) ^0 U) _1 F
0 U6 d9 v/ b* N1 ?/*8 `% C* i  _2 N2 ?2 R6 j' T4 _
*  ======== config.bld ========- h0 E- U, a5 O6 k+ o# V+ ^. @
*& `" W4 f1 \  H3 q2 r7 V
*/: Q: Q& ]7 y; M# X
& o1 M6 i( Q9 k! \# Y9 K
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
$ }7 ~" Z7 [& s; O( ~9 R" z8 a% J' v  ?- S6 n  U& V
/*  Memory Map for ti.platforms.evmOMAPL1389 T, ]( G) Q0 [( f: p1 }
*! `+ r2 d: g7 Y. Z
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
+ m! l3 f) N1 e& m4 z, m *  ------------------------------------------------------------------------4 ?& |) Y. G4 A/ n0 ?% I/ R  |3 {
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
! C& r. G$ |6 L# N *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)% W2 z- B: e3 g
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
6 o/ o9 K9 D: N6 {( L4 w *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
, q" p  L: y4 @  X# J$ e- T *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)7 `0 B9 J# Z  s2 M; X0 j5 b) c
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------- n7 t! F. y1 M$ m& n  D
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
  G* P# Z, M! H9 \3 {; L9 _8 u */4 k" F% [! P& y9 W6 C8 u1 K( ^

6 n$ I3 K9 R; ^- Qvar SR_0 = {9 v5 u; P, r- M9 w8 g) \! g/ F! n" N+ a
        name: "SR_0", space: "data", access: "RWX",4 V0 ?$ o/ d7 e' R8 w2 L
        base: 0xC2000000, len: 0x10000,; A: N) h. r% C6 \  v
        comment: "SR#0 Memory (64 KB)"
9 c+ a1 ]# Y8 Z: w9 J& G" k    };
) x! |- _: Q1 r* C$ l$ J% E6 H2 o) z* w  ^3 N) A
var SR_1 = {
8 `9 {) Z- w1 e; F- p. O6 G3 b$ q. U        name: "SR_1", space: "data", access: "RWX",9 M$ y* \4 T3 a1 m0 r# c
        base: 0xC2010000, len: 0x20000,
2 e# |* t% D& y        comment: "SR#1 Memory (128 KB)", \4 u! x6 h9 L' Z, s( r- V& n
    };: O' n9 r, Q: z' Q/ p: d

& q8 u( z" \& Y8 ?% xBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
( B* \5 h; n$ b' e8 {; [1 T    externalMemoryMap: [8 Q2 l0 f* v0 D4 a, B7 `
        [ SR_0.name, SR_0 ],
' F4 F9 d! G4 \! i! U2 K& q( w- Z        [ SR_1.name, SR_1 ],! o: F3 t8 z9 z* D$ b+ K0 \
        [ "DSP_PROG", {
/ y2 J! m! Y; u3 l            name: "DSP_PROG", space: "code/data", access: "RWX",
5 L, E" A$ Q) I) {2 u1 i; t            base: 0xC2100000, len: 0x1E00000,
+ f: R( Z# |; Q5 M# i( ?1 c            comment: "DSP Program Memory (31 MB)", F* r+ ]3 L+ }6 \5 X1 D  [
        }]+ |$ f. ^: f8 k& q3 a# q' p
    ],' L( i( M( t# S. f7 E2 C
    codeMemory:  "DSP_PROG",
- N% q! `1 A# @: ~0 y1 b3 P    dataMemory:  "DSP_PROG",4 F' ?# w: W( S/ I
    stackMemory: "DSP_PROG",
4 j& {' }4 @$ ~3 i2 a# J8 ^    l1DMode: "32k",
0 ?4 _0 f- t: r/ }* m8 }6 Q    l1PMode: "32k",7 ^3 q/ c1 J/ `: H) W- u
    l2Mode: "64k"
+ N8 V) y! e8 P9 A) A' H1 \. K};
5 d3 n% a: O8 [
' R4 u8 `3 Q3 `& N; ^" f/*# ^* y4 A' H) e) `5 N1 n
*  ======== ti.targets.elf.C674 ========7 w  S# Y2 ^: d0 E
*/
8 d$ c. B- c: A8 Q4 hvar C674 = xdc.useModule('ti.targets.elf.C674');) h) Y; W2 B: z5 a' ^4 c* I/ F
C674.ccOpts.suffix += " -mi10 -mo ";
9 ~! \' M& I4 A; BBuild.targets.$add(C674);$ v; n) z0 a! p( u

- s0 n; P7 ^- ^( A: \% ^1 V. E
4 {3 I. t0 |; o! C4 a====================# h$ T9 k5 H* u( [% i1 L
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。3 G7 v) E; o. q) e) x8 ^
分享到:  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 f4 V/ y3 o( \, D
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
: i; I/ L2 G. B6 M! \; U& _ *
! L! V( ~$ @, Y4 c1 C *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory9 k9 `8 d) Q: D* i* l1 z7 [+ }2 }) J
*  ------------------------------------------------------------------------, W# B3 k! X/ A4 E
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
$ c# u: _, c3 |" f1 h7 I *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
5 Y- ]/ v% J0 j% C *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)* y1 A0 v$ m; w
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------& @9 }2 G& H* c7 K
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)% O3 _* B' Z$ p- ~
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
6 S4 r8 i# u; P: b. ` *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux* d: v( i& D' c) h6 N3 ]4 P1 h  M+ ^
*/5 R: S. _4 \! 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)
9 ]: L6 j9 h; g, S; w( K9 W合并为一块大的区域作为dsp程序的所有空间# u- L. R& l1 y6 i  M; q
0 G) ]0 U  D* K  o- B. q' P, |
现在发现修改平台文件只要用到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 G. q' `: u8 y: e- Y% R6 N2 V9 s: K9 Q8 I
目前将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 |9 W' n4 v5 u
& w: }- }4 _- i, U 40 /*  Memory Map for ti.platforms.evmOMAPL138
0 U* w5 t- V+ B2 i* d5 a7 g 41  *
4 w5 ]! s  S( t$ N% V) Z8 `, K 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
! E" }# j/ u4 C1 n" N 43  *  ------------------------------------------------------------------------  \6 B/ E5 w. C, s' k3 \: M
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux  N3 W. }' _+ A/ g5 ?" z
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
  \4 F/ z: s6 ^& i% u* Q 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
8 u7 l0 X* W7 u& h. | 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
8 Z5 Q( T% n% M* C 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)! S3 r/ v$ i% t- N
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
' i9 G5 i: Q, k7 R& |+ Z5 a1 x 50  */5 t( s/ q+ ?  I
8 h4 l' ]  z4 V& ?  L0 A  P! b2 F
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
0 ^: F- W* r9 M2 W3 o! Q' y( A% S3 j/ x" ~- k
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。  X4 u- V* ~9 l- w7 B+ e
/ U- [  V( l. q3 I) E2 B7 q* m5 b" f% j
如果需要分配大容量的内存空间:. }3 D) Y; L3 d; k$ W& m" y" w, X( G
1.改动mem_args参数(u-boot环境变量);
% [3 n2 Q8 e) g8 ^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=
8 \. W& o, s- j这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。- d: i( W- N. x3 Q* @: T
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
( V) W7 x$ U4 W* u7 y/ R3 ]4 a
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 17:18 , Processed in 0.041914 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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