OMAPL138arm核跑linux+ipc,dsp核跑sysbios+ipc,重设dsp端程序起始 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9689|回复: 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端程序起始。
, ]; L# _# w, e$ m5 [% G    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:* c7 D% Y: ~* M3 k" Y+ U

# ?, s( g2 A/ t. e: G/*
% B  }7 c- O" F5 |0 i *  ======== config.bld ========4 l, b  _5 d/ k
*$ J. d8 Q. f) J
*/" c* A3 v! I8 ^1 b' R/ h
' N% r$ {4 s! W+ W1 U, Y9 _. |
var Build = xdc.useModule('xdc.bld.BuildEnvironment');) O2 t0 U+ X: r  e7 S3 |; l
( b5 _% j! u  {/ S
/*  Memory Map for ti.platforms.evmOMAPL138
1 p  q. U# @# T' y" o/ W *# y7 e/ b# e% b/ u" E" d% O
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory3 {. C; g+ M- P" ?7 i& G2 _: v9 q
*  ------------------------------------------------------------------------, G! r  i6 Z; A& N3 N# R) M
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux3 e- s6 e, a/ h! X. j- ]8 s" `) @- q
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
% m4 e5 K) v- l1 J2 q% Y/ ^ *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)* d5 |9 Z' k1 F
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------7 F* n- Y/ M  q- M
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
. I" d" ~2 ^' Y9 o3 _ *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
' n" \& [' J' ]9 b *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
& N+ M5 e7 d# P6 v. I  D% j: u; ~% d */
: i( \5 l3 p$ h1 ]! W4 y- s! d# q& n2 z) _3 e& @) S7 v
var SR_0 = {
( m% R8 X. w) A: j! A8 C        name: "SR_0", space: "data", access: "RWX",
( o0 t' e% K2 l; y& L        base: 0xC2000000, len: 0x10000,+ \5 o) q+ g" l/ `$ r" R
        comment: "SR#0 Memory (64 KB)"
# ~0 ~  G" I9 j+ @+ t    };% a' K4 h6 U. a8 _; p. G/ R
! ]5 k5 [& `) `" d2 j) u
var SR_1 = {4 d$ c+ J3 S/ g$ Q+ X
        name: "SR_1", space: "data", access: "RWX",
: f5 x/ t5 {" z( S        base: 0xC2010000, len: 0x20000,+ Z! }5 D. k- p' z- U8 Z, O
        comment: "SR#1 Memory (128 KB)". a! C8 J8 j' a
    };- @6 X  W8 u- I/ g& r; |0 _0 ]3 K% l
: R* P# D- f! l: h& i
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
, Z1 k- U. Y2 _7 c. y  p    externalMemoryMap: [1 p# y! k& f$ s9 _4 Q3 U
        [ SR_0.name, SR_0 ],
' Y$ ~( l  \6 K% a6 S" E, a! ?$ _$ ]        [ SR_1.name, SR_1 ],& x  d8 p2 D4 P8 [. ^& @
        [ "DSP_PROG", {
3 q5 |- p5 {! q            name: "DSP_PROG", space: "code/data", access: "RWX",( O% j2 {7 t$ h8 O
            base: 0xC2100000, len: 0x1E00000,( v( z+ D6 ]' {2 Y
            comment: "DSP Program Memory (31 MB)"- V1 h1 _$ z# [' B9 K% w2 |* v
        }]
! q' B" b  @# W" a- x    ],
# r# d4 p6 C; y$ Y. _: u! V, Z    codeMemory:  "DSP_PROG",0 @9 v; U( }% V  K8 H
    dataMemory:  "DSP_PROG",  l$ o+ F# q$ j+ }- p6 k* h; b/ h9 H- {
    stackMemory: "DSP_PROG",& o' e7 D9 l, e; j9 i: V
    l1DMode: "32k",
0 _! l7 g4 t* o7 Z. l    l1PMode: "32k",
4 ^' g0 G7 p5 U  v  _  `    l2Mode: "64k": i; i, g( [8 D* U
};
2 W* i- L8 d% \  _0 m; L& C9 G- z) \$ O- h+ ^8 x6 U! a  v3 i
/*
2 e1 ]. Z+ T+ S+ K *  ======== ti.targets.elf.C674 ========
$ ~% b% r8 n* N& R2 s4 Z+ } *// U$ h3 A& \1 B; o& w
var C674 = xdc.useModule('ti.targets.elf.C674');
# v( ~! p; A+ M. l. i- k9 ^C674.ccOpts.suffix += " -mi10 -mo ";
4 w' n0 |, }$ e  q2 P! TBuild.targets.$add(C674);: P4 x4 E3 r4 A9 k& g2 \/ E- B

8 {' v: i" `9 k; V8 }* D& N3 m8 E0 o* H! O; q0 f) t
====================
3 ^4 k1 j; M/ `' w% L  J8 g: \* d原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
2 q: k$ o) A3 S% 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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
& z) |- S/ E: X5 P; k2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138* |3 S( r6 _* V. x  W) J2 P
*/ X$ x. u7 ~2 \+ L
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory+ c  F0 I# z1 E* G
*  ------------------------------------------------------------------------
4 q9 U, N; N7 E7 ~$ V2 q8 x *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
* u* h8 f+ s7 s' n2 Y *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
- s, ~; q  l! D3 G: C" n *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
% h% d7 a" x" h* y *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------: L3 Z  B2 B4 B& f- x
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data); j8 s, {1 t5 a& ~3 Z. }  e
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------( _/ p: U  b2 q
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux( G3 w! q" c' K6 L% U
*/
& J$ R3 n- F' Y) j* I# Y( O- T; `如何将 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)
) ^$ V9 V1 a! [5 ?3 T: D合并为一块大的区域作为dsp程序的所有空间" i$ p: Z+ e7 {( O; n$ _
7 G; T' p. `9 N0 f$ t7 {
现在发现修改平台文件只要用到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文件显示的地址。
- l9 k7 J  Y" K0 l' A/ @
: _" V1 L2 X2 I1 G, n目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
+ L: R% F' U" [' @
5 D$ j8 m( f6 \! B% R$ `8 j( Q 40 /*  Memory Map for ti.platforms.evmOMAPL138
9 t' R* S4 p" f0 o9 m 41  *
5 S+ g" A5 p% ~# D7 _+ ]0 k 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
9 _+ ~! E( Y# J2 F3 k8 J0 U 43  *  ------------------------------------------------------------------------
& n  @; i( {4 l, m1 | 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
, _4 G8 L" q5 M5 F  P8 b 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
2 Z; X* }/ z" y6 q" ~$ Y 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)9 N: E3 r* U& S/ @
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
( C. _7 N/ z3 I4 B9 g2 ` 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
! D! c& e' V* y# S) z3 q0 M 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
$ g% i: @# h' W0 v0 ] 50  */, d) L* o- ~0 T4 E

- D9 H% W  I0 i& _1 Z如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。& ~% Z- o. I% Z+ e( `

4 r+ ]& @0 P8 w: R0 q% H7 b6 s一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
% [! X, F( A$ Z5 u' }; F  S9 }+ ], ]7 x, G  w, P
如果需要分配大容量的内存空间:
3 m6 q, V& Q/ m) ^* p1.改动mem_args参数(u-boot环境变量);
# N9 G' y7 ?. U' t0 P+ h5 q, |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=4 c' m, i% V) f" ^. K: m4 X; ]
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
, U8 o4 P1 h$ c* u+ ~# fshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效) K3 ]. @1 K! N$ B
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-31 02:08 , Processed in 0.046894 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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