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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9693|回复: 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端程序起始。: P; y6 o" ^2 C6 ]/ y' y
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:8 }8 q* }# v5 `

' t/ y; j& Y+ Z6 b) D/*, Y" D7 Q1 Z$ x9 @1 ?6 l
*  ======== config.bld ========# o) v) r4 Y, C$ R8 {
*
& V3 ^% _: B/ [ */
6 v: c- |3 g' T, C" |  U( C5 }* t# ?" o" |" I& U7 D
var Build = xdc.useModule('xdc.bld.BuildEnvironment');9 s$ z* J8 g3 a1 e  D) S

9 Y) q# G0 ?8 j8 i/*  Memory Map for ti.platforms.evmOMAPL138
0 L- m: u$ q$ Y9 F7 A *( |& V& ~: W* g
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory- C! u' y6 E  D+ t  U, L; t
*  ------------------------------------------------------------------------
6 y0 g7 B" D% s7 [7 N& k) o *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux" r' q1 T$ L6 p" |' z6 ]$ }
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
* K' C* ]2 {" w6 v *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)( Z9 V: w! c" N5 |% L
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------# |. Z1 i4 Z" E' [  U3 [
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)  X- j: C- W: ~6 I* `
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------8 J0 b* n! E4 z8 X) T) f* Q
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux% g( B" D- H  \
*/, O& Q$ o1 o" l1 Q* N4 ^6 {

* f, T: }3 Z% o0 s9 U- H" A' R8 Xvar SR_0 = {; f7 v( B/ s; p( a2 @& ^+ O. Y
        name: "SR_0", space: "data", access: "RWX",1 ^$ _! j- m* J* O, r, i
        base: 0xC2000000, len: 0x10000,
) G8 d0 i# O! v: ^$ V        comment: "SR#0 Memory (64 KB)"# M$ U& q" J: T4 N" |0 W3 c2 p# a
    };
. m1 E$ }& z! o# p' U4 }1 w9 L' v+ J8 i: v7 x% R+ e  x6 i
var SR_1 = {! z- z2 G" l- n. ?& C/ a
        name: "SR_1", space: "data", access: "RWX",8 |" e9 c; b0 h' w+ J, z
        base: 0xC2010000, len: 0x20000,6 F2 [* ]7 g8 G" g
        comment: "SR#1 Memory (128 KB)"
9 [+ R# ]4 ~$ e$ s6 u    };
0 J! ?- x# r+ h: [3 C  y5 ~) h7 z, e8 |# K
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
, ^7 s2 r9 I2 v9 U( A8 t! e0 T+ X- P    externalMemoryMap: [
1 G% h6 r- [7 h  M( v0 a9 u' |1 y        [ SR_0.name, SR_0 ],$ Y  e5 B; c/ h+ l. X
        [ SR_1.name, SR_1 ],$ W$ `/ r' k% ^
        [ "DSP_PROG", {
3 p' z" c8 Y! r1 |/ m            name: "DSP_PROG", space: "code/data", access: "RWX",* C3 K( D9 T! M; d2 E
            base: 0xC2100000, len: 0x1E00000,3 Q4 K, m7 _, P% a
            comment: "DSP Program Memory (31 MB)"3 [4 U$ g  q& Q" T0 ]
        }]3 E7 F1 h: y0 P, t* Q
    ],
1 ?& \' v+ j2 Q    codeMemory:  "DSP_PROG",
$ E1 ?/ e1 g0 r& |, \6 G8 ]    dataMemory:  "DSP_PROG",
4 W3 z5 T. j% L6 j# `    stackMemory: "DSP_PROG",2 u6 `& X2 z2 F7 C2 X7 a
    l1DMode: "32k",
+ x% T& x. K: f    l1PMode: "32k",6 X0 |; ^* u/ Z6 C. P$ p& ]/ Q
    l2Mode: "64k"
6 C" b" l$ M, F, ]* ?. B) O};( o9 z" O" a. y
8 w8 u6 c& `: p; I" j
/*
6 T  H4 h" Z! l0 _# O *  ======== ti.targets.elf.C674 ========
9 C0 z; }$ Z0 E3 s# E9 U" y! R5 X */
: F$ R5 B/ x+ y( q, ^* `var C674 = xdc.useModule('ti.targets.elf.C674');
* N3 d0 s( b' _- O3 B; ^/ BC674.ccOpts.suffix += " -mi10 -mo ";, y- ^: R' z! ]- r( Y) i
Build.targets.$add(C674);
+ f* ~3 {& d: Y) j# ^( y8 u& ]  }6 W4 K  t1 O* J% L7 Z) K" i
, {% P: Q* h# y; ]
====================
' E2 R( F0 z' ]原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。; l* n6 q, ^6 a  p. v- V* @
分享到:  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=
  h6 n0 S  e, X* {) o7 M6 r4 w+ K" v这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
" u2 c6 N+ n5 \. @share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效! t5 l" E4 d/ _: ]/ N4 W  ?
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
6#
发表于 2017-5-23 17:31:09 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
/ L, l& B3 W) a, M5 e9 s# a
$ ^" v" ]2 O3 d5 F 40 /*  Memory Map for ti.platforms.evmOMAPL138, t- y! b1 L+ d$ a4 J( V2 d' h# ?
41  *
$ g/ j' I3 U( r* R. D 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
. M, g6 @( q$ V5 r( ~0 v 43  *  ------------------------------------------------------------------------
; U3 i4 |) \6 i0 b 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux: i* S" j4 I, R1 t  s
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
$ ~1 l4 d0 T4 `+ [+ x 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)' l5 Y4 F! f; d/ V8 S# Y
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
, c* x! j4 d  h7 \( z 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
% d0 s* C% L4 h  ~7 z 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
% P( E. _6 \( c% J 50  */8 W- \0 p. O; J9 ^. s- i+ l0 @
" X1 D% u& t9 o' f/ c8 u
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
. b1 d# D' {! J% v* V. L' w) {- V2 a" A7 Z
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。# p0 n1 C0 E4 \3 S5 K5 v! C

* M3 [) Z  I+ C8 |  E! a: `; A8 D如果需要分配大容量的内存空间:
7 t( f/ p9 \3 @1.改动mem_args参数(u-boot环境变量);) I: E( u1 S- w4 M2 D  z8 R/ r5 j4 Q
2.改动双核通信工程里面的:shared/config.bld和dsp/Dsp.cfg文件。
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
5#
 楼主| 发表于 2017-5-23 16:53:03 | 只看该作者
发现slaveloader的list map就是编译时的map文件显示的地址。+ N% @* G1 [! u  v# `' x* @5 C

/ H: E# c  B& X4 N0 i3 K- ?目前将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
5 |1 N# Y" P2 I *$ c& [  B& x3 `% e* V
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory; X3 p  ]0 Y7 F) G
*  ------------------------------------------------------------------------& n* w4 {, O" ]( r! ^& r/ }* d% L
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux+ r; L7 c& K2 z
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
2 H: c* o+ k( J6 w. O1 ` *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
$ C! ~! O# ]7 h& G) R *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------' b3 a* ]  c; N  \1 m$ K/ X5 R
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)7 X- R; S; ^6 ?: l# j! }
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------" d4 K* ~6 D  @0 P/ E" f
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
8 j- g" Y$ S* D  Q, A/ ~3 x! D */
4 U. c4 G+ Y; c! D$ v: z2 Z如何将 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)
# D9 \" p, p) y: _合并为一块大的区域作为dsp程序的所有空间$ J$ S5 A6 L) j1 d, N" k+ ^2 D

3 j6 A; q; g2 N( t' A现在发现修改平台文件只要用到0xc3000000之前的空间就出现arm和dsp之间的ipc相关都出问题
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-31 04:53 , Processed in 0.050346 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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