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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8258|回复: 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端程序起始。5 ^* o6 V/ O* i/ {9 ]
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:% h2 o8 R) E0 `$ l8 y7 l

! O; H0 e' ~  \/*! s# {+ Z* w: r% G2 a" e
*  ======== config.bld ========
$ o4 g( A6 ?) o' F$ p& ~8 ? *1 U0 W2 s* O$ \$ m6 X9 B; {8 B
*/
; z' l# o5 G# K/ ?  \
" d& {3 D. n# [+ U) ^var Build = xdc.useModule('xdc.bld.BuildEnvironment');. J% w" q' E# c+ t: n" O

4 U% o% q6 L" q  F/*  Memory Map for ti.platforms.evmOMAPL138
8 I( i" f% T5 c& Q2 \) S, _' y ** ^+ ~3 Q4 @7 W+ Y7 k( h; S( _
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory( \8 M; J6 G# z" X1 X3 o$ q" @
*  ------------------------------------------------------------------------, k; C( @! d; o; `8 y% m
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux% D/ y- b2 k) R
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)6 ]  O9 M& k6 h* C
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
9 y- k$ _2 }: C. b0 F0 C. D- J: x *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
5 _8 E) h/ X8 E& D. i- h *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)( s, D( I8 w. d4 u5 m6 F
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
& q' x+ Z9 `/ g *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux  V2 `# a8 p5 |0 j  ^
*/  u* n  G& O4 C

) P& G& A; w# P! vvar SR_0 = {% h5 G2 @4 o2 n& d/ B  \6 @
        name: "SR_0", space: "data", access: "RWX",
, W1 ]" q. p" ~# Z) j4 k3 g        base: 0xC2000000, len: 0x10000,* v; {. f9 o( J1 |6 v5 v
        comment: "SR#0 Memory (64 KB)"2 D1 Y* c# H: |. p" `, u9 U
    };
+ w5 ^) R% M+ G' a( h# O& f/ {8 [' x
var SR_1 = {
1 B/ ~0 ^1 Z) g; T; N% M        name: "SR_1", space: "data", access: "RWX",  r) b' Y4 @+ `) c6 M
        base: 0xC2010000, len: 0x20000,
. }0 y% y3 v0 u$ S" b2 ]1 c* o        comment: "SR#1 Memory (128 KB)"7 i# r" w$ I( i8 M3 U
    };
" J) e1 J0 G. x! o4 |7 K
7 y4 M  C/ W2 KBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
; I& s: N3 K; ^    externalMemoryMap: [
$ @* b, w+ @' h9 X1 i- k        [ SR_0.name, SR_0 ],
; k  @* o2 }9 b5 a        [ SR_1.name, SR_1 ],
/ M6 l: V2 ~, S- K# p        [ "DSP_PROG", {
( J; F/ W& _8 d) q% A) {4 r            name: "DSP_PROG", space: "code/data", access: "RWX",
6 v% C: W" [7 J8 A2 X9 I: h            base: 0xC2100000, len: 0x1E00000,
0 e4 h1 M! n. |            comment: "DSP Program Memory (31 MB)"
  |8 B+ y# U) r3 K+ l$ |6 ?  k        }]* s3 V6 g2 A& l* e( W
    ],1 ?7 ]4 k+ c: i3 I# d' V0 |# c
    codeMemory:  "DSP_PROG",3 a! P8 ^7 u* A1 N
    dataMemory:  "DSP_PROG",3 f( b& m: T/ R" G; W" u
    stackMemory: "DSP_PROG",
: O- Q2 Q  G, R3 N, l- S+ D) O    l1DMode: "32k",: k# z6 x3 B* q% G  R% X$ y4 q
    l1PMode: "32k",
& ^3 C/ q2 q: f, q    l2Mode: "64k"
& q2 d3 F& O, a9 ~. T' v};. W7 _# h9 w6 m, l8 Z

( m/ N( B$ ^+ C" P/*
% `+ Q0 n$ p; w  r+ t. f% ]* o *  ======== ti.targets.elf.C674 ========
/ D% o6 V; R8 f" `+ ^ */: `7 B. y, {, U  m6 I. f$ W$ `# p* t
var C674 = xdc.useModule('ti.targets.elf.C674');' v3 O) A( r' {: i& G
C674.ccOpts.suffix += " -mi10 -mo ";9 q' X/ ^. r) u! F7 C8 I
Build.targets.$add(C674);# M8 o* j! p7 ?& P
. G. C, X5 X/ x1 B7 T7 J

* [0 p" m& ~' n7 R. X- v====================
- s9 V1 y$ Y" U2 N: ?3 f# Q1 y原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
2 C. n& o3 l0 z5 c3 i
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?4 t0 S" Y5 v/ ^0 N) \4 i: }0 Y
2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL1385 L' _! G( P. ^
*- O/ \" [6 e% s6 N- ?1 \4 d6 K
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
+ a* g9 o+ @* u8 u; [ *  ------------------------------------------------------------------------' Y# }$ L  `& j( l; O5 n+ ]* _- K
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
- C2 v5 N9 i0 x) q/ a. j *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)3 D% P' l$ Z9 y6 h
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
) J2 X7 F6 l- v. Y) z3 v *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
' H  a- E& O) r% h# y *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
! ]! h% \% T- J9 `4 E2 u *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
. H" A& Y. }& Q' u& u7 n *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
, S* y  M( \/ X7 t- D0 R1 `5 v0 H *// X$ C8 j: }/ u
如何将 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)
7 `$ d; u7 B7 N4 f! X合并为一块大的区域作为dsp程序的所有空间
) G# w: \7 d- \2 E# D/ H" a  Q1 J" t7 F9 i& X
现在发现修改平台文件只要用到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文件显示的地址。
5 `8 r1 l$ l2 Y3 U8 @2 b) q
+ X; e8 u1 M( F' [6 ?! c- B目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。$ ]' ~% j- b% l
2 d, B# U) @) y6 x
40 /*  Memory Map for ti.platforms.evmOMAPL1383 K; |3 b) g: `. ^$ K0 D
41  *
0 Q1 I! k6 W7 {0 e7 T. s" [ 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory% x- h5 V* N1 ~: h: t& J
43  *  ------------------------------------------------------------------------
+ k& P. Q9 t! a: {- ]9 s/ v, r 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux. ^6 f: u' `; ?* M* E
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
8 ?1 R& H- L7 A1 i4 v: i 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
- Y9 Q( S2 y5 ^# \ 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
; c; F  p6 t( f& Q/ R* f# e3 P 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)7 ^/ Q9 d% F2 U# g
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
( Q$ s/ P" |+ _! i5 w. A 50  */3 E, r2 d3 T7 ], g
) S( P/ {* m( c' i  L  r
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。" x/ h. N* j# x$ \# X: N0 E
0 j9 t9 R1 q( F; Y3 ?
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。, c/ a( R& z8 L, ^

& ]# G7 c# v7 i. `6 u如果需要分配大容量的内存空间:
+ Y" f7 c) {# r1.改动mem_args参数(u-boot环境变量);8 y* ]( @4 i* `' _5 C" I* `
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=
1 T. X" W9 @8 o- c这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。+ k( h6 q6 e% S4 E6 Z) ^
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效$ h& [- z( S7 U5 j( \+ g
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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