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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9930|回复: 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端程序起始。
/ @. k8 r0 D7 Z) s; I5 f    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
% B4 m, `: a; K& f  g9 k# g
2 {! x, ]/ H7 v2 X9 S6 ~/*' L! d9 l6 H# k# o7 s
*  ======== config.bld ========0 G: h/ Z5 e: }7 s
*
5 ^0 c1 O9 p* w- S. v8 t */
$ j" f; f* [5 C/ k; y
! i2 s$ r% L: T, ivar Build = xdc.useModule('xdc.bld.BuildEnvironment');
9 {3 r7 L; E5 h8 S0 }$ t3 }! n) Q& l8 A6 g2 G. e, e( c' c
/*  Memory Map for ti.platforms.evmOMAPL138
3 _- V+ o- n1 A2 A# g, G *
) A6 ^0 w2 u0 F* K. ^ *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
! {, s: X( _  \- a9 E0 F2 V0 { *  ------------------------------------------------------------------------
5 R& K+ f: ~2 {) n+ U" n2 @3 _7 ? *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
' c" a# E, |# u; W+ R) o *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
1 D; w1 f4 T; ?# I" u! Z *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers), f& ^, z+ z( G! y
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------1 u3 A& }( u0 V  g
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
+ w# G) z$ U+ A$ ~4 v) v *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------  f4 y. M3 B  K: G" h; g! ~8 Z8 t
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux+ [# G% L3 u0 t& e: I0 M7 ?
*/) ?6 |" c8 e$ v$ s* C

/ [- q9 _% ]/ Y& T* V7 Bvar SR_0 = {+ N8 z: q+ X* x6 ]: \
        name: "SR_0", space: "data", access: "RWX",
- I8 e  u; \' @3 X% h5 Y        base: 0xC2000000, len: 0x10000,/ z& P' E+ k9 v6 P) H
        comment: "SR#0 Memory (64 KB)"
' v7 e5 s; {  F- v: O7 L    };
$ W; g# ]% V# C+ g+ b
$ B# h, X1 [9 j9 J8 k9 @* dvar SR_1 = {
* l  x% ^+ a6 p' j" a7 U        name: "SR_1", space: "data", access: "RWX",
0 h1 L- f+ N1 a/ m$ K        base: 0xC2010000, len: 0x20000,
+ k) i' ]/ x) W/ M        comment: "SR#1 Memory (128 KB)"& O) w4 w9 T, D! B/ B- |7 v
    };! b4 L1 H( z7 P* t) Q
/ X" d. A# E9 i/ b  I
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {+ O1 q" C$ V5 {
    externalMemoryMap: [
$ x5 y! L% Q4 m& Q        [ SR_0.name, SR_0 ],# n+ J4 Y& T. O3 ^  y, P
        [ SR_1.name, SR_1 ],
) {5 |: ?$ I" D! ^        [ "DSP_PROG", {7 d5 ^! B1 ]. h+ r$ U$ T
            name: "DSP_PROG", space: "code/data", access: "RWX",/ _+ k( p. U6 N( E0 v5 C* N4 _% m
            base: 0xC2100000, len: 0x1E00000,
5 a5 x$ a( y* f. A. H            comment: "DSP Program Memory (31 MB)"9 O$ b& I2 |& O
        }]
4 G& u1 q: r7 \# A$ s- C3 O1 t    ],
& h( |1 B% u& [. k; V& M' s3 R    codeMemory:  "DSP_PROG",, u7 }7 k5 k" q) J! N" v
    dataMemory:  "DSP_PROG",7 m& H$ `3 @6 _$ F+ W) v
    stackMemory: "DSP_PROG",
2 i# r" P7 k& N" O3 a    l1DMode: "32k",
% `3 Q4 P+ F- [  o% _    l1PMode: "32k",- S9 ^( W% t3 A3 p  ?
    l2Mode: "64k"
8 W' \* @' v9 D3 y4 o};& S: W, W0 D) p8 G3 H  w8 Z
- I( r8 P  _! G) h  \( p. j
/*
2 C7 n# O& ?+ O3 a: J2 v: N! g *  ======== ti.targets.elf.C674 ========
& |5 v0 _0 X8 C */
, P5 A) y2 D4 mvar C674 = xdc.useModule('ti.targets.elf.C674');
. H2 m3 N- x# B1 `0 t2 A5 fC674.ccOpts.suffix += " -mi10 -mo ";; I! }* A+ i( {# X; J9 W9 r
Build.targets.$add(C674);
$ c, E& a4 ~! L3 b& _8 t
& o4 d$ @# f5 b9 b- @) v
+ G; q( o% p, H! s* F9 T====================- P) Y6 r  n6 U) c# ^/ c
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。+ A- {$ t, ]4 A' M( Z. W
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?/ C1 I7 J6 B! `$ ?; F
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$ ~6 _, i9 G% t) X5 ~& U
*- {5 D" e( e6 W+ [5 L
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
5 @8 d, J" n  k0 i0 R3 u, ? *  ------------------------------------------------------------------------
, ]/ a" F8 @/ A *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux6 }; ]5 ^- b- q& A  A
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
( J7 O) T" a! G1 _% b/ w7 W *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)1 g+ z5 a4 N2 A: M! A  D
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------. m$ [8 l" O' G" v
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
  |8 U: C& {! D, O( r4 f *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------3 C: ]0 N; G$ ~# A
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux4 ~( R6 y* L5 R
*/, [$ `7 i# w2 K
如何将 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)
" e! S+ G* {. U0 H3 x8 q合并为一块大的区域作为dsp程序的所有空间
( e% }( x" D) W) v; {5 Z; a# }+ _9 l' O8 @7 K
现在发现修改平台文件只要用到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文件显示的地址。
( Z$ ~+ ^  a! S1 r& ?" g5 S" F# z% c# [1 ?% M3 D/ T
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。2 ~. ^/ v; A5 C* g

, L3 Z# ?* R$ ~0 P4 S# h! l& ? 40 /*  Memory Map for ti.platforms.evmOMAPL138
) W0 U& x# y8 W  {+ P 41  *
! H7 a9 H/ m9 i! Q* ^$ j 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory- }  R, _( j% P! ~7 D5 C( j" z
43  *  ------------------------------------------------------------------------* i: r7 B- a0 Z
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
/ }. I8 x: @+ M7 z 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)4 q) ^; @$ P# p
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc), I9 e& x2 k1 K# U8 l1 L3 \  e
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
2 T- H/ R3 O5 ?" C, g: t' L 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
/ `  q3 p, [. b0 e 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux/ `, k" L. H" U4 ~+ b
50  */# ]% ^/ n8 C9 i3 u# W, d

# A, n1 D! I( t( `9 v, @如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
- B1 @& g8 H; G
3 p# w+ p+ M+ K8 F' t一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
* j' S( M6 x' u% q0 v7 f: D( n: F$ i
如果需要分配大容量的内存空间:
  T$ h. g* \  }: q1.改动mem_args参数(u-boot环境变量);% S, F: R8 l; e( |6 F# G
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=
: [7 R0 q0 C/ e! E) d% x) w' d这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
# y0 R' e2 |3 A, bshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
; T4 n( E  e: A* Q
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 09:18 , Processed in 0.062371 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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