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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9926|回复: 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端程序起始。
( S3 u6 N' l  B/ h9 F) J    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:9 ]& P# t1 c1 |* w+ r) ]$ Q
: K0 k5 E8 y  u. C; n
/*5 l1 F6 o! U! I6 T* r5 D
*  ======== config.bld ========: H3 T* L( c" @0 w
*; V# u5 O9 P5 n8 Q: a  a- H# Q
*/
6 V$ q+ e# p: r- w+ C2 u, p+ w$ }# t1 t5 K+ k# }4 _: Q2 t, h! T  u
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
/ p, F0 [! h& c' V
5 ~  |- E( m5 N6 Q: i8 d/*  Memory Map for ti.platforms.evmOMAPL138
2 d  O; N1 k  x4 F9 f  D *
- G, F* a- j2 \4 D1 l7 }( E3 H% ` *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory3 I( Q3 @8 M( A  |& C6 x
*  ------------------------------------------------------------------------
- x! l7 L; T  Z *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux( V0 @' ^: l& E" h
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc), E+ Y2 U/ {: P# K  A2 V
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)0 r: j7 N# e6 D" V1 S
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
3 ~6 Q8 N8 C' d *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)+ H0 }8 c) U6 c$ f/ Y
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
+ W, c" y( A) p8 |% [3 o) Y *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
% s& `! d+ ]# b/ q; c. J& z */
8 P' v, E" U' ]- }$ x$ N' z8 |3 A, `
var SR_0 = {! \6 Q2 m# U3 C* @( p' X! ?/ z* O8 h/ ]
        name: "SR_0", space: "data", access: "RWX",; N# v* e/ D, C' h
        base: 0xC2000000, len: 0x10000,( j% T2 k4 \3 k, v/ u* M2 v
        comment: "SR#0 Memory (64 KB)"0 W; ?/ J8 U. O7 o# w' |8 O
    };
7 \2 y" y4 l* F/ I9 ~5 B9 u; Y2 l+ ^& b; _- ^5 p6 D/ O& n; b2 R! I
var SR_1 = {; ~  w- u9 b5 c) }
        name: "SR_1", space: "data", access: "RWX",) Q+ ^9 X# H$ N# i
        base: 0xC2010000, len: 0x20000,+ _" H# }0 O) v( X
        comment: "SR#1 Memory (128 KB)"
$ j0 m5 b6 r; Q& b    };
9 n" w7 J9 u9 ~- A2 h2 B0 v
' n1 Z2 i# ?7 S& pBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {# a% b9 r: z8 _
    externalMemoryMap: [: N+ @+ i9 D6 h9 T) E8 I$ h
        [ SR_0.name, SR_0 ],3 d2 K; k/ v8 z- M1 [# [* N4 Q) M
        [ SR_1.name, SR_1 ],9 G$ Z3 A: S" {( k
        [ "DSP_PROG", {3 M/ |* _. z. p  P7 i$ K, E
            name: "DSP_PROG", space: "code/data", access: "RWX",
2 Y$ [% ?: }; O* J5 ?# ^1 @& m            base: 0xC2100000, len: 0x1E00000,6 o' {' p/ H$ D3 }. @
            comment: "DSP Program Memory (31 MB)". q4 v' z! ~* z4 }
        }]
" D: B; U- v7 v    ],
6 L. |8 h( {2 v    codeMemory:  "DSP_PROG",
0 Z1 J( Y1 q7 d    dataMemory:  "DSP_PROG",
1 p/ l% {, c1 U4 R1 H% Z    stackMemory: "DSP_PROG",
, `& W' G5 Y0 K, V7 b+ F. C( R$ d    l1DMode: "32k",
" z; i6 P0 h2 N" k0 S; I; G! g    l1PMode: "32k",
( L) W' E0 K0 y! t; V    l2Mode: "64k"4 b+ R" W& {( E7 K
};
3 ^' \4 J4 d5 e6 w9 ^" E+ ~& y* b4 b- V8 g
/*
3 r! s- n6 M9 d5 P' z0 K) R7 o *  ======== ti.targets.elf.C674 ========
8 C9 S8 e8 L8 i; K' n  b */! W7 R& r8 F* m% R7 n" ^9 r
var C674 = xdc.useModule('ti.targets.elf.C674');
; h# \+ k/ @: ?, o. t9 w+ R; hC674.ccOpts.suffix += " -mi10 -mo ";
# |4 Y+ M6 o, s0 GBuild.targets.$add(C674);& p) U. t1 W4 L

+ _* h* \; P/ K" f: n! F: K+ J5 Z- K- r9 L
====================
8 ]: U( ~* n3 U/ ~原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。# X6 e  ^  ~$ n7 H. j
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
4 B$ u: _2 X' Z& R! ~# j% e$ v2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138
9 A  E( o! G5 P$ ?! v& g5 D *
. g) [: j! r; a& z *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory0 J$ G3 Y9 j- V  N
*  ------------------------------------------------------------------------
3 v! I6 P3 _6 @3 ]! k *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux. A- P" b8 n- T8 S& h3 B* F
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
" g, i+ d( i2 i4 U" E' v# w! Q *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)- r" m9 O( r2 q3 Y; i
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
; I# ?$ Z6 ~( q! [# w: G *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)' C8 q; y. x2 L( S9 }
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
6 o: P5 z  w6 d/ r. K( x# D4 O *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
  O; p- r: U2 n9 y/ y" T */
! T$ |* V6 j( b- g9 P) L. ?2 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)
; n6 Y) e) F, z% p合并为一块大的区域作为dsp程序的所有空间
5 O+ Q' T3 E: o7 Y) m4 a* n
6 ]# M! e* j3 H/ w现在发现修改平台文件只要用到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文件显示的地址。
: N+ ^6 c7 d6 }# B  r2 v( I: c9 I, e; w1 B; G( 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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
6 i1 u/ c: z5 \0 H0 G. H
6 [' f; _' j" M6 a8 h 40 /*  Memory Map for ti.platforms.evmOMAPL1382 C' \) z+ W1 i# V  @
41  *( z+ }1 I7 E. m
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory6 q/ A9 {% c! D  v* }# o% ?
43  *  ------------------------------------------------------------------------
; i: k, u7 l7 f- n 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
  b# ^" |8 z5 O% m: U  t 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
0 I: S% b. L$ g( t/ n4 m 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc); P4 Z% W5 A' z6 r! G3 R1 F
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
, d6 f+ G9 x! H; f 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
& E& z# b# B! S* q$ x" ? 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux- c# {( A$ h4 }& }# N/ h
50  */
# e) Z2 ]# `  x" c5 p. d) J- `4 S1 D" C1 k% r# T
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
2 u+ e' B4 R' l
$ p2 x( o4 w+ a9 R7 i一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
8 H$ t$ x7 c) w/ x* d! q  E! Y  [3 \' R7 I/ S+ Q5 {
如果需要分配大容量的内存空间:
2 i$ E4 A1 k% F1 @) q. P1.改动mem_args参数(u-boot环境变量);3 [4 n* F: B, y
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=2 g! |  |+ v" ]0 M0 L
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
; T3 ~, Z, p6 V) ~/ jshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效! ^6 y8 O9 {, g9 {6 N
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 07:56 , Processed in 0.042325 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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