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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8175|回复: 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- b( w0 w; c5 D3 O    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:( J3 X8 N. a/ R9 G6 c8 E7 @

1 C" H; }& R2 b, i; ]/*6 j4 l6 ]7 z) L/ G8 F7 h
*  ======== config.bld ========, L4 q& Y" P# N& [0 E+ g; I
*
' G" I& J; Z7 f  w% ~ */
: i+ e  j$ I; [; `( Q$ N8 _: l( Z+ U2 ]; x6 c1 I
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
6 m& F% C2 I. H4 ]6 l  D; x  k+ I. i* w0 H6 q4 B+ U0 A. Z7 u6 P
/*  Memory Map for ti.platforms.evmOMAPL138+ x3 s0 o$ J9 ]: t! G( j" m# P
*$ E7 b- x8 ]9 ?! i. d) \
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory* c7 a& Q+ A8 {2 t9 j- a6 k+ E0 W
*  ------------------------------------------------------------------------
3 A9 S* x  Q% e8 q. ~7 B# k% w *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux9 x$ E' z. z  v9 g
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
0 I0 V9 a6 V1 _5 t *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)) w' B/ h$ X/ w4 M8 m& a6 c
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
5 p# T+ L) c- }8 U: F2 `  d *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)9 S, v8 ?. S  G4 v; T* T8 a( X
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------: o4 T3 ]: `' R+ y# H3 s9 V0 w
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
5 r: h) _6 |+ m5 @ */
4 i# Y8 r1 x. k6 z+ u
# `/ Y" `5 q3 d! tvar SR_0 = {% y+ U4 _8 M" Z
        name: "SR_0", space: "data", access: "RWX",
! p7 n. S- T. V) V* A/ t; u4 M        base: 0xC2000000, len: 0x10000,  g3 Q! ~$ `6 K" @8 ~% V$ m
        comment: "SR#0 Memory (64 KB)"
, a3 v0 P  [; j/ n. m; V    };
- s8 O5 k# p) A4 r1 }6 G* K9 r* R2 @' F1 {9 U, f& x
var SR_1 = {
& ^# g+ g3 N- a1 Z+ n        name: "SR_1", space: "data", access: "RWX",
5 d* L; X9 |* Y* c* Q+ n        base: 0xC2010000, len: 0x20000,
7 x' e9 g+ b8 J4 C, ^        comment: "SR#1 Memory (128 KB)"
5 m9 i( L* {% H; e, u    };
; M2 x0 J3 H6 k0 z' h; W4 {2 ^, ]
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
8 M. Y8 H0 B  d8 l0 ], _    externalMemoryMap: [
2 I  S/ Z. `* g7 x! r( m        [ SR_0.name, SR_0 ],8 E3 d' H" @# }$ o$ v
        [ SR_1.name, SR_1 ],% d# s7 D/ S. h8 v9 ~2 _' y! d) \
        [ "DSP_PROG", {7 c3 G4 E& _+ k  S9 |( C8 Z
            name: "DSP_PROG", space: "code/data", access: "RWX",
: r$ u. Y/ `9 y            base: 0xC2100000, len: 0x1E00000,
- W/ H% ^+ h+ Y" j4 x( Z5 [1 @            comment: "DSP Program Memory (31 MB)"
! ^3 @: ^  ]6 Z$ C; n, x2 _5 \        }]6 L. R, T) ]5 r- M4 x
    ],
& A% F" Q: A# L4 N. E    codeMemory:  "DSP_PROG",
, h/ Y" L1 @( H1 e" v6 N    dataMemory:  "DSP_PROG"," x1 k: r" I  K$ k; K/ v
    stackMemory: "DSP_PROG",  y* r5 I3 a7 m* I0 A: v. ^
    l1DMode: "32k",, x+ D" D4 m9 l, K% q6 g. Z
    l1PMode: "32k",9 b: f6 q. o! e# ^0 g8 d0 z: J
    l2Mode: "64k"* q/ A/ h5 C1 z! ^- q
};2 K. ^; j! D6 h" u: w" @; O3 e

6 A6 B. L; w2 u3 z" F/*7 s6 ]0 y1 m; c. E8 L8 c% c
*  ======== ti.targets.elf.C674 ========
8 q- i; c, e; t9 j, E; B */
( F2 D, n3 C4 h) ^var C674 = xdc.useModule('ti.targets.elf.C674');8 `- s$ m) t% a6 j% M0 Q9 }
C674.ccOpts.suffix += " -mi10 -mo ";- s! I- |& D, ?& F" o
Build.targets.$add(C674);
! c) v( e  i$ M3 G% m  p+ G; u
9 b3 v8 F2 B" a/ c* W, U
/ c! s, o; m9 W$ s3 \====================
$ {7 y3 [3 m* N& C" S5 J原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。6 M* j9 o1 y# u& h
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?# i: ]% C, Q  i& F
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  _8 t# N' Y. ^/ D
*
8 I- d: K4 O4 [  j; U *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
$ b% W3 d. N, K- o% C) o' F *  ------------------------------------------------------------------------5 A; }/ q5 H& f0 X
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux: c# R% D" q7 w6 C5 k2 S. a2 y  L
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
. j) _' W3 B! ~0 \' W *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)4 V+ p3 k. H1 ~, }
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
" e) k+ g# c; ~# u8 F *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)) b/ _; g- i% V: v1 u3 }
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------# b3 H! Q2 h- b9 b
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
0 }7 N1 Z5 \% `& m! W& ~1 R */- f) ~; H1 H5 K, a" d
如何将 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)
* M) a: [2 R7 R2 ]8 H( {, R" u合并为一块大的区域作为dsp程序的所有空间, B% e5 n+ J* ]; j, i: ]

- ]' f2 ^) J6 R1 c" u1 r% v现在发现修改平台文件只要用到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文件显示的地址。9 W7 E; a1 v" [  f
  H4 {. V* h) b+ G4 ?+ b
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
; p% N; ~9 Q6 b; A0 @* I7 o/ L* r$ r- g* J# f  P4 j  C/ V. C
40 /*  Memory Map for ti.platforms.evmOMAPL138
( j5 I1 i& H; F: r- T8 J 41  *) f! ^3 f  c. X$ Z: T
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
+ P$ }6 e2 K- z 43  *  ------------------------------------------------------------------------0 v5 v$ v, U/ z" p8 n: ~
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux% S) V5 r8 k( g* `# s! _( o8 Q, F+ \
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)0 _- }# y3 i3 `5 k* ^) b& H) U
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)9 e7 |/ e3 q; N: |  y5 e. c% ~
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)9 o9 p& P( l  l) P" |5 U$ ^: v! v7 s- c
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)0 t3 W2 j1 ^9 y+ i  [
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
7 o" T5 z# R5 t/ Y 50  */0 s* [$ l& i4 w! K2 t' L' R" |1 X

: m) h5 b+ z$ u; n6 z如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。$ S5 G7 X0 F( n. F
0 i$ O) Q8 G, `. _
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
. U! i$ B( G6 S% U
1 ]- R( q$ C9 N6 M& e) {; y如果需要分配大容量的内存空间:
0 ~+ ~; v. a0 k1.改动mem_args参数(u-boot环境变量);5 w) T  x0 p; E5 J% L
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=3 o8 T0 F. J8 M" N6 [5 v
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。, J+ J8 N- B& [$ }0 J" p% F
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
' x, u% U* v/ h9 L  d' Y; \! |* e- a
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 04:06 , Processed in 0.041656 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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