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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9929|回复: 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端程序起始。, g( O- H, \8 }5 x' I* _; o
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
: w% D) [! p  C8 p/ E0 I& G# W# R
8 r) w, H6 i! |. u' ^& u/*
8 K4 y6 [% Y) t6 p. p( \) A1 A *  ======== config.bld ========4 O3 l7 i+ h8 L
*1 J' @$ a! `; e" d! O# j
*/
) ]8 ?* i6 E: E  e8 q
1 N7 B) q, \6 t! r' Wvar Build = xdc.useModule('xdc.bld.BuildEnvironment');5 V3 Z' V4 u* ]1 M! n* Q
: A5 h! z& t  v
/*  Memory Map for ti.platforms.evmOMAPL1385 Z6 f/ g# G8 r
*; }- e1 G1 m6 N2 P- F; _$ Q
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory& m& t0 `# u1 O' _6 P# _
*  ------------------------------------------------------------------------+ F( ~; C) @( B/ L
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux5 E3 R  W4 j5 E3 r1 ^
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)& O* s1 B* F( Z5 a+ R' Q/ H: c
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)3 a( Z, j8 s0 d1 m2 @
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------$ A" R9 L" ?' z( |' u
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data): j8 I2 X- F' [+ F7 ?: t1 B+ e
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
7 l+ e* l% R5 w4 h$ ^ *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
0 @+ J# U9 W& a; X+ l& T# Z, A */
% s& m2 X# w0 \! v/ W
  k" |! S8 j9 o& ]8 I: o! ]var SR_0 = {
$ j( v$ w) Q- P8 D7 k% E        name: "SR_0", space: "data", access: "RWX",8 r2 H/ f  }* I" L! _; \
        base: 0xC2000000, len: 0x10000,3 r& j5 p, r) x3 n, d; o
        comment: "SR#0 Memory (64 KB)"
: k: K+ b4 W+ Z, ^, `7 f    };
9 R8 c7 U0 ?% [* D0 y: B5 X/ D) n$ {+ {+ D; `+ D$ k+ [
var SR_1 = {
! k/ A7 l" M' y7 H% f+ U        name: "SR_1", space: "data", access: "RWX",
' `. e( o; J4 v        base: 0xC2010000, len: 0x20000,
, [, i, {% U* T3 z4 a/ ~$ L        comment: "SR#1 Memory (128 KB)"
! _2 f( T( y. X! W! i3 `    };' n% r) C, c/ D" S7 o
1 [. R' f4 X) p' k$ c! `
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {6 K5 U9 `1 j5 Y! ]- O. p
    externalMemoryMap: [
, |+ F0 f. h$ X        [ SR_0.name, SR_0 ],
; b: W7 N: G# {8 _% D        [ SR_1.name, SR_1 ],. B3 {$ A1 Q, I& a  C
        [ "DSP_PROG", {6 |2 i- p- ]: H. x
            name: "DSP_PROG", space: "code/data", access: "RWX",
) c9 V# f( l2 x3 R' ?' w" c  A            base: 0xC2100000, len: 0x1E00000,
1 k+ D/ z, o$ g            comment: "DSP Program Memory (31 MB)"
  q' t3 O  n% _        }]0 n' `7 M7 V+ w5 G
    ],
/ @; H! `& H2 x! c7 H7 a+ h    codeMemory:  "DSP_PROG",
7 N4 X) L: G" ?7 u    dataMemory:  "DSP_PROG",
9 d' w5 X+ Y3 j4 R( h1 x) d    stackMemory: "DSP_PROG",( z4 T: w! }8 U+ X! t
    l1DMode: "32k",: I' y3 \' T. w0 `9 H% S' G
    l1PMode: "32k",) y( G" x$ k+ e) D+ @+ s4 K
    l2Mode: "64k": G& ~  V% o( l: j# n. @: h
};
5 d% w, c3 y! V2 b- q9 Q9 Y5 t) T* R( X8 X
/*
6 y5 G; ~( z( h+ h *  ======== ti.targets.elf.C674 ========
& X' B$ F: ^+ s' c6 z- K7 | */
. \% e4 f5 B5 O0 X9 Ovar C674 = xdc.useModule('ti.targets.elf.C674');
  {% V  d" S6 i9 ]( J7 R6 |C674.ccOpts.suffix += " -mi10 -mo ";. [  w6 b4 a2 u* D# A2 m, [
Build.targets.$add(C674);( y3 `9 G; P3 D6 N5 L

% a, r3 X& S2 k: h0 A: t/ ^) ~# q, j7 B- n" U
====================
/ l& G0 G. p2 e# y原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。, G6 Y! E7 d3 N
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?' u* X1 ?) O) f0 Z6 r0 |
2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL1381 t, e1 h6 ]" D. v  p/ L
*- N' ]8 R9 A8 ]" T: w
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory: g. O& X6 y0 B
*  ------------------------------------------------------------------------
8 z+ q1 }$ {- z( \ *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
0 J# ?* V# ], I6 Z; Y! G *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)# L7 h7 z1 W' Z4 }) F
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
5 a: I" w& m( M  v *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------  a/ F' P; V) [3 ?! c# y
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)& W3 H8 K, z) n$ |- ]
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------4 Z& G1 v* Z2 x
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
9 Y* [" v( h5 l8 _8 [* R */+ `% F, f; u. Z; Y3 b$ S
如何将 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)% S$ a8 W1 M, L/ Y7 e" t/ ~
合并为一块大的区域作为dsp程序的所有空间
9 w! p0 u' ]# G/ Y+ P/ _$ e
- Z' @9 c  Z3 E9 p4 k现在发现修改平台文件只要用到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文件显示的地址。5 c2 k( W5 d: j$ M" V8 x

0 @; f, @# J) g  A- Q5 E目前将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 p8 Q- C$ _1 {: F" ]

1 g" o! p+ G2 \ 40 /*  Memory Map for ti.platforms.evmOMAPL138
1 L6 g/ W; M; M- q8 R 41  *
( j! p' w7 N, y3 {; X" l# x" W: E 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory6 u  Z3 C& o3 L) X+ k
43  *  ------------------------------------------------------------------------. W9 R" E1 w- u
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux$ y0 a: ^) F8 O9 k8 W% [2 Y
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
9 a7 o3 J+ A3 |1 U: t 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)( S& ~$ q; ^" X  u; O& l' r  C
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)1 t; M: w1 k# v/ w8 }
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
/ J3 j% A3 G: S8 Z" I4 |& {" M3 G 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
% i# H) @' D5 k' a) Q 50  */
7 |( N- `# Y! k0 b. X
/ d' R: i5 b$ Q5 S+ W! o+ r如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
+ o1 Z) e5 x( W7 R. L- u
& r7 n7 `  ^. T$ D一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
; [" @/ B4 [* {  ]" ~9 o$ F* K6 h
1 i/ R; \% Z, }2 h. r如果需要分配大容量的内存空间:
0 d* U6 b; }9 X/ u5 t6 d1.改动mem_args参数(u-boot环境变量);5 s/ B! m/ Q# B$ M+ `9 D$ k2 D2 ^% ]
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=7 ^4 }0 v9 R; M: z! `/ U+ [
这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
6 K+ e  E0 q! V/ a( Jshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效  K( U& y2 L9 U
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 09:18 , Processed in 0.054979 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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