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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8177|回复: 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端程序起始。! f/ ^# y1 t& a
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
8 ^' C7 V! R: F( `# b& i: ^' D3 A& m
/*: |* b2 O9 H$ E  M6 F1 Z& l
*  ======== config.bld ========& ?+ {3 ]) ]- V* ?3 C: K! U
*
5 k9 G- ]+ [; L3 E */
# ?6 |; O$ ~+ d+ ?9 \- c7 U- Y$ W# Y, ?
var Build = xdc.useModule('xdc.bld.BuildEnvironment');2 W6 ^# T$ K  m
+ B9 |; p3 a( }& O. C- `% g
/*  Memory Map for ti.platforms.evmOMAPL138
) a* W4 l; ?- Q$ \4 I# Y  Q4 P *7 }) s$ w* G  v
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory8 B: w7 d/ f' w4 F! a( c3 F
*  ------------------------------------------------------------------------1 N: `6 z% b4 `( E1 D" G' Z* ^( t
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux+ U8 X+ f! v! j5 `- k1 j
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)  C8 s- Z+ j4 q8 P: }8 T) W! k4 c
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)& ^6 g% q/ K9 a  C0 _8 g
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------/ U2 V$ Q; }4 ~5 ~! ]
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)  `1 S- h2 h  {1 Z) ^
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------" F6 }/ w9 x: w7 f; p% X6 U& [
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux! F& u& t6 x$ O1 l
*/
) }1 w% d+ ^; N0 m2 S- h* E
7 Q. d  Y# y& b5 b  ~, F7 Tvar SR_0 = {
: F$ q% g- w9 G; `3 ?        name: "SR_0", space: "data", access: "RWX",1 I$ R3 {- {3 v7 ^' f6 @5 n
        base: 0xC2000000, len: 0x10000,
# W' R& X3 z5 w7 Y7 ^        comment: "SR#0 Memory (64 KB)"7 S2 e1 k( d8 H2 C' {, _5 N: x
    };
$ V& e+ L+ n# Q3 [& G7 p- i2 [4 {
var SR_1 = {
' _% ]1 J# V5 A6 E' E/ M$ y) P        name: "SR_1", space: "data", access: "RWX",' Q; t; q  g6 |* L
        base: 0xC2010000, len: 0x20000,
' q/ l8 N$ y% a" i        comment: "SR#1 Memory (128 KB)"& l) c" Q+ M% Y3 {. B5 v
    };
8 H1 p' ^  q+ Y- S( y
  H9 U3 T4 _/ {1 v: Q9 E- zBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
; e9 D0 E9 f' F$ A- O3 G    externalMemoryMap: [7 e+ p8 ^" e/ U$ l
        [ SR_0.name, SR_0 ],1 o9 R- s% a  |4 I& l1 E! \
        [ SR_1.name, SR_1 ],
; R8 }# g# m, k( S7 c$ R) b        [ "DSP_PROG", {- D- J9 Q& x3 t( o. s8 l
            name: "DSP_PROG", space: "code/data", access: "RWX",
4 C: Q. w1 ?, E' \! ?. b/ c  T5 B9 L            base: 0xC2100000, len: 0x1E00000,3 f+ A) D) i8 e7 J: H# M  E
            comment: "DSP Program Memory (31 MB)"- Q$ `9 v. j( r7 a) Z0 `& ]
        }]
# N, K8 n" X) z( L    ],5 A( G5 f0 l  U: Z: ]0 N
    codeMemory:  "DSP_PROG",
) l5 F+ a( f6 S# l    dataMemory:  "DSP_PROG",
$ q% w4 W4 \  H    stackMemory: "DSP_PROG",
  ]+ }. R; K1 v; g# a    l1DMode: "32k",
# i  S, s5 P/ {5 }( @: A: I( e    l1PMode: "32k",( @% S& O0 i5 h( \1 h/ h0 W
    l2Mode: "64k"% q+ ]3 l; H, s: H' E, P* L
};1 P4 C; r: R: O8 q
6 P* W- O! m- f; H$ f# s
/*- ?, t7 f" q0 ]! F0 W' h2 |: W
*  ======== ti.targets.elf.C674 ========! Q4 m/ F4 l* Z+ d
*/4 [0 V( S& ?# P$ L' T
var C674 = xdc.useModule('ti.targets.elf.C674');
! R  s0 [) |% l  sC674.ccOpts.suffix += " -mi10 -mo ";5 T: ]- i1 S6 {" q+ }2 N
Build.targets.$add(C674);% y" }+ d; V  d$ q

3 @2 x# {5 ?6 {/ Y' _& O  z, Z
====================- K7 s1 V1 J& E* z7 n
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
3 e# [; x! O. ]( P
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
# y( ]8 `( |; X" ?3 {) i) [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! p- Y5 c3 T7 \' O8 `' e0 T
*2 \$ B$ [( K. C: n- _
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
( C' V& F9 o6 y, G6 s *  ------------------------------------------------------------------------2 l3 `5 C. ]; c( M3 _* [& @
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux+ y. y# j8 d$ q- N  ?
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)* a% p% b4 `9 s( B7 q% ~
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)' z, u; b  d1 R" V2 b7 K6 e) {
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
9 ~- _8 f) N) K7 D: X *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
* ]* o4 B: o% j, S8 j *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
) ^& Y3 Y- k7 M *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux3 P/ D2 G6 S) D, g. G" P
*/& c, b+ W' A5 ^# F. m! p6 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)2 t5 n- W, M: N1 X  m
合并为一块大的区域作为dsp程序的所有空间
: t: C! f( t8 `% p. z7 W8 _5 n7 O3 ^. B; i# e7 n
现在发现修改平台文件只要用到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文件显示的地址。" E8 k! ~. H( L. p' c
% Q+ {! m, x# F. v6 h6 s
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。# h" I+ V: h% z0 k3 Y
# a4 c+ `" n& y3 p0 R! [
40 /*  Memory Map for ti.platforms.evmOMAPL138' H3 f# `$ N5 [$ J
41  *
7 T0 H& a5 W! J. T/ o% q 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
1 Q! V( E8 e% M  @  D 43  *  ------------------------------------------------------------------------% g2 T8 j- O5 ?. Y$ u
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux. L+ g9 F9 Z7 {0 V) r
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
% A. v5 R7 j. |5 K' b 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)0 ^9 l+ k; P( g6 b+ ^9 I) f
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
5 \3 k( N8 y7 d& U0 W. V( |# \" p 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)* ]/ u! j7 w0 h* }5 L
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
" C0 a2 D9 V5 s* y% w6 N, { 50  */% m& v% S( t$ k1 r
6 F  I% L+ s3 ^; ^: S
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。% v4 s) d( i* [% N0 E, j/ }0 t" |
/ [& E8 m  i0 d+ s8 ~  z* U
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。6 k7 U  `' O0 B6 O: e" S/ v

1 T& D$ J" ], n+ E4 L7 s& e0 t! V如果需要分配大容量的内存空间:
. a2 u- G/ C/ d- B' o8 j0 e6 ?$ D1.改动mem_args参数(u-boot环境变量);7 w4 ~" c9 W# T9 t6 x9 K/ V, E; z1 W# y
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=6 I8 P9 m& r- g. r7 j& c( b8 ^
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。- w( {1 D$ Q" x
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
+ ]( K7 {0 w3 S
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 09:44 , Processed in 0.041191 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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