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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8446|回复: 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端程序起始。
# B: p+ J- m! W6 P4 x2 t! T    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:0 b8 G9 e4 p# B: P
, E, F. B% \+ h. G$ R: t( ^
/*
0 j" N. T% a/ T* H: W) n) g4 i7 c *  ======== config.bld ========
8 e8 J- T& ?! Z- u0 H9 {+ X *  e- f2 A* M" h- O3 r0 G9 I
*/, i: k. _" R8 @. H3 F, v5 g
: p. g% [$ I. E/ n9 V) J; c
var Build = xdc.useModule('xdc.bld.BuildEnvironment');& ]; m- D/ I0 N$ u" g

* r- x+ G% m: J* e& x/*  Memory Map for ti.platforms.evmOMAPL138& l- f6 C1 h- u- f0 u0 S3 h' X  O) Z# ]
*! x, [7 I- b3 b; V
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory0 C2 m9 z- M. R& E
*  ------------------------------------------------------------------------
3 z2 _: _0 F' i4 w/ q/ |" k *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux& d  a1 v. x* o; W% }; h
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
# h  ?+ v2 d, }& P" x *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
9 H; w1 t0 a, f2 q3 {  y *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------# A2 l  Z" T: n0 \, e5 s& o$ l
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)9 K4 D4 H( \; W9 j
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------' i4 m% U6 c1 v- ]6 R6 R
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
1 N: P6 J  s* K */1 `5 y$ \# ?- b! {3 K3 U

+ l  p0 w- H" ?0 O( f& W4 Z4 ~: U- lvar SR_0 = {' m4 i* B  ~/ k7 c3 @* W9 Q6 u
        name: "SR_0", space: "data", access: "RWX",6 _# R/ }0 ^2 u0 ?' H4 `- k4 E
        base: 0xC2000000, len: 0x10000,
* N" n/ K3 m8 H8 q        comment: "SR#0 Memory (64 KB)": f! _5 b$ g0 f* S
    };, ^5 r8 k' H. y& ]% Z

' q! O7 I; _* ~0 F# l% \" uvar SR_1 = {7 T* Q  k3 h" j3 k
        name: "SR_1", space: "data", access: "RWX",# N" I* k) |- [; i$ I  O& J$ }
        base: 0xC2010000, len: 0x20000,0 N$ e; S9 E6 R1 s( T
        comment: "SR#1 Memory (128 KB)"
! D" q9 C3 a' t+ M    };
+ T$ J/ ]9 w# U/ A+ k) `9 i9 Q$ Z" _0 ], B4 V+ w- C
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {5 w4 N4 o9 f4 ?7 g2 i
    externalMemoryMap: [
; B) E0 [: x2 X3 v0 a        [ SR_0.name, SR_0 ],4 V2 s% `* V$ ~" S# U/ r  [
        [ SR_1.name, SR_1 ],$ _5 l+ T7 `. X, j4 U
        [ "DSP_PROG", {
5 K4 W) X2 t) J2 o            name: "DSP_PROG", space: "code/data", access: "RWX",
0 Y3 t4 B3 d* @- l            base: 0xC2100000, len: 0x1E00000,( P5 ^* d0 q5 J* J
            comment: "DSP Program Memory (31 MB)"5 t. j' p' Q0 \& ^1 `& s# W
        }]2 O' t6 z4 l  I8 k6 C/ G8 h
    ],# x7 o8 M, y. d
    codeMemory:  "DSP_PROG",
7 c) k( A. M3 o$ t" l    dataMemory:  "DSP_PROG",
, {) k. S9 B( T; v3 h: a" r    stackMemory: "DSP_PROG",
1 E* x, U' i; G3 r' P! x    l1DMode: "32k",1 }  |  A! U2 @, }- c+ Q
    l1PMode: "32k",6 ]: l+ k% V. _& K! L
    l2Mode: "64k"
! b( j; x' M1 B( q* P};
: {0 }$ u0 l1 v* R" `: }9 U1 P) Y  g, G( \$ _
/*0 l% k' N- B6 H' R
*  ======== ti.targets.elf.C674 ========
( E4 T4 e# K2 L) y6 g */
1 H# u& M1 V  _1 S; f8 i7 {var C674 = xdc.useModule('ti.targets.elf.C674');8 v) W! K: l" [/ ~
C674.ccOpts.suffix += " -mi10 -mo ";* v9 k* k7 L% a8 S- d- ?2 ?
Build.targets.$add(C674);
6 w# x: c  h3 z8 z8 K' Y9 w8 J+ {; o! R( I
7 S* d& X5 @: m( _5 g5 ~9 `" c5 m% q- g% H4 `! i# x; d: Y* B3 X8 D
====================
% F2 k' z4 b# U0 S原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。, t  R. [. Y/ k
分享到:  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=
" A( e7 ]  u6 \4 K1 T) ?3 D这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。- O- q* }1 O0 c
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效7 S# l, g3 j" U/ }7 r
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
6#
发表于 2017-5-23 17:31:09 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。" l- m8 T& S9 @+ _8 t* _

; a- V! j/ C' k7 K$ j 40 /*  Memory Map for ti.platforms.evmOMAPL138
% ]* u1 d$ ^; a& r* w4 O" k 41  *
. y2 s# X: x2 G4 F  Z 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory2 H3 k# c+ L4 ~! _% ~5 I4 d4 f
43  *  ------------------------------------------------------------------------
% x2 Y* A& v3 l. z+ k& t* R8 ]! W: G 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
7 ?  S6 O9 F3 m' G0 J 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)* R" v! ^* g8 h6 p3 i- h# c. q
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)# ?6 [2 D- V4 r4 P# M
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
( b2 S' w( t8 w; \4 r, x 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
, K0 p" P" l# V: s 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
, U+ l' q6 `# z' s! V& Q* k 50  */
8 W0 p# `! }% H  d! P/ K
7 w$ j) j% s, p7 N$ }4 N1 e$ c1 |如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。, f7 g* c; L. C
6 s' N3 I* B0 V! @
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。  a0 n& e% o7 y. q! u/ H! i
( l+ k. [2 k3 ]& U9 e& h# V# P
如果需要分配大容量的内存空间:
# S) m8 j' ~; ]. l9 f1.改动mem_args参数(u-boot环境变量);
/ v! k; v$ ^% Q/ Y2.改动双核通信工程里面的:shared/config.bld和dsp/Dsp.cfg文件。
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
5#
 楼主| 发表于 2017-5-23 16:53:03 | 只看该作者
发现slaveloader的list map就是编译时的map文件显示的地址。/ r* D' V& N8 f( h* G- k% W
/ p6 u( o9 H. a9 c  T& E- e1 ~3 r: e
目前将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.evmOMAPL1383 }/ G! S# I1 M, i, o/ f
*
5 j% e& I7 n+ a) h *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory* T+ Y7 E9 E# D1 f
*  ------------------------------------------------------------------------
, I/ l$ _. k% f! I; z6 L! C. s; }1 i *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
5 C# W% g0 [& J+ p9 L1 ] *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
! b/ e* H0 x$ m: G1 E4 C$ @ *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
8 J: J7 v% Y4 v5 W3 m *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------6 I* Y1 j) ~1 P$ `' H
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)! E3 B. x5 i$ f8 y: x$ m
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
- @" Z9 Z4 n# J *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux# m. o4 P+ R& k9 Q& ~6 ?0 v; z
*/* e4 ^) Y- `8 ~& m9 x: 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)6 s% i4 |0 M4 X  U) X6 @4 ~
合并为一块大的区域作为dsp程序的所有空间. d* P% P" ^+ L+ D
4 U. o  d9 Q; j( R
现在发现修改平台文件只要用到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 z/ a! r. \! r0 ~! F* x2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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