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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9925|回复: 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端程序起始。9 ~3 ^- j* r1 |; a% e
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
3 e  g' f  a1 ]5 p) C) Q1 Q8 L
# l4 h) M, i) W- {' F/*+ M8 X5 m$ q* T9 A2 s  @
*  ======== config.bld ========
" i% |9 W; }1 \6 e *7 B( J  T1 K" c
*/7 X+ R% K2 x3 [4 N; }/ g
6 L. Q4 J9 K, L* D! Q& }
var Build = xdc.useModule('xdc.bld.BuildEnvironment');1 B  I  [# O- r0 `
) U/ b# F& v; Q
/*  Memory Map for ti.platforms.evmOMAPL138
) c: A9 [. K5 Q2 B, I *
7 M, z! a" u5 y1 ]4 o *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
" |+ d- @4 w3 H" t *  ------------------------------------------------------------------------
* \- s: F' A6 X; |) E: W2 L0 | *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux0 Z) X2 U2 Q1 k& d
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)* r: c4 }" F1 y+ \
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)0 ^! Q( x. R% m4 @9 k. N, }1 Q7 f
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------1 A' |' p& l* U; y" t8 o& w6 X
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)- D" B. Q8 N3 Y* C5 Q+ ~1 H: H
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------  j, }/ m2 P; M" }
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
" ^- k9 I! A- r  k* c) V4 s */: ?5 f& D- X  X" T
9 }+ A$ u# s' d4 l3 V: @6 b2 h0 ]
var SR_0 = {
7 s: N' ^3 h! D        name: "SR_0", space: "data", access: "RWX",/ q, L8 P* }2 a, J
        base: 0xC2000000, len: 0x10000,
: O5 ^; L" m4 r        comment: "SR#0 Memory (64 KB)"
7 c5 a1 A# [, Z. w    };
- Z" h1 ]2 |, @$ H5 x, ?* g( U5 J4 K- A3 W  S
var SR_1 = {
7 L( n, ]2 X1 b1 p* r; u        name: "SR_1", space: "data", access: "RWX",
) ]4 }7 l( J/ Q' G( y        base: 0xC2010000, len: 0x20000,
: H$ A5 p& ]! O3 {! r+ v4 w' r        comment: "SR#1 Memory (128 KB)"
) ?/ Z7 h7 X5 t# l    };
5 Q$ q$ w3 h) _' N3 P/ N1 S5 g
$ E- z2 A4 ]8 a6 sBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {# r$ ]( i$ g" t. D$ m
    externalMemoryMap: [8 c, M" r9 j) ^- D1 T1 C
        [ SR_0.name, SR_0 ]," `8 K# z: ^' L$ a/ k
        [ SR_1.name, SR_1 ],( I, A! `" G# }# _- _. L- a9 z6 M
        [ "DSP_PROG", {
+ l* x3 r! N% K. p) c" D            name: "DSP_PROG", space: "code/data", access: "RWX",3 s' I6 M7 Q% h$ W/ M' d8 e
            base: 0xC2100000, len: 0x1E00000,
( }! C! v3 \7 W2 A. p- E            comment: "DSP Program Memory (31 MB)"  e, d/ K9 Q, ^# S; J
        }]
' O- D( V$ s8 A# ~  c    ],
4 b" Z4 p4 N& _6 @' L    codeMemory:  "DSP_PROG",, b  d0 B! b+ A. a! L8 ?0 m' H
    dataMemory:  "DSP_PROG",& V1 h0 P9 W/ E7 H; T. C. ^
    stackMemory: "DSP_PROG",* u5 _5 n: x* L" `& Z
    l1DMode: "32k",
6 A% _9 X4 Q' C3 L) C* Y; B    l1PMode: "32k",. K6 [7 X: }0 _! e. R' Q: ~, Q; @
    l2Mode: "64k"% U! ~" G4 r9 m; ~
};
6 j* ?# ]: T& o* H/ q( H1 V- J6 Q+ F) V) q5 q5 x7 B
/*
/ [3 o5 {" }5 @$ ~# A* A *  ======== ti.targets.elf.C674 ========1 R" A( ~& v8 @
*/
& d1 i1 @6 A) N2 G! e" Cvar C674 = xdc.useModule('ti.targets.elf.C674');
: p6 @, ^* w: `C674.ccOpts.suffix += " -mi10 -mo ";  u% f/ n% A! |
Build.targets.$add(C674);
7 b- Y$ [7 ~: g4 v( ^4 e% w
& O; _" N( Y6 B& r1 }- z
/ {/ O1 c; ~. @  E* a* j9 m====================5 A1 y/ ]) t+ L9 p
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。$ a9 x5 |4 X1 E! n/ X
分享到:  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=
$ B8 k6 r8 _8 a5 M/ S0 t% O8 t5 ]这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
6 O# _& g. S1 Fshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效8 d6 E9 J3 }+ v2 U% p9 {1 k
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
6#
发表于 2017-5-23 17:31:09 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
2 K) _6 J0 {8 b8 g5 s6 o
  Q7 J  b- [4 [# Q; O, ~ 40 /*  Memory Map for ti.platforms.evmOMAPL138, l$ }9 y8 A. w0 Q4 k$ A2 x
41  *
1 K' b2 I% ?! x* ~) w7 c2 z$ Y 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory- Z( p0 G2 g/ z3 A
43  *  ------------------------------------------------------------------------) X0 S6 g4 r* X6 b  b& U, [
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux* O. v# u5 m! u' f$ m. X" f
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)" \. O( L( Z+ |5 H
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)' j1 E& A- V5 {: r! F
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)- s, C7 w- o) U' i2 U! T
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)0 o( k1 ^8 m& j, B
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux' Y8 f/ I; X( m
50  */
5 A. @& P" r  Y# u) I: s  [3 _, n8 Z9 }  x4 f( ^' x
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
6 O* \' s7 w% L+ y
7 b5 q" h5 W9 u' I一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。" t. S3 R! U3 v& w: r4 _
+ D6 F1 N6 j6 U; R* F2 r  {& h7 C
如果需要分配大容量的内存空间:) l0 U1 M% N' O
1.改动mem_args参数(u-boot环境变量);& ]1 I) j0 k! _4 V9 p
2.改动双核通信工程里面的:shared/config.bld和dsp/Dsp.cfg文件。
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
5#
 楼主| 发表于 2017-5-23 16:53:03 | 只看该作者
发现slaveloader的list map就是编译时的map文件显示的地址。
, x  x+ I+ f$ Z- ?. c- G. A9 D% E5 ]% b# ^
目前将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
6 k$ K  D& {, j  m- E6 A+ a *
& n& k; N; N) P! [ *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
' U$ _/ ]3 t- g) {" L8 |, X- O *  ------------------------------------------------------------------------
' p' k5 v/ s2 S  g) G *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
# d0 [# G, K' C- E+ @ *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)* _2 D9 ?3 `7 [8 @
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)7 }. ]  d# O7 Z  B* T1 C  D6 K6 u
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------3 d6 D7 ]4 j# j8 s( l- r
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)4 N! g% [: c& S. b, _
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
" a5 J2 ~" r- A" | *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux; `0 T! t4 m& p6 ?2 ~: x
*/! }8 |& J3 c: t* [# Q3 L2 r
如何将 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 Q/ j: Z! i+ c0 S合并为一块大的区域作为dsp程序的所有空间  k3 O8 i& q4 u* @& n
* Z7 T9 |: j4 A; B8 |% ^8 `% U# L) W
现在发现修改平台文件只要用到0xc3000000之前的空间就出现arm和dsp之间的ipc相关都出问题
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 07:55 , Processed in 0.045287 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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