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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9923|回复: 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端程序起始。
) F- k7 ?. V: k- V    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:
, E. o" x- x  k7 d% @: |
3 f2 Y& X$ a9 R) o- ~/*
% U" f" O! [& l' ~  @- L *  ======== config.bld ========+ b- Y6 ]* a6 @! e) l1 r, u
*
; M1 `  m6 u' o" K5 F */' o7 \) U/ q8 B2 s3 U6 U" B4 }
: ^0 w# F- B  V
var Build = xdc.useModule('xdc.bld.BuildEnvironment');/ `  R- K" g( e+ v
1 L& G/ c& S" D; m, n
/*  Memory Map for ti.platforms.evmOMAPL138! R3 \7 _) g7 @2 x& r  q2 k* K) X
*
& o2 J) S, n1 z2 ~5 z *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
' P3 v% i: ^% n5 w7 w* Z. Z. \ *  ------------------------------------------------------------------------
6 Y3 a" V% L2 y9 W3 n *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
; c1 u: T) s9 s8 S+ _) t3 l( v *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)2 b: ]0 M  g  A4 X" D! I
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)3 [0 x- b2 O" E, o! a4 @
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
  v8 t0 Y/ r& t. O *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data); c+ a) Q; M. X( P1 L
*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
# a2 _8 M0 p. K% v, P *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux" L2 x/ h& t2 X3 {! \
*/, [2 C, j# {* Z0 E
2 e! _, I* y# X0 z' G( n' v3 X
var SR_0 = {
9 V5 T8 c8 {9 v% d6 J        name: "SR_0", space: "data", access: "RWX",
4 L4 N% b# C$ r3 F$ v2 W        base: 0xC2000000, len: 0x10000,
, w" V' e+ p/ k" G( @        comment: "SR#0 Memory (64 KB)"$ X- o4 N3 Y+ y6 o$ L
    };
+ L0 C2 n  [8 o$ v
7 n6 W8 K9 Q* g8 k- v! {var SR_1 = {$ i5 G' Y" C  N1 q
        name: "SR_1", space: "data", access: "RWX",
% D8 [; X- Y8 a, N: H) I        base: 0xC2010000, len: 0x20000,( v9 ?8 |/ r  k8 @9 W: G' w, i; K1 i
        comment: "SR#1 Memory (128 KB)"
# C" O& |' J3 {! R    };
' E. q* v* g5 u6 `- z: ]* M; l5 w* b3 i7 i5 n- v5 K9 b
Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {1 o) u' q1 i2 m: S
    externalMemoryMap: [
4 D$ z5 S. `* S0 i' Z; {6 P! B        [ SR_0.name, SR_0 ],
9 E, ^  @, U& N# Z6 }0 p, u" m! g        [ SR_1.name, SR_1 ],
+ W8 j; {8 F7 c& h$ o        [ "DSP_PROG", {
3 o$ C) u6 ^" g5 F            name: "DSP_PROG", space: "code/data", access: "RWX",
  u0 Y* Q  l( W6 N: \8 i            base: 0xC2100000, len: 0x1E00000,
5 |, I2 l: \: \0 L& ^6 b            comment: "DSP Program Memory (31 MB)"* d) q1 g: A+ w  K" W
        }]* q+ ~* D0 u- Y7 I& {
    ],
9 U# e% O$ w* A6 D9 U+ R; C' ?    codeMemory:  "DSP_PROG",8 I- y4 N/ Z+ F! i
    dataMemory:  "DSP_PROG",& i- W6 L9 {- ~( ]
    stackMemory: "DSP_PROG",9 U5 }) o* U  R( v+ v4 u+ w8 h1 \
    l1DMode: "32k",
: ?) S% E* P4 }. R' W$ }( ~    l1PMode: "32k",# ^& c/ C- ^$ `0 @/ p6 H' S2 H
    l2Mode: "64k"
2 e) q& I" j" c' O- t};, c/ w& X8 Z3 M" }& S
* x6 y) ?6 \4 j
/*
3 M7 n) {1 x5 P, S% t; e8 w *  ======== ti.targets.elf.C674 ========
- w0 a1 |! T  A2 s6 f* h */6 G9 n' y. O4 }
var C674 = xdc.useModule('ti.targets.elf.C674');" a3 D7 P1 F8 [, z% p4 Y0 N
C674.ccOpts.suffix += " -mi10 -mo ";) y- B9 E- d3 j- k6 r9 g' C
Build.targets.$add(C674);5 Z4 P7 I7 d! ]5 C. X

* Q3 {- U& L  e. T6 e$ F# D3 y; Q) i# S
====================- O/ ^7 _/ M$ h
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。" q8 s( q+ G. v+ Y+ @. L; E) H
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
* d: S% M) v+ t! l8 V* N1 v4 O5 m0 |2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL1382 u) A8 k1 p+ G3 J4 Y
*2 [  g* f. Q3 @8 M7 S/ U
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory: E* @0 K) N0 ^& ^6 N: r7 @8 {
*  ------------------------------------------------------------------------7 W/ K$ Z# ^" \  ]+ e1 a
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
. M+ I8 ~8 Q3 m  M6 i$ T2 z *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
4 J' c3 A/ E* ]& w. a *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)( a' k' I. A! x) S* o0 n2 F
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
7 B- T9 T0 j$ R+ y8 Q *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
: t, H/ U# k+ Z  N& ^ *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------
% V  R+ o' I# R( V5 V *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
; g# f" f- l% `! C' X9 n */: ]& Y1 {1 d, W# |$ I
如何将 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). n/ c* k" g! |% F; k0 S6 D
合并为一块大的区域作为dsp程序的所有空间- o: l7 H8 q! W, i/ ~4 ?5 A7 n- R
$ w, Z9 U6 j$ r" Y) I  L# L/ J
现在发现修改平台文件只要用到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文件显示的地址。
1 I1 j( W" \1 R6 O7 d- m: N
1 f1 M4 \5 w. r. A目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。. G6 v) Z4 s2 `: }* B/ O

/ A. f) ^4 Q& e  v0 l+ u5 i 40 /*  Memory Map for ti.platforms.evmOMAPL1386 o8 j. e8 h) f; o( ?& B
41  *
3 J* _. C: o; z) R 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory3 s  q/ O. V9 j, o. t' B
43  *  ------------------------------------------------------------------------
" |) s0 u0 S/ C/ Y6 Q+ b 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux$ ?- N  W0 i# v& D1 a1 E
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
: F" r3 J" t+ K: o6 u/ f: }1 Z 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)4 `. P. [+ P0 v$ t( n6 e
47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
5 m% @3 l3 u# g) L 48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
5 p' A+ }7 e# g' _3 z 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
) W: H. L" z" J6 I5 k 50  */
- C. b+ x; o0 g. {7 B
1 \9 P0 _/ ^* t2 Z& n7 M- `如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。! |& T' j) z4 w" x# d" H

7 p( q/ H; O- G- U% f& l一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。! @& a. e8 f& u

% h% O# Y9 V/ M+ }! o如果需要分配大容量的内存空间:# B! N) q( u% B0 b; {
1.改动mem_args参数(u-boot环境变量);8 V+ i9 @4 Z6 A4 \$ a  F$ z4 K
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=
3 E' T  ~: J% P3 i这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。
. Q# {* n/ J4 b# g" sshare目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效
# f( r2 G% B9 o, `5 [3 ?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 06:24 , Processed in 0.043783 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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