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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8444|回复: 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 V5 [6 ^$ i! o8 E$ H/ a/ f
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
$ |! O* m& |$ U/ w" n2 ^5 ~: D$ j/ |4 A# P
/*
: N" |6 x3 w) K" B% n *  ======== config.bld ========# d# }- P! F5 m8 E
*3 x' _7 U1 v& [3 o) K9 @
*/: }+ F- i% O* G3 w
+ r# q, N6 l; x& \+ J# Z3 \
var Build = xdc.useModule('xdc.bld.BuildEnvironment');, q+ d, R5 ^. o8 {2 t; H

) k2 v1 g# i: N% e1 o9 d' _: H/*  Memory Map for ti.platforms.evmOMAPL138
# N/ U' r! h8 @3 m: c *, ?) i/ x, m  f! o. Y, [
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
) n/ \# `+ f5 R  O+ @7 B& s *  ------------------------------------------------------------------------( y) _5 K8 @: Z! U: Y6 S
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
# {4 R+ r/ x; l( I9 r; M- q" \ *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
: b  r4 w) L2 H1 V! a *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
  N8 u( v, Y) x1 Z6 c *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------; m1 r/ U. I' u+ c- `! T
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
6 i6 }8 I! u- x; C *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------% H% x3 E4 ^- M5 ^% X
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
5 F  [/ `/ g  ?$ H7 Z */# W% L: R5 s* F9 f' N: K' w8 e6 g1 b
- M0 q: \+ T) k( z- i( B. p# b' K+ w1 q
var SR_0 = {
0 _. f( \& Z; o9 q+ O1 `        name: "SR_0", space: "data", access: "RWX",* W3 K8 d8 p0 r: s0 s
        base: 0xC2000000, len: 0x10000,
. S2 o5 `) F. |0 N; z+ ]" G        comment: "SR#0 Memory (64 KB)"
& {3 p3 ?7 b( V/ ~7 F    };6 ^* ]+ ?$ p2 @  v. C/ K

& X: Y* G% A! cvar SR_1 = {
8 U2 K% G" O+ D- H8 V8 e& n        name: "SR_1", space: "data", access: "RWX",
! B  D! s- }' K2 M        base: 0xC2010000, len: 0x20000,
9 p8 `) U) M  P6 H, u4 Z4 @( U3 E        comment: "SR#1 Memory (128 KB)"
, G- ^3 ^, \  j6 M    };/ J% l' h3 }& B: u
7 i  J& }$ W- H% R" Z& d
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {) @7 I  Q$ b. \1 B' D
    externalMemoryMap: [+ ~1 `" ~+ f% m8 |  ]5 [
        [ SR_0.name, SR_0 ],
7 B7 s5 F# M% p2 W" q        [ SR_1.name, SR_1 ],
2 `  p4 S2 g6 X0 {  [        [ "DSP_PROG", {1 q6 `$ Q+ l% g. Q  ^
            name: "DSP_PROG", space: "code/data", access: "RWX",6 x6 r7 T! `3 E: W4 N$ D0 l
            base: 0xC2100000, len: 0x1E00000,
# f, Z+ W, R& H. r1 a            comment: "DSP Program Memory (31 MB)"
/ q# w' @% |: O1 m0 w2 T$ V        }]
' _+ [5 r0 @' e( \    ],
5 w# N1 s' d1 o* X/ q    codeMemory:  "DSP_PROG",
; ~4 X8 P% a: V    dataMemory:  "DSP_PROG",
2 l' ]( L- D" Q$ ]" k1 ]" B7 Z5 F    stackMemory: "DSP_PROG",5 [# _4 n$ z0 U
    l1DMode: "32k",
( ]3 Q% q2 X+ D! Q4 d1 g' z$ U    l1PMode: "32k",
0 H1 H7 b5 ], h7 I; ], h    l2Mode: "64k"
% {0 X$ C7 w# V2 w/ l};
+ W' b; p2 v5 m" t' q5 [& y3 u! G2 O0 B
/*
6 I% N' [+ p% E5 \6 F *  ======== ti.targets.elf.C674 ========
- d( x! s8 e6 J0 H' @& O */
7 W4 a: D7 Q' B2 [  l( J. }var C674 = xdc.useModule('ti.targets.elf.C674');- n% U( l! c" J
C674.ccOpts.suffix += " -mi10 -mo ";' G2 f* z$ a; @: z
Build.targets.$add(C674);
3 e& Z$ _7 |6 [
  w! B7 h9 k" m
  I1 I6 n2 K6 x. Y% O! P3 W+ S====================- ^4 @- R, }$ x9 ~: I
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
1 v6 {( H) b  X& C+ I$ d
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?& h5 }: V5 T* G9 ]
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
2 X: N# l3 s9 q. u# |( g( |- D *8 k& ~% ?) h2 w6 n8 x
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
% B+ n. U; J! X1 i$ O *  ------------------------------------------------------------------------; m  y9 R4 n3 T! ?/ |; {
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux; Q6 i% Q- w) z& b; \
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)# z* U" V' @! f, u  [+ |
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)3 Q. f" E: V/ a8 V+ r; i7 C
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
: @: Y! t% X! F6 ~# |3 m6 s1 `; `, D *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)3 S+ H5 W# w4 p4 i( i
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
, w0 U$ \2 l2 v% X7 c  m *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
+ O$ p0 {; ]: u6 ~. L: m */
( J: Y0 J) e/ }* g5 Z' T1 i如何将 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 ~; k( r* o& L
合并为一块大的区域作为dsp程序的所有空间
# ~) a; |* D. E4 m0 T
8 p6 L% l5 o$ Y0 X3 }7 R现在发现修改平台文件只要用到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文件显示的地址。% M- |) S; u! v$ A  w2 w
7 p0 A/ _. E# d, r2 j+ ]
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
- r: p& b6 z  D! z) i7 J, O% U4 `6 E9 W9 f
40 /*  Memory Map for ti.platforms.evmOMAPL138
. d- g) F: X  [! Z 41  *
) x8 r  z2 T) C: a 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory  W+ K% h, _7 Y" C2 a0 u
43  *  ------------------------------------------------------------------------6 y% g! l: x" M6 G( s
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
( w* s' N7 F1 W1 Y- {3 Q  e0 P" C 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)1 W- a  d9 A  k1 S+ A
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)  b3 E$ C* F" E5 t5 n" G+ F
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)/ g" y- D" T; m% i# _
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)9 ~$ `. x1 T6 |6 [5 B/ U9 e
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux# J, }+ T2 M8 v  c" z0 U" z# k" t; d) f
50  */( @. j8 X$ A% t5 Q# u
! a3 q9 K/ t9 X) b- a  l7 a
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。9 g$ f% v& v; ?9 U+ t
  A  N8 q# g! t% r- E4 D
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。0 d$ l& x" \& m; C3 f3 G3 j

  {! O3 {. P1 C/ s" y如果需要分配大容量的内存空间:0 Y! E6 I1 r8 j! s( t3 M1 j
1.改动mem_args参数(u-boot环境变量);+ h% h* k' Q- @) p5 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=
8 v$ ]' p# A" `/ F这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
$ b/ d  d+ _: B7 {2 f# C. K1 U9 lshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
/ r" ~; U. R2 |. E
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-18 22:53 , Processed in 0.044473 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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