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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9690|回复: 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端程序起始。* m  u5 M. K. `
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:2 I$ W1 d% s: e& U
5 A  o) m0 J! l% f3 |6 Z
/*( _1 Q  u- X& R* A  \
*  ======== config.bld ========7 n, w7 B# d' c( M) o
*- F5 m- ^6 T9 i1 v( a3 p
*/
5 R  t; A! J' q, N6 @4 Y7 n* q  u( C1 o  v8 d0 R; Z3 z7 o# a
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
; q* b1 g1 F4 G$ v7 [% P( ^( k7 R: a" d, q5 b% m& H( z  Y
/*  Memory Map for ti.platforms.evmOMAPL138
) t+ T: o" b2 J *
0 T& o4 o( Z" X- }" p/ j2 j *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory) j- G- V! p8 b, _1 V8 W: D
*  ------------------------------------------------------------------------
& g; N6 Z2 P( [0 l+ _! t *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux! o2 M( U- _! k  e0 t: _/ n
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
3 V: r& G! h# z. W *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
1 `' w- ~% i5 [% ~, t *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------( t% a6 O) K+ a+ j; m$ ?
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
" V" O: i5 X: \, ~# @7 b+ J *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------4 `8 G$ R: Q" [! c* w8 i# `
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux+ X/ Y' M3 W6 o4 _/ V5 [
*/7 G: w+ R: o( u; W) }

/ Y# m4 H9 z$ p/ y5 s% bvar SR_0 = {- i% z- @2 |+ k) k
        name: "SR_0", space: "data", access: "RWX",
' H3 z/ d2 i1 M# V7 k        base: 0xC2000000, len: 0x10000,( W. f/ @0 A1 @2 x6 _& h
        comment: "SR#0 Memory (64 KB)"2 u, b4 {6 w' a. {6 P5 |
    };# E$ ~8 j  r1 q+ g. m# P

& k6 r% v. Z5 M" B# j# |2 c2 jvar SR_1 = {4 S8 L, F( G8 e, l7 w
        name: "SR_1", space: "data", access: "RWX",5 O8 O1 y) w' e/ ?# C
        base: 0xC2010000, len: 0x20000,0 Y1 u* T, Y& j& z' N2 P- z9 n
        comment: "SR#1 Memory (128 KB)"
! q/ N( W6 f, t    };. D0 T* T1 o  M
" [0 i# [: j' p6 g) y3 `
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {+ ^: A& v6 S. o+ [
    externalMemoryMap: [
) D( b7 `8 g6 v2 A( R! r        [ SR_0.name, SR_0 ],% J% j0 v0 z8 J* D+ ~/ d
        [ SR_1.name, SR_1 ],
+ P1 g% {4 \$ {# Q% M4 ], C        [ "DSP_PROG", {
# Q1 J/ F! y5 o7 k6 R: \/ k            name: "DSP_PROG", space: "code/data", access: "RWX",$ Z# R, @2 \( j+ a- ?+ E. x! r
            base: 0xC2100000, len: 0x1E00000,% h" e4 E2 r- G% u  r
            comment: "DSP Program Memory (31 MB)"
" o0 s4 U; u. u- P! A        }]
) J, z) S: I% Y    ],
4 @# Q. W0 ~- d: u% @$ A8 w) c    codeMemory:  "DSP_PROG",9 d2 ]' r4 P0 i* @- F% `) [! q" K
    dataMemory:  "DSP_PROG",' F. t7 p/ a8 |6 w
    stackMemory: "DSP_PROG",
% S2 w2 S* L1 c& }) H* J    l1DMode: "32k",6 v) j$ Y- o- a8 U* a+ B& Q
    l1PMode: "32k",
; R' L; X( A( l5 ?3 n" ^    l2Mode: "64k"
' I; a% d" M8 i9 b# V1 b) I};1 b7 h) a7 O8 k6 b

" _1 I; |* i- Z8 L1 O, P' H/*
$ e& _1 N7 p" I. w" f  ~ *  ======== ti.targets.elf.C674 ========
9 I% ?- n" C( x' ^! F$ b1 d */
5 Q# k9 `% y) {& t2 Xvar C674 = xdc.useModule('ti.targets.elf.C674');( ^4 {; q7 M" T& f' D' ?. e* r. n5 g
C674.ccOpts.suffix += " -mi10 -mo ";" H6 i+ V+ a" F0 n
Build.targets.$add(C674);
" B: J' [( W" _/ L" ?7 k5 z
7 o  n0 Q4 ]/ z
9 }8 K4 Y' I  d; s====================
9 i" _4 W( Q) Z+ J8 [2 P' e. U! ^7 H9 B原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。. M4 U8 H7 x/ K; n- e- r. ]6 b
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?' W: c. w" d- V  a2 k! p7 b
2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL1387 {# z( R7 V2 ~& Z" y# C# O; M' z
*( c9 b, u+ @) c; ^3 F
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
6 ~# E* h4 J) ^5 C2 F; ^ *  ------------------------------------------------------------------------+ t" A# O9 g2 @" f
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux  [% ~; i" l/ A
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)( h, W  m% l: j4 z+ ]) u
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
( H) C/ L2 G9 u8 U *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
% H- \+ `* O9 e! ~) y9 X( n *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
* r& I- y  P1 S# N4 s  n7 N *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------, @" q8 R& i, f2 q: l  F
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux0 w  q( Q) @) d: M* u2 c% {' m4 @
*/# u0 k) {5 d3 {7 Z+ P5 u3 p! z$ q
如何将 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)
2 `# l! Y5 ~7 J( c3 o! Q合并为一块大的区域作为dsp程序的所有空间0 f: }$ i) I" K. u& @5 d; a5 m, _
0 q$ [* A0 U8 u. E" 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文件显示的地址。
3 ~' [4 n' p' M& w9 P6 l# Q- S6 v  _9 }3 v" w
目前将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/ m- \8 b% N. W  `3 \+ r* t/ f4 ~- U& k( Q/ X+ |
40 /*  Memory Map for ti.platforms.evmOMAPL138
5 M7 P' W$ N, Q  @( l& E 41  *
0 L3 ]) w- J' L* r0 k: G% F 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory: V; \4 R, y% ]7 @) w
43  *  ------------------------------------------------------------------------: r# H# G/ x; Y/ u" v% ~
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
0 V  x0 j8 G/ F; n+ N# R; B- X 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
1 y5 l- u8 E+ J/ b; v- C- y# c. J0 V 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)2 W2 y% K/ l- q$ u
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
) a1 f$ Y3 C8 X8 i% Y0 s! N 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
. U; ^6 v; A  P. V$ b 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
4 @0 p' h7 X# {' S9 Q2 C0 r 50  */0 S+ ?, U1 b2 h0 S. a7 R& O  }& k

2 y1 y+ l+ q4 J$ }) I如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。0 q+ c" P, g* b) `3 ~, E

0 _& H) R3 Y* _一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。- N& L$ f* Q2 x% o( J8 ^

" q9 J$ q9 f- w/ I6 I9 v. I  z3 ~. j1 y如果需要分配大容量的内存空间:1 y# E* {1 A9 j' u+ \* N  c
1.改动mem_args参数(u-boot环境变量);0 S/ y3 z" ~2 h7 A; h. {
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=# I! B0 ?1 ?& T* o. T
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
0 _. u* w9 H% J4 b* Oshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效0 o) A) @3 T2 |
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-31 02:09 , Processed in 0.047487 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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