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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6887|回复: 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端程序起始。
! J8 E5 l6 f$ g, i" V7 p( \3 C# ]    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:: E$ P1 y! J% q3 j. z! N" P

% P0 n, l7 Z+ }7 C6 F" J, {- L/*" M+ C: C# u6 s: @7 ?
*  ======== config.bld ========
3 o  g: Y) t7 n+ m+ A" L *# K  M, V0 }( C$ ]" Z
*/
( I% ^: ]% y/ f+ z) ]+ X
& E$ }: V8 q. Z5 C/ h/ U3 Xvar Build = xdc.useModule('xdc.bld.BuildEnvironment');
/ y$ T' V/ d, L0 P+ {0 E1 d! }( Z* I) I5 I% o3 v
/*  Memory Map for ti.platforms.evmOMAPL138
  ~# b5 L. f4 ? *  ^2 G! G0 V" Y; ?$ P
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
' J+ S/ l  C/ N4 Q3 L' ? *  ------------------------------------------------------------------------
! A% e% N- [3 ?6 Z9 o1 t, P9 _ *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
2 G8 u! c1 K; K; z* {" C *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
3 h- k. G0 j; \- y3 n7 L5 D2 z: l *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)# I9 {5 I2 P) b/ e( m% Z
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
* _; N( a+ B1 g *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
4 Y5 G7 S4 }: P# D2 O *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------" ?! s# S8 X6 P0 e2 p
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux4 u$ J4 f) d1 q3 _$ |
*/8 V3 C0 h' R5 b+ M

- X& W- N$ f' P5 z# A* @var SR_0 = {
  v# m- S7 A" c5 F' B! B: c8 B        name: "SR_0", space: "data", access: "RWX",
1 {2 j$ I, n6 _( X        base: 0xC2000000, len: 0x10000,
7 A5 h8 ?  q* ]* A9 R9 x        comment: "SR#0 Memory (64 KB)"
) N6 [1 ~* o* C' ?. c* i0 n% V    };
2 V& ^0 r; B( P' L
* [8 Y! w# G4 J4 r1 svar SR_1 = {
' B% V4 E5 k4 {& {  p        name: "SR_1", space: "data", access: "RWX",
$ g9 N# Y  f: g# I) b. a8 ^        base: 0xC2010000, len: 0x20000,
. Z. I* Y. E; M' T' s5 i        comment: "SR#1 Memory (128 KB)"" k  U0 r, z- B8 ^& C, ~+ b0 |# c6 {
    };$ A' I5 A9 \  Y! Z! J
$ F2 W/ N" k5 L- b4 t2 z
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
1 E4 D% I# v2 k/ |    externalMemoryMap: [
6 `# M% b+ V! c% p! n. D        [ SR_0.name, SR_0 ],
" b! e. c4 m( `- }4 `. f8 q        [ SR_1.name, SR_1 ],2 K& g$ l! ?- {3 C
        [ "DSP_PROG", {
* t% R$ [5 |5 U: m# i+ J4 T            name: "DSP_PROG", space: "code/data", access: "RWX",
( x, J; j) o  F; Y* y            base: 0xC2100000, len: 0x1E00000,# \# t# _, y3 B, [
            comment: "DSP Program Memory (31 MB)"1 Q/ v( H/ `, \5 B) S8 c- I
        }]
, U, I% \9 z5 M5 a: b* ~    ],9 g" O, E  `# o& F/ w# V9 Q( z" Q
    codeMemory:  "DSP_PROG",
% V0 b. K6 e- T- L    dataMemory:  "DSP_PROG",! M7 R3 {3 v/ b# j$ x
    stackMemory: "DSP_PROG",
4 F$ O+ p1 g& B8 }5 }; Q, Y1 v$ c    l1DMode: "32k",
2 b( u6 g* o. y    l1PMode: "32k",! q$ [0 Y& b! n" E- P
    l2Mode: "64k"' H3 G" i: J& W* f' E
};
+ I3 z. S8 B1 e' X5 u' A$ b8 A/ ~4 B2 I& L- M
/*
' u0 [; [# d4 g3 h8 |! p8 A+ } *  ======== ti.targets.elf.C674 ========' [( ^3 _( @- }
*/- {0 V7 \, x2 Z) ]+ ^9 P" P) E
var C674 = xdc.useModule('ti.targets.elf.C674');
( ~8 u: X* [. z& PC674.ccOpts.suffix += " -mi10 -mo ";
! U/ ]  p! d  g; o0 o# P, @% J2 c$ WBuild.targets.$add(C674);1 |$ V9 y# H- [- n
8 k) `8 t- ^2 h; ^+ J
& u( _0 W* {7 P9 a+ c4 F+ O; J
====================
' r% U$ ~+ j+ W6 k' Y- X5 {( r! n2 W1 r原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
5 a9 T4 h+ T  r- w0 h0 A; C7 u( b& y, v
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?  v4 ?: B, z% J$ q$ 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.evmOMAPL1389 V5 G$ b9 h: E' F7 R
*/ W6 K+ T  \3 f  x2 R' m
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
$ ~; i! C" ?# u! @3 l0 Y0 A  Y *  ------------------------------------------------------------------------3 J5 n. A6 J! |+ [
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux. v& w( A- k# _% B+ V$ q+ w; b' W
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
! [6 G5 L; X9 l+ n" \ *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)3 Z4 b8 m/ ]/ ?# ^* P2 `4 [
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------. j! w6 d7 |8 I5 ~' `4 R- X
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
0 `' O1 i1 Z; g0 d6 y5 V! N *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
5 `: t/ a5 E2 \9 F' } *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux$ B, T# ?5 O8 N5 ~
*/
5 e! K2 k2 J% d如何将 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): Q: s' Y8 x0 A
合并为一块大的区域作为dsp程序的所有空间) \) }* N1 }2 [* J$ O8 D9 E. Z9 _; R
" M1 ^9 e: H4 i) X4 D
现在发现修改平台文件只要用到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文件显示的地址。. T/ x, X6 k6 Y  |3 g, M9 G

4 G8 t. n0 h. [$ j: X0 p( a目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
: A( F5 _& W! O% ]! w" N
+ W8 ?8 n& W$ y* x 40 /*  Memory Map for ti.platforms.evmOMAPL138
9 k/ f/ E, z$ s% Z7 [ 41  *% y# c; m! J: \3 s  x4 Z
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
7 b: i3 f: V7 b# f2 |8 [! x8 i% { 43  *  ------------------------------------------------------------------------
1 U% P) s5 A6 G, i7 I- s 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
- F% [# T# {3 I* U' [ 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
7 k8 J2 @4 o8 o) ] 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc): i% K  f% j1 M+ c6 a; r
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
  D8 S3 z! P+ y  x 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
9 [- F7 K$ @3 h2 d% T 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
1 e7 Z; Q. F. M- H( a 50  */
) z* H7 B5 b' j7 m. a. N' A) X# m# c
/ e* f; v4 U5 X如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。- l! \4 `/ J$ N8 c% V
$ C+ h; a! v8 o- e( {5 u
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。( K" B  ]6 ]5 |- z4 S

0 m. x' s$ F( O6 b) ?  V! q: I# {* M如果需要分配大容量的内存空间:0 M+ G; h- R7 t5 e' |1 O0 w
1.改动mem_args参数(u-boot环境变量);7 C4 O" o+ m; Q) L" d/ A* L7 s3 m& P
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=& Q1 z; Y2 O9 Y  }, d' x7 j3 O
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。0 l" R/ B! e0 O; W6 ^9 b: S
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效5 l- ~) V8 e: _6 M5 \
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 08:32 , Processed in 0.040785 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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