OMAPL138arm核跑linux+ipc,dsp核跑sysbios+ipc,重设dsp端程序起始 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9687|回复: 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端程序起始。
8 `9 w6 T1 m' q5 E' `    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
8 U" A# G. l* n6 V2 D" m
; A! r0 w" r6 A9 }/*" S% y. t8 @; l
*  ======== config.bld ========
/ N! W+ k/ N+ s9 Q" W *
# S7 [  {" {6 n. ~5 L: M" h% r2 @ */
8 d5 q7 y7 m& o1 U6 X
+ W# m9 ?: e. t9 n& y6 bvar Build = xdc.useModule('xdc.bld.BuildEnvironment');
& M+ U2 ~4 I: u- W5 T* h7 D( C# \) y: L3 j# o$ U
/*  Memory Map for ti.platforms.evmOMAPL138
. S- r4 o% m0 S* N- L% `$ _4 O( J *1 f: }) u; s+ q: Z
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory6 f! [2 U/ J- @! M1 v
*  ------------------------------------------------------------------------, R8 L1 i9 l: z) p( A8 D
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
- q/ W+ f/ j- C+ R* r% [# s *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
3 Q! J" j4 A( B% m *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers); U1 N0 m' n9 B# F( S
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
: _3 u2 E" d, a) L3 D *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
1 B5 J7 P+ u3 {1 Z, K6 n" r *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
% U5 x! D# w( J- u! k' G7 O# X *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux$ O" p2 K% w* i& F
*/
/ d' ~7 |; Y& F- H" M; Y5 ~1 u
# Y! l7 A6 f" W& Q2 pvar SR_0 = {1 Y- g5 o- V' H# X8 ]8 I$ Z
        name: "SR_0", space: "data", access: "RWX",% p) F& q$ s4 \8 Q, p! N
        base: 0xC2000000, len: 0x10000,
, f9 r3 e7 P) Q* Y        comment: "SR#0 Memory (64 KB)"
6 |& d2 L0 v2 W/ u2 ?& T1 ^$ n& y    };
# p1 a- @( `6 f( e
; y% b. [- o% a( g6 O% W8 ~var SR_1 = {
8 S. [- B/ c+ [0 [  o( H        name: "SR_1", space: "data", access: "RWX",  o; L* M7 j# g  D; W' n% o
        base: 0xC2010000, len: 0x20000,; E+ s+ v0 x7 S" ]- B" I4 c
        comment: "SR#1 Memory (128 KB)") {; X7 r6 w4 }2 i9 L( C
    };9 Q5 {) m' _+ l# I6 l' L

$ V2 H+ W1 [% j5 ^9 j& }Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
7 n' I/ f; P' P7 y! `. c7 r# z    externalMemoryMap: [
' ]# M6 ?/ _$ T        [ SR_0.name, SR_0 ],
8 |1 `: |( X( Z/ v5 H# m# ~! u        [ SR_1.name, SR_1 ],* j, w. d( c8 j% @% a$ x0 N
        [ "DSP_PROG", {
2 {3 h. ~( b6 x' R4 r; e4 a2 L! ?, I            name: "DSP_PROG", space: "code/data", access: "RWX",
0 }5 Q, ?1 @& {- p5 m$ A+ h  y8 ~            base: 0xC2100000, len: 0x1E00000,
0 @7 Q* K1 j, Z3 Z- t            comment: "DSP Program Memory (31 MB)"
3 k- U7 W8 R0 H/ y        }]
% j* g! u+ n8 N+ `5 O    ],
" V- ^9 I: l' g& ?( r    codeMemory:  "DSP_PROG",6 `5 }$ s5 h. T' u- z: ^
    dataMemory:  "DSP_PROG",
5 s" C8 H3 u" \    stackMemory: "DSP_PROG",8 r, p! R5 M5 w$ g! |( ~/ A
    l1DMode: "32k",
  P  `7 r& j* B8 q" i    l1PMode: "32k",
9 O3 B+ w6 S/ X8 C3 f$ r+ _( F; ~) S    l2Mode: "64k"  M2 a' u6 y! T9 n  p
};% g3 `; C+ Z+ F8 M: _+ p( a
/ x  S; m& p& n0 E% R! A0 B8 m0 n; o% z
/*3 v& P: \5 J, [8 s- r
*  ======== ti.targets.elf.C674 ========2 D% g4 D) q: k2 L$ |
*/
' \: _/ p5 T: ]8 g5 D: xvar C674 = xdc.useModule('ti.targets.elf.C674');/ z* _. z) \; O# H" h3 ]; d7 ]1 }4 p
C674.ccOpts.suffix += " -mi10 -mo ";
$ a- n1 z& ?+ h7 ]% j, V! b9 O/ rBuild.targets.$add(C674);
4 m: S! Y% x; q, y! [
- `; j5 R- @- V- c  g
1 c- x, J, c2 @# |* O) ]/ X====================
0 \9 O: ]! A* v: S- E% z% F原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。1 B$ A3 z% G- ^% ^
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?' t6 q2 ]2 \8 u+ l7 F3 _! Q
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
/ r* x( p( j4 P- }' v6 I *2 d! ?+ Y5 L% B+ g: U
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
# ^3 h1 R% {5 H0 X: M( J *  ------------------------------------------------------------------------
& s! ^% a/ v  ? *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
) Z/ E. x/ T; w) H! O *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)( r6 M, L- {; N- t; z' A  H& k
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
. ^  ?- W# v+ {8 B *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
2 G3 F5 C9 G& Q% A *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)' h; ~9 b% E: H: J9 T8 G; N0 ^
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
9 Q- W, t2 R+ Q) Q *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux  T; p0 F$ o* {) C
*/
4 B; t. ?1 d2 M) X2 j1 `( v如何将 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)" d" u( Q% H) }* `
合并为一块大的区域作为dsp程序的所有空间
3 |  W9 T# @2 r& ^/ y
- t' H7 x0 \& c4 \  y现在发现修改平台文件只要用到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文件显示的地址。1 r7 K( [# w$ L, r% i- a: Y

: }; `% X! G4 b2 ]( t目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。) t1 J: m( g. ]1 Q
$ V0 a" P3 M! Z: N; s) n1 E
40 /*  Memory Map for ti.platforms.evmOMAPL138+ W" I9 X; Q$ S  o' C8 W
41  *
( P8 w  r. \" ]* i+ G 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
. r8 C8 @" I/ Y; C2 d 43  *  ------------------------------------------------------------------------1 [7 p* }- B) |% o
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux2 x' O2 ~+ e) T$ Z7 a( `% M
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
; K2 w: n8 v6 o5 e* x  | 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)3 B! U* M; b' k: m. u; [7 K
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
1 \8 ?  U* F0 ?! G4 I) A8 Q 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)! T4 B6 k3 n. ~# E/ I9 c; @
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
9 N1 c: H. V3 f! e/ ~* i 50  */
4 R# o; S3 g9 {: S4 c, y# z2 i  n0 W1 u2 \4 P
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。; i, _' Z) R6 o

% g7 f4 f7 [4 u2 U% G: h一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
8 C( O# S' j; C2 o7 u  }  m8 T6 }* W+ j; E, F4 P
如果需要分配大容量的内存空间:
4 S. @2 o5 r# S$ Y- K1.改动mem_args参数(u-boot环境变量);
, \! _! @3 N2 H) v* K1 ^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=4 {8 n3 i# }0 N' e+ e
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
( v7 ?9 x9 \" G( {3 Ashare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效" H* C9 {% G+ I6 s( ^: F* N
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-31 00:57 , Processed in 0.045242 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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