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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8445|回复: 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 L& `5 i& i6 U7 G
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
8 R% |8 M$ ?* A8 s% K2 f2 U8 P4 A( X% d( x+ `- N
/*
. @% G+ C3 e; M *  ======== config.bld ========) c6 d7 Q* _# x) t! y  m
*
  w. w0 j( k6 U2 o */. F3 X" i8 A1 j0 n# O" f

$ i+ ~/ \8 l1 i& hvar Build = xdc.useModule('xdc.bld.BuildEnvironment');
) s$ {8 E+ I  |' A: p( u' ?" _- N7 K3 r- C
/*  Memory Map for ti.platforms.evmOMAPL138
7 ~0 j$ G; ?6 I9 i+ g: g *3 o2 P9 R) ^# S5 x9 G4 w
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
$ h- J2 o& B7 \/ c! s# _3 J *  ------------------------------------------------------------------------
" P3 C8 {2 F3 d( t& V0 z3 R *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux9 b+ C0 P6 G. O6 l& S
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
0 ~. g' T% r: i* t2 @ *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)9 p) z  Q" k! O. C. ^, c, j
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------# q- Z/ i+ H5 Y5 [% S0 r
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
3 `8 o- a' D3 P( }5 f7 \0 G5 G! b *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------# B$ W$ n" l$ O% G3 E7 x  e
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux. P+ n! d4 ]& w! ~! C$ ~
*/; |6 S5 K3 J- [

. M: x) Y3 i: [; p! ~$ Ivar SR_0 = {" a$ K1 E1 f2 D8 e) n! y7 m
        name: "SR_0", space: "data", access: "RWX",# U1 h% ~, S% n3 |" U8 j
        base: 0xC2000000, len: 0x10000,
8 ?0 X* o2 T1 {/ a; R        comment: "SR#0 Memory (64 KB)"
$ W8 Q8 P4 B  c& e5 @- E) l5 `; j( z    };
% x: b, ]0 ?) M( w( k% m& }7 @/ s" Q" u1 V. @2 y" g; h0 m
var SR_1 = {
8 X) c  `! \4 B; C( j        name: "SR_1", space: "data", access: "RWX",
. f; {) Z- z0 ]8 A        base: 0xC2010000, len: 0x20000,
: c. p& A! M9 p7 r! C2 X- ~        comment: "SR#1 Memory (128 KB)"5 S" ]0 h: Q( j4 P  O9 {
    };& |! m, R2 h: E
& x2 ^- B# A! i* P% G0 G
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {  z" p3 [+ {! ?- f
    externalMemoryMap: [
4 R# m2 ]& {6 M% f- u3 W* K# b: b. ^        [ SR_0.name, SR_0 ],
2 u  n( d& L+ ^. _3 N        [ SR_1.name, SR_1 ],, g) Q' l" Y/ D8 }6 Y
        [ "DSP_PROG", {! x3 _+ z( S7 _; n- d* |: t; O* k* W
            name: "DSP_PROG", space: "code/data", access: "RWX",
5 p- _: u. \5 Q8 c            base: 0xC2100000, len: 0x1E00000,
: ?( p$ ^4 {5 h% D# T            comment: "DSP Program Memory (31 MB)". Z+ h; p9 d, u& ~
        }]( b) |' {6 A0 x
    ],
7 j8 ]2 ]" h3 o7 i1 ?1 U  ]    codeMemory:  "DSP_PROG",$ L/ p- c" p8 w5 J: Z
    dataMemory:  "DSP_PROG",
  S3 C, e' \8 }: c0 o) C5 F    stackMemory: "DSP_PROG",
. ~- A8 r( x" l    l1DMode: "32k",* f* [5 h: W! K. x5 V% |) r5 H
    l1PMode: "32k",4 c1 i% m; ]9 x
    l2Mode: "64k"8 G! m! E0 |: f6 m! ]* r
};
) \1 p% U2 {6 ]1 \
& Y8 ^& W& U. |/*
$ }) k* R' t' v, T" I *  ======== ti.targets.elf.C674 ========8 o; z- H) P* l9 P& R
*/
  W2 ^/ P3 f, }4 @6 q6 Avar C674 = xdc.useModule('ti.targets.elf.C674');0 s  L$ \+ {" A4 E$ n3 v+ B& |" [3 @
C674.ccOpts.suffix += " -mi10 -mo ";6 U8 b8 r( Z, N4 B/ V
Build.targets.$add(C674);
; X8 N3 v& {4 M, }3 `. C, I7 _
. s+ [. \4 ~! F( Q8 ], d, @$ ^
4 B9 i4 v" s, ]& n====================
. f2 V$ y- P9 x+ Y  F, L' _原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。0 X  p- y: J2 ~9 k
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
1 q* m% e( O/ \, \2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL1383 [6 s+ x2 _( }! a+ Z( l$ q5 |5 i
*$ s+ D) V) D4 h
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory0 e4 s$ u4 u) r' v# d7 i
*  ------------------------------------------------------------------------3 ]4 I- D& }& M3 `4 m
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux4 L" B, I( v  e5 y: k
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)' f8 @9 h, A2 ~3 |! j
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
9 u! @; J7 u/ F, w *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------$ V$ O5 M, R# F7 Y; G# N
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)) ~4 V2 J) V! _6 ?& z3 E! r
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
% l" C4 |3 x+ X2 K( j *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux) s  s. a9 n0 ?& j( Y
*/
; F% e* Z. U% Z如何将 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)0 P/ ~7 ~  Q8 t+ d
合并为一块大的区域作为dsp程序的所有空间
6 J6 v% g/ {" E- _: w# z" Y9 j2 o( t- W+ z/ ^
现在发现修改平台文件只要用到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文件显示的地址。
  S" m7 U( R9 A; W; ^: K9 ~" E
( `, b- F7 d! B! y2 O) ~目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。, m  S3 ]& L1 }& h& R# Q
( W6 V3 A2 H3 a
40 /*  Memory Map for ti.platforms.evmOMAPL138' q; m3 g) M0 `* ?' H) X! Q
41  *0 ~5 \+ D3 L2 ^% E2 O5 o9 L9 _
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
) v1 g* A" k! c6 m6 w 43  *  ------------------------------------------------------------------------
, f3 V/ u8 H- l8 Z0 W 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux3 n6 ~: N4 _5 y* ^# N
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)) }8 v7 `; V8 H6 W% s4 u
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
: a# f+ ?" K9 ] 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)) L0 }5 _* n6 E" Q0 i: \
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
: l5 @/ K: F9 y  z/ j 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
* B+ o& ?% l$ [6 g# v 50  */5 C: X0 O! Y) V5 ~# q% v0 P4 D

% J  h% f% ^& @% w+ ]. n如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
0 c& Z1 E$ S. z: h% v. G1 `# _
$ T' s7 s9 S9 t一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。" x, w6 \6 q/ j0 e$ O" D! s7 X/ L

8 x* o) i! V& S9 N7 e! s如果需要分配大容量的内存空间:
- F8 n. X6 _) e1.改动mem_args参数(u-boot环境变量);
5 H& g* d5 J1 I# K) _" F2.改动双核通信工程里面的: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=, a9 C* f# G$ q* P
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。, c4 K' b( L9 M5 k  C
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效- k- ?$ H1 x4 e6 ?3 _' Z! ]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-19 00:16 , Processed in 0.052539 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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