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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8030|回复: 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端程序起始。
. {7 \2 q8 n! h$ T! E) y3 W    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:/ k- [# ?" }$ G8 r8 w2 U7 g! f
& i" Q7 t8 w0 r$ ~0 x4 l- m& P
/*1 M0 c3 W$ B9 O/ z& g6 n( X) a
*  ======== config.bld ========, U5 ]1 I$ _9 g$ [0 i3 I; |  Y1 ~
*
' J# c) @5 j/ t. i4 ` */1 N0 t$ S2 h3 W: z/ ?

, |- o+ n: Y$ V4 S# L1 \, rvar Build = xdc.useModule('xdc.bld.BuildEnvironment');/ N% b4 p3 P% Z2 X& j

: b! L; f1 L  E8 e* u! [/*  Memory Map for ti.platforms.evmOMAPL1384 P$ K  @( H5 B
*
9 G5 u3 }1 x9 U8 F *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory6 f' E3 ^" u2 g# I4 G
*  ------------------------------------------------------------------------8 }1 }, H; r3 C8 _5 Z+ U
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux2 g5 N# y% v% i  m( y
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc), s% k! D9 Q: H1 j! P- ?
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
: x7 k* @' G$ [  h: U& v5 B *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------/ X( Q$ n. O% s/ }. u4 Y
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)& a( K$ G# C9 W1 }+ B2 g
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------. U% A- P9 w- w  ^% y, @4 q
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
* H( `, U( Y; d& a7 o */
8 O4 z- S+ [4 l2 z0 t4 g* c
1 N% |. a" \" y4 f# q# k8 Zvar SR_0 = {
+ n0 j  X" E# K( _1 M        name: "SR_0", space: "data", access: "RWX",1 h" C- Z8 d+ |; Z" N! I
        base: 0xC2000000, len: 0x10000,* W$ A7 J) k: L0 i
        comment: "SR#0 Memory (64 KB)"8 X  |& c9 O" U$ n  |/ y6 z4 L4 {
    };1 X3 a/ T8 [: x0 O9 G6 k% }9 o, o

0 j8 |: i' i8 ]* Wvar SR_1 = {
! Y! V  O; q5 F! b: V9 U5 F        name: "SR_1", space: "data", access: "RWX",( E. }% v6 u: i) c: J
        base: 0xC2010000, len: 0x20000,# J! q7 p9 W( L/ m
        comment: "SR#1 Memory (128 KB)"& [, s5 ]" N% U- v+ F
    };
. k+ l! a- P6 M0 d, U6 Z3 Q+ H0 J3 l
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {! M0 J- ]/ [% N& Q% E
    externalMemoryMap: [' x6 f& {3 h5 k
        [ SR_0.name, SR_0 ],9 a. S6 K( @. U# M# X9 R/ N% a* k
        [ SR_1.name, SR_1 ],8 A% \9 b- u' C& T5 h
        [ "DSP_PROG", {
" {9 t: y5 A, U! p            name: "DSP_PROG", space: "code/data", access: "RWX",2 r$ K2 X9 l! c' I+ W
            base: 0xC2100000, len: 0x1E00000,7 V( L& M( c; Q$ v1 j: T
            comment: "DSP Program Memory (31 MB)"5 G: `8 p/ O% [
        }]
5 X6 r0 i, e3 K    ],
. r) r& J8 L9 f$ @  G0 v2 \    codeMemory:  "DSP_PROG",
4 ]: M$ P" |& ], a/ I7 R$ a    dataMemory:  "DSP_PROG",
! T/ a! g' g" _    stackMemory: "DSP_PROG",9 f' R, y5 @1 u+ }, q3 j
    l1DMode: "32k",
) N! F5 L. P2 H2 ?& @8 o6 v+ U3 X    l1PMode: "32k",* C5 w) u" L4 B( @# H$ |
    l2Mode: "64k"
  h! U( A' r! f9 v: v};; H' Z  _/ z( j* z' |! O4 h, w3 `

" H+ |8 S& W( c/*$ E3 y" n) K' i7 m0 r/ t
*  ======== ti.targets.elf.C674 ========
* M5 U, r9 X/ B& r! y/ I */
# T9 D+ T* l4 T/ \3 s4 `1 Uvar C674 = xdc.useModule('ti.targets.elf.C674');$ x& c* s! {7 {4 Z7 |& J9 @+ f! }5 `( }
C674.ccOpts.suffix += " -mi10 -mo ";
: _+ w9 g; u' u# I. QBuild.targets.$add(C674);
2 V' B# S' ^& e8 Z
! }9 p5 Z( Q% C: c6 r
. H/ N+ C5 H( C4 R5 M====================& z! {  H* ], L8 a8 e4 Y1 o
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。8 O0 O" J' v0 T/ v( W3 e% j
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?- t" z' H# z. R6 c3 ]
2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL1380 G- a( Z/ s  m; K0 I  ?
*
- V5 {2 s# C( h/ [4 \3 ?2 J9 t *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory1 N! \8 [: \( U4 `
*  ------------------------------------------------------------------------7 J1 u6 X& w! w7 h; Q$ q% E/ t
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux; \( D' S+ S* Z
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)6 B) J8 s% T- p( R! ~# t+ q
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
, o% N2 ]" p' B: b *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
# G4 l" i5 f, p$ a$ K4 h *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
; |+ o: W# U& d" ~/ p *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
/ |' a# x6 c: f3 M9 h8 d *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux1 C& y% u8 b0 a7 f- @# ^4 m% k
*/% E! ~" T3 A* o4 j+ W: t6 D* m4 J
如何将 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)
* v! @. F/ i  h. e; K合并为一块大的区域作为dsp程序的所有空间
: H7 Y2 d2 i# k* l; l: w7 T* `! n% }* o8 [
现在发现修改平台文件只要用到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文件显示的地址。
4 n5 J1 f) [7 ^
+ H6 }1 e4 `, R7 m目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。- Q7 Y  r- e. K3 c# `$ D* Z- a3 O
: p7 i. ]* [* n  o; `
40 /*  Memory Map for ti.platforms.evmOMAPL138
* v5 h- f9 G2 I4 x0 T/ J0 x7 L8 |7 n 41  *
4 {% Y2 V+ i9 ~. J7 c1 _/ v 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
/ x/ C+ u$ B+ R% } 43  *  ------------------------------------------------------------------------
: a( g" R! f* a$ U 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux+ Y' ^9 M; ^3 |2 ^
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc), r5 O  D& m4 D% g' X0 n7 W
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)8 u% G% b" i: C/ V! ~* N& g( f% q
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data): A9 \; `' P; f
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
" c2 g* N) K7 r! L  ]" i1 j7 F 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux0 [: M, g! t( U; Q: x3 W/ t
50  */$ q7 F6 q" [  v* g0 E

  p6 X/ w4 m2 U) t如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
; r0 R! F: L$ U2 L4 A7 G; k$ [
* z4 ~% B9 l  s" D  C4 y$ W: |4 L, Q一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。$ O& R5 d0 {  K" l0 @# M% }7 I' R2 n
, w, r* P4 P" H' ?( B& o
如果需要分配大容量的内存空间:
: E% ]" t) J3 \& }2 N1.改动mem_args参数(u-boot环境变量);0 G7 i# V, T1 s2 R4 {$ g
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=. {& m$ F; c7 S/ a# ]
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。+ `) C, l; x* n! A) ?
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效3 s; b* N5 i, @# r6 z4 O: y# z
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 11:06 , Processed in 0.040166 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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