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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9035|回复: 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端程序起始。
( `. _8 M  i) _; k' X+ ~    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:% Y5 l- q% ^& [- Q) k( D; d# P
" t. c6 x+ C# g% _
/*
) ~6 A, d1 s& X7 {1 i *  ======== config.bld ========4 W0 D) W' ~5 V0 ]( j8 f) a( u
*, R; U, h6 D, R2 p5 V7 X, x2 l
*/
# J' T4 V, r4 ^" i2 ^' }4 M7 C- k' @" a& ?7 B$ d
var Build = xdc.useModule('xdc.bld.BuildEnvironment');2 I* C3 P8 J# K

0 |, x/ `* a+ O  Q1 v5 W; A/*  Memory Map for ti.platforms.evmOMAPL138! p7 b. y& r3 k& o7 a  U' ^
*
; x5 R  J/ o: {6 E0 k6 @ *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory. p$ M" c: J& b! ^, o
*  ------------------------------------------------------------------------
9 q* R" `+ r+ V! u3 ~" ?& | *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux& f- h: O' g; x2 Y
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
8 b1 e) f7 p. f% E# T7 J *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
/ n) X& _8 J; T0 A6 Y1 P *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------% i- u( A8 W& [; Q" Q' j+ W
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
$ ], W4 J) g/ u0 c5 e *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------  k, \" p" r3 N* @
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux0 W: S- o0 m! r9 _2 c" @- d
*/
) S  h4 ~5 L' ]% ~: p0 ]4 K0 e9 b6 V7 w4 s
var SR_0 = {( l& J9 b. E/ t
        name: "SR_0", space: "data", access: "RWX",0 A  p. ~$ i8 I. o7 L
        base: 0xC2000000, len: 0x10000,  x2 O# L. b8 k; a- ?
        comment: "SR#0 Memory (64 KB)"# ~* I- }  ]  Q7 y8 j- ^0 U
    };
; X6 {3 n# ?2 w- \5 c0 o% H! I. Z5 Y4 D. Y
var SR_1 = {
% N8 ]+ I( V8 L' j2 N$ L) ]( e) \        name: "SR_1", space: "data", access: "RWX",# e' @; [( w1 U8 o5 D$ a
        base: 0xC2010000, len: 0x20000,
$ z) ?: K2 k9 n2 X% Q2 }7 R- c6 e        comment: "SR#1 Memory (128 KB)"$ F0 y7 [: X( i, f, `. i; m! d6 x
    };4 u7 n+ \, t  u+ s9 M, a/ s

# Q! p1 s# G4 I; D% z9 b- T* [Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
3 [) X8 C) ^( O0 l3 }2 v    externalMemoryMap: [9 y; a5 @" o9 M9 @; P$ \/ y3 N& Q1 z8 X
        [ SR_0.name, SR_0 ],. H5 o( r' \7 {/ t3 i; T, m
        [ SR_1.name, SR_1 ],
$ ?  M1 q6 ~- b! V! U0 B        [ "DSP_PROG", {
& {9 H6 u& ?. [) E            name: "DSP_PROG", space: "code/data", access: "RWX",
' m5 c* H- y- U+ f$ _            base: 0xC2100000, len: 0x1E00000,
8 C% ^! e5 x5 w9 ?" o0 a/ `; C* m. |            comment: "DSP Program Memory (31 MB)") |$ v8 H( @: P, L; Z# T% m1 W
        }]/ Q$ |9 H( q, J& B" Z" c+ I/ y
    ],4 K! D$ a' o, v
    codeMemory:  "DSP_PROG",' ?1 P$ X2 P! `7 U' E
    dataMemory:  "DSP_PROG",
) f- W* V  |2 ~+ o5 O    stackMemory: "DSP_PROG"," A- T( Q: f4 l% ^' C
    l1DMode: "32k",
6 Z1 V" r+ E, N0 ?0 x( K    l1PMode: "32k",
+ o. G0 W  l  s0 R: ]5 X  y    l2Mode: "64k"4 Z% [" }" v5 w1 T; ^: [
};% F/ }6 |1 e3 E4 P
6 w* }: o# B- @# K6 {/ ]3 ]: n) Y* ?
/*+ H) m: ^" E6 f; T
*  ======== ti.targets.elf.C674 ========
+ n* |; _- k2 G% j */
: u9 x/ j6 a8 K" S1 P8 R& G# ovar C674 = xdc.useModule('ti.targets.elf.C674');
  C3 b& b2 k( ?$ zC674.ccOpts.suffix += " -mi10 -mo ";
; S# G' e7 f; K: I. B6 UBuild.targets.$add(C674);
: f  q& L2 H% k% [5 \4 Z' Z6 w
4 X) a3 t( n9 _) P4 ~* m! W+ J8 w! j2 Q
====================0 L- C1 N; Q- g" o) ]1 r
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。+ b5 O0 G# Z5 o" m5 t- i" F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
7#
 楼主| 发表于 2017-5-31 15:55:12 | 只看该作者
这个问题是和http://www.51ele.net/forum.php?mod=viewthread&tid=1872&extra=
% r, r+ Z) h' e( u/ n8 n这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
& d! ?; R5 Y( n" d/ f) V, \share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
% N" D+ S: ?8 E( F: |, x
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
6#
发表于 2017-5-23 17:31:09 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
8 _% T: n9 z1 b: f
- I, w4 F8 y- e5 E 40 /*  Memory Map for ti.platforms.evmOMAPL138* C4 L7 D0 C6 }4 j9 }
41  *
& l, ^- Y; D/ K; E' F 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
5 V1 h. W0 p9 O! l 43  *  ------------------------------------------------------------------------- S1 N- X: r" U
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
1 Z/ D% e  X7 ^5 A; z( M& c/ @; b9 S2 c 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)4 p6 c8 t4 L* S8 h1 c
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc). @: B) f1 r" Y; ^
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
  e' {) d( W# X. f4 Q, G5 g+ e% x% k 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)  W( M, C  h& ]- I' X7 I
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
7 V' {$ ^/ F; b+ c3 Y; m 50  */
2 m, P3 x. q# {# \+ n7 w6 Z( H
7 }- N3 }0 O% C6 T4 q1 c9 T如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
1 K0 @& y0 ]9 D. ^" B
! q' `& G* ]9 [! |- d; k一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。; [: c1 U9 e) ]6 s' ?7 H

& ~# E8 T0 S9 ~如果需要分配大容量的内存空间:6 M( [/ A( c, f; @5 {8 z0 G( I! j
1.改动mem_args参数(u-boot环境变量);
6 F7 q0 u; f( {2.改动双核通信工程里面的:shared/config.bld和dsp/Dsp.cfg文件。
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
5#
 楼主| 发表于 2017-5-23 16:53:03 | 只看该作者
发现slaveloader的list map就是编译时的map文件显示的地址。
" U" Y8 }1 ]$ B# ]; I" U3 q' v3 ~5 P' W* ~8 u8 z
目前将dsp的地址由0xc3000000改为0xc2100000(或0xc2800000)起始,编译之后的程序,arm端和dsp端的ipc建立不起连接,不知道创龙这个还需要修改哪个位置?如果是c300000前面8m和后面c3800000起始的8m一起使用程序没有问题,这是为何?是不是c3000000前面的地址在linux端有什么设置啊?
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
地板
 楼主| 发表于 2017-5-23 16:16:08 | 只看该作者
请教这个slaveloader的list map怎么阅读,同时这些内存入口定义在哪里?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138
$ p: }6 c8 X" s: ]+ o' C *' _; K# D3 J% R2 ^( y
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory! t1 p' s( q# Q/ {+ S
*  ------------------------------------------------------------------------
4 t7 ?, N4 V: z" N! `5 z% Z& K *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux! ?* f/ e9 v0 m$ ~5 @3 }' L3 }
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc). P% t3 X/ Y1 j9 X
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)1 d) f' t, B$ f; [4 k/ N' P9 u
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------, o4 n. ]+ ?+ d$ w! e* w
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)5 V4 G6 W, d, F1 L. {+ Q% T% `5 U. x
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------( i$ k/ ]: g( m) s; `( P
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux9 C3 @0 a1 n' z
*/
5 r" u8 ~2 F+ L( k/ C7 w如何将 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). l2 [) H/ ~) F4 ~
合并为一块大的区域作为dsp程序的所有空间0 h2 A: W4 b# _3 ~  x# J/ s

- S& t3 P  @1 v) W# n/ H1 M% n现在发现修改平台文件只要用到0xc3000000之前的空间就出现arm和dsp之间的ipc相关都出问题
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
沙发
 楼主| 发表于 2017-5-22 16:44:41 | 只看该作者
1、直接修改config.bld的DSP_PROG,编译出来的文件map起始不是设定的0xC2100000,还是0xC3000000,为什么?删除了这个文件,工程又编译不了,这个文件有何用?5 c1 Y. D8 F# H/ b" a, y
2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-6 00:13 , Processed in 0.045466 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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