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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9034|回复: 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端程序起始。0 H6 [# J. E& ^5 ~+ i0 J
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:0 G+ Y* p6 C5 w' Q& v
8 T' t: C+ J$ b4 ~/ U. r
/*
$ ?) s# M# z2 |* F, u: J4 H3 j( a *  ======== config.bld ========
7 M/ e& f* h# T4 ?. Z7 \  k *$ d( @+ B# q3 s$ V
*/
% P( U- c/ J- Z( R
2 p4 ]8 E! z- j. U9 T; vvar Build = xdc.useModule('xdc.bld.BuildEnvironment');/ i& C' _' E4 W! P/ O2 ^: m
& i, g" s  {: R; M$ M2 J. g
/*  Memory Map for ti.platforms.evmOMAPL138, g7 M7 G( M5 _% f1 g; o
*, x* H) ]9 y7 W) s
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
1 |6 Y+ a* l0 V *  ------------------------------------------------------------------------
; t: l. }! O% I *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux8 J' w3 o& O0 W$ b/ d
*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)  a( k9 V- B0 w
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)2 g$ z( h, [1 H# s8 R; Q: S# q
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------$ @; [, a5 @8 `
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
( u3 h  r& K! c% q *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------0 Q' @6 p- J( \3 o! s) q) U+ O
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux  ^1 C  F: t3 M2 q7 r2 |+ A
*/! G. r# e$ W+ L, l+ e3 S
4 k- e, X5 W' |' N9 t; B
var SR_0 = {
, D, W+ |8 C& S5 E: k+ b* a        name: "SR_0", space: "data", access: "RWX",
3 D+ {6 p# X) x        base: 0xC2000000, len: 0x10000,9 ]5 J  |) `/ }1 u: H2 o
        comment: "SR#0 Memory (64 KB)"
; n) {# n* V. q- X/ H    };. q4 `% \0 x5 F4 h) Y" l  F3 {
# V( b+ G" L9 z; c: s2 C- V* t$ G
var SR_1 = {# E/ ~% _1 b6 V$ I: R' J
        name: "SR_1", space: "data", access: "RWX",
0 N) @% l& j, \& o        base: 0xC2010000, len: 0x20000,+ O- h5 O" L2 V, x& A6 ^; l. y
        comment: "SR#1 Memory (128 KB)"
0 d. d! ^' W3 {. q: R, |    };
) s" c9 ~9 p9 y8 E' E+ |# @/ ?5 Z/ P/ |6 p% g
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {) K; y! @7 W4 F6 H
    externalMemoryMap: [1 Y# x) b9 P4 \9 D" M+ j) }/ L# F
        [ SR_0.name, SR_0 ],
' O" ]( C; H1 D- H" q( b  K9 ~; Y        [ SR_1.name, SR_1 ],
: O! v( F- ?6 T: {        [ "DSP_PROG", {
! b) k0 f1 F9 R2 y            name: "DSP_PROG", space: "code/data", access: "RWX",- Q" e" R3 D, b8 A7 P5 Z
            base: 0xC2100000, len: 0x1E00000,
3 w; N5 `/ R' J6 U3 `# o            comment: "DSP Program Memory (31 MB)"9 Q$ L% h6 i$ s$ g/ T) c. M
        }]- G: k" v/ b: U# N% C+ I
    ],/ b# H, v6 `: g; [: x( T* j2 V0 o
    codeMemory:  "DSP_PROG",
5 }5 q9 Z8 d/ v' J0 F6 M% f" J; w    dataMemory:  "DSP_PROG",
1 c! _' Y) b5 s6 g    stackMemory: "DSP_PROG",
/ m0 x4 a$ n' V. o  o5 G" H    l1DMode: "32k",
* q+ k5 G/ G2 s5 x: ^- M. Y1 U+ d, u    l1PMode: "32k",
' R9 Q) D% N7 l* ^; R- ]    l2Mode: "64k", G8 R6 y  j( E- Q
};
  r1 B6 V9 `: T3 V. `5 `/ @$ c
" s. O8 S9 a% q* ]' ]$ G/*$ o, M1 }6 S5 ^8 B7 U% b+ O
*  ======== ti.targets.elf.C674 ========- K* s: @/ g6 V) b
*/  i' f% x0 K% T- C: j) X, A, }5 V
var C674 = xdc.useModule('ti.targets.elf.C674');$ _+ Y. b& u1 @/ W. U+ H
C674.ccOpts.suffix += " -mi10 -mo ";
) S( }) F) ?/ PBuild.targets.$add(C674);
8 a2 D* E0 [2 Q2 R2 u# D6 t
9 I4 o% G, d. ~; C% r- O0 C1 w
; M  \1 k" n% e====================) j- z. K& R3 I1 C+ j* H
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。2 j& |% A; R. W0 u  o: 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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
. }% W  C4 n" _+ s2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL1389 }  l/ L1 Q" p& Q# P& h. D
*: W: @/ o$ g. ~& `; b8 @
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
1 k( U* g  M( D: Q5 d4 j' a, U  G6 v *  ------------------------------------------------------------------------; Z1 S, \, a2 n- ~* Y0 H/ y, N
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
5 p! K; s4 W. |5 a( ^0 D5 i *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
3 l, ~7 X. Y# e *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
& U3 ]* P2 F9 H1 N *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
/ D3 z! U  R1 X8 X& }( d/ V *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
0 T; y! g9 {$ d# z7 h* {) y" g *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------: q& Z% z( C. d2 \1 b9 n
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
+ N  i  i5 ?  B# e# i9 U; ^4 { */' D. i0 E: 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)
' S: m& J  H5 D) X4 ?合并为一块大的区域作为dsp程序的所有空间
% V9 e) e4 {2 o5 D$ H6 K6 `0 g- Y3 O# E
现在发现修改平台文件只要用到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文件显示的地址。+ |( a: v4 z0 u" l0 j

  m$ o8 X" s9 l  Z- E* m/ |目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
: x0 V8 p5 @, a0 @  u  o
0 b8 B, U! D" i0 E% }! R4 c 40 /*  Memory Map for ti.platforms.evmOMAPL1385 g+ v/ q' D" c9 a  I! [' {
41  *# k5 k& g( [) i/ ]4 [1 e
42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory& m/ r) e& S: \* _# C9 B8 ~9 v0 U6 x; K
43  *  ------------------------------------------------------------------------! F) P* q- D% K* |5 J  p2 \
44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
: y) ]1 Y& v/ Z0 V8 Y5 Z 45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
# F" O  i9 Z" G$ t 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
# B0 ?0 P9 z% B2 ^9 Z( m* u 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)8 J. h; T. [- C% F6 M
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
1 X6 s" Y# \$ Y 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux% G4 B2 g4 D% g, T, W& s  Y
50  */
6 y1 L3 w: u1 d" H
4 ]9 C3 \4 X3 A5 h- R如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。2 }6 I3 n9 p0 |; b

# @! H+ E5 m1 Q& H" g* u* [一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。  ?; Z, V% k# o* G4 i( P
% p+ t/ [9 [3 G4 \3 ]3 e: |6 @$ f
如果需要分配大容量的内存空间:9 B8 I7 C, y. Y
1.改动mem_args参数(u-boot环境变量);7 U7 n, f$ {) K) X; B
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=
- m& c( K0 j, `" N- ~# z# g这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。) e& N# J! g) Y7 o
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
' Y! E' D+ _* t5 v, o% |' l) _
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-5 22:10 , Processed in 0.042582 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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