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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6864|回复: 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端程序起始。! I. r( F4 }( c( I2 g; u3 w1 A
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
4 }9 a  e/ w+ A
2 P! A3 J6 v  E/*
" j; D$ B& Y0 P* ^( t7 X+ `: W *  ======== config.bld ========
- |% {1 C! g3 R* g8 @/ n9 \$ v *
( c2 }( d. P; K" ` */
) I" f3 f3 W4 x% o, T- o! W8 ~' Y! z8 q0 G. ]) X0 I$ H" l
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
6 J9 q: F% K8 O, L) U  H. d$ Z' ?( L7 `, d/ N
/*  Memory Map for ti.platforms.evmOMAPL138
3 V- ~& [: e& O' D. G *# [" n& @7 n" Y7 ?$ ?& Y
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
* t' j& v" _' M. _* Q0 F6 h *  ------------------------------------------------------------------------) M+ n, n7 w. s8 X: i
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux1 U; [4 B: H# F. x5 `
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)/ p; t6 r2 H( M: J2 \+ F+ `7 h
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
" y$ H; [" S' p *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
: q; |& s$ f) ]% S *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
; ?: y  B( T/ t: U2 I+ {  R *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------: l$ s) G0 j/ B4 [, s
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux( I9 X+ I' L/ X( l- [
*/
0 G8 ]& a; k9 Y' B% A% |" M" d
( K5 B+ ~$ z# a/ J1 ], y4 _( X9 @7 cvar SR_0 = {
; x+ H) y: n0 m. p        name: "SR_0", space: "data", access: "RWX",
& @: |3 T3 T' L6 |6 ^        base: 0xC2000000, len: 0x10000,
) K4 ?) k0 ?& s( g/ ]) R7 v        comment: "SR#0 Memory (64 KB)"$ t3 F# {% d3 q7 S  ~8 Y+ r- S/ w
    };0 M$ t) ?0 b  A2 }3 R

5 F' \, }* N' b7 p6 o5 r$ h6 {* lvar SR_1 = {' t  A) Z  C" L$ s/ e
        name: "SR_1", space: "data", access: "RWX",
9 \7 P- b6 k3 ]0 k4 Y        base: 0xC2010000, len: 0x20000,( ?! X& D8 F3 d! N& J. _) [& D
        comment: "SR#1 Memory (128 KB)"9 l9 j1 E2 v" g$ O+ y/ ?
    };
9 l6 M  `, v3 Z1 D  N7 O
; V3 J" J' D2 ^, v' O* iBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {1 `# i* S2 d8 ~: K" C/ u7 ^4 s1 H
    externalMemoryMap: [
# F! ^5 q: G4 O4 b! m        [ SR_0.name, SR_0 ],* ?  F6 o3 C1 Z9 y
        [ SR_1.name, SR_1 ],
2 M3 [) v$ l; n        [ "DSP_PROG", {  |) E) k9 m. F9 Y( r
            name: "DSP_PROG", space: "code/data", access: "RWX",
# m; P2 j/ ?0 L3 [( h: D+ _            base: 0xC2100000, len: 0x1E00000,0 x1 i" Q" n  s2 \( x9 e( N
            comment: "DSP Program Memory (31 MB)"
2 J5 M- M, ~* x        }]& b4 Y& [& \4 [8 ~5 u8 s
    ],
* B& h8 f9 A( C: q3 @9 a' S    codeMemory:  "DSP_PROG",( o1 u8 s7 u( F* U
    dataMemory:  "DSP_PROG",
( {  u( W8 a8 E# N2 X& @    stackMemory: "DSP_PROG",
# z) l, k' [3 V. ]' V$ M" G9 h5 Q! x    l1DMode: "32k",
5 C; O+ I8 i& h8 K3 T* G+ W; G" k    l1PMode: "32k",! A6 ]' f3 L/ Y! M8 g
    l2Mode: "64k"
( |! @0 p, Z7 e};, ]& H3 Z4 ~" d8 ]8 ~  P
( X; x* w  V8 s  S
/*
, D# D3 b! @6 z+ @" d, q- ?- @1 m *  ======== ti.targets.elf.C674 ========/ d2 R) q# D- b$ y2 z- q& `9 i2 k' n/ _
*/
) ?1 k/ l8 d6 f9 O0 O) avar C674 = xdc.useModule('ti.targets.elf.C674');
+ j# m8 Y: D( Y2 ZC674.ccOpts.suffix += " -mi10 -mo ";
0 h9 N, ?/ B0 z6 b8 @0 `Build.targets.$add(C674);  n& a2 V4 k3 \. ~  ?
3 W! m$ q  H0 g% l( M7 B
: \- B9 b" U, r' a; s
====================
( u4 {$ _+ G* T6 x8 {, h0 c' S" U2 q原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
# ~) y. G" s( k( Q
分享到:  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+ b3 C2 c) M5 N" {  L0 y/ L* Y2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138
+ L+ d, w3 n. B4 d *+ @8 U% ^2 y$ h+ X* }  v- y
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
" R# x1 j- D1 p, ~& r  i' e *  ------------------------------------------------------------------------  p2 F- K( B* e* E5 k& c, y
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux( c0 K3 M# i5 f" c
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)' J8 u; A( l: W& y: w* Z
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
. ~* T0 j/ R  a, { *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
. O, E& ?8 i' U *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)2 i, t$ G+ ]1 x' m9 `. u/ ?+ [# A
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------0 j0 g, ]+ |4 y% o# C, c" d
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux. l. z4 i* f" ^# |5 G
*/
9 X! \/ f: d0 s  J如何将 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)3 ~7 A& ~* Z! i6 D$ l, \. w: n
合并为一块大的区域作为dsp程序的所有空间
) u8 a; U) {1 ^% q2 c8 {) {/ o1 @; T9 G. `" ~+ m9 R
现在发现修改平台文件只要用到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文件显示的地址。
8 ]# m1 o, q& F6 j: g& u% A; o- E2 g1 d. c- f" O" P2 ?
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
6 A& F/ S1 `6 I* k+ N9 _. I
: U: @! p2 w$ H; t' m  ` 40 /*  Memory Map for ti.platforms.evmOMAPL138
! n2 q9 b$ o. S& {/ v/ |% S 41  *3 _/ p* U, x7 Y0 O" \8 ?
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
. S, H1 i! l% ^0 _/ E7 ], p1 k 43  *  ------------------------------------------------------------------------% P9 \4 w0 `: k7 V% P% _
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
8 q8 l! M8 o1 y1 d+ Z 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
1 l  O1 z6 p) q% p 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
  i5 K' G9 K9 x3 j8 x. `& V2 x8 |; d 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
: L/ n# T* Y; o! | 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)! S$ K& }4 A/ k4 ~4 V' b
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
- x4 I  s2 m! L. E 50  */
0 w. P7 Y% @, k. y! i
$ Q, x2 g* c' I  P% ~8 i, p  q2 b& `如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。. }1 Z) H% ~6 \, ], `" {

. _& `% N% z2 p9 Y: f# b6 Z1 x9 d一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。5 ~4 k4 m/ t9 n* V5 h0 K2 F
+ ~9 ~! R  `7 [/ i1 n+ \# x
如果需要分配大容量的内存空间:
0 k, e9 o% M, E" l% m( p8 G( u- ?1.改动mem_args参数(u-boot环境变量);
* F$ n7 C' x. m) e2.改动双核通信工程里面的: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=
, [, l8 u% @3 y5 P( ?5 b这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
' {0 C- e' j1 J6 mshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效- [* H6 N% i& o/ W# p8 s
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 07:12 , Processed in 0.042257 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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