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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6886|回复: 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端程序起始。. a6 y2 Y9 {  \; G& l( f+ \
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
  X3 H, l# G5 y6 P8 X: B8 D/ e; {, W3 {
/*
3 e3 J5 X/ W0 b. g8 O9 `4 J5 w *  ======== config.bld ========
% R6 C0 O: m9 V% s2 n$ ^ *; ~  s2 u6 C" d( N- \: ]
*/; u: G( M0 Y% P2 P$ _: ^; h! Z
! U3 R. O6 W9 F) j# n; N1 i: |
var Build = xdc.useModule('xdc.bld.BuildEnvironment');- e: G( d. g! C
6 T2 O; Y$ W% V' w0 J, [( ?5 i8 m/ q6 L
/*  Memory Map for ti.platforms.evmOMAPL138
. f% _1 R2 Z0 R4 w0 N1 [' ]9 Y8 d *& U' f6 B: M3 N1 r
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
/ Q! M, t1 N' W. ?2 |; W! J# ~. z8 d *  ------------------------------------------------------------------------( E. c2 H# }# Z/ j
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
' N% E/ n4 ~: v* r1 h; e *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
( j$ f( ?- i/ H' C6 `, m3 Z/ |+ z *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)  m  D% t8 G  v, i' _
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
% f" W8 e$ J4 f% d; F; F *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
. v9 i( @+ x0 k, p* O *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------- M* F# f# h" h% B& x6 l
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
) F( i& I: N: @% V3 L  j */
7 i- L! p9 j8 L) N* a/ L
7 J: [0 {' W8 t( k8 U; W* ?var SR_0 = {
) w  k# V" |' V+ w2 T' R! h        name: "SR_0", space: "data", access: "RWX",% r& @; j# U* e3 o" Y: O
        base: 0xC2000000, len: 0x10000,
; h* N9 l- r! I$ S        comment: "SR#0 Memory (64 KB)"  m/ m! }" K3 p
    };
- \4 p! ^$ e4 p) B, [
/ F' H$ i/ m! M/ ^& l1 ~, Evar SR_1 = {( `( ]! V3 A+ T% x4 @% n: i7 I; C
        name: "SR_1", space: "data", access: "RWX",
5 S9 e  g% a7 Z        base: 0xC2010000, len: 0x20000,% R& _, M8 J# e# D! l
        comment: "SR#1 Memory (128 KB)"
) ]5 B6 u1 s6 Y$ P) o! W: {    };
, o. \' Q& w# U0 J, }8 {0 L% M1 g6 m
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {- Y* n9 F) q6 W' L1 L; u* a2 R6 @
    externalMemoryMap: [
; m" {1 ]5 W% s+ Z        [ SR_0.name, SR_0 ],
2 ^" V: h# r  E. k6 w6 v' f        [ SR_1.name, SR_1 ],
% a/ S3 a' Q+ q1 G7 ~! Z        [ "DSP_PROG", {1 i# Y5 s/ n  j$ v& n" M
            name: "DSP_PROG", space: "code/data", access: "RWX",$ {9 g# I% Q, V3 k+ D0 u
            base: 0xC2100000, len: 0x1E00000,
- e( w; b! b7 z1 h            comment: "DSP Program Memory (31 MB)"
% t# t5 _8 J! I0 L# R        }]8 v& _2 D. G- o9 ~+ M
    ],
( y2 S6 U+ i+ u9 D3 j9 G    codeMemory:  "DSP_PROG",
) w) t6 _% {2 r- Y7 h5 K' u6 N    dataMemory:  "DSP_PROG",
1 y3 w; c3 O5 C5 I+ T7 K& B3 ]    stackMemory: "DSP_PROG",
4 U) }# D2 C2 i( c1 }; z    l1DMode: "32k"," H- _* c5 @* H% C) J+ B' x
    l1PMode: "32k",& v0 k: e4 z% y# J* E2 Y
    l2Mode: "64k"
6 B) w% y# J7 k0 e, p, r$ I  D};+ V6 ~. d3 j- i$ @/ \
5 F# ?; v( y! r6 y
/*7 |% j" S4 y" t& o: _" w# N# h2 H: S
*  ======== ti.targets.elf.C674 ========% e7 b/ j9 p( ]7 p+ k# v
*/
' n  y* }2 r3 E) g& Y9 gvar C674 = xdc.useModule('ti.targets.elf.C674');8 q) r+ Y$ ]6 n
C674.ccOpts.suffix += " -mi10 -mo ";2 t  h+ K  d# Q" k: u: h1 L6 y0 E
Build.targets.$add(C674);
) f! w" ]/ A, Y) V/ F& S, @0 D) R" t- n' ^6 Z8 J8 L

6 A: F4 {& E! G====================
5 n. C' E+ [! \' w! h  b: J6 z原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
- M- s& L9 j$ f- w0 ^' M4 s1 n( }7 _
分享到:  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=! b% D) t' o! C' f, h- m. P
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。* l& @2 i$ ]2 G
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效) e6 |4 f" f; L7 H
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
6#
发表于 2017-5-23 17:31:09 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
6 t: P+ ~/ U* q7 n: g; ]' S
# ^3 D1 f: B$ D8 e 40 /*  Memory Map for ti.platforms.evmOMAPL138
3 X0 U2 ?" s2 \6 W& Y 41  *+ A  }9 t* c& |6 x3 v( O, Q
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
; A- F. y. T( t0 \ 43  *  ------------------------------------------------------------------------
. a6 t# C0 |, s* Y2 U 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux$ Y/ f: k' L. g$ a9 E) c
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)9 Q$ g3 I+ n) A
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
" y8 ?0 b# M! r7 w7 q 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
5 @8 U& Z6 U. N) F& W( L 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
7 W$ h) \9 |" k$ S! I, ]0 j 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux2 e& u2 g! D+ e
50  */
4 s6 y1 X6 Q9 X- Z% o
; Y% g. A, O# s6 W; ~' b* d如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
5 v$ [5 }) |0 F4 F6 n  C8 _) q4 [" x) o4 ?; ]8 y# r) y- J0 l
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
+ T; R# h/ y! y% K& s' d# N, Y3 p+ W; G0 Q7 `
如果需要分配大容量的内存空间:8 l" Q- M+ B/ X
1.改动mem_args参数(u-boot环境变量);
4 G" W3 H) {0 P: q7 I. ]2.改动双核通信工程里面的:shared/config.bld和dsp/Dsp.cfg文件。
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
5#
 楼主| 发表于 2017-5-23 16:53:03 | 只看该作者
发现slaveloader的list map就是编译时的map文件显示的地址。6 r. `- ?9 s7 m, ~" ]
9 R8 N  p# D) n: ^! 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
+ q$ C8 o9 F$ I0 u" H *
1 i2 z$ U9 u, J- t" D/ s5 W4 H& ~% i& M *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
" \$ C- \. P1 S& X) N* `% F2 A7 l; y: c *  ------------------------------------------------------------------------
4 @: k" F' d7 x+ D% K+ P *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
; k& o1 ^1 V" v' u *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc). Q6 v6 D( E% ]0 ?, j4 m* f" F
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)1 L" T. L+ V2 R" o
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------& H# X$ F0 w" }
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)5 l; x9 K9 B# ~4 o  F( i
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------+ k$ Y: |7 @5 Z9 s( S0 U1 |" w7 M
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
- `# q* v4 e9 P3 o1 P */5 A& R4 J: k+ S, F! U
如何将 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)
. i6 W6 J& Q) M2 }1 i( f$ p! l合并为一块大的区域作为dsp程序的所有空间7 k1 y1 X1 {5 Z

& E; Q5 ?$ _! ]" r1 M现在发现修改平台文件只要用到0xc3000000之前的空间就出现arm和dsp之间的ipc相关都出问题
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 08:09 , Processed in 0.040643 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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