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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8174|回复: 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端程序起始。: ^- P9 f0 _" {2 K
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
" d; f2 }) T8 ^0 l$ K+ V- I" C
! K' h. Z! [* B( D" ~+ @/*
/ I% e6 e, K: S *  ======== config.bld ========1 X2 c% j6 j/ c, J+ P
*$ K& O0 H* @# s% o0 N4 D/ H% g' w
*/
& b0 H+ b3 a$ ]% t. ^+ k% T6 m1 Y) H( u2 g! g# m% {
var Build = xdc.useModule('xdc.bld.BuildEnvironment');5 [  g4 C4 K/ X
  e* @. Z0 V$ ]1 i
/*  Memory Map for ti.platforms.evmOMAPL138
5 U1 @6 B0 v, {# V6 X  e *
& Q, B1 K5 _9 R' g' s *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory+ R( }- _: r5 N
*  ------------------------------------------------------------------------! B6 ]- f3 n. C) _3 j3 I6 i/ n" m
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux* n1 o1 ?4 [3 ~+ m- Y, ~
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)8 y8 R1 U: p' s# f( B
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers). k/ n2 A+ M6 F
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
5 ^8 M2 x, B& q+ ]$ C/ } *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data), Z) S3 j- O) g+ }) p
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
! }4 ^2 i& b2 E5 ]' g *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux- i4 {8 r! ^( a8 j/ K/ Z. _
*/5 q9 A  O' c% N
; E  l6 D6 P) m" g2 u
var SR_0 = {
* n: k8 n6 I% D5 |8 i4 `/ d        name: "SR_0", space: "data", access: "RWX",
! K/ l9 V0 G5 |# K9 h" j7 Q! D        base: 0xC2000000, len: 0x10000,
3 P4 {: z- B3 E        comment: "SR#0 Memory (64 KB)"
1 R# E8 T9 M  c( o    };: m" T: ^  C5 z
# T$ @; {) M: Q% o- W4 |6 u
var SR_1 = {; S( g+ b- a9 |: T; M" `% q
        name: "SR_1", space: "data", access: "RWX",4 L. ]. D. F3 L6 Z
        base: 0xC2010000, len: 0x20000,
  r) ?0 i# q2 B0 W2 W        comment: "SR#1 Memory (128 KB)"
6 R8 F# D# ~1 g    };* |' Y9 x6 [+ V& r* l

( n8 n: ?- W- i; O! F: A$ G2 jBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {  Z) }5 z9 T' G0 u9 e
    externalMemoryMap: [
( ~9 ]1 X3 E2 Y; Z, e5 X1 D        [ SR_0.name, SR_0 ],
1 d! d0 u9 c: h0 M        [ SR_1.name, SR_1 ]," S' ?, B5 |3 Q) u4 ?* f! e2 K
        [ "DSP_PROG", {- s. k" v8 ^" L$ P! n2 S$ A2 q
            name: "DSP_PROG", space: "code/data", access: "RWX",
9 n3 p! {. J0 x            base: 0xC2100000, len: 0x1E00000,; s3 U8 l$ Z1 W& y
            comment: "DSP Program Memory (31 MB)"
; z$ b* z5 p; M6 z2 T3 Q        }]1 Y+ W6 l) _6 W: Y9 [
    ],: t0 o2 R0 w( H, P/ k
    codeMemory:  "DSP_PROG",
* W/ d4 A5 e' A5 Y3 P; T/ f; C    dataMemory:  "DSP_PROG",
  a" a1 p( V! A. V    stackMemory: "DSP_PROG",2 A2 e4 g; g5 Q& E/ T% R# N
    l1DMode: "32k",
. L1 w# S& O4 C5 |" H8 o    l1PMode: "32k",
8 X: t( X# x! X+ a- ?$ z" X; Q    l2Mode: "64k"0 @/ ^: ~( S! Z( V8 X1 C
};7 Q$ W7 ^! L( y; X* ]/ h' F

1 @( A- c) o- O) x' ]/*" f* Q2 f  D4 A- t& |# @
*  ======== ti.targets.elf.C674 ========7 `; G/ V) V7 K" I' O
*/
( _9 S  a2 [1 g" c: `var C674 = xdc.useModule('ti.targets.elf.C674');* }/ N/ O# }: r: U
C674.ccOpts.suffix += " -mi10 -mo ";
- V1 p' n5 x& kBuild.targets.$add(C674);
, T7 G" W. k$ g  N2 F1 \8 Y- y8 [. P; l$ V5 N* P2 P, I# K+ W

/ m5 v+ [9 e0 ?1 u1 {  i5 \====================
$ Y$ M- r+ A. l" i; a原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。  \7 V6 N7 A" a) ]/ a' O+ ~
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?& ?+ G. p0 c$ @7 U; t
2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL1388 h5 J) D' {; r; L) ~
*
+ F/ T. |) q1 `1 n9 k *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
% k. s8 M' B; l% X2 L  ] *  ------------------------------------------------------------------------
% m" l  d/ H- ]3 t *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
8 A% y# m( Z+ s; R8 Y1 j *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
: e$ K, M& y! H+ D3 M; u* O3 h *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)) d+ N# i; d& d5 O0 F
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
: J! ~, ?( P, g8 n8 F( F% g1 c& g3 @ *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)2 d& K; J; w/ Z1 s
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------( w' q- ^0 ~3 O2 n3 J
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux: ^6 Y7 d, {8 R; B4 N
*/
2 ?' F; z7 k1 Z7 b1 R  x$ o6 O如何将 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)
4 ?9 t0 l/ g, D; ]合并为一块大的区域作为dsp程序的所有空间, E: f' C, e: ~, D% U
5 J5 H; ~8 z8 m4 ]
现在发现修改平台文件只要用到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文件显示的地址。
3 q7 y8 z; ^9 S" G) F4 u! q  W
+ f# G2 O* e% v6 k目前将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, F/ c7 O# P0 ?% w
+ m. w6 X# w0 a. K# N
40 /*  Memory Map for ti.platforms.evmOMAPL138
4 \, ~+ l( A8 _( s 41  *- v" f% f" w- U8 T, ?7 A0 @
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory" d- A4 k6 M, g2 P/ W, ^$ v1 }6 s/ N
43  *  ------------------------------------------------------------------------2 P) `% W4 {% P! \' O, e/ n
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
4 `, M5 m- u0 Z0 P1 h) [ 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
- }* G2 n9 Z& ?0 v 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)4 ]) p- \7 j* A0 W; ^1 G
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
. z$ R& j% ~8 S. c7 Y! G 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)2 w# o! g& J: j
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
7 k0 M4 Q; f. K3 f6 W: s6 { 50  */
; k" ^- x! `7 E2 z
& Q# ^; \- k6 f4 b- w/ ]; u- S如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。3 Z* i7 h$ N2 Z) V

- W5 }! B' i5 k6 m# x8 Y5 B8 v一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。) I( b! K, r+ D% `, S
& T! b, M3 i9 {& S# z& f2 G
如果需要分配大容量的内存空间:3 N) {" A% l: d+ n, _) }! ~9 C
1.改动mem_args参数(u-boot环境变量);
( ~  ~) [  s& n! @  N" C2.改动双核通信工程里面的: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=
, y& o8 i$ V# V) m3 ?9 G. l这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。1 q) e' _- F# }
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效/ @& i3 g4 g$ j2 H8 P
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 00:27 , Processed in 0.039961 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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