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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6912|回复: 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端程序起始。6 S( F7 v' i: Z' ^0 V1 a4 b
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
/ z- W+ j. y$ p
& r! @# N4 F4 W; |! O) s/*
0 C7 C$ L  ~( ]/ E *  ======== config.bld ========
6 F5 k" N. h0 B4 y) a, O2 q! _ *" K/ y& ]' Z  Y+ ~
*/
" e2 j1 u) `/ P0 G3 l
9 i. I3 n$ p# Z/ D+ W) z" R! ?var Build = xdc.useModule('xdc.bld.BuildEnvironment');& `( Y6 ~! s7 a4 G; ]$ i1 z
2 q# a7 ^$ g) \$ R6 V; s! j6 B# G# R# _
/*  Memory Map for ti.platforms.evmOMAPL138
6 M% v, v, z6 U/ t  \$ B9 j *. K- C* _5 ]( y7 _" ]
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
% f7 p$ L# _+ O/ v7 N- C1 p- ~ *  ------------------------------------------------------------------------
5 b  t1 P2 J) b. f( i( l *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux- J5 G$ G2 M9 m# ]. w
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
+ a$ g' c' F4 N: c *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)! i$ i3 v% t- w6 H% J, o, d
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------# m3 K% y+ M. ]
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)4 p9 A/ ~' w1 B0 p7 V+ Q. c9 W
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
# j! z! R% ]$ j5 t *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux8 W3 m/ C8 `. k
*/
3 n' e+ l, d2 x- j+ q/ \4 h5 s. {2 Z6 G9 ^- w4 \
var SR_0 = {/ K: n$ J; v% H
        name: "SR_0", space: "data", access: "RWX",
. h& x3 n4 f9 ~# B        base: 0xC2000000, len: 0x10000,
/ j7 h. ~0 U* R% q# ?2 L9 s  n7 T. b        comment: "SR#0 Memory (64 KB)"
0 x* e  S6 ?; m/ a0 v$ I    };
! H% H+ O0 j8 l/ g9 [. ]) k; s! \" @. V8 k) S1 D+ f, f+ q
var SR_1 = {; J2 q6 v* ?, a+ f& S$ u& B
        name: "SR_1", space: "data", access: "RWX"," Y7 b" \$ I9 \( P- G2 c8 _
        base: 0xC2010000, len: 0x20000,
% G6 x. Z3 k; r! c/ R5 M        comment: "SR#1 Memory (128 KB)"
: k/ r8 U' Q$ R: n6 X, \+ Z7 i4 e* L    };$ t% {% u: ]8 k6 ^$ T

3 h& w: s% C7 R% N# t  N, \Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {6 H& _2 q( {, Y6 N
    externalMemoryMap: [6 d7 m0 l  o* T/ d, l$ f
        [ SR_0.name, SR_0 ],8 {6 j, C: }$ G
        [ SR_1.name, SR_1 ],
5 }/ `! e1 W5 o+ ?) K2 \: |        [ "DSP_PROG", {' a* o- i' e! V0 d6 i. Z: m! [
            name: "DSP_PROG", space: "code/data", access: "RWX",6 L- A- l# F) |% \- y. Y6 T
            base: 0xC2100000, len: 0x1E00000,% i) k' b- u" ?' j. ?! `2 s
            comment: "DSP Program Memory (31 MB)"
4 v) n  r  v5 E        }]" w5 m9 l7 ~2 T7 i4 a' K- W
    ],
6 u; ^/ Q! `* g& A    codeMemory:  "DSP_PROG",0 C0 V6 q: z9 r$ F
    dataMemory:  "DSP_PROG",
& o/ J; N9 c2 y) L! v- K    stackMemory: "DSP_PROG",
9 ^  j- r$ o: u: E/ Q$ U+ s    l1DMode: "32k",; V9 u4 w9 V' V* b
    l1PMode: "32k",
5 R8 M  M, l0 u) s) ?$ P; `    l2Mode: "64k"
2 I/ x3 ?+ R# D4 d# M& u# B: x* c/ o- t};2 B' M# L. Q3 ^4 T4 J+ @
5 l( W/ W4 @# H% k
/*
2 @  t1 m5 g: D0 y* O$ B" J# K *  ======== ti.targets.elf.C674 ========
1 f0 m, h- V3 O5 K; L! V */: O* |, U+ l  T1 s
var C674 = xdc.useModule('ti.targets.elf.C674');
3 b3 n5 j/ |4 E# D' p8 DC674.ccOpts.suffix += " -mi10 -mo ";
  o* l5 M5 w3 S- s9 q- {' KBuild.targets.$add(C674);
" E) O3 }( A, Y0 X2 g2 F% Z5 t/ G% P# x3 H) z; E
4 [* h$ o+ U1 e4 C1 L/ e( h
====================
5 d" X. \& n  V4 a原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。+ b6 w3 _. D: l1 Q" J4 g2 e. f
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
0 [- P; m$ [- g! V! m( ^- v2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138
* l# }  Z' M, N1 x% O* N *( s; b( x8 l/ N2 \: _2 x
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory9 [' F( P/ _! ]: J
*  ------------------------------------------------------------------------5 [3 a+ l( ?! ]6 o
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
7 Z& x/ {# o* |! ^ *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)7 i/ j5 w0 Z" U# J6 d0 \
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)0 a' s/ k" G: \7 v  u
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
0 \+ j3 r3 p" g. N. ] *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)- U8 Z5 T, P# v, R
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------' i& F0 ^. a4 F' d
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux2 w7 l, U4 W2 [& [* v
*// i9 @+ v- K* S( W2 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)! _4 [0 n# ]( c: \2 |
合并为一块大的区域作为dsp程序的所有空间' y+ U3 D9 b3 o9 M0 F

, B! |0 t( }, q1 a1 w2 m0 c现在发现修改平台文件只要用到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文件显示的地址。8 C% k, ~0 j; H0 @5 `: {

" Z/ N. m2 g; z9 i1 Y; H目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。% s- |8 D+ j! V0 n) f

" h3 \9 c5 F, X/ k0 p6 a( n0 S 40 /*  Memory Map for ti.platforms.evmOMAPL138
6 Z% I  C& q! e2 T 41  *& p1 K' y4 Y8 S, f
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory* \4 ^& {. f% q- K6 h
43  *  ------------------------------------------------------------------------6 l6 S7 g. O: H/ Y
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
9 u& G6 @1 d" }) H" D# \. n 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)7 L. u! I9 ~" L+ W% {) X
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)7 g, ?4 ~+ N7 H0 ]; o( |. Q5 ^
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)0 |# d5 v1 k1 t4 N4 M$ o
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)! m( ]0 \' j( G& L- K8 M
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
3 I( W% N# g% v+ s2 j! P' ^ 50  */
  [% H0 j! w+ E+ z: _7 |1 C  U+ x& d+ T  U# i2 r; @
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
) }$ j' |( `: r2 R* C8 [3 f# |6 Y& _
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。0 F' }" {3 K( J9 T' A! L% F8 W5 z

. f4 i- b+ H" l* L$ E如果需要分配大容量的内存空间:
+ g" Z+ C' `2 h  |  k. N1.改动mem_args参数(u-boot环境变量);
$ Y# ^" K& ^  L1 K0 ]7 Z2.改动双核通信工程里面的: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=
5 r1 D/ H) ^6 {# j: q这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
2 h7 o0 ]* w$ I3 I/ sshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
0 c) u+ t" @1 `2 O5 d+ q4 E
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 03:24 , Processed in 0.046924 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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