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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7003|回复: 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端程序起始。4 a# r$ N' j3 n) b+ d
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
9 Z; }% c8 X( X7 R# P) c4 i7 r! `0 g0 E0 _
/*. ~1 \0 g( {$ O4 M
*  ======== config.bld ========
5 G- e  {! I- {7 @ *
, ]: K; u. Y  m* _4 a4 K" r */
; b' Z( }* Y0 `, O8 }5 M7 n$ \& _* J! D/ v7 m' W+ d# p8 t
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
. B* X% [! m! q
" N7 o/ w" R, r/*  Memory Map for ti.platforms.evmOMAPL138
- E; A8 n9 E, U *( j. I) ]6 J/ E  }$ |
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory- s+ u8 Y0 u3 G4 ]. o* E- m' H
*  ------------------------------------------------------------------------
& y. I1 ~1 g+ Q. n/ x. c( m1 _ *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
8 S: q; G6 z8 L *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
2 U: I- q! m% B1 H, [% t *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)4 \) c6 K. r# p* R  w  w
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------! t% A. `  {' S9 B. J5 ~0 v
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
3 _; S' }& e' H4 o9 o( n *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
" |& n+ u, Z8 R; | *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
' s' t! y/ X% a; \$ J */
+ E& r. E* C3 e) r& M8 [7 b1 ^+ `: A" ]
var SR_0 = {6 {5 I. `! O+ P5 X- w' E2 M: ~  Y( h, c
        name: "SR_0", space: "data", access: "RWX",
- a8 L3 m  v' \5 {        base: 0xC2000000, len: 0x10000,5 t$ y' P7 B1 X# B
        comment: "SR#0 Memory (64 KB)"0 X7 I' G" Z+ {! _/ a3 w
    };
7 p$ r$ p/ ?! f  O3 H) B! l7 `, z  r  W5 e* e
var SR_1 = {
) ~5 l5 f" I9 Q0 s        name: "SR_1", space: "data", access: "RWX",& e1 p  z8 I& N1 s8 V, E! m
        base: 0xC2010000, len: 0x20000,
" X3 C1 q& O" B: i        comment: "SR#1 Memory (128 KB)"( u9 o  N3 J, t4 b9 e
    };
7 B! y( j# y; B2 b$ e5 J8 d1 {
8 i6 @8 e) }' m! w2 q' y, YBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {7 }, f- m7 q  C5 _# r
    externalMemoryMap: [
: B! `- f' O/ b. z1 U% d        [ SR_0.name, SR_0 ],* Z: M  J0 J" X7 x5 ]( v8 q6 e7 B- q
        [ SR_1.name, SR_1 ],
( f+ u3 J# h0 h) G$ b$ r        [ "DSP_PROG", {
$ [# r; |, u! |" @% J0 L            name: "DSP_PROG", space: "code/data", access: "RWX",; V2 W8 h6 D! k' i! M
            base: 0xC2100000, len: 0x1E00000,9 D5 m0 R: o8 B# J$ c
            comment: "DSP Program Memory (31 MB)"% Z6 j" X: x- `
        }]
/ M. R+ {3 t0 r0 p. |    ],6 t$ E" J  w1 U% Y4 J* H# X
    codeMemory:  "DSP_PROG",
6 s1 P: o# _9 u: L* v$ S    dataMemory:  "DSP_PROG",3 i2 M- k' T) s* {! e
    stackMemory: "DSP_PROG",6 T) n# o# v1 D6 L6 ]" z) Z4 S
    l1DMode: "32k",
- b6 \% I9 ]0 S- j    l1PMode: "32k",4 }$ r$ Y% b/ a0 R  h3 i3 L
    l2Mode: "64k"
9 E5 ^. b* s9 e, [' ]) y};$ p. g* X; f4 o; b
# z+ q$ ^4 s4 a' @7 O9 D; ~7 A
/*
% y; v# p: U& o9 p *  ======== ti.targets.elf.C674 ========
* \2 f; {9 h2 Q$ ~ */+ e: Y' p" O# \6 Z6 M5 v9 Q
var C674 = xdc.useModule('ti.targets.elf.C674');
' u7 ^) J2 F9 j' |: VC674.ccOpts.suffix += " -mi10 -mo ";
/ V) O4 R% c+ o* I8 ~. oBuild.targets.$add(C674);
! K6 D# `# u2 a" Z2 E( N9 X( j1 N" v! v7 u( r" L

2 }2 @* M/ K' R- z! |# U1 B  L: n====================
8 v" C) ?3 j/ s. p2 o3 O8 ?原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。1 a+ ?: a- b7 Z4 l6 I& T
分享到:  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, F6 ?5 ^$ f. n* u# o; E
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
% m, c5 H) }7 l- O, f0 I *
* e0 n% `: B5 I  f5 o *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
8 r; k$ A" ]& Z& e5 A  l0 ]: F *  ------------------------------------------------------------------------, z$ ^$ T) i; d  a6 T) z
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
$ Q) W5 {. G. w% u8 R& x *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
9 L7 R9 e8 F( F4 o% ~ *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
; g/ X* v' R  a1 i *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
# m/ x4 M' s/ N% T0 m& P, \2 H *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
% D1 y/ }1 o; l8 y$ z3 D *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------+ k" ~/ T0 ^0 V
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux" T) i# \3 m, w: G9 K. E! a! n
*/
  H+ |2 c! h# Q* v/ C5 ?如何将 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)
9 Y$ C# @/ ^: M( Q$ Q/ e4 z合并为一块大的区域作为dsp程序的所有空间% z; L& j  S$ E& H5 ~
4 J- Z8 r5 y  a
现在发现修改平台文件只要用到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文件显示的地址。
- |" q* }$ n2 D4 x# B" `  P
$ l% A. b. }2 R9 |8 s5 P目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。) g. \* B5 h, B- B) v! H6 j5 R
6 U7 Z) v2 x0 B' ~! k% q
40 /*  Memory Map for ti.platforms.evmOMAPL138
4 h% n) C. O& V4 k, p5 g. T; x 41  *: q% |$ V3 |* v! M
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
0 M' w6 b8 n' T; S  e2 }  K3 W( R 43  *  ------------------------------------------------------------------------
/ Y1 `2 ]8 A8 k+ T+ u  I 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
9 G9 v' c3 r1 n5 e 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
. n( a3 s  ~5 c& }4 b 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
8 c, g2 Q- m  @7 w 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data), m1 S1 i7 l$ i4 D+ |* [% K
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
# D9 A, k+ S2 `7 o+ l 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
8 j( c/ V6 X3 v# H8 t5 D# K3 T# z 50  */
  n( o( W. [7 Q3 s: J
! @% O  f3 e8 m+ F/ W! f/ \! D如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
% T3 P2 H1 m; [4 f1 P
$ C( [3 p) W& y0 h% |9 f一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。' [9 Y. Z+ W1 A; O7 L- w

" P( e3 x1 G+ ~( ~如果需要分配大容量的内存空间:7 J/ B, G4 o# z# g$ ?0 O
1.改动mem_args参数(u-boot环境变量);: g: h. l' J% q; K2 C, @: o
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=8 u; n+ u; ^, S0 Z; `/ [6 H/ m
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
1 X: E6 `% \) Yshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
2 v* m0 ?1 E% t
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 05:47 , Processed in 0.040716 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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