关于OMAPL138在SYSBIOS下DSP侧动态申请内存问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7036|回复: 5
打印 上一主题 下一主题

关于OMAPL138在SYSBIOS下DSP侧动态申请内存问题

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2015-9-4 08:33:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
创龙工程师你好,我在OMAPL138单独调试DSP程序(使用SYSBIOS)时,在任务中使用calloc函数动态申请内存,用完后free,类似如下结构
. D$ g+ F: T: Z6 W" @, p4 D
; F/ V  U8 Q' I  S    float *x_d=(float  *)calloc(len_in,sizeof(float));                    //256
( R# J: V% C, `" r: Y6 C1 p& \1 Q# ~$ n: _" b  n7 O
其他程序段。。。。。
! e& e7 S, i/ C" U( c7 t ' _5 G1 ~0 n# I
   free(x_d);
! g: l9 |8 P  b- q5 W6 H! D4 |# t# ^
7 @( |+ A  \3 J- C% {8 a' j9 v使用DSP侧单独调试功能,验证动态申请没有问题,4 F( S3 S3 @3 E
. B2 w& u/ L5 ]" _: E
但是,当ARM侧加载DSP核心程序实际运行时,上述函数申请的内存好像失败,没有成功。请问是不是需要在哪里设置。
. S4 J$ ^9 o, M* p7 b( {6 ]

- i. j( V  Y3 i1 ~9 g% |7 P5 j/ O1 q  g9 ?5 ^
. U, B' e" p8 |% Z( `, L# y
5 p2 Q! X6 i3 Z; X& H8 A; A* D8 b& s
; S6 L7 z3 a" I. N) o! L$ A

5 v( O! X9 p! ]/ ]; P
/ U% z. `7 @7 R0 m: s- H3 F# k3 }
6 \% _' o. O- v
! z8 G3 p# }( z8 a+ `. t1 ?, A8 K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
6#
发表于 2015-10-31 20:55:50 来自手机 | 只看该作者
这个问题,我再测试一下,过两天实测后给你答复!
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
5#
 楼主| 发表于 2015-10-28 16:14:47 | 只看该作者
/* no rts heap */
9 N: l1 n( Q" K# @Program.heap = 0;
2 G/ m: m7 V: B, g. V2 c4 m5 |3 {6 JProgram.argSize = 100;  /* minimum size */7 H. O; Z- z9 {6 l9 u
Program.stack = 0xF000;                   //我改到F000  也不行
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
地板
发表于 2015-10-28 09:51:31 | 只看该作者
/* create a default heap */! V4 I  X4 V; u6 q
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
6 s8 G: }  f$ V6 lvar heapMemParams = new HeapMem.Params();
8 ~# N/ z* b  S7 cheapMemParams.size = 0x4000;& J6 N1 _  z! q' x7 n9 u
" |0 F' u: P/ u% P5 ^& g4 q
var Memory = xdc.useModule('xdc.runtime.Memory');5 f3 C2 {  m' [- \+ _5 t7 ?% \" r' O
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);
/ S9 n$ V; s: ^4 S+ O; ~- Q1 g' e6 g% V; Z7 a- g9 y* D/ ?
我大约calloc  每次共计大小为5K*16bits,( N2 x+ ?6 P+ I! U# w# Q
而默认配置才0x4000、需要改大。# E3 _  w1 q2 l$ M
3 W$ k8 t4 w" P! I8 x- p
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
板凳
 楼主| 发表于 2015-9-7 15:38:00 | 只看该作者
为什么没人回答呢?   大家都不用动态申请内存方式吗?
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2015-9-4 10:29:21 | 只看该作者
补充说明
, p8 `) ?$ z; j" h) q6 H我大约calloc  每次共计大小为5K*16bits,怀疑哪里需要配置一下  j  x+ p- _& G$ q4 W  G
(不过疑惑的是,为何单独DSP仿真就没有问题呢?)4 S, ~4 w7 m) l% o6 J  j3 \
3 [/ Z, q9 u  H! L/ B! _% ?" S
是不是需要在DSP.CFG中进行配置7 k8 b9 c, b9 r; I
我现在的配置为
6 a3 r4 C' G! c# n7 g, y7 I1 c* z7 O/ F
/*4 ^9 q' T* T6 e
*  ======== Operating System Configuration ========
# j4 u$ P7 x. U, w2 l) ]$ ^+ F! A */( e1 A; n  [2 n" r6 s( M# X5 X

8 W; k+ a- Z' H# L/* no rts heap *// P7 U5 q0 P& H# X: ~- s( _
Program.heap = 0;
$ w# ?/ ^* E# U+ O! W, o  ?9 yProgram.argSize = 100;  /* minimum size */: }3 i  o" E4 N! `3 C& _
Program.stack = 0xF000;                   //此处修改后的值。不太懂,所以改大+ q4 l  h2 K# f% F7 m

% K' n* e7 k% R9 `$ q/ J. ^/* create a default heap */! V7 Y0 o! R5 g; E1 g
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');5 H+ O: I: p6 @- {) b8 X- V- ?
var heapMemParams = new HeapMem.Params();3 V3 A/ b$ a  V  ?0 X* T
heapMemParams.size = 0xFf00;           
//此处修改后的值。不太懂,所以改大* h" z' d3 Y$ I# R; G( p* c4 \
! S0 L+ i( N; h& p8 Z$ _; p
var Memory = xdc.useModule('xdc.runtime.Memory');) ]/ L! L7 c7 U" Y/ S
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);, Q: R$ N' C  B5 S
; ]4 @# U5 l- p' f5 g
/* configure System module */4 J* X6 E$ M8 }% D# \% j
var SysMin = xdc.useModule('xdc.runtime.SysMin');2 G+ b7 Y# G/ b
SysMin.bufSize = 0x1000;* l( Q6 Q+ u- v) d0 s# w
SysMin.flushAtExit = false;9 \+ V5 C0 \1 i1 `$ b1 g" g6 j
2 @+ Y! s3 _; x  m
var System = xdc.useModule('xdc.runtime.System');
. ^" J2 w( [( @7 USystem.SupportProxy = SysMin;; H. G4 M3 w  h' ^8 N- N; p- P
5 [  }+ D0 |  p" Q+ ~0 M) Y
/* configure SysBios to use the lower half of Timer 1 */
/ L9 n* k0 q1 p& U6 J% cvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');4 [" K$ h; m6 y
var Clock = xdc.useModule('ti.sysbios.knl.Clock');4 \6 v7 R6 L4 C( n) l
Timer.timerSettings[1].master = true;2 q* O" v( q6 n/ k1 ~, ?9 h
Timer.defaultHalf = Timer.Half_LOWER;. t: Q+ l0 ^1 H5 b7 k
Clock.timerId = 1;% P" `9 O, u# G+ g1 C, {, f

9 n$ v) w! G0 r6 I* }, e$ P5 Z$ ?" b( _3 s
/*7 _- a- l( x& S5 [
*  ======== Miscellaneous Configuration ========1 A$ I- m- B9 L) U1 `0 u% C2 O' U
*/3 `3 v& H. G" C# B' q: q' ?
2 ~, D: U+ s# ^( t5 I$ X8 H
/* set default diags mask */
& T  j, B  |( ~. c7 [  S6 K" v+ ~& Evar Diags = xdc.useModule('xdc.runtime.Diags');
$ W- R" d( y0 @5 G' C* Yvar Defaults = xdc.useModule('xdc.runtime.Defaults');- E( Q  c& i* J% [
2 Q* d! m5 q, b6 n
Defaults.common$.diags_ENTRY     = Diags.ALWAYS_OFF;
2 D% v9 H7 d8 i/ nDefaults.common$.diags_EXIT      = Diags.ALWAYS_OFF;1 o1 `. Z3 V" D$ I4 j4 i
Defaults.common$.diags_LIFECYCLE = Diags.ALWAYS_OFF;
' L- @' E  ?1 F+ @' iDefaults.common$.diags_INTERNAL  = Diags.ALWAYS_OFF;  /* needed for asserts */8 D( [7 w/ j+ i$ q6 S; x3 Q
Defaults.common$.diags_ASSERT    = Diags.ALWAYS_OFF;  /* development only   *// ?& y) H! q6 V! ?& h9 M$ e. p
Defaults.common$.diags_STATUS    = Diags.RUNTIME_ON;( \% b/ Q8 ^9 r
Defaults.common$.diags_USER1     = Diags.ALWAYS_OFF;
$ O( I* _$ R8 F5 _( \Defaults.common$.diags_USER2     = Diags.ALWAYS_OFF;& b% H" j% b3 d' r% v8 o
Defaults.common$.diags_USER3     = Diags.ALWAYS_OFF;  o: E% a- d6 b; }
Defaults.common$.diags_USER4     = Diags.ALWAYS_OFF;3 B/ U0 y" O9 u1 ?
Defaults.common$.diags_USER5     = Diags.ALWAYS_OFF;# G# i% y( r' U6 r1 e
Defaults.common$.diags_USER6     = Diags.ALWAYS_OFF;- z6 v; ?5 R' P' [0 N
Defaults.common$.diags_INFO      = Diags.ALWAYS_OFF;
# E; D+ ~: h' Y, k- y4 cDefaults.common$.diags_ANALYSIS  = Diags.ALWAYS_OFF;
% Q: d7 `0 i/ x- Z2 A5 h. Q. n/ F/ X; ^9 V
/* override diags mask for selected modules */* u: }3 t3 L5 t. C, c
xdc.useModule('xdc.runtime.Main');3 e* b  H0 u) X) b7 R
Diags.setMaskMeta(
1 b, K6 a- L6 i" Y# e! E# {    "xdc.runtime.Main",
- U5 f* O3 R  z- P# Q    Diags.ENTRY | Diags.EXIT | Diags.INFO,
6 l  F+ d+ Z* ~; `$ l+ V    Diags.RUNTIME_ON
4 I) ?# G) t4 }  X4 {6 A5 k0 O);
$ O8 n6 P4 m+ W/ M+ g: |; _8 u1 F3 J3 @# e1 x) C3 q9 w
var Registry = xdc.useModule('xdc.runtime.Registry');/ K3 e, w/ {7 X  [' e$ `+ r
Registry.common$.diags_ENTRY = Diags.RUNTIME_OFF;$ U( |$ Q0 |8 @! ?9 i+ n/ o
Registry.common$.diags_EXIT  = Diags.RUNTIME_OFF;
, a/ H/ l$ X7 l+ i5 Q, [5 S, _Registry.common$.diags_INFO  = Diags.RUNTIME_OFF;0 _3 s7 @( j9 G! w3 F- n5 X, r2 R
Registry.common$.diags_USER1 = Diags.RUNTIME_OFF;; j  p, X3 q& i1 M
5 w9 {- D  U( f0 t, }
/* create a logger instance */- @+ ^5 `- l; j% }3 S4 A% l  q
var LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');
" J( f% |3 B) ~) k# B: Uvar loggerBufP = new LoggerBuf.Params();
& z1 W' ~( E0 f& {2 B- B: A# sloggerBufP.numEntries = 128;  /* 128 entries = 4 KB of memory */: C/ s1 ]! j  ^- `
loggerBufP.bufType = LoggerBuf.BufType_FIXED;: F# K: O7 k% e, [& U  Q! q
5 C/ D: H& Q1 z1 s
var appLogger = LoggerBuf.create(loggerBufP);
/ m0 N( ~1 C- WappLogger.instance.name = "AppLog_Core1";( F6 U: _, M) W- Q5 v% F! K
Defaults.common$.logger = appLogger;
2 N' l, L! O- U. QMemory.defaultHeapSize = 0x8192;   
+ q+ ?1 c! N( j) T* O( LIdle.idleFxns[0] = "&LEDStatus";2 n# H9 R6 C2 X6 z( ^
Cache.initSize.l2Size = Cache.L2Size_32K;6 z- T7 U1 [& C0 n& r
1 X; c. g( c6 n9 E( _
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-10 08:19 , Processed in 0.042035 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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