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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6893|回复: 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端程序起始。- I) Z* k  _; J  o6 o9 r- j  a$ `
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:7 E) q, j8 R2 S+ v0 v5 P
6 I1 {8 _2 [' x
/*
( V) n1 P& ~8 y- D5 h* H" x( s( ? *  ======== config.bld ========  m( [  R( ~1 k
*
! v0 ^# V% \3 r */' E* Z5 K/ F: q0 e
* b7 _4 f: u2 v  e$ W& |
var Build = xdc.useModule('xdc.bld.BuildEnvironment');; H2 |( C) p/ f4 D5 r6 J- O
! K3 Q4 J' o0 u: I
/*  Memory Map for ti.platforms.evmOMAPL138
5 t* J) ]8 N) K *
- m2 y- Y( P% ` *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory: h) l, v+ d" }7 ~
*  ------------------------------------------------------------------------
( |! T) u% v3 Z$ n% `+ C' ?$ X% G/ ]. u# w *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
  t: s% |1 V2 r7 j *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
; _/ X$ ?$ p; J, x6 O *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)2 R* L& i6 e. o; ?$ p
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
  D, a, g0 p3 f1 R( f5 M+ c *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data). a+ j5 B3 _1 E: G2 r$ I1 O
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
# m! m; I0 ~# N" P3 ~2 a: {' }% x9 ]$ j, I *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
/ }/ x7 d. T$ A9 G7 I/ @ */! t# S1 u" @2 h/ q8 s' t) u) i" b, V

- J2 N0 L( l; R) R4 y  }8 Uvar SR_0 = {
' m3 \, [( U5 f2 F6 [, Q" P5 d        name: "SR_0", space: "data", access: "RWX",
& h) q" B" B5 J: @& ^& \" w        base: 0xC2000000, len: 0x10000,
7 f" {+ b9 s9 F* h7 H        comment: "SR#0 Memory (64 KB)"
# q' B7 f% h  w7 T: T. c8 M    };
/ V+ ^9 J( C8 \2 r/ D
* X3 W9 S& s# k6 w# C; gvar SR_1 = {, m8 r7 Q* h1 Z$ i1 C: L: |
        name: "SR_1", space: "data", access: "RWX",9 p5 b1 s2 n8 N; b0 Q
        base: 0xC2010000, len: 0x20000,# S# w  C9 \8 m) o
        comment: "SR#1 Memory (128 KB)"
3 [2 W* U8 S* x+ _3 L    };
' @9 U9 g" I! h. @3 C% q9 P& C: I" S- @6 J# I
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
* t" V# D. i" [, c5 |  l    externalMemoryMap: [/ U8 }, y. f" f9 }8 t
        [ SR_0.name, SR_0 ],/ n' z: q% `& S  ~+ J: B
        [ SR_1.name, SR_1 ],! c  w% N& j8 N# V4 A  a
        [ "DSP_PROG", {
9 i! R8 ]2 s" w9 O; V) b$ o            name: "DSP_PROG", space: "code/data", access: "RWX",
; i, C) I9 C5 J  @) i* i: o7 v            base: 0xC2100000, len: 0x1E00000,8 |; h; e7 Y6 g6 Z
            comment: "DSP Program Memory (31 MB)"/ B% U& \4 ^$ q8 I% \7 {( ?
        }]! F0 u2 I* C' `& n
    ],
0 f5 D) H6 {' n" D9 Q4 B# a- [    codeMemory:  "DSP_PROG",
( j/ [: a, \# w2 P% e& {' I    dataMemory:  "DSP_PROG",
& {& m/ h8 o7 k7 x3 h    stackMemory: "DSP_PROG",# v& f2 y+ N- S; i9 w+ o4 s
    l1DMode: "32k",) H% r& T8 {3 W' x" P6 w/ ~, N
    l1PMode: "32k",
- @3 c1 S+ S$ U$ d" y5 i1 u4 Z; A    l2Mode: "64k"
% L  J, B" f2 O: ?* h, ~$ u};# K( T! \1 X/ ~. P5 l- |

& z4 k+ g# p6 m! _4 H/ U" h# t/*
, O- D# `6 S% U" q# U$ w/ Z *  ======== ti.targets.elf.C674 ========
& K7 ^0 o+ O' h+ W+ d */$ V) Q1 x% t1 i% E' x' \- p
var C674 = xdc.useModule('ti.targets.elf.C674');( Y0 x! ^2 d4 T. d6 R% \6 t4 P
C674.ccOpts.suffix += " -mi10 -mo ";) _" `9 F. ]9 e2 ^2 l) K6 r8 n1 g
Build.targets.$add(C674);
1 c) Y9 T; s: o/ y' d5 |  \3 E( o, h( X3 J" R3 F3 s7 _
1 U& |" a% z- c
====================5 X& q. |& H$ k6 v2 S+ y8 ~
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。* C1 G2 w0 q' K" k1 a% q
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
- G! S3 t" ^/ t2、修改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 p: c1 K2 c8 |9 J0 U4 c4 l6 M& d& { *+ [4 P; A. K: e  f
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
" Z- a0 s1 u+ d *  ------------------------------------------------------------------------: E, z. v) T5 ]
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux" I6 E' z$ M% k4 k# _) A+ B
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc). l; w3 u! n" A' u4 g( _) _
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
  I& T$ `1 c& |0 R *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
8 ^# x1 [; }" V3 ^9 { *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)# f; L/ I% I% s
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------" U" \+ h+ W4 ?* e$ q
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux: f$ j, H. v2 p8 Q( X2 R" M
*/
: V  O5 E% \6 x" w7 D2 Y6 ~如何将 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)
( Q" v" I8 i- _* S合并为一块大的区域作为dsp程序的所有空间
* |9 A& |; e# c. P1 E% Z! D) r# c" q% D+ r  t; t/ ]6 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文件显示的地址。4 }. d1 {. |! {; ]9 k  o* S

) a* J$ ?6 o, t0 ]# Q目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。8 I1 l! J% ~$ {( y& m

- c5 _$ P; p: F3 n0 F7 T" |7 e2 ^8 k 40 /*  Memory Map for ti.platforms.evmOMAPL138: z9 b8 \* ^8 @6 B1 v
41  *
- X# k8 S" N6 @6 g+ I- G: Y 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
- k; U  Z: y( M& m+ b( Q 43  *  ------------------------------------------------------------------------0 q3 v0 A# z! k  W& S6 ^/ E; l# J) ~. y
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
* j# q, X* G/ O4 {6 r3 j 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)8 @3 G+ ], t5 i, @
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc): }( ]+ |9 s- W! c' r, m" ^
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)" {: u( M0 k/ J% y  j( @2 M) t8 e
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)" u8 H9 G5 r( S6 g
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux$ k/ N  A% V( G7 ~  [$ F6 C+ m
50  */3 T7 \; ], c* d1 Q% Z4 a3 ~
1 G! J$ L/ O$ r$ S% d4 X: T  _! n
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
2 }( G3 O$ n; f! u  ~3 U% z2 A1 H/ a1 Z5 W/ H, X$ G
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。" q+ z: \5 s  X4 k. j% ?7 V+ k0 M

9 o- B1 G1 j7 f5 v" ]0 m; g. a如果需要分配大容量的内存空间:
0 Y- V3 R( t; T. B3 a) t  K2 E1.改动mem_args参数(u-boot环境变量);0 g  a$ F. K0 i$ p* X! Z
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=
- n; G( T6 k* v这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。: ~8 f1 F+ I: E
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效2 h7 |' \0 m! X' a; d0 _. D6 Q( p8 t1 n
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 03:10 , Processed in 0.042416 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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