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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8029|回复: 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端程序起始。
+ t3 H5 g& i; M! E    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
: k+ F' V4 K# u0 X( W& a& G
9 q; q7 N, Z* c' I/*
( R- l+ n" {% Q1 G" H* o/ f *  ======== config.bld ========% `! w3 S2 {. ?9 }2 I) _/ L
*
! }, B6 E3 w( j# \7 n8 m */! g2 y1 k) J3 D0 l( E3 |: C
" R9 m5 x2 d" ?4 F+ p0 O$ s0 ?2 g# T
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
( B, a; O% x% Y( r$ _: D8 y
" G2 b( o0 N1 B$ B" J  J/*  Memory Map for ti.platforms.evmOMAPL138( ~2 |( \$ M* P) m# @$ P
*/ Z; {. i" d; M9 a/ ^. h& ^; Y
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory; m7 u6 z( X# f3 |, W) N9 [. ?/ y
*  ------------------------------------------------------------------------
' a0 O( P5 U) U9 p *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
& a! j. j- R/ S *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)) s# V" J$ R7 }  n( }+ h+ Q: D
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
( c6 z; q/ z! \0 m *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
! h4 Y: [! T5 f3 S *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)% F$ F& W* }/ Y, o' f
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
  k  V6 K9 m2 ~7 U *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
$ O2 x, |! l# ?8 o: V: S, E/ E+ y */" q( n& ~% X6 t! E/ [+ v0 w
: N6 M; n& \" n
var SR_0 = {
& w  I, Q+ c  v, U        name: "SR_0", space: "data", access: "RWX",1 N* l) A0 v+ p1 l" F- V+ b
        base: 0xC2000000, len: 0x10000,
1 o5 Z2 h& f$ G. e5 V& r        comment: "SR#0 Memory (64 KB)"$ s5 N; U' D! o/ \
    };
& c8 s& Z! p7 y- A* k+ @- @3 L) k* `4 h% n" O* \
var SR_1 = {
0 E/ a  s' T) e. E        name: "SR_1", space: "data", access: "RWX",
2 D4 w# f3 x  T        base: 0xC2010000, len: 0x20000,' d) |3 `2 s8 O7 J
        comment: "SR#1 Memory (128 KB)"
6 m* p0 u* @/ h7 j6 I    };; p, n. E' [( `" N6 O6 A! w, S" G
) j: n3 [& e; w/ A9 E
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
' T0 L2 ~) U4 L9 x4 E- W7 T3 ]    externalMemoryMap: [% f7 k& A6 D( h; l1 h5 R- W
        [ SR_0.name, SR_0 ],
1 G/ u6 e7 C/ l( E6 v- G' s        [ SR_1.name, SR_1 ],
3 K  F! {  p4 K2 F3 q$ ]' [        [ "DSP_PROG", {
0 {9 [( M7 X% E* o5 Q: X, ^            name: "DSP_PROG", space: "code/data", access: "RWX",
: N' T( K# g- E0 P: s& D            base: 0xC2100000, len: 0x1E00000,, Q( x/ U; l1 y. B
            comment: "DSP Program Memory (31 MB)". q$ n; h4 q: o' s! J2 K
        }]2 l# [( }; ]* P5 }. V5 e& m
    ],' B- n( s: u+ v8 j: E
    codeMemory:  "DSP_PROG",
% W; c7 G$ O, V" ]/ n    dataMemory:  "DSP_PROG",. D/ j( c' q( j) O0 R1 F# ~
    stackMemory: "DSP_PROG",6 @& h" M9 K& W) ~! H+ j6 l
    l1DMode: "32k",- Y3 _# Y) {* x
    l1PMode: "32k",
% F# d& V% L- i* K    l2Mode: "64k"- ?/ `' |8 |, p: `- {5 r' M4 ?
};+ p  R0 L$ h8 y6 a* g$ j& C  D) R2 T2 |

  W- l4 U/ ^2 ?$ u- v* Y. ^/*
4 Y! h, f4 v5 ?4 V( L8 ?8 S4 q: k *  ======== ti.targets.elf.C674 ========
. Q! f& E5 b" R */
3 X0 r8 V, a" s. k* n  Tvar C674 = xdc.useModule('ti.targets.elf.C674');4 _- ^: v: G4 J* k, @4 m
C674.ccOpts.suffix += " -mi10 -mo ";
3 g- d9 R1 H9 D  c5 l1 XBuild.targets.$add(C674);
8 i3 f  ~. H: S4 U! z" k) B& E9 b. N: c5 z2 v0 Q+ H

0 }' A" g  V- Z* I" F$ @% _; q====================
3 O- n; _/ t, M! K原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
: a* Q8 s) o& b6 _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

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 S3 F& ~" D1 K' w( a, [0 |
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。0 ~8 k' |3 i/ L- N+ J
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效; j4 J+ K. b" h/ `3 \* [% v: c
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
6#
发表于 2017-5-23 17:31:09 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。  S! X% {1 y' z  ~% X

7 `8 C5 R$ e! h9 U) t. b# k 40 /*  Memory Map for ti.platforms.evmOMAPL138
+ b, o# `+ e# N/ R& V7 y 41  *
2 U( E$ L% D8 n. B3 c 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
( u  V, W  I$ J 43  *  ------------------------------------------------------------------------
7 X; x8 t9 W. |  ~ 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux0 \% x' v- `8 S. B
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)  b* _* m+ {7 M
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
! `4 t& W5 _. r' H" ]8 W, f 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
5 y# ]! e, l. j! s 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)8 t5 m1 u) {+ w; _2 Q+ }( m
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
- h) D- O2 F+ w5 E 50  */
' L( O) T$ T$ E% V7 R: [+ S  @6 s9 n1 M* S% O4 ?3 A1 Z, O
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。. J5 Q. S0 M6 F

6 y2 ]1 Y/ y- B! a  |一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
6 `1 X9 _1 h0 M: K7 S' ?6 n7 _0 f! ]% ^
如果需要分配大容量的内存空间:. ^0 b5 G$ y3 O3 z+ x+ `! S
1.改动mem_args参数(u-boot环境变量);' f9 Q& Q* w, e9 |- {
2.改动双核通信工程里面的:shared/config.bld和dsp/Dsp.cfg文件。
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
5#
 楼主| 发表于 2017-5-23 16:53:03 | 只看该作者
发现slaveloader的list map就是编译时的map文件显示的地址。
9 j2 Y; A. v" c5 l  c5 N- H
; [2 o  o& D1 z+ \5 K目前将dsp的地址由0xc3000000改为0xc2100000(或0xc2800000)起始,编译之后的程序,arm端和dsp端的ipc建立不起连接,不知道创龙这个还需要修改哪个位置?如果是c300000前面8m和后面c3800000起始的8m一起使用程序没有问题,这是为何?是不是c3000000前面的地址在linux端有什么设置啊?
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
地板
 楼主| 发表于 2017-5-23 16:16:08 | 只看该作者
请教这个slaveloader的list map怎么阅读,同时这些内存入口定义在哪里?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138
0 o: [7 N* F1 c3 A *
! S5 X/ T; T& r1 a. h4 U *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
+ o& i2 Z" U0 ^- a8 @' |- q" Q *  ------------------------------------------------------------------------  }( l4 h- u$ D% c% ?
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux' W: ?$ M1 S! M/ S
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)/ a' z% q+ h# J8 @* |
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
0 Y5 _, c1 A0 q- W* a4 Q *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
* ~: s. q" I) h+ c# g, {1 \ *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)4 }3 c9 _' c0 ~) `, N3 [& Z! Q: }
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
3 \9 O. {+ N9 ], F0 w *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
' U& w) V4 [% G/ q& @ */
) k& N0 i* J" n如何将 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). ~" P7 ^/ R6 Q* }1 V) ~
合并为一块大的区域作为dsp程序的所有空间1 D7 R4 A6 [; i" h
8 T$ A- U3 F0 x6 u2 q
现在发现修改平台文件只要用到0xc3000000之前的空间就出现arm和dsp之间的ipc相关都出问题
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
沙发
 楼主| 发表于 2017-5-22 16:44:41 | 只看该作者
1、直接修改config.bld的DSP_PROG,编译出来的文件map起始不是设定的0xC2100000,还是0xC3000000,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
8 q4 K! K. s& c9 J0 ?7 j2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 11:05 , Processed in 0.047340 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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