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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8261|回复: 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端程序起始。
2 B  `/ c# E. u' l    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:' f: v" i# @$ T0 o

/ q. G( v/ x9 K  W( ^: c6 c/*
$ Z6 F% P. Y* r0 F *  ======== config.bld ========
9 `7 L! \/ s8 z# ]. J+ H; @ *
0 K. I2 Y! j" g" V* `/ [8 u */2 k! I( m6 g  U& x2 {( i
, }: \3 Q( x& l0 i" A  Y
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
3 ^! v' P, i; u. f$ i* }1 |( r; s0 F& I( R; V
/*  Memory Map for ti.platforms.evmOMAPL138+ W% A8 A) f2 u- o9 ]
*
" G# x4 l7 x( U1 T9 r4 @8 i% { *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory  x/ \! C. A9 R3 O  `
*  ------------------------------------------------------------------------) D0 O# m1 m$ y7 D$ W3 j& J
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux- Z- ^/ Z$ n5 y6 n# _, j
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)) N6 G  R" S3 _
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
% Q$ Z- o+ M1 W9 p6 m1 d" | *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
, E* u& c. j. C* l% ?6 P# c% m *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
( n% v. X' @: f3 _8 L *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------) M4 Y* r8 e0 z. R( X
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux/ [2 H. M, H( E$ @% Y. P
*/$ A. {+ W4 ~3 V0 {2 w

" g. @% V% w3 X: b! M! Gvar SR_0 = {
/ A) n/ [3 X, e+ h. B6 V        name: "SR_0", space: "data", access: "RWX",
3 y: x" z4 N% C  `/ K- \* h        base: 0xC2000000, len: 0x10000,! j- K$ C5 p7 R0 B( S) I5 A
        comment: "SR#0 Memory (64 KB)"
& Z2 \2 x; t! x    };: ?. f' q$ o7 V3 a
' L4 }6 F' X3 I
var SR_1 = {
& O: b3 l6 P# L3 a0 r/ J6 g6 `        name: "SR_1", space: "data", access: "RWX",4 B# N$ x5 x3 k, V& `& y% f
        base: 0xC2010000, len: 0x20000,/ x% W2 [- H8 b' p  J2 U
        comment: "SR#1 Memory (128 KB)"" [6 Q, n" x- B# b1 X
    };
  ^9 m# G7 W" U- ~- u7 F0 V( ^3 v) l
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {; r% ^) r$ r" a& {
    externalMemoryMap: [
# G2 Q9 y, @* `: G4 G        [ SR_0.name, SR_0 ]," z( Q. U. L9 N/ Y7 B  I/ [4 D
        [ SR_1.name, SR_1 ],+ H$ n$ @, y7 s  N; l% v: A- F
        [ "DSP_PROG", {+ C: N) |+ D2 L% w: f5 u
            name: "DSP_PROG", space: "code/data", access: "RWX",; x% b* K2 y+ \" H  u4 d0 t
            base: 0xC2100000, len: 0x1E00000,
- a3 B. l1 e. p$ \. D            comment: "DSP Program Memory (31 MB)": S/ U4 \% P2 u( B* ~2 u$ y8 i
        }]
/ M2 m5 l7 O, j    ],9 |  p! q/ o5 D0 P: k8 Z1 {
    codeMemory:  "DSP_PROG",  n0 h! n8 w& O) ~, U
    dataMemory:  "DSP_PROG",
& t7 S5 R8 i2 O1 F1 g, T    stackMemory: "DSP_PROG",
  \: X1 e' E# W, V1 M2 e    l1DMode: "32k",
8 G1 o# ^3 k7 w# `    l1PMode: "32k",$ ^: p; l) R. U+ x1 X
    l2Mode: "64k"
: {% G; _( K: X5 u% P};
0 H3 D' j" d- C3 e
5 R1 S, o  N7 i8 p+ u2 U/*
$ ]4 q3 p5 l* ?+ B2 G" G1 a *  ======== ti.targets.elf.C674 ========
! ?# e2 B! H4 d6 S  a3 @# Y */4 z# r, O$ f+ T+ D% a8 g) ?
var C674 = xdc.useModule('ti.targets.elf.C674');( O5 N( V; c2 A; a3 Z
C674.ccOpts.suffix += " -mi10 -mo ";
) V# i. z) ~# ]: b" |% u  K! EBuild.targets.$add(C674);+ i7 e  D  d* ^& I

9 I) G$ k4 @3 ]9 d$ _
  Y( L( K* r+ k====================& g6 U6 X4 k# n* ^
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。% @  B* K6 s! q! |7 f& k  R7 N
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
7 S% ], |  m' i4 L* c2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138- t7 x5 M$ A& [& ~- A. A4 y( l; g( G
*5 I3 D$ g$ z/ ^5 R0 Q
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
7 y% }* t9 b) [( T *  ------------------------------------------------------------------------' Q9 G  b; v% I) H
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux2 l  z; A3 c3 }( ]. C
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
/ S/ F' u: U* A( z$ m *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
' y: `4 {6 `; a *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------" Z2 i% E8 ]  i0 F5 ~- w- L5 X6 L$ |+ J
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)8 G% x8 ^4 Z* I  j
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
/ q  E+ m/ E( Z0 V) H( t& i. Y/ ~ *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux, r9 `/ k% l$ ~: Y
*/
2 c. n/ H; A6 f如何将 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)9 |( ?* d/ P4 A8 @9 Q
合并为一块大的区域作为dsp程序的所有空间% p& g" z1 ]1 N1 w9 R2 @+ T
1 r# Q& l9 e, C) |
现在发现修改平台文件只要用到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文件显示的地址。" W) W" |9 d' B- P2 u2 ?
) m9 h1 M- q* z
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。8 h1 @: N5 y3 y) `6 ^2 O

7 M( y6 R+ J) d8 f2 V- P" K 40 /*  Memory Map for ti.platforms.evmOMAPL138% W2 _8 H5 U. x: q. V4 u
41  *3 w: R! s8 t' t0 v( y4 ^
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
' o& R: l8 Q: t1 }. F 43  *  ------------------------------------------------------------------------
: {( u6 |0 o9 V+ Z  s: U. `! V, ~ 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux4 `$ R3 ?1 G& V. [, y# ]- G
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
  i" [+ c7 x" b6 y9 [* q 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)/ g" N8 V' f# L4 b; \. S
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)  V, |& ?7 i* F
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
: D( F3 `# [0 V/ w1 y  U' Q9 ? 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
7 T( t" g* B$ o+ k/ | 50  */* e) W. k8 C  j" |# F

2 K7 {5 Z; [- Z2 a& j1 E' ^如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。6 |9 M# z1 O% W4 f$ |" t: ^
7 [8 Z* e' T' i) t; I' T7 p5 O* O
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
0 E+ g) R: v2 z! n( W7 g/ e5 Q; b- z/ B( X8 o* `! N
如果需要分配大容量的内存空间:
8 e; `6 @6 s2 W7 Q3 ~  m6 z6 b7 A* k1.改动mem_args参数(u-boot环境变量);
  _* j+ p( p5 g# b% X0 g" O2.改动双核通信工程里面的: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=
5 P( x! z; x5 ^5 v/ _& w这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。. |$ Y% C3 W. j, Y
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
1 l! b, b% B5 ~7 `& o
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-3 09:33 , Processed in 0.039628 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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