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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8259|回复: 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端程序起始。
2 m+ `* p0 l5 x8 h- o& s    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
7 }4 n. Q% r' A2 W% }) V6 H; _
/*3 c' C! w  ^/ f, E4 F4 |5 T
*  ======== config.bld ========7 K5 i4 q" l; ~7 L
*' f1 f8 W& V- b% I2 n
*/  C# y" K/ R7 F
, x0 g7 q( P5 Y% q  m* J9 Z6 Y; {+ O0 ]0 j# n
var Build = xdc.useModule('xdc.bld.BuildEnvironment');/ N' B* N/ N0 ?7 B' y

  t0 T6 v; z. J! a( q) Z( G" k6 K/*  Memory Map for ti.platforms.evmOMAPL138
0 |9 \- l2 n# T *
% o3 V+ L0 {! r9 R4 C! _0 T6 i *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
% I' c( \* p* O6 L5 t *  ------------------------------------------------------------------------
" A0 V; v+ w5 W# g$ U, l4 b7 M *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux- m5 M! U5 ~7 N. ]9 h+ S) d
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc), g, w2 h" a* A+ t- T! a/ x& S+ c
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
9 u* s- K- v8 \& Z: ^+ ]; b  [ *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
1 y* z# e$ E, |% {9 G$ A$ V  F *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)3 t7 [) f0 k9 c7 a& R
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------% |$ k* s, E2 l( p+ G
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
3 k' z" ^9 ~6 U# r7 J */6 A4 `; L  F% A8 f3 \0 ~2 s

7 _4 [+ z, R. s3 M6 y) B0 @var SR_0 = {; a5 l) I1 i7 G; w
        name: "SR_0", space: "data", access: "RWX",
3 J- c6 R. _7 p( R" ?' ]. W: e% a4 R        base: 0xC2000000, len: 0x10000,: ^: A/ |' f1 D7 ^, a# A
        comment: "SR#0 Memory (64 KB)"6 {0 J0 p1 a: U# H
    };
  z4 }  ]0 C1 {
. ]" T6 U5 V, c5 g  _var SR_1 = {
3 ]# [7 M" C4 r6 T! w! @# s        name: "SR_1", space: "data", access: "RWX",
8 b. o, D7 a5 g) b% I8 s        base: 0xC2010000, len: 0x20000,
7 w5 z6 V* ?2 t% [! P        comment: "SR#1 Memory (128 KB)"
+ x7 z; F' g6 p# \    };
0 G' q# S! U# y9 \' w, z0 _( B/ d! G& L+ o. q2 w: D
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
' Y5 X5 z0 A1 X! B    externalMemoryMap: [
* n3 \) W0 A! V: m        [ SR_0.name, SR_0 ],# _( [4 ^0 {( `
        [ SR_1.name, SR_1 ],3 K" b: @8 R0 \. w+ b, U( O4 J
        [ "DSP_PROG", {0 B. i4 D' C" n
            name: "DSP_PROG", space: "code/data", access: "RWX",
4 m& N4 S8 w; D5 o9 j            base: 0xC2100000, len: 0x1E00000,1 O; I) ?% m. o) s
            comment: "DSP Program Memory (31 MB)") z) ]9 r+ k, `- f1 {
        }]
/ z( c, {- ^0 k' v. {' `    ],
# B) X& F$ U4 ^$ I6 R* k    codeMemory:  "DSP_PROG",
+ _- D; W$ ?4 M    dataMemory:  "DSP_PROG",) l/ A  H: y8 T* h; U- v
    stackMemory: "DSP_PROG",
+ }$ d( A6 Q- k% f$ ^6 f    l1DMode: "32k",8 _2 P4 [5 I0 c+ B% i6 b) z
    l1PMode: "32k",8 K+ D' h$ X$ n" r/ }
    l2Mode: "64k"6 R' [" l6 R* p) T4 {  g( v
};
! R7 R* ~7 a) ]( _) ^! q
/ ]' M# J/ a: `% g8 d% E/*
' Z- d, l- f+ s' ~" y3 H *  ======== ti.targets.elf.C674 ========3 m! z' e  a& J9 U- J3 ~
*/7 Y$ e4 h1 P8 G+ I" ^4 h) b
var C674 = xdc.useModule('ti.targets.elf.C674');
2 M; l: U$ b& M5 K: [9 |4 N+ ?0 iC674.ccOpts.suffix += " -mi10 -mo ";
2 Q3 C* M4 T7 c, _# t) A$ f+ ?Build.targets.$add(C674);+ o  {: \2 g4 x6 q! _! V

1 ]* i/ Q8 ?' z7 p, S- C6 @9 F  Q: k2 n- C. k$ [
====================1 Q! K3 E$ [/ H6 R2 M- b( {
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。% ^+ F0 U- k2 F+ r% e, T  Q
分享到:  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=
9 O$ W/ J3 [7 ~+ b这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。( ~8 U2 r7 w$ o- r
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效: L7 C8 m5 `- x# |
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
6#
发表于 2017-5-23 17:31:09 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
% ^6 w1 y! V0 J: _, Y6 X$ M9 Y% E% k) a% f8 d2 r4 E* `: N
40 /*  Memory Map for ti.platforms.evmOMAPL138
4 e5 B8 J0 v& t, x0 p- e 41  *8 ^0 ^3 o! z5 P; V
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory7 a' B- }+ z: ~7 h6 h7 w4 t
43  *  ------------------------------------------------------------------------
) v9 j; z1 I% }7 F; O' i" o4 H5 x 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux9 ^# [- X( ^( d
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
. e$ s0 w7 c5 ^2 V; m0 F5 L 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
6 ?7 D9 ]; A8 f* ~0 D  |0 W& F 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
3 D* S+ y" o, Z+ @! s0 _ 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
5 L0 l' S# h' Z 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux! \5 \: G- W$ p( @/ C
50  */3 l8 @! I# M- o8 C/ X9 C

+ y% v( \$ e% L6 z+ a  L如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
/ Q- F  i8 b8 G% k8 U, T# E
: L' `# r" Y' G: K+ b+ E" n一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。/ |- z. G0 x0 i2 k8 s4 }: u
/ N$ y( x) f  A) I  X
如果需要分配大容量的内存空间:
+ U/ A% w/ [( k1.改动mem_args参数(u-boot环境变量);
) g9 J: L# j/ {( c2.改动双核通信工程里面的:shared/config.bld和dsp/Dsp.cfg文件。
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
5#
 楼主| 发表于 2017-5-23 16:53:03 | 只看该作者
发现slaveloader的list map就是编译时的map文件显示的地址。3 V$ ^% D% U/ `# z/ S
4 q# c( L1 W; h( r2 \" p
目前将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+ b6 z' [4 }1 _, M9 y" o
*
  {6 u6 b. J  z# r, [ *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory4 F: k! y) w, E% i4 [3 z2 d
*  ------------------------------------------------------------------------' Y. Z* F- ~# L( S& e- c
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
0 r- P" _. j; Z: d+ {4 y *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)8 A/ |( {) F. U9 n
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
  y: j6 t5 \: g/ c *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------* G& Q( t% k' D* V+ o6 d
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
3 z  v& S4 y# U *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
% l; Z  B( O& E' ~# p. @7 f* K- g *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
9 P) p0 p/ e% N" Q: p: Y* h; a */
; Y+ ]' |8 E) d( w如何将 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)
3 A# g0 h5 m7 c6 B8 q8 m7 v7 ~8 E1 R合并为一块大的区域作为dsp程序的所有空间
, Z; b( V7 e* A6 R* }2 h
3 J2 F( r. M# n现在发现修改平台文件只要用到0xc3000000之前的空间就出现arm和dsp之间的ipc相关都出问题
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-2 22:48 , Processed in 0.036592 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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