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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8176|回复: 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端程序起始。
5 Z0 L' Q1 J9 |9 H    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:: o) {" c% d- t2 ?
3 t1 [8 V' N, ^( r1 _5 |& E
/*
" N9 Z$ |+ p, V* `$ ] *  ======== config.bld ========1 F. W. q7 B# }; e/ {. B
*9 d+ W, j/ }- r- P. L; R" U
*// J# T! \- [0 i. N0 W- ^% Y

  R8 v9 {. t3 z  P7 {; D" n; P6 Tvar Build = xdc.useModule('xdc.bld.BuildEnvironment');
" r- w& `! s. r3 w4 B! H# G2 R$ S& i% f
/*  Memory Map for ti.platforms.evmOMAPL138
/ z$ {% n: B; |- }( p9 Q6 E *
3 ^; E. h9 {; ?) ?0 ]7 N *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
6 y& d( p3 ]2 M! L8 n: T *  ------------------------------------------------------------------------3 m/ H0 I) V  l" m+ Z% ^
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
, X, U. m, m" @! U4 k; e *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
% l& K* Z% Q% ?6 m *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)+ m8 a& Z, c9 Z4 v) v% V
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------' S) A# ~1 Y# z3 l$ D7 N
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data), {6 L1 d3 m( G) \+ d
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------- ~. Z# M- \1 H, k, u1 C, q
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
0 s. O; m- U- i* z- J% O */
/ b9 L4 }! q# L0 h$ A7 J
. G0 g1 m* h& [  t6 J6 Vvar SR_0 = {) f( u. Y% O  \; E6 t* w0 j
        name: "SR_0", space: "data", access: "RWX",1 v9 U6 f" ~8 b; p# J: u- Y3 `& ^
        base: 0xC2000000, len: 0x10000,& Y9 @: K4 [5 _) j. q5 t
        comment: "SR#0 Memory (64 KB)"
: l' |! T4 i8 \- C% g% j- s    };+ [7 R0 x- {/ u

0 a$ \4 q( Q5 x3 O: Y& Zvar SR_1 = {
/ f/ H9 B) p3 o; {        name: "SR_1", space: "data", access: "RWX",
( ]4 i& V; X) d% D- w        base: 0xC2010000, len: 0x20000,
. {0 r) {8 A' D; ]8 o" S        comment: "SR#1 Memory (128 KB)"' ^2 ], t" I) l: P8 U/ X
    };3 v8 O6 A  y, l. e8 R
) a) c7 W8 o5 H& ^# H
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {5 w9 O5 Z, R2 _- D
    externalMemoryMap: [
7 S3 W9 T% e; ^2 b        [ SR_0.name, SR_0 ],: E- O! j! X1 M
        [ SR_1.name, SR_1 ],$ N' W  ^' z0 G' ]8 u/ t4 d
        [ "DSP_PROG", {
2 N- q, {6 W! u0 ?# y) X* e            name: "DSP_PROG", space: "code/data", access: "RWX",
' F1 i. u' Z* S0 h' W; N& a( p            base: 0xC2100000, len: 0x1E00000,$ S: k( {+ \+ j0 h0 `+ B! `
            comment: "DSP Program Memory (31 MB)"7 F2 F; Z! Z# n) d( X) a8 o
        }]( k; `1 D# y6 T+ M1 A8 }' ^8 u
    ],
- ^" S$ R) Y( A3 v, N7 o  ]    codeMemory:  "DSP_PROG",
1 f: n( ]  _; _8 c5 p    dataMemory:  "DSP_PROG",
$ j; Z7 A2 ^  i    stackMemory: "DSP_PROG",
0 G/ v/ {8 v7 c    l1DMode: "32k",
# ~5 ]/ |, w& L7 Y7 w# @4 K3 S# v    l1PMode: "32k",- S' X' h: `: g+ q
    l2Mode: "64k". i. n9 R2 W7 {& |4 m
};
, ~* Y+ F/ b7 p% e  K* l
8 o: Q5 w" G/ f. j: j: ]1 q/*4 H- F9 b; F- L: t8 z8 ]
*  ======== ti.targets.elf.C674 ========! g% ]7 t7 O+ A9 _, W, B0 f# O3 a
*/4 u9 x* N( F. ^! o; v/ d
var C674 = xdc.useModule('ti.targets.elf.C674');) q" N8 g! o/ l
C674.ccOpts.suffix += " -mi10 -mo ";0 v1 i$ X8 q9 Q1 n8 O
Build.targets.$add(C674);
9 L5 |5 z8 f+ S6 k! f5 U% A. X% q# }4 V' {  a

; ?0 N  p: f1 x3 k4 d====================* J8 G/ a# L% D
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。9 [. O& T2 W6 N1 E
分享到:  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=
) D+ J2 q7 J4 V/ Z7 A1 m这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
1 ~5 T2 G5 K* y  b" M6 [4 ^+ Sshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效; y) C" r* ~+ m% R$ ]( L" j/ H
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
6#
发表于 2017-5-23 17:31:09 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
2 q/ S2 Y* C+ r7 P/ s
. p9 t$ u4 s3 z9 I2 U& V" T/ n$ ?5 N- k 40 /*  Memory Map for ti.platforms.evmOMAPL138( w" n( ?  a3 |: c3 {, E5 o
41  *+ i- p6 b* N. m" g
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory+ H: H+ a; K5 E) ]2 S8 y
43  *  ------------------------------------------------------------------------
3 m/ z/ L7 Q  Y6 Q. j) v% b 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux9 [2 t1 w+ E0 A1 B
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)" A6 D5 G# a6 N  u2 d/ t
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)1 |" p2 b+ ]# E8 ]) i' [% A
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
$ z, O9 y9 d, B4 r) W1 w- { 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
7 h+ M% P# ]. a 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux/ s) @* o, @+ J2 A3 P7 b; H8 O1 r
50  */
8 y) f9 b* G9 X5 s0 L# F  Q% X, `4 n; F& W1 f; B( E
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。: b- u+ X- f8 ]3 ~, i0 _

8 ]! @/ a  o) {3 r2 q一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
. i$ \! |5 K  ?8 `8 }* i; W. e& i( M$ m# f8 P
如果需要分配大容量的内存空间:( N- w8 P; U$ g  v& Y
1.改动mem_args参数(u-boot环境变量);; H$ J0 m2 s( x1 n* l+ }6 q
2.改动双核通信工程里面的:shared/config.bld和dsp/Dsp.cfg文件。
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
5#
 楼主| 发表于 2017-5-23 16:53:03 | 只看该作者
发现slaveloader的list map就是编译时的map文件显示的地址。
/ i, g$ K: g8 _9 z$ z5 V5 Y( T; z- a$ a4 ^1 y9 }
目前将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 M) _" C& O( h. x2 @ *
2 h) G1 S) Z" g9 Z *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory8 W4 |, H& h! j7 q: ~. O/ s
*  ------------------------------------------------------------------------1 ^5 g* z1 ^  N
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux5 o' e0 b2 R, q; A) S6 @
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)/ L) M( @# [. c$ c6 `
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)4 _, I0 q7 e7 O2 c6 i
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
2 K2 G) q0 s4 \) i  h) I# w *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)- y, Q, J+ F) V7 E+ ~
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------; C# n/ ?3 @1 w, L8 T6 D
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux1 }! c9 H( c  _$ v1 j
*/5 S$ @* F- t9 B
如何将 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)
& q0 Q  T) }# [0 F4 {合并为一块大的区域作为dsp程序的所有空间; x4 z  {) k+ o: K3 ]/ y7 q3 I  O

2 h$ `: w$ q1 x% c$ K9 S4 x现在发现修改平台文件只要用到0xc3000000之前的空间就出现arm和dsp之间的ipc相关都出问题
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 05:03 , Processed in 0.039746 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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