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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8173|回复: 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端程序起始。
$ J6 u4 |- {6 ?0 m6 i9 Y! x1 G' W& P    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:2 b$ X. p" N) N2 I* s# `) e

3 R% A( S* B% b+ h# e/*" P1 L/ ]1 Y2 L" g
*  ======== config.bld ========  r- q& F/ \9 T3 T% Y2 C6 a7 N
*; i0 t7 I& s, U
*/
  G+ n$ h) p  }8 F1 d( h
5 M8 n# ~$ E! c" s% |! k. Rvar Build = xdc.useModule('xdc.bld.BuildEnvironment');6 _* g8 S; X: J0 \' d

7 I* ~5 v9 L) R* Y! N# C% [/*  Memory Map for ti.platforms.evmOMAPL138
, w4 c& `$ |) n# D *
, j3 [9 r% Z6 o/ j. x4 `1 ]1 A' ~ *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
$ p+ b+ {: G, W1 K+ l *  ------------------------------------------------------------------------
8 [* v% O' a9 r2 l# C *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
; x0 |$ A  |& M *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)8 T& {$ G: l/ K' y3 b* x
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)3 S& H( k7 y: e. x8 W0 Y
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
0 B6 {2 P" V4 T" @% l *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
8 E" h4 |+ q% {5 U2 s! [  ^! Q# { *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
7 ]. `  G  u7 e5 y *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux: b) b/ s0 u2 L+ N, D6 i( o
*/
$ N. I+ c( ?. o: O  f! V- j9 V4 @, ?
var SR_0 = {4 B+ F1 ~+ @+ O0 O" Q9 J8 v
        name: "SR_0", space: "data", access: "RWX",
( F( o* i3 a; A, C" V; ?        base: 0xC2000000, len: 0x10000,: p1 R& J3 b/ B  a  W5 R
        comment: "SR#0 Memory (64 KB)"# V: h3 R/ {) [
    };* y( h' |; |% {1 P4 M- G; y
6 K+ k! I2 T' U
var SR_1 = {
* C( R% t" u8 ^* b3 l# x+ {        name: "SR_1", space: "data", access: "RWX",, u. K3 h! r& i3 M: p
        base: 0xC2010000, len: 0x20000,
! b8 v; i" @2 v( P. T9 P$ @- x        comment: "SR#1 Memory (128 KB)"
4 D, G% T3 ]. Q- b% [% S1 c5 t& |    };& N1 L0 I9 I& ^8 p
6 V  m) k1 {, h; @& U' g  J$ d
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
* x$ |8 X: Q/ h, K    externalMemoryMap: [  E+ Y! v2 p6 h3 V) A# k3 z7 T( x
        [ SR_0.name, SR_0 ],
4 n9 `( G5 d9 @1 b8 u3 i        [ SR_1.name, SR_1 ],: l4 U  |& |4 W+ e; ?
        [ "DSP_PROG", {- s; Y2 v/ S1 `
            name: "DSP_PROG", space: "code/data", access: "RWX",/ [* j* _* I) z5 Y6 _1 m
            base: 0xC2100000, len: 0x1E00000,& x+ \  \5 \, `% ]1 Z4 }3 `5 R8 }. E
            comment: "DSP Program Memory (31 MB)"1 y+ Q% h' ?' e' _, c4 j
        }]
% ^$ d" x# b3 I- R/ L    ],, v5 {9 h8 z/ q  {) M! W3 e
    codeMemory:  "DSP_PROG",
" S! C3 U' B+ H5 t    dataMemory:  "DSP_PROG",# @3 o, p! N* i1 J% h( ^  s% z
    stackMemory: "DSP_PROG",
% M( c( o  E% T* g! q, V! n( u; e    l1DMode: "32k",' r; i2 s6 Z! [. O9 a: p6 V! ]
    l1PMode: "32k",2 s# v2 u$ c3 ^! a$ t# @' T
    l2Mode: "64k"/ O5 }; G, f% b3 b
};  T: y- A2 @, A( B' y
  i. V) z! Z( X: p% ~& o$ c' g
/*
) y. c% \  R- r6 e/ W *  ======== ti.targets.elf.C674 ========
4 Q% L5 z2 @5 ^: V( f1 D' R7 j */
% N6 a5 ^/ ^( x4 Hvar C674 = xdc.useModule('ti.targets.elf.C674');  I! z  W. N- k! V* I' N
C674.ccOpts.suffix += " -mi10 -mo ";
" B6 v0 o1 K" SBuild.targets.$add(C674);
1 E' c6 D2 c. J3 Q  P. ^% w# `3 a4 }" O1 O
9 q7 w3 h9 `" N$ e0 i8 o
====================
2 `# Z, B& q  A7 j- \9 b原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
3 _" e* q4 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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?6 A) j  u2 z5 j: s
2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL1388 Q7 q0 [" k& h* e0 ?
*: Q5 m  a5 i; c' I2 A
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory8 ]0 K8 R: o5 i4 H: g7 P
*  ------------------------------------------------------------------------' J/ Q8 {# i0 f7 N
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux( S$ B* M: P1 v) W2 s) R/ t
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)- C% p3 R9 j. s# a) N: {
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)) A- F. u7 ]* `1 }6 G% P
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
# V3 n$ ]' }& i *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
: K' k' f5 Y) s! V2 k *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------1 _' S. _" S0 P6 [
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
* j- f/ l1 n+ K */8 n% E( p  I" w& [6 l
如何将 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)
, W. J. E" k3 K- y% w" K( A. \合并为一块大的区域作为dsp程序的所有空间
8 p( Q# e# c- r) T6 `+ w1 g1 Y) @. U3 q) f1 E. k- p/ z
现在发现修改平台文件只要用到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 N4 @: Y) v$ }- a- V
4 U; s, ^. f5 H5 Z' D
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。" I, C0 p; e+ D) A5 c7 D2 P

& q% J8 B2 S1 Q& O 40 /*  Memory Map for ti.platforms.evmOMAPL138' ?0 S& @" R) u8 ~7 Z
41  *
; d( N% e9 b- M; B: R# G0 I0 r 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory* ]6 ~/ ^9 k, P& y
43  *  ------------------------------------------------------------------------" |" ^* l2 c% Q( W0 ]. o
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
+ l2 y7 o6 }; I7 m0 ~4 X/ I3 [1 [ 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
9 v" `, \; K9 s 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)% L7 i9 ^( N6 O5 }4 U9 w5 c( l
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)1 R- i7 l( @4 T: P- _6 q
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
2 _% {7 c) e1 d& f; H* `4 U9 ^ 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
% Y3 i8 w1 p- T: F: E 50  */
5 C) r' `5 @) r4 f
( S( ~% [. Y( m2 b. |如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
* `1 o, M5 r5 n2 `$ J* I* ]% j
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
; O& E  c0 N3 h% p9 F7 P
2 B2 O( U1 _3 h% k* g如果需要分配大容量的内存空间:
5 B  Z& g! O4 r1.改动mem_args参数(u-boot环境变量);+ W% a+ N3 G3 s+ ~% _3 m
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=& j2 O0 C) f- p- G
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
+ Z4 P/ O+ b7 Q2 f4 C; E3 sshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
/ X* |* ~' ^- y/ c3 C7 X" Y
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 23:42 , Processed in 0.041317 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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