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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9927|回复: 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端程序起始。1 D6 l1 {4 N2 N+ p9 Y
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
) r% y: _. W' {% `) p: F3 T) X
* t+ _) B' D- P3 v6 k/*
! W$ H6 i5 g5 K *  ======== config.bld ========
! s7 Q& c: j" ^7 P *8 c/ p8 q$ P: t! q% |
*/  d5 o  N5 O1 @) M- l* F
* _6 O  n/ G+ u0 N0 d8 H2 L
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
/ M2 O3 [! u7 @* i8 j/ }& H: }' U
4 e! N4 L* t! J2 w& N/*  Memory Map for ti.platforms.evmOMAPL138% H4 S; \9 v+ |# I; S5 P" z
*
% ^# y. s' ]4 C *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory  ?0 r! g; a# I
*  ------------------------------------------------------------------------/ E2 z) y+ P8 M' A: g5 S. G: e
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux& H/ `6 M( J2 T8 k
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc). w" {) ^! y% M: Q( S
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
! ^5 [3 |# M5 ~) K *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------. R$ g& V. p6 y  D
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)9 T0 I- C8 H3 Z8 g: J
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------, E' h. D& d' f! Z: o- @( A& ~0 @
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux* V: V. q2 |  l! f9 f
*/0 T8 t; p: p( q  @. I: g) Q
$ B8 O7 v, e% \) x7 F- {. y
var SR_0 = {
) x% W7 ]/ A, W        name: "SR_0", space: "data", access: "RWX",$ |0 \. @7 W) d7 M: {
        base: 0xC2000000, len: 0x10000,
: Z) Z5 O6 O) G6 y        comment: "SR#0 Memory (64 KB)"4 t, F( D; [2 h7 R# N" r' v! c# `
    };
* k- w: j; M; h$ q
0 D( }1 p. d7 |1 E/ H$ x: \var SR_1 = {& X+ S; a* @7 U3 [6 b$ a: d! T
        name: "SR_1", space: "data", access: "RWX",9 R" h1 u3 _9 H. N" l, A
        base: 0xC2010000, len: 0x20000,6 c+ g7 [/ \" g+ E7 h( z
        comment: "SR#1 Memory (128 KB)"5 J3 o, A; }& s4 i7 y
    };; J0 m' N3 w0 V8 G# }

% K3 t9 ~" m* d" M' Q& }# l5 yBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {4 o; ^2 Q: d3 R* C% s
    externalMemoryMap: [
5 t  ~' K6 L+ A& J, \4 q        [ SR_0.name, SR_0 ],1 N0 J4 g+ j* ]+ J. f. o( s) H
        [ SR_1.name, SR_1 ],
  k% A  q1 Z  I+ c$ v        [ "DSP_PROG", {
% U+ M. Z2 n2 O$ X( j/ ~            name: "DSP_PROG", space: "code/data", access: "RWX",$ w0 L1 x% s8 B
            base: 0xC2100000, len: 0x1E00000,
2 N6 \) }" n0 \; p9 c            comment: "DSP Program Memory (31 MB)"
) c% s1 J7 o  l4 Y        }]
- O, n; t7 g$ Z* M; L$ ?2 f$ p3 e    ],; x0 [$ N4 l1 {4 B9 A5 D+ k
    codeMemory:  "DSP_PROG",% m6 @0 C! T1 F3 F- g
    dataMemory:  "DSP_PROG",& O6 U" k. o7 t) b" F+ ~: l
    stackMemory: "DSP_PROG",( J3 R5 ~) d0 K* W. ^5 @  D$ k
    l1DMode: "32k",9 A: G  ]5 w' |' O
    l1PMode: "32k",
" P$ \. f* X8 I$ B: R3 z, o/ j    l2Mode: "64k"
" m& w, F* K# }5 i8 m7 X7 _7 b};
, S3 z8 E: r. ?5 z8 i8 X$ m% L2 n' ]; J- ~  T& p2 ]% w1 X0 y* v& l& D
/*8 I& Y1 R+ [+ b2 T
*  ======== ti.targets.elf.C674 ========
  |4 o$ A3 l5 h' }5 {, z */# I/ f  R. W% q
var C674 = xdc.useModule('ti.targets.elf.C674');
/ m. {/ k/ |: y8 `" p% jC674.ccOpts.suffix += " -mi10 -mo ";- z& {% a$ _/ D; ?4 S/ j
Build.targets.$add(C674);( q% h  w* p# E. \7 r: G! F% t
7 H/ ]7 o! Z* I" L

* h/ C5 s4 t6 i# v% V4 Q5 ]====================1 d; F7 \2 e2 F+ \0 {* V
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
, E5 T2 s: W. R! K/ g" ]$ 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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?& Q( u# B+ u: z
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& N+ m" G: o2 L! n
*
- `' Z7 z. X% w* f *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory$ U! j- i' e: v  s. j2 `
*  ------------------------------------------------------------------------0 s4 h0 Q1 `; v( E5 ^1 O
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
! P  X' |6 y/ i: S+ V/ f *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)! E3 y7 J5 n( G. F
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
) @# S6 k- Z' F* y4 R' N *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
3 x$ |+ m( d  }, p- j *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)) W) [+ q' g8 j, C7 _4 h; O( X6 c) h
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------4 J7 v4 r* G% q- J& t
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
! m8 j% t: h4 ~& s */  ^* C$ V& W9 p
如何将 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)7 ^5 Z1 X% k. L1 \& D& Z
合并为一块大的区域作为dsp程序的所有空间: O- j' {$ k8 y
) q( G, e  f, E
现在发现修改平台文件只要用到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文件显示的地址。9 v' I4 n% R4 N: H
4 Z- U8 ]! d# f
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。& `) G0 x* C+ P5 k. {& J$ F( b

8 y2 w$ W# L1 T7 A) b+ x" S 40 /*  Memory Map for ti.platforms.evmOMAPL138; Z* n7 m' [% A0 s
41  *3 t5 h  K1 O! R8 g3 j# t+ V+ T
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory, [% h7 q1 x. ^
43  *  ------------------------------------------------------------------------" ~+ p/ c# r. `: d, H4 Z; L
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux( f$ k& A# ^& z; e1 V" ~
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)! J6 C1 n6 }5 w* A) h# g- Q6 Z/ q
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)8 ^2 U. g* M8 e0 S+ q
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)6 x- P3 M5 y5 l: \* l
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)9 q* q7 X) P0 [. }: y# P" f+ z" c
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
) b% q/ o( x) } 50  */# c6 k1 i- N: A! Y; M- ]* D

, `; H8 M% j- p( ?$ W* r+ Q如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
% T8 _& u* @' x: _% i) f. u) d' S3 n( P( b" ]; Y* q7 R
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。) e2 }& s9 \: q0 W7 G

6 D* y% P; }" i8 @( _7 i& F如果需要分配大容量的内存空间:7 ^; Q, r( W: ?* L2 G7 v
1.改动mem_args参数(u-boot环境变量);
- F3 F2 X9 X8 b8 t, g2.改动双核通信工程里面的: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=$ ?% ~1 b. f7 o4 B- H
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。0 m/ \2 g' s. X. C
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效( E2 u. ^- q& Z! R$ E: e" r1 ?; [
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 07:57 , Processed in 0.056439 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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