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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9697|回复: 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端程序起始。6 T: a4 s5 ]9 N$ S1 K% J
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:' p% |4 i2 l! i5 B5 j
5 n* w5 ]* b# ^( @" Z( F/ q/ _
/*
; D7 ^0 |1 p- h! }7 L *  ======== config.bld ========
4 {# D0 U; r* U9 z4 g3 } *2 M; @; E. R0 ?- o8 N) L) ^
*/5 D  U. I, I9 K& j5 t3 D' v# a

2 o. {. o6 \* d+ Svar Build = xdc.useModule('xdc.bld.BuildEnvironment');
0 |. a5 Q) M" G6 L6 e' i3 c+ \/ `; y) D6 r! ?
/*  Memory Map for ti.platforms.evmOMAPL138. P' x/ l) m' f: V3 I
*
5 W" A$ n4 A) A7 Q! q% P *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory2 u, D% e) `  r$ ~  [: Z) [) v3 U. g
*  ------------------------------------------------------------------------
; }' c; C2 Z% y  U  J' Z *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
( w2 f7 J; d' @  C, U' C *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)8 `: r% U& \, a8 K9 V8 W
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)" ]% Z7 n( }) D# S' k
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------$ L  {% }! l% v* Y6 A
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
. ]0 `1 [* y! B, M" b *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
6 U5 ^! U" n0 G  ] *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
: ?. k8 V- ~: s5 A7 X" H7 M/ F: \" k */
/ `! Q6 }1 _5 J
' W- C$ f: n- W  ]6 x& Ivar SR_0 = {
& t9 O' _( b$ _: [* b        name: "SR_0", space: "data", access: "RWX",! S) I+ A) Q5 n$ Y# f& Q
        base: 0xC2000000, len: 0x10000,
6 Q- ~0 W% m( x/ e: w; z; B! r3 S! a. M0 ]        comment: "SR#0 Memory (64 KB)": P7 p& z: C: x
    };3 \! l$ @9 y" N# X

. J( O& s' e7 C! m$ Pvar SR_1 = {
0 I0 t, \5 p# r. M2 U        name: "SR_1", space: "data", access: "RWX",
1 B- ?* p0 y; Y  k# B        base: 0xC2010000, len: 0x20000,
0 Q" \$ g. z4 f' B; O        comment: "SR#1 Memory (128 KB)"
/ {1 A1 M. d+ d    };, ]! ]/ q- {6 z* E- e, z

7 H* g: T) E7 z* BBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {- j3 z# e5 h3 A/ k- g& S
    externalMemoryMap: [
& r/ E# J; V: I        [ SR_0.name, SR_0 ],
, F+ W5 a5 z8 p        [ SR_1.name, SR_1 ],6 d/ z: m8 y: P" n% t( O1 c0 |4 ^
        [ "DSP_PROG", {, x/ p( g8 I  G! C2 E
            name: "DSP_PROG", space: "code/data", access: "RWX",
; A0 u- K" m8 B, K) R            base: 0xC2100000, len: 0x1E00000,
* u6 B' f% L* ~9 T: d            comment: "DSP Program Memory (31 MB)"+ J& \  m; s9 a; o; n2 i
        }]
& u. f6 A8 R: C7 g, U    ],
9 f  h# w; G; a0 s% a    codeMemory:  "DSP_PROG",
, q0 F1 g/ b* u/ K, [6 w7 h- ?, m    dataMemory:  "DSP_PROG",
2 P9 d. P' i7 P! d6 _. o( T/ Y    stackMemory: "DSP_PROG",
& U; {" `+ ?$ N: S! L    l1DMode: "32k",* D7 K; E+ g7 o# |1 {" n
    l1PMode: "32k",
6 X8 q% r/ r) ^& r9 A    l2Mode: "64k"# h+ A6 k% ~! y% M8 H* A3 m7 w
};3 O9 z. E: S. R/ q0 p

; s  A. f6 Z9 n' X/*
3 i8 Y. l* W& p" K *  ======== ti.targets.elf.C674 ========- A( X$ i9 ]) r2 M. U
*/
3 b+ H4 M- h7 k: }8 }var C674 = xdc.useModule('ti.targets.elf.C674');
$ v* j1 T( F! fC674.ccOpts.suffix += " -mi10 -mo ";
7 s9 G6 u7 g* b: U& R" T& l) g& \Build.targets.$add(C674);
7 A. [. Q: K& M
4 L9 f) F: c" m3 R5 l& C3 y
0 C  i0 B/ V, R/ n! r# G; y6 q$ d====================
7 V2 Z  h  ~3 Q/ e& L5 M原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。7 E+ j/ F7 y# W* j, l
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
" L+ `# |* m% `6 C2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138
4 i1 L" y( Z6 C *
# s, q) |% u2 p0 N/ K *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory1 Y2 A) @! q% J+ o
*  ------------------------------------------------------------------------
5 @; ^% z$ Y  J9 y: w1 u: V& {9 B) w *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
- k* [; g' z- T# M! t" ]8 Y% C* G *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)$ m* m! A$ {2 O, X+ I
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
2 N4 p8 i/ r' A! p1 M0 X *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------- w" g; j# U: N; n; a
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
  ^: \, [+ {: s' q6 k3 y *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
0 W- Q  d) W8 w7 x *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
8 N1 w3 Y2 p: z3 P5 l$ Q( I4 M */
% N' O& X  e7 G: ^8 a+ C3 i& ]/ @5 E* Q如何将 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 j- V6 p  ~/ n: d1 t( Q7 r合并为一块大的区域作为dsp程序的所有空间
; S- o. }. W' ]
; R+ q* L& a2 C9 |/ H1 h现在发现修改平台文件只要用到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文件显示的地址。- G+ i# c0 U6 ^+ n9 U+ s) p
, \4 o) N8 ^2 p9 G9 G9 ]  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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
) R* V9 W+ c& i$ w# c' Z# i; r  T6 k8 u* _* ~- f
40 /*  Memory Map for ti.platforms.evmOMAPL1384 h$ `/ U& b3 B
41  *5 Q2 F) }! |3 L' H% C
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
/ a7 _5 h, K+ J+ G 43  *  ------------------------------------------------------------------------: }- `* a. G/ h/ Z, C
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
" Y3 `7 I9 ?# Q& l$ _5 X 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
- T% W5 F# K' @% R+ L. `# M4 B* I 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
9 \0 L6 A- y$ ^5 j# ^" @ 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
- P' `% s3 g  R: e 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)2 W' r4 n: ^2 f
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux! \  X$ n! Y# I/ p' Q! P! Q
50  */
8 ]( S" c0 |4 E1 m9 n- k
- r( S* V! T5 ]: Z  ?0 b- [. D如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
. x5 ^3 j2 x: r" r( |
' ~. o8 @; ~7 _" K一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。9 v! I; d7 ]+ @( _+ P+ s8 H& _

3 Q) U  C% t5 K; i1 J9 W如果需要分配大容量的内存空间:, W$ D8 ^7 ]& |- o  p
1.改动mem_args参数(u-boot环境变量);
2 U4 `- `# l; y) L* I; [4 S0 e2.改动双核通信工程里面的: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=7 T$ h% S! a4 `. \2 \6 c
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。2 V$ v4 y6 u% Z  J
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
! e8 Q; [# J* Q: o4 w
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-31 06:24 , Processed in 0.042899 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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