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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9037|回复: 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端程序起始。
8 `1 X+ X% W! v# |* s7 Y6 C  ?    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:) u: i1 W9 A# [1 \; ?$ E6 H) c

7 f+ _2 B4 ~  k  I) N/*
! K- k. ~! h/ |1 T% U3 ^( i *  ======== config.bld ========
" K2 F! C! g) c+ n- r *
0 ~2 ]0 C# L7 A' p+ O0 U' r* u, ] *// G0 M8 O- I  r/ U  {

' T* l, b* f+ qvar Build = xdc.useModule('xdc.bld.BuildEnvironment');
$ F( T( W5 l; B3 N" t7 m) d* x- M+ g1 |3 W7 L- y; C0 L
/*  Memory Map for ti.platforms.evmOMAPL1383 a8 ^7 O& E0 g# {
*
  ^/ B4 w" X" O4 A- f *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory2 ^1 d4 c" y$ F0 y9 I
*  ------------------------------------------------------------------------5 f# `9 r* r9 Z. V! H) _
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
6 d$ m& R, e. ?3 x$ ]$ i( W *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)' [, U# f2 T; W0 W1 @
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)1 `  S0 F4 y' _7 ~) t- b$ z
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------$ Z  Q+ I% p3 v
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
8 u9 G$ K+ i4 V$ O4 o( b% r1 J$ o *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
  Y! C" c0 R0 u, m# \ *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux9 e0 g! a5 ?/ w0 i4 K# C- z5 W
*/& D2 Z* g6 R/ M& w
0 N: l, M5 k( o) f; c, ^
var SR_0 = {. N5 K% b' }4 j% k+ I
        name: "SR_0", space: "data", access: "RWX",  m& E7 F& z7 s3 l% z7 E/ T
        base: 0xC2000000, len: 0x10000,
/ A7 e% D4 r% ~- o( g" K        comment: "SR#0 Memory (64 KB)"& g. U# Z6 {4 [0 I; w
    };& v7 [8 t5 n; Z9 ~0 a3 l% r0 @& s

" b: w, O8 [" ~( C, @) F( }var SR_1 = {  [9 a) p/ S5 C5 O
        name: "SR_1", space: "data", access: "RWX",0 k- ^# F3 I# [  W
        base: 0xC2010000, len: 0x20000,
7 y4 t3 x% D2 I/ a8 s  i        comment: "SR#1 Memory (128 KB)"$ Q$ P: P0 `) d$ h, }, y3 {
    };
. D3 p7 g# S2 `3 g& J# J; f
& {# P8 Z  C% k% F: \$ \Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
% }* e- t2 U' H( ^6 K    externalMemoryMap: [+ B% |) A. P: \+ n- K  \8 Z
        [ SR_0.name, SR_0 ],. r) o& {& k% Q4 D" s& I
        [ SR_1.name, SR_1 ],& T6 _' Y8 P- n) g/ E0 Q
        [ "DSP_PROG", {
7 P2 Y& `" h& O/ c" U            name: "DSP_PROG", space: "code/data", access: "RWX",
: y4 k0 l3 h9 {( T+ N# a            base: 0xC2100000, len: 0x1E00000,9 W4 h% a1 Y2 W$ x! @  I. }
            comment: "DSP Program Memory (31 MB)"
6 b. l9 ^' O2 e* ~3 q/ ]        }]) M% k6 U$ j3 U5 |
    ],
: _) N1 N4 Z" k    codeMemory:  "DSP_PROG",) i0 p5 ]" x+ d8 m* G; a5 L
    dataMemory:  "DSP_PROG",
) R" C9 @  ]/ {" l8 Q2 u3 g3 h    stackMemory: "DSP_PROG",9 Y6 d  c# Z7 ], w( M3 [  i0 A9 i) ?2 Y
    l1DMode: "32k"," W& x8 b, X4 o  g
    l1PMode: "32k",
- ~* ?& p5 H* }# r! s4 @    l2Mode: "64k"
7 v4 Y1 W2 j! g) ^- i% f};
+ |6 t& y' u$ P+ G! W+ x7 m, b3 C, O/ |4 x5 E
/*
4 I2 _. |# K& j2 \& D, X; ` *  ======== ti.targets.elf.C674 ========2 C1 A' k6 g" Q6 S( T
*/
/ F4 L/ k% ]9 G% e& |, p- Fvar C674 = xdc.useModule('ti.targets.elf.C674');
% t3 l/ d4 X8 ?; B8 xC674.ccOpts.suffix += " -mi10 -mo ";- @$ r& G& B' j
Build.targets.$add(C674);
4 I: u4 A. v7 |1 l7 |' k1 j1 o7 T$ R; B) Y5 r( l

) v. R9 q, j' B- r7 b====================/ L4 k2 _3 |% s6 o4 g# b
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
2 \6 L# w' {8 t0 f0 [% {
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?5 |9 @' |7 i% l
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( D7 h0 Z% J5 R. U4 p6 e
*
9 {, h; L( A+ h* E/ m& y2 w; d *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
& L/ ?8 S. A/ W *  ------------------------------------------------------------------------
, L4 o/ U7 Z) S: t1 I. \5 P7 ? *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux% z) T' [/ t* J. k
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
" t2 [. P! K6 ^: [- P  O *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)2 S; E; L- I+ W; [$ J
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
, S4 G& B( _& c7 _8 s3 j  ` *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data). F" F  ~3 I, d, a- k
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------; a$ V  i4 c5 {
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
* p8 s. Q) |  u9 i */6 p, }: u& W) h
如何将 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)
8 F( z2 e; \* D% }! n. u合并为一块大的区域作为dsp程序的所有空间
$ z& e# _3 \7 Y2 \" J. s2 F' D. r  c2 p# D& g, w" X( m1 o0 I3 q
现在发现修改平台文件只要用到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 _+ s2 Z3 i% m  @, i$ ]. ~

8 e1 U9 y' f1 Y$ k2 f( r; g目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。6 d  a: _+ r, p

; `$ U; T% \9 p1 c. ^2 A: U 40 /*  Memory Map for ti.platforms.evmOMAPL138
* {5 b' {2 \- t 41  *( y& P/ K1 R; F# S9 o. ~3 f1 Q+ o
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
- G" U7 Z( ?7 K1 `1 m( d! m" l3 o 43  *  ------------------------------------------------------------------------; s8 S6 _; P' d0 m6 S
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux( U( O/ V* M& C1 }# @2 Q, s' }. d
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
1 F) R* w. }- N4 {# g  i: M. @ 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
; P) n9 g$ A  P4 b  N% i 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)! n) t" o' ?/ g8 g0 p, o7 q
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)+ A- R& S3 F: O, x1 M8 K
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux/ c  g4 D& w3 D- {. D/ O. f
50  */
  n% y" ?  t5 k" Q6 O
! W7 h, ^, C$ Y, K: Z3 P: F如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
1 u% H5 e5 o* T' j
( ?, j5 }0 c- a/ O. G一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。* {$ {6 `5 M! c/ O7 P& W

& t& W7 S& ^0 P8 D  ^+ s. ~如果需要分配大容量的内存空间:
1 B  A$ P& f' l/ Q$ H' g! r! l1.改动mem_args参数(u-boot环境变量);" J5 t1 r5 d4 j& p
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=; i, }" d0 L3 ?4 y' O: N
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。5 @3 |) b/ M3 H: m( F/ J
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
' o3 r+ V/ t4 R: O# C# O
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-6 02:16 , Processed in 0.042898 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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