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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9692|回复: 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端程序起始。: Z/ o, t, @! _) b6 h
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
6 A6 o2 L3 t- U7 L3 d( b4 g
, ]7 z$ a/ r( [, {) f2 H- r, i/ E2 F/*
% }' B# ]6 p/ Y- o *  ======== config.bld ========- N  i/ ~) ]/ v( O
*8 `& E7 s3 L$ \
*/8 D3 \2 U6 ?; U+ B& g3 r

( U' q' d! D0 y9 Q3 @var Build = xdc.useModule('xdc.bld.BuildEnvironment');
3 K1 M! u! Y4 `. ]# W8 V! z  e  M
) Z- i0 z* @% t/*  Memory Map for ti.platforms.evmOMAPL1385 _! j$ s8 f) L# Z" P. q
*
0 Y8 X/ T, H1 K4 d *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory7 \# W# M2 A" j- A- B# E9 s( a2 Q
*  ------------------------------------------------------------------------
$ c- `8 N6 X, B* M' T *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux! z9 ]2 G" V+ x! e2 W
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc). t6 d+ s; G. W; ~0 }: G9 g
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
+ t9 X5 r& {1 G. q% T1 P( d *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
$ o7 {! u2 v  G9 M* {. ]3 |" h *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
" L. H  ^1 W" `& [ *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
$ c# u  ^  C. a *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
. g) ~$ Q: f: D( g */* T# P* O9 [  X3 i  [
: V' @4 L+ i3 b
var SR_0 = {6 u' t& E* d- C' l; c1 f; ?* f
        name: "SR_0", space: "data", access: "RWX",0 b$ N# ?0 @* g
        base: 0xC2000000, len: 0x10000,- b! S( ^; Y6 |
        comment: "SR#0 Memory (64 KB)"; Y9 T: M8 k0 y& Q
    };0 d/ W8 [: |1 N0 ?; L. W; S5 i
8 p% n( W  A% g5 W( @9 ]
var SR_1 = {
: ?. |3 c; O' A% L. m0 g        name: "SR_1", space: "data", access: "RWX",% G7 D0 i4 f) t0 z, A6 p3 z: q$ [+ C
        base: 0xC2010000, len: 0x20000,- I4 I, c5 J2 C9 H( i3 k
        comment: "SR#1 Memory (128 KB)"
) G% o6 _- }& t    };
; L+ T. W* \6 H% v7 ]) G+ U. d: p7 C5 B
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {, |7 e- b6 o& l4 ^2 g! G5 |
    externalMemoryMap: [
$ i5 J6 g/ N3 i6 g1 h. C& y6 u) H        [ SR_0.name, SR_0 ],+ T& ]  `, T$ F$ ]) b" W- W
        [ SR_1.name, SR_1 ],; m0 I# _: o0 P/ F3 r+ u
        [ "DSP_PROG", {, q6 J8 }+ E2 j; \. Y* D; I
            name: "DSP_PROG", space: "code/data", access: "RWX",
9 q. ?- B% K% h. Y4 i' c$ q, x% k            base: 0xC2100000, len: 0x1E00000,: e$ F9 i# L% B& K1 x
            comment: "DSP Program Memory (31 MB)"
9 D, w% Y2 C" u. B4 Z        }]7 J) b# R7 l, G- t- n4 H
    ],; t& X9 K, f3 \7 a$ a1 e  B
    codeMemory:  "DSP_PROG",
5 ]" ^/ D5 [9 \  c3 g    dataMemory:  "DSP_PROG",
1 b. S# Y$ }* n% J! H    stackMemory: "DSP_PROG",- @8 ~+ u. }1 {, Q* t0 t
    l1DMode: "32k",
1 g) `5 J# t& F& o4 a2 ^    l1PMode: "32k",: r$ K" B: i2 a1 B
    l2Mode: "64k"; d0 [( q0 U' N* `0 Z
};
! y1 |( B) {: X3 a: w6 q
0 m1 @; K+ ^8 H/*
  o) \- h0 J7 L6 h *  ======== ti.targets.elf.C674 ========
* G8 O( @5 j' d# v5 A& {9 P' _9 y */
4 V$ ~0 h( L$ i3 g6 i3 N( ivar C674 = xdc.useModule('ti.targets.elf.C674');& U; k5 m, W- D& Z
C674.ccOpts.suffix += " -mi10 -mo ";3 h8 k# W. o" A" x+ s* o' {7 B' t# a
Build.targets.$add(C674);- s$ C. O* S) P
( z" v2 _6 k' \& Q* E& b, B( K* Y2 \
' W  l% S1 D3 n, a0 z
====================4 e( u* [$ S7 y/ G
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
! ^2 X$ g  k% [# c" {+ H9 m
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
2 c8 ^/ u0 P" s3 }6 Y' N* u6 g( J, n2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138
$ e; b5 O3 l) O7 R/ l *
$ R/ C  x# Z; j5 { *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory$ f3 |" J* g; S9 t; k6 J
*  ------------------------------------------------------------------------
5 {# ?/ ^. r- `! V# m0 m8 g *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
% A6 v* C& b% d% b *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc), v) ?. i8 D, {2 X+ ^4 a9 b7 ^
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
, d1 {; G5 p+ R *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
# V7 E6 S( I3 K! t: z$ W# g *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)5 o, Z/ D, E8 F
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------: |  `* T3 |$ ~! K7 H6 E
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux5 K" G9 [: J" K& s' g
*/
) h& d  g6 F/ W* ~/ v3 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)
9 T% T% Y! k* ~+ |1 t合并为一块大的区域作为dsp程序的所有空间
) \9 w  o( D: c8 e) W5 G' Z. t
  H" l+ F) N( K0 K! j& 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文件显示的地址。
; p6 \! B6 h' W% _' m7 l) ?, r, ?! G2 o( v
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。% [5 V4 d1 ^1 N5 z

7 A' i# [" C$ T' M8 L9 I! ~, u 40 /*  Memory Map for ti.platforms.evmOMAPL138
' A4 _* L# U5 w+ X. Y 41  *% E6 b# K2 t# l9 [! O  e, Y4 n
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory$ B% _, b4 a% |4 a6 h& k/ S
43  *  ------------------------------------------------------------------------
$ k) P* _6 a1 M5 b6 D1 b' w 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux- G5 ~  ]4 K  P. @: p5 z4 V
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)5 a0 F/ C1 g' B: X- w! k
46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)4 O6 j: k8 Z+ [  n- H& l& B
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
" ^! E; C* o" {2 A+ z* z 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)/ {+ @# {( B. Z! g+ [7 f4 y
49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
1 z% s% X$ Q0 Y. y. }# [  u( s 50  */
6 m" p. K/ \% `7 ^+ c: r( i5 ]3 l
% a" n/ b6 o. @如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。, B8 X5 Z& R0 y7 Q  t
" N5 y) E' U: Y% R( m. {0 B2 \0 s
一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。
3 b7 y% e+ w! K: t
  ?" @. d( M4 t3 q# k) V如果需要分配大容量的内存空间:4 j. d3 _* t7 D  n  i. v1 d7 j
1.改动mem_args参数(u-boot环境变量);; z( a( x4 A; w2 _, e+ E( N
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$ w  |/ k- S; u这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
& V6 o2 M: K- v2 U8 V. x) v7 F1 u3 yshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效3 D- G4 Z. g. ^" J, |) f& Z# j
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-31 03:34 , Processed in 0.050492 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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