OMAPL138arm核跑linux+ipc,dsp核跑sysbios+ipc,重设dsp端程序起始 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9694|回复: 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端程序起始。
- O( `' n0 V, R    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:, t( v# w' F# t

$ T. \% p, p4 r! E" t# b/*
/ v# c( d4 N4 Y- i *  ======== config.bld ========
/ F9 M1 M. l) d. g) F *
8 g* i1 u- G) n3 z' ]6 i4 h */
( K1 g# I2 a6 p3 d" m
$ O, H$ g+ ?2 C- jvar Build = xdc.useModule('xdc.bld.BuildEnvironment');+ W+ _* ]0 O) A' d3 \
. `; c( P  v7 n  V& a1 w- y
/*  Memory Map for ti.platforms.evmOMAPL138
7 H( A  U  ?% ^& q4 s0 S *7 H2 l, M' `; I. C: y3 `
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory! W& {. y0 d" X; e  t3 t# k# i
*  ------------------------------------------------------------------------$ I6 q6 d( r8 U+ f# F2 b
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux3 D; W- ?/ a0 P
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
3 y+ |% |, J9 b1 R3 c *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)& F1 d8 Z/ _0 k: q
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------. z5 r( t0 `# ^, ?% \' H* ^5 \: ^7 @
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)0 U" _; F& S$ a! N9 }0 K* F: z
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
9 g+ Z9 m) y9 }+ w& h *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux8 @, ?' ]4 O) _) b% n' E& o
*/: ~" I/ o) f) P5 [# \/ ^% r6 L3 ]/ ^

1 w+ X& K/ V9 I0 h! L/ u% Xvar SR_0 = {
7 g7 V& a- `$ }        name: "SR_0", space: "data", access: "RWX",
! e6 a  A+ T6 ?) E# j. Y        base: 0xC2000000, len: 0x10000,
$ M  g! ~/ p/ }, X% T        comment: "SR#0 Memory (64 KB)"* R" L6 h" v. g9 N' t
    };/ ^% J% e& M* `  V

0 W8 J$ g8 O9 ^$ e7 Pvar SR_1 = {
4 R% |7 D! Y% C7 ]) |0 F+ z" P        name: "SR_1", space: "data", access: "RWX",
- T* L8 [& ?0 }' O2 |/ @% V. S        base: 0xC2010000, len: 0x20000,
* \9 Y% k9 s# d% ]8 w7 g8 Z+ y4 j        comment: "SR#1 Memory (128 KB)"2 f. w  h: ^8 ^
    };
# ]+ Z9 l+ P/ A: b) t8 T+ d- U' v3 z+ f
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
# p; z1 @/ ?, w2 o+ c, |" g9 f- V    externalMemoryMap: [
' X9 D5 w5 G" b" v: N        [ SR_0.name, SR_0 ],
+ r' k: T, C& I) Z        [ SR_1.name, SR_1 ],
$ R' L) \3 j" Y7 j        [ "DSP_PROG", {) O9 |  y' i+ b( E
            name: "DSP_PROG", space: "code/data", access: "RWX",
3 U0 u+ }$ ]8 T, B! y( [            base: 0xC2100000, len: 0x1E00000,
( G" e+ m3 q7 _: L; E" i            comment: "DSP Program Memory (31 MB)"
& z1 k6 a4 |# v0 `- y! \        }]
" N' N; N' i/ t3 I! D    ],: m- C' h2 H' k* Q# i7 T+ p
    codeMemory:  "DSP_PROG",& h5 ?! Y9 d& n) \5 m
    dataMemory:  "DSP_PROG",6 d$ z' b# V9 b) X$ x
    stackMemory: "DSP_PROG",
/ `2 O' R$ X1 f% n% l. v    l1DMode: "32k",
+ R9 {/ n: N3 o/ p    l1PMode: "32k",. k  P2 a: A$ b4 s9 \- r, R
    l2Mode: "64k"9 {1 `) z% z) [& x2 W
};+ j( q' S- K* L0 S; _# A
; j$ Q; }, V: _
/*' @; |4 Y' h$ q5 B& e' j' E
*  ======== ti.targets.elf.C674 ========& P* _3 A  B& t" U( {; x
*/
$ W7 U6 ~( H2 o- |& rvar C674 = xdc.useModule('ti.targets.elf.C674');
# O& N# G, ^! e0 j7 vC674.ccOpts.suffix += " -mi10 -mo ";
' h/ H: ~+ F" H0 ~Build.targets.$add(C674);- K( M7 b. |  p; M

& Y# t  A2 \2 `( z5 Q4 F6 r; \' f5 T2 f0 Z9 l4 a( r
====================
/ E! l" h" y+ H# k原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。3 m6 ?& x& C2 ^- C: Z/ l/ h9 g( Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
7#
 楼主| 发表于 2017-5-31 15:55:12 | 只看该作者
这个问题是和http://www.51ele.net/forum.php?mod=viewthread&tid=1872&extra=/ {  l3 ]; k& K; p- }7 R! w2 ]
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。8 w4 r6 \. Q) F# N
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效9 e" m$ [& G0 M. L3 F' E- W
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
6#
发表于 2017-5-23 17:31:09 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
" i  k& u3 A5 R/ ^; W3 b# r7 K$ Q4 @% x  B8 p) V: ?
40 /*  Memory Map for ti.platforms.evmOMAPL138
  k* ?( o* Q1 J% O9 f 41  *
6 X' ^1 o$ K6 F: D' N- N 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
9 X3 P7 H+ y6 b' p- Z 43  *  ------------------------------------------------------------------------
7 P0 R$ k; {0 x% F, I6 b 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
$ @( }' g2 `$ J% K( R 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)% y: X9 Z7 k. X* V1 t
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)8 u5 N3 h. x: P: U% f% v6 b
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
, F- E# F3 F: i* ?6 U. F1 o 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
! `8 }3 }9 M5 c0 U9 _# [% Y8 x# T 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
! U  M  a4 J9 T, F' K& F1 N 50  */
3 j: E% t/ J3 |  `: c$ V! @8 y; ^
: n& L$ F5 Z- C9 C* `如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
. Y2 o. r7 I$ a) o1 a% l' h! l9 j. d" C5 B
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。8 p5 }( P4 s* Z4 @' _' f; u

0 S* ?( D. u1 Y  z" a如果需要分配大容量的内存空间:
0 p" {2 z$ b& b8 R! [1.改动mem_args参数(u-boot环境变量);& \3 r: o: Y8 R1 [
2.改动双核通信工程里面的:shared/config.bld和dsp/Dsp.cfg文件。
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
5#
 楼主| 发表于 2017-5-23 16:53:03 | 只看该作者
发现slaveloader的list map就是编译时的map文件显示的地址。7 S& p& f; d. X3 m( [1 P& k
0 N9 ~- x1 n$ j5 l. E% E# s
目前将dsp的地址由0xc3000000改为0xc2100000(或0xc2800000)起始,编译之后的程序,arm端和dsp端的ipc建立不起连接,不知道创龙这个还需要修改哪个位置?如果是c300000前面8m和后面c3800000起始的8m一起使用程序没有问题,这是为何?是不是c3000000前面的地址在linux端有什么设置啊?
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
地板
 楼主| 发表于 2017-5-23 16:16:08 | 只看该作者
请教这个slaveloader的list map怎么阅读,同时这些内存入口定义在哪里?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138: F+ f& ^: E# _- S$ `4 V
*$ B8 k9 i$ Q6 Q4 r6 X( j
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
: e( l/ N4 q+ Q+ ]: g *  ------------------------------------------------------------------------# u) F. w6 V. z1 d: E! F( W# H
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
) X7 i+ X( N% i  h, z& w) A *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)  C( y8 B1 n7 D# B. C! n: d
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
9 A2 t+ i( Z9 U1 Y *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------1 L1 Q2 J6 O$ B* o  h
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)6 D$ ~- g4 y7 B2 ^
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
* Y) h2 C0 a7 p* T+ F/ Z *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux. [0 r* U. f9 y1 [$ I/ |. K
*/3 m; f! `! J/ ]/ o1 D: x) g
如何将 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)
" `; ~8 d! C2 L' u0 O. L, m9 T- b合并为一块大的区域作为dsp程序的所有空间3 z5 }% S: D, x  ^  [4 r

- S8 g3 ?( v1 Y, q现在发现修改平台文件只要用到0xc3000000之前的空间就出现arm和dsp之间的ipc相关都出问题
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
沙发
 楼主| 发表于 2017-5-22 16:44:41 | 只看该作者
1、直接修改config.bld的DSP_PROG,编译出来的文件map起始不是设定的0xC2100000,还是0xC3000000,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
8 ]* ^  |! U- r) ^6 E) U; ]2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-31 05:05 , Processed in 0.047016 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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