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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9924|回复: 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端程序起始。
! {6 ~: Q/ Y5 k/ ^    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:& h# _8 a( U6 z. o6 z3 Z, V4 x, H

  x; b6 w1 g' Q. m2 J- ~6 h% K9 W0 _/*
! v8 ~% E7 S3 u. M* j7 f; n *  ======== config.bld ========
- o8 V/ V; Y  ]4 y9 ^$ ` *5 o; h* l, ~* K1 n6 y1 N. ^: R
*/
2 L" D, B. p: `: b$ s/ R& r6 K9 {9 M& s. `
var Build = xdc.useModule('xdc.bld.BuildEnvironment');# t! A! y' P  v0 s

3 z  b7 ^7 G& o6 z7 O6 p% [" U+ M/*  Memory Map for ti.platforms.evmOMAPL138  T, N$ n( f5 [7 ~2 b4 V1 |& V
*1 b6 [' p: y, o' a9 t( G2 _4 V
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
, l/ d+ ~. f. ^4 c1 w! i *  ------------------------------------------------------------------------
" Q4 O3 x; X" {! C *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
1 s; B9 ?4 i1 ?) z4 h+ h$ ~" } *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc): b' D- Q, a" [( h7 `7 o7 Q
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)& h- E! E1 e# p6 f& C( W% M5 ?
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
5 h8 y: I! K3 `6 Q *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
+ G' m0 v' b* x) r: f *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
2 L7 ^1 ^" l4 z0 n: q7 Y *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
$ S# y' Z( M3 m: h */
  M' P1 z9 k8 m$ Z( C& Y2 q# v4 z  _6 j/ L
var SR_0 = {, {% {& o. {- h
        name: "SR_0", space: "data", access: "RWX",
" q8 q, ^; T; S6 a$ x7 U        base: 0xC2000000, len: 0x10000,
. {  c# R8 H1 O2 D; D" P        comment: "SR#0 Memory (64 KB)"
; Y2 p, d* M/ ^$ d    };0 o% |0 M9 y1 D' \- t
, L2 c1 A: W! X
var SR_1 = {
, u5 m" ~$ V$ b) A: d. J$ Z6 Q        name: "SR_1", space: "data", access: "RWX",' p( g1 J6 y# s) h& s
        base: 0xC2010000, len: 0x20000,/ b6 c3 Q3 S' y7 g$ x- B( ]
        comment: "SR#1 Memory (128 KB)"
- T0 ~, [: R. Z7 ]) ]    };
% H6 A3 }$ C4 J$ b8 P3 `+ b
0 V0 f# n( V0 B" x' s- ^Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {! @8 P( y) w6 I1 {
    externalMemoryMap: [2 Y  G( G3 Y7 U, J6 \2 W# K
        [ SR_0.name, SR_0 ]," a, G) M% b0 D# w( @, U: X3 v. s$ W) C
        [ SR_1.name, SR_1 ],. R$ g, R6 F' }2 p
        [ "DSP_PROG", {- [) d+ u- u# u: r) H- A- [
            name: "DSP_PROG", space: "code/data", access: "RWX",
1 d1 h* ?+ ]) \6 ]) V            base: 0xC2100000, len: 0x1E00000,# V) d8 t: O) t* x
            comment: "DSP Program Memory (31 MB)"
' T3 @* [6 L5 B* \4 e2 N        }]
3 [/ ?4 u7 {, p! \  _    ],
0 a3 }) |' Z: s) S$ |    codeMemory:  "DSP_PROG",) _9 ]2 w; D  h
    dataMemory:  "DSP_PROG",
2 ]' d2 c; O- V8 L" v: B- ?8 I6 t. n    stackMemory: "DSP_PROG",
- u; t) g7 i1 e3 _  R    l1DMode: "32k",( C: l. I/ `2 P' w4 }
    l1PMode: "32k",
, ]6 f. o+ M5 }, x    l2Mode: "64k"
; P1 o- z& Q8 C* L4 |3 ~4 S/ V};- m$ }/ Z3 T% U' p( }# t
4 {4 O7 K7 l. A& v7 P8 J
/*9 c. U; U) ]+ M6 h8 C8 S* N6 ^$ ?7 r
*  ======== ti.targets.elf.C674 ========: W! S4 h/ E2 o- ~% A
*/
  `- Y& S5 U" j* ?8 h! [- {/ avar C674 = xdc.useModule('ti.targets.elf.C674');2 c( G) e5 x9 v8 J3 K
C674.ccOpts.suffix += " -mi10 -mo ";* s2 r+ `: }; U( R0 ^' V0 V
Build.targets.$add(C674);
9 Q* G$ z6 D. w0 n* o' W+ _
4 F& e% f. m, R  J) {1 C% Q6 k' i2 q7 [6 ~. F% S
====================
4 B4 B( M8 R) w0 E/ e原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
* k( ?$ j& N" N+ \% D
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?$ Z7 m/ j( v! }7 A( 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; F  E" a; J  h7 X3 `9 ?
*, f: Q* c  r6 M9 r, N" \2 Z
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory* c$ s# @, O1 Q0 d; B  v
*  ------------------------------------------------------------------------
1 j3 N, Z3 L9 n0 ]/ \ *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux  [% z1 J6 Y/ z# m; L
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
2 j' r2 X# g) u- A *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
1 C, a) N8 l, @& G *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------2 d: ?& D5 H3 T) h7 r9 l
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)6 ~5 ?% T$ O! [8 M/ \
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------  j4 C4 m. _; @2 b  e
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux$ x5 M7 }  }( z$ l( M# @9 d# L
*/. s  G( X0 e. u2 V
如何将 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)) D6 u3 o3 W& b. O( d8 j
合并为一块大的区域作为dsp程序的所有空间) c+ G8 V. x, p# F: q# l6 `" S& m
0 N5 g! G, [3 Q: Y. v: ]& b) D0 m+ f* i
现在发现修改平台文件只要用到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文件显示的地址。
- a2 f. G9 R- m+ E$ r8 Y4 ?2 L: J9 U7 W& }# j
目前将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 u+ q: K1 ?; F
  `* c, Y% [, m0 C' J+ K# q 40 /*  Memory Map for ti.platforms.evmOMAPL138
  S; S. B0 q' { 41  *% `' O$ I2 _+ e7 z( B
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
5 F. K' q  l: Y 43  *  ------------------------------------------------------------------------
3 t/ S7 z3 v2 z: ^ 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux5 s$ ~3 `' v3 O# A3 s
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)3 Y% ]# N/ Z/ Y3 z- s* T
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)2 q2 V5 Z4 n# b3 |
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data). P' n5 w4 ?$ N; z* X! N6 M
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)7 Z3 f3 v  J3 x
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux! V; t1 s3 L* C) D5 Z
50  */, u& {% U  _3 R- N# y% y
* {# C/ {( Y; |6 m1 T$ N
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
6 e7 ]. I) o: e! `9 u  h1 p. Z7 u7 s5 ?
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
! l" Y. E  D' H9 r2 B; @: W8 J* ]7 u0 _8 o1 \5 F
如果需要分配大容量的内存空间:
9 {' `0 \4 w6 z% W/ N1.改动mem_args参数(u-boot环境变量);
8 q- W2 h1 R7 T2.改动双核通信工程里面的: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=
+ I4 a7 a9 G9 B# M4 u$ @  `这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。, H6 R# O$ l  G3 q
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
* h8 w! r- w) w+ `3 y
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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