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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6888|回复: 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端程序起始。# d( O1 T) T  |2 @8 b
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
1 a6 @( ?" E  {* s3 w) U% u
" g1 z7 }9 l( }5 I" X- R3 ~/*
! D5 h7 I. g( p& ~ *  ======== config.bld ========/ e% U; i" e/ `- W! u5 J! B
*% a0 ^4 j5 F  b2 N3 e% Q+ u  i
*/
5 p3 F1 S0 z8 w% Z! C' z
0 V8 d2 e$ e$ O4 }var Build = xdc.useModule('xdc.bld.BuildEnvironment');
+ W; D# z& g' ^0 |0 s! }2 `6 F; T( s$ Y2 ^* Y! t$ _
/*  Memory Map for ti.platforms.evmOMAPL138) T% E4 I1 S9 c9 H9 `% {
*) c- r6 }! j: H9 A) b, ?9 g
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
- ]  `/ o+ M6 i; C3 b2 _4 m *  ------------------------------------------------------------------------+ L' b( p  h) J3 ?0 q
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux0 V3 ?5 y" y1 U, r- F' b
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)$ H9 z! b+ ], E; ]: C7 A' p; n
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
, v3 s) A( z6 _( y *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
9 r2 p2 {$ \+ x5 C/ K( P  c: S *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
' I) T4 `- Q: J  {6 q1 z6 z- z6 p *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
3 B6 f0 k3 J' W! v. P *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux) A; K4 H3 g+ o9 e7 N2 U! Q6 E
*/- w' n) a# P6 A  f

9 g: s+ M/ M, }/ P3 T# [8 tvar SR_0 = {
" j9 b" N! v5 R4 g, s4 r& @        name: "SR_0", space: "data", access: "RWX",! [3 D1 b# G  X# l) x
        base: 0xC2000000, len: 0x10000,1 @6 O4 E! x4 ]' \: k7 k  d
        comment: "SR#0 Memory (64 KB)"( f' [' O9 G' E
    };3 d& B% o9 r4 n' }

% U+ F: W7 g- _1 Q2 r" \# s7 O3 Vvar SR_1 = {6 e) S! j- d- N# ^$ _3 z2 Q
        name: "SR_1", space: "data", access: "RWX",
! O  j3 B/ n. r, Q        base: 0xC2010000, len: 0x20000,0 C( _# g& d7 t1 K) v3 t( {
        comment: "SR#1 Memory (128 KB)"
1 N, A) d3 U: [, t* H- [( L    };
3 n. D, `2 D; k- O
' ]0 Z% Z4 p; i' KBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {5 ?5 |6 h. u8 p: ^+ V3 f3 x
    externalMemoryMap: [
6 N( ?) X3 Y3 A" o7 s3 a2 E6 m0 K3 n  D: R        [ SR_0.name, SR_0 ],
' r9 P/ H% w" q( _' I        [ SR_1.name, SR_1 ],
0 J8 P7 h8 w. T/ n; V* k        [ "DSP_PROG", {
3 |& t& N+ K, P" U) E% j; Y            name: "DSP_PROG", space: "code/data", access: "RWX",: o. l/ D, B2 n" v& E  s; M$ _
            base: 0xC2100000, len: 0x1E00000,
; j/ O) R% H: U' T; P            comment: "DSP Program Memory (31 MB)"
0 w( J( f  a6 t0 `6 e. d        }]5 i1 x6 Q) X( c) w
    ],
! y5 g& t3 F" J' L/ c% K    codeMemory:  "DSP_PROG",
  ?( p) z- a. v    dataMemory:  "DSP_PROG",) T* n1 v; p( P
    stackMemory: "DSP_PROG",; Z- i! T0 U; l1 {/ N) z
    l1DMode: "32k",
; I8 f8 C$ }; A8 N) ^    l1PMode: "32k",$ [' ^6 [% c- l' T+ t, Y( d5 s. D# R
    l2Mode: "64k"
1 u6 P: y% b  Z9 _6 g* n};
9 g( q  ^. H$ C: T! }) I# R0 B) {' U  Y" s- q6 s9 u! }4 R9 y; P
/*
' ~4 l5 e0 x' c- t# l0 S *  ======== ti.targets.elf.C674 ========) W+ c. L$ T: N$ F
*/' S/ Y) m) h& c) f6 z! n' z4 |' f3 p) H
var C674 = xdc.useModule('ti.targets.elf.C674');
# q5 Z: R  m; E' P% c; ]C674.ccOpts.suffix += " -mi10 -mo ";/ K( L$ H3 D% n
Build.targets.$add(C674);
  [9 H" u5 I5 j! B; t/ B: f! x
  k' q, u8 ?; f6 @6 ?- s) @5 J+ U/ w+ G/ r8 t
====================+ c. d5 a: m+ ~9 t
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。5 s$ t; F' ?! b
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
& ?# {' w2 h( G, R8 O+ k2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138% b3 k3 t/ ]* T( M
*) H* C: u5 }0 i5 C( u( L
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
& L4 f* d2 T6 ?* J' C, a *  ------------------------------------------------------------------------
) w$ H7 d0 }1 S- n, A0 x *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
; `- |+ U- H- d& }, m/ H6 l: L. } *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
- [! i% f/ x# E+ l4 h *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
! c1 h# E7 [. ]! P, g *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------9 A7 N) C' ]6 ^' Y* s
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)) M3 ~' P) P* K" r4 E& i* E+ x
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------+ u) L, x! J# b: _
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
* b$ a: [* L! ?4 o) { */
$ f" \2 ~) A5 F1 l: B" X+ k: s如何将 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)
2 Q/ M( e3 W; d2 V) M合并为一块大的区域作为dsp程序的所有空间
+ G9 o4 _3 ?" B2 U
4 ^6 l" R3 U4 i5 D现在发现修改平台文件只要用到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文件显示的地址。
% k: o. V, Z& v! j+ N) k. ~$ f
# ~/ J- k& V  W- t7 I目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
4 ~  p* H+ M5 O: p, O) G+ A  d; Q
3 o, i* k" E! h 40 /*  Memory Map for ti.platforms.evmOMAPL138
7 U3 H; e# y. k; s, }7 C' s% o% Y 41  */ O+ E: e% {5 U3 |" E
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
) w' \# {5 d% ]9 y 43  *  ------------------------------------------------------------------------: Y) ]7 v( q! E: A& g. C- C
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux! l8 ?$ P2 E! _/ p
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
0 f" @& f" P4 ^6 M4 D 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)! ~, ~# e4 j: h% ?
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
' z' \5 R% D1 J2 K* m 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)! V* Q1 T. ]3 @; O/ P' V: ?
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux, S2 c- r2 h( |, K7 w  M& s# F
50  */" F$ P  R; ], {9 O3 P% J( _

" S$ Q5 J& `% _* r9 `& L如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。/ w- r# {- t$ R3 `

" @+ G# l0 B* u  x7 Z1 s. d一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
, o% e9 H; b8 L& q0 s
* S5 P# h0 p( c0 N如果需要分配大容量的内存空间:
' O3 w) J6 r- b2 P7 p/ A1.改动mem_args参数(u-boot环境变量);4 t8 e% s0 B$ X  Q, f9 c3 d
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=' X; u3 s# n% F0 K- h. C
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。9 I& G! R7 {/ r  ?
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
7 |/ C+ I2 h( k& @( [; I2 \5 r! X! s
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 08:44 , Processed in 0.043803 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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