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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6890|回复: 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端程序起始。1 S; j6 v5 ~, l* B4 t4 F4 |
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:! _$ R+ U  N! y% e( F

% \" n; L: j  P: p, d/*/ }1 U  s, b" n. Y1 V7 c, }, ~- [; U- v
*  ======== config.bld ========, m0 b% s; h" @( [
*
/ W5 D( m. K  h1 t  U5 m# C */
/ N6 P* k- c0 t8 C
' S( f. B' n0 N, B8 c5 n+ E0 s6 Bvar Build = xdc.useModule('xdc.bld.BuildEnvironment');! z6 N1 B9 g" {2 X* _4 x# o7 i( D
# P4 U" n, [: x+ E/ ]6 F2 H
/*  Memory Map for ti.platforms.evmOMAPL138
+ e; ]2 U0 E2 U6 J *0 }( V0 K: o9 n: q
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
  s% \6 U+ d6 F3 o& _ *  ------------------------------------------------------------------------
! C4 q) @6 A- f" w' d9 ^ *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux2 @* P: M' d& ?1 z
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)- b9 ?+ R; Z' E  @3 _6 G
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
2 S+ o& a5 I! }- V2 | *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
  h5 c* V7 c# I. H *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
1 J& P& r- _) K' S* y# m *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------" B7 x. o* P6 X+ Z4 G$ U& r. [
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
3 e1 ?0 F! ^$ Z! x: r */7 N7 N1 M- L5 C) b3 L& q- s  \2 w! E

, ?) s2 \: u1 ^. |  O9 Nvar SR_0 = {
6 \6 e9 p! E  \2 Z0 w        name: "SR_0", space: "data", access: "RWX",; e. R7 q3 {! ?( o* {: U& z
        base: 0xC2000000, len: 0x10000,# z3 G4 c5 q5 G5 o% _9 S. v
        comment: "SR#0 Memory (64 KB)"
! ?3 j9 R) p6 |: G8 D; D    };- w, P9 [3 r. H* u

" ]6 ?2 X. E& _var SR_1 = {' e' c  Q5 H4 R
        name: "SR_1", space: "data", access: "RWX",
. ]; O+ l9 R, h2 e        base: 0xC2010000, len: 0x20000,2 f. J* \0 d- E$ [9 c) a- h
        comment: "SR#1 Memory (128 KB)"6 I6 Q$ G+ \& e) ~  A8 P) u% W: j: I
    };
/ f0 E" A) J- c& f
. O( W! I5 u$ a3 x/ T* X& s, T1 O8 XBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
9 F, H0 b9 K4 |8 O5 U    externalMemoryMap: [# w! |- x- M' f; Q5 L/ V4 `
        [ SR_0.name, SR_0 ],* h8 H8 `) G+ v, C% i" Q) r
        [ SR_1.name, SR_1 ],
. m9 w( Z$ K. \        [ "DSP_PROG", {
- g% _- I0 a" I' H4 V            name: "DSP_PROG", space: "code/data", access: "RWX",# U# L% c) @2 o8 _' w
            base: 0xC2100000, len: 0x1E00000,
# _) v% s8 i+ y            comment: "DSP Program Memory (31 MB)"
5 H; h  J# a2 k* b) ]5 U        }], N, [( D6 w. b0 W' Q' W6 I# z
    ],
6 ]  [& D, [3 q    codeMemory:  "DSP_PROG",
7 u" u7 S- Q! z, c1 B. G0 [    dataMemory:  "DSP_PROG",5 ]8 S) _; W7 j$ I5 M) t$ g' g
    stackMemory: "DSP_PROG",8 I) A7 f! Y; g. H  p7 Z, a& t
    l1DMode: "32k",
7 d- ?* i2 J& X) T; ]6 U    l1PMode: "32k",
( q5 H) B2 ^. j' q- e3 i1 x) T9 y8 P    l2Mode: "64k", H0 f1 e& v1 b. r8 [% t  s
};: z% N, `% S4 y6 {; x& R! ~( |
9 f5 i1 c+ Q3 `, P- S
/*
* G; n2 H* I5 B' R8 o *  ======== ti.targets.elf.C674 ========- N, c. V+ n6 \4 y; Z
*/! }# o$ S! _3 n& ?7 |8 U7 \
var C674 = xdc.useModule('ti.targets.elf.C674');
, P- E* c" W% A. `( g& K8 g9 gC674.ccOpts.suffix += " -mi10 -mo ";+ D* u! |  T6 X; c  B9 A+ @
Build.targets.$add(C674);
9 w1 Y! M. A& x# _0 D' M$ [
' j) {' L6 ]& C; l* Y4 u
  \5 }7 Q1 H3 g5 D) G====================+ h; v8 q6 {4 n5 n) u
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。  T: [% o! l! [' r! 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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?' ^) r: Q, H6 T) p& z  @  S
2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138) v) P  H) ^( d
*
; o/ r! ^% c5 @0 u *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory) e* Y; f5 n- J6 K' O6 Y% A! f) Z
*  ------------------------------------------------------------------------
$ w# m9 z; l  i& P8 p; L *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
2 R! ?6 x9 X7 l' z1 n) U! M- r *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
. G5 w) u! n/ z2 X; Y0 W0 x$ G *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)) G1 M$ M8 H  a$ s) o- y
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------& v1 v: \7 F  e+ x& ~) T6 i% z
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
4 I3 p" u# R9 }& W! k0 _3 w *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------* B2 M1 i8 H# {& Q
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
% X; l4 G3 H5 Z9 V */
1 B* i& o% v2 W* b4 M如何将 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 O: C; H& Y, o- S4 Q! s- B合并为一块大的区域作为dsp程序的所有空间
# D, E2 ~& u+ l: D$ R1 T$ M( e
+ d2 _# y; M4 x. e+ }0 \* S- n现在发现修改平台文件只要用到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文件显示的地址。
, x7 B/ O$ ^3 U3 P4 ~" r5 B. h$ s5 S9 d0 l# S& v
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。$ _  x: _/ J# J( S- P* B
, z( h4 J# ~. K/ @: x
40 /*  Memory Map for ti.platforms.evmOMAPL138
% A6 r2 x: V& t$ ?" Z3 D9 | 41  *5 W1 T- C( d- E6 K1 u9 F
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory  }$ X; h8 Q! c, H" r
43  *  ------------------------------------------------------------------------3 D( R/ O' }3 l% @; q9 w( f
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
9 n: n+ x+ p' C& q: O 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)/ {2 j# `* z' w6 H2 \0 m1 ^
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
8 o$ Y+ [' \1 z+ m 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)3 O# M. \% X/ D
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
  v2 q* T+ W1 k/ |( h* t- O; M 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
) R. H3 A! [6 d 50  */
6 I% |" v5 x/ {; P5 y) R
& D* F* r$ f4 Q. `% K: r; d2 t( ^. }如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
2 r8 B! a2 P3 T: H* l/ i
! u9 p: P9 z) f9 `+ o3 B一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
3 h) j6 [1 z% v3 i: j; p. N7 C& P/ h. l1 ?+ @
如果需要分配大容量的内存空间:6 h$ K  [. G- |7 h/ X+ N
1.改动mem_args参数(u-boot环境变量);
3 A# R& S/ l+ B# L" V2.改动双核通信工程里面的: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=  e4 o: @# V. \8 i5 {
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
( c* {9 W, M4 R% }share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
! @7 }% V  I' A" ]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 09:12 , Processed in 0.040110 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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