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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8256|回复: 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端程序起始。& J0 |3 D3 ^% l+ `% I* N$ i
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
$ d9 o" X) t' @% f+ j/ l  }2 I+ T" z' l% |& B! n$ {  m
/*$ X, v9 ~' h' w" E. ]) q' b1 v4 \
*  ======== config.bld ========9 g# M: [1 M' D& M( V3 L( k
*
* T& M: r. E) L  G2 x; g */
( X! F) b# v0 I2 V* Y) ?" ^! w: ~6 }) [$ F4 A
var Build = xdc.useModule('xdc.bld.BuildEnvironment');$ K' F* r' L* A' }- X+ b
- k9 n% I* C: J2 P# k
/*  Memory Map for ti.platforms.evmOMAPL138
% ^! s& P/ f6 K *) K( S$ v1 S) ^* o! O
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory4 W$ e" C8 k" Z
*  ------------------------------------------------------------------------
* n& u. G8 T1 J3 _( X *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux$ b6 W8 t# J( g  R0 s/ {, r
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
* Q7 N6 z$ F& p *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)4 g8 g4 t, m9 o$ Q- q
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
. R% J) z5 d) M1 b) V *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
" x. a  \0 \: J* q. ]6 X *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
3 [9 n3 o9 N: p& A3 F$ T+ `% U& v3 E *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
3 b/ f# N; L- T9 D */8 d8 X2 E" @0 v1 ~

* j- b6 r, k7 Bvar SR_0 = {
* D) F0 z5 W. ^0 D+ ~0 r        name: "SR_0", space: "data", access: "RWX",
' z5 r3 F7 Z7 v) L1 ?7 M# Y        base: 0xC2000000, len: 0x10000,
  {% p  _7 I: l0 o! G, Q2 x        comment: "SR#0 Memory (64 KB)". n5 W* y! F" H9 |% n5 {
    };
1 e; O  g: g3 n! F  v7 X2 i2 I- |' D- S  k% @
var SR_1 = {
5 w. {& x% M5 f! V        name: "SR_1", space: "data", access: "RWX",0 x# U! ~% `' [' U, M8 A* U3 \1 O
        base: 0xC2010000, len: 0x20000,
! U& Z# K5 f6 p' z% C% ~% w* s        comment: "SR#1 Memory (128 KB)"
# \8 r, X& E  O" W0 c6 ?2 B' \    };
0 v9 H- x4 l- o) [8 i- y
3 Z/ ?* u) B& f9 J9 ~9 L  V$ o0 }* cBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {* w$ U3 K. Z$ \" Z5 z* l! h0 j
    externalMemoryMap: [! x. z) v* V6 G) }* ]6 F
        [ SR_0.name, SR_0 ],5 v5 z# h& l# x) t0 K! b
        [ SR_1.name, SR_1 ],. d) F6 k" G* v4 w0 d' g
        [ "DSP_PROG", {/ G& P* c' w2 b% _/ S
            name: "DSP_PROG", space: "code/data", access: "RWX",
$ [+ s$ |, v" u) d& H9 Q+ C            base: 0xC2100000, len: 0x1E00000,
/ x/ E+ m% }0 ~+ I            comment: "DSP Program Memory (31 MB)"
7 P. i( [8 k0 g# E- A        }]
8 A7 J& v5 e/ s9 v7 j0 L    ],
# {+ \+ f+ X. n" i3 d    codeMemory:  "DSP_PROG",
; U, }  y6 M9 K3 l) l( e    dataMemory:  "DSP_PROG",* `8 H& o8 ?" H3 [3 l
    stackMemory: "DSP_PROG",
6 w' {( {0 Z: r+ X6 _6 l; w' I6 Z    l1DMode: "32k",
6 r8 o/ a2 {" h    l1PMode: "32k",
% e$ v2 |" x$ ~. x/ _% H- J    l2Mode: "64k"
2 c( M2 s; k  U, _};
/ |" P# N7 R! E! \, W& E" L" z
% `" d, ]6 {. _0 \: A1 X/*
: M$ c( a9 {% \7 n! s+ @ *  ======== ti.targets.elf.C674 ========
/ N  Z% U, g! |- W$ d/ ^ */+ l( Y( F. R8 K9 s2 _' [+ \1 E8 {
var C674 = xdc.useModule('ti.targets.elf.C674');! \, \+ q& f9 s  K# Z7 d! `' N& h
C674.ccOpts.suffix += " -mi10 -mo ";
/ W. S* O8 S% s$ ABuild.targets.$add(C674);
0 d' l/ X' I8 g. E
0 Y0 I  f( _6 t4 ?" Y- S; U
; I/ E* m* y- k  I+ O====================; R5 @, K8 N( M9 e, x( g
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
, O6 u- c8 I% i. S$ p3 b
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?* k% ?) [' R' x, R! l4 B& b
2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138
1 |0 C0 A  |2 H2 ^7 D- D8 \- { *
2 n$ A. [( q: H# I *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory. d" G. j$ ~3 p) ]& Q4 A
*  ------------------------------------------------------------------------, T' b0 b- `) T* U2 |, R  V) Y
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
; f. r0 ^% I$ ?" V( W *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
9 S) t* D* W5 F% R8 a9 [" T8 t' r5 C *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
" ~4 R/ Y) w0 S: F' E9 M7 f% |! b *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
" ^; w3 R- j2 R+ }7 [% b/ V *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
9 P' ?" p! i* L7 q5 {+ h( o *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
# s" I5 W/ U7 O- C *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux1 L, B9 H4 Y2 o8 y
*/
1 p  C7 R' D4 r+ P% T; 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 _: N. e& N, p3 x  b
合并为一块大的区域作为dsp程序的所有空间( r3 e  U1 L3 o- T3 P* I) O
3 l, G/ M6 @3 S7 p9 q( P
现在发现修改平台文件只要用到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文件显示的地址。
0 c6 e: V: i1 B9 G  U: ^; U0 S& E. a7 X( {; m3 a. G/ l9 N
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。5 F0 b! G' S5 h& Y
# c& v5 x# J! t/ H* e# n/ V
40 /*  Memory Map for ti.platforms.evmOMAPL138
! v0 g# t2 d) p! M3 O9 G 41  *
$ Z- L$ h1 @$ X' P: J, o 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory8 ?3 I1 Q+ L5 `0 n' c5 ]
43  *  ------------------------------------------------------------------------$ B$ f- ]( n& N- V
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
8 i% C0 d. z* X, u1 n1 Y" z 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)8 i9 d- Q' x, z' y% H. \/ J8 s
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
7 l# o+ |, S7 l6 M( z6 | 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
: d  ~$ f' X; n3 U. v9 M7 J 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
- U- H+ l$ _+ g* H" Q. P0 S 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
9 C  t& \3 `$ t/ H$ \5 u, z 50  */
% m) e- W! L" f. m" B  ~. @% `: A* g5 s: [; \+ d
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。! D( A8 r* k! W5 h! _

) Y8 U, u/ k6 M4 x" W4 E一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
! [$ ~$ O. U6 B1 p" }: e0 \
; k. L! ]# }5 I( |# Q如果需要分配大容量的内存空间:9 u, B/ a1 x! |- C4 a* I
1.改动mem_args参数(u-boot环境变量);/ N- h! r( f2 u' {& j, @. c! d
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=
' Z+ c9 D, I# C' C* ?这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。0 B, m/ D: \5 z# g. n
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效# j4 P, b6 n5 `7 n- d( @
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-2 20:53 , Processed in 0.043992 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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