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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9928|回复: 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 ~& h7 |+ s8 a( {
    板件使用的是创龙的核心板,linux系统是创龙提供的系统,dsp端程序使用的是例程hello为蓝本重新生成的rtsc工程,使用c++,其中的bld文件如下:  |; Q3 K! G4 ?3 Z% A
' S& V9 U$ Q+ W6 G* e$ n
/*
2 N( ^: ~  S9 P: O9 K *  ======== config.bld ========
4 k8 _. G9 e: O& }, q *
. q) w# z5 M- \8 D; S1 u  ? */
; I% C7 m: c5 a7 u( a. M: q3 p0 g( j  }
var Build = xdc.useModule('xdc.bld.BuildEnvironment');" F+ ^3 y' p) s1 H1 Q
! `. G8 ?) ?! n& F7 L. c: W
/*  Memory Map for ti.platforms.evmOMAPL138
/ p3 _' V" [/ \. N! ~2 ~5 b *
: f: \  A( R( ]: g8 z *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory9 W9 C( [7 T4 b/ S+ C8 ?
*  ------------------------------------------------------------------------) g) H! t3 f# _9 H/ E5 P( H
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
  ^0 w* s+ b. B *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)3 {3 i4 g9 K9 k4 V
*  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)
/ U% Z6 `$ l" @$ m" A *  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------  O7 e3 T3 E9 j. C
*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
9 I8 t7 d9 v4 h2 r& x- A *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------0 N1 F4 Q" w% {" h! q  [+ Z, d
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
2 F$ I/ O, j/ k- o9 T) k4 j  o */
- T  t4 f  n; R/ [+ Q" g; J
# a" Q+ h) r* k- }/ f" Fvar SR_0 = {9 R  c4 U( v0 F. l$ T
        name: "SR_0", space: "data", access: "RWX",; G/ Z5 A- N$ s, k
        base: 0xC2000000, len: 0x10000,
. H1 F' y- W$ i9 q3 X3 @) q        comment: "SR#0 Memory (64 KB)"/ m+ m! F# @$ R- r$ `( S! a/ i
    };
7 K# ?6 F( f# t9 r7 B- B7 q1 P7 u  p* M5 v% l3 _. T/ X
var SR_1 = {
( f7 @3 o* B5 y/ t        name: "SR_1", space: "data", access: "RWX",
6 F$ K$ A  ^: t, A0 r% {% u5 m& F        base: 0xC2010000, len: 0x20000,7 s# [  g9 i8 R5 i# |
        comment: "SR#1 Memory (128 KB)"7 w- f8 Y3 p. w" y+ l2 L9 J) Y  f
    };
. i+ ?! q+ i+ y, c
. X5 w2 ^! R) H4 h# ^: {; eBuild.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
+ w3 D8 E: I$ A6 P3 T. E3 d( k    externalMemoryMap: [' g% q) \, P; D; r: Q) j% c* l4 t7 Z
        [ SR_0.name, SR_0 ],
5 r& |. t$ h& \3 Z7 l        [ SR_1.name, SR_1 ]," b& o4 M* v( N2 D
        [ "DSP_PROG", {
3 @1 e# x% }& P- b0 Y& B0 u! |; N+ H            name: "DSP_PROG", space: "code/data", access: "RWX",/ r9 e! O4 z* c  K
            base: 0xC2100000, len: 0x1E00000,& ]. n! Q5 c/ ^, }+ Q% y
            comment: "DSP Program Memory (31 MB)"; ~, v% C) ]1 A% x
        }]
: Y1 V, L3 n: B$ y    ],
$ }1 {) k2 D( d! W* F1 \# U& v    codeMemory:  "DSP_PROG",, `; P- D5 T  k5 y) {  Z
    dataMemory:  "DSP_PROG",. }4 y" h/ w* ]9 i- I' ]
    stackMemory: "DSP_PROG",
% j& `" w/ m, Y3 u7 q! u, L    l1DMode: "32k",% ?5 {7 O2 W8 d8 ~1 Q
    l1PMode: "32k",
- X9 u. s; R1 t$ F3 X$ I    l2Mode: "64k"$ w2 v' `9 S, a% i3 r
};
1 Z. _3 x/ d- b! U# b
3 e8 M& c1 U, r. D/*
& [( B! P! l0 ~! F) `0 L+ K *  ======== ti.targets.elf.C674 ========& H0 O4 m8 q& ^
*/0 B2 b* n' V4 {1 X) K# _+ \2 _
var C674 = xdc.useModule('ti.targets.elf.C674');
& ?) V$ ^4 d" c4 q) h% a3 fC674.ccOpts.suffix += " -mi10 -mo ";9 U2 `8 t- y# U: m  n6 ~; m
Build.targets.$add(C674);, y$ c* j" b: z

+ H8 a. \8 R( _: I# O( g/ h& f4 V. N3 d# y  j
====================2 t; c* O- b: p6 f0 T  A8 d
原来DSP_PROG是0xC3000000起始,8MB长度的,现在因为需要一个比较大的缓存20MB以上,所以改成0xC2100000起始,31MB,但是编译之后,好像dsp启动不起来。重新修改了rtsc的platform的DSP_PROG的起始为0xC2100000长度31MB,程序还没有修改,还是原来的代码也没有增加缓存相关代码,只是调整程序空间起始和长度。不知道还需要修改哪些地方。
! ]( g3 p8 k- `' m. {2 V$ _2 c
分享到:  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,为什么?删除了这个文件,工程又编译不了,这个文件有何用?
5 b7 a2 Q" g# `  a2、修改platform文件为0xC2100000,编译是对的,但是运行的时候,发现IPC出异常了,arm端连接不上dsp创建的ipc,请问还需要修改哪里才能正常工作
回复 支持 反对

使用道具 举报

9

主题

35

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-5-22 16:52:35 | 只看该作者
/*  Memory Map for ti.platforms.evmOMAPL138# A, |3 z! H2 P9 j, p' z* }: O. G- Q
*) u' S3 D" P$ g( r) M
*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory) I( z! M/ s) ^- [3 ?% E' A/ J
*  ------------------------------------------------------------------------- Q& [- J2 T; W$ Q/ e" \+ X8 U
*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux
" U5 q, S0 z0 n: I- ?7 c *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
" l/ t( }1 d5 T7 Z8 u6 Y7 F6 B *  C201_0000 - C202_FFFF     2_0000  ( 128 KB) SR_1 (data buffers)' x5 m( u6 Y  N0 U: ?' L5 v( g
*  C203_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) --------
. t* z( p% X0 Y, [; R& X9 c, V *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)
" o0 [1 X0 h0 d, V *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------8 b$ i- o3 H+ l' T1 A3 Q! P
*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux. _  I2 i' |2 ?2 V( a" P7 Z
*/
  c; c+ j7 R" H& m如何将 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)
" Q" s7 g2 p, A合并为一块大的区域作为dsp程序的所有空间; s0 R. `) U  d5 e" ~4 v% [7 V1 T

+ ]; m4 r+ {* T9 I3 i- D# N现在发现修改平台文件只要用到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文件显示的地址。& ?* G' s7 T( T
" A! t% m( E5 y! S  p4 a* o
目前将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 | 只看该作者
这个贴子信息量挺大的,不过总的来说是围绕双核共享内存空间定义来说。
6 X( L" R6 c/ H- i% v
: \& V0 D5 F: Y/ v7 R 40 /*  Memory Map for ti.platforms.evmOMAPL138
& H( C1 n0 V; w1 c 41  *
0 y3 D( f: L' I# U# V0 H 42  *  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory
; k+ B6 O: R% j$ f# M 43  *  ------------------------------------------------------------------------
. x1 p* d7 j2 h 44  *  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux) w$ k( N! v$ l& z8 y
45  *  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)
; r/ h' j8 [2 v% K 46  *  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (ipc)
7 K# o3 K: [% N  ?. Q6 i 47  *  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)+ o9 m, x' x+ z$ q- B
48  *  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) SR_2 (ipc)
( T: U7 T! }# q) z, [# q4 ~ 49  *  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux
! \  l. P& \5 Y/ T6 r$ U6 t 50  */
8 z; \4 h. W: D" C( U; q4 L: ]/ E% ?4 g. l' X
如上图,SR_1~SR_2都可以给用户自己使用。SR_0是ipc的基础组件支持,一般不用自己拿来用。
9 B2 M- U& z5 Z+ S4 I8 P9 l
, Y: |& G7 A' Q. e/ j+ ?一般dsp不需要20MB这么大的缓存,尽量程序里面使用动态内存分配来使用内存,而不用静态数组。可以减少内存的占用。8 E+ r! u+ d+ w, ~" s; j4 b, L7 N

1 _$ h6 p) W& P6 B! h如果需要分配大容量的内存空间:
1 _5 ^' E- \* {! F8 E* v/ r! {1.改动mem_args参数(u-boot环境变量);* `# z" d# n- S; z
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=
& z! k# F! N& b9 K" B& U这个问题相关的,因为arm和dsp之间暂时没有找到快速响应的方法,只能在dsp端开辟大缓存暂存数据,以达到快速响应的目的。2 W: }2 A( x5 v8 }
share目录下的bld文件可以删除吗(删除了,工程会编译报找不到这个文件),好像修改这个文件又是没有用处的,只有修改平台文件才有效( l) P+ g; \& F
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 09:16 , Processed in 0.043035 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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