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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2015-9-4 08:33:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
创龙工程师你好,我在OMAPL138单独调试DSP程序(使用SYSBIOS)时,在任务中使用calloc函数动态申请内存,用完后free,类似如下结构# M3 M  r$ x% G. x
3 X4 Y1 o8 Y3 j6 r; ~" p: j
    float *x_d=(float  *)calloc(len_in,sizeof(float));                    //2569 L9 F" U/ B% V
. Y4 w. X" _% j+ I' Y. i
其他程序段。。。。。) B; ], \; B3 x* w

) `$ B, C+ ^) K   free(x_d);5 D. ?1 e1 Z# {
& c# [- n; ]1 L% Y4 J+ k* J
使用DSP侧单独调试功能,验证动态申请没有问题,9 g3 j2 y# K  X& ]/ }

; h1 x2 u# r! `$ n: z; m% p但是,当ARM侧加载DSP核心程序实际运行时,上述函数申请的内存好像失败,没有成功。请问是不是需要在哪里设置。
& Q; x/ t% W+ u: q" j) h% U7 l+ M
7 r0 r5 D+ k1 g0 _/ t% A

) ^% z7 g5 H) O" V* z4 I( Y4 Y8 |! e1 q
  n% o! {) W" v6 y1 O
6 a) ?; w: Y6 O/ M! \5 q

3 _3 c: o' k- o1 ^/ c: S" G; V! a6 B7 n& @& ]# [2 _9 {$ V" ?6 _4 f& G

) ~1 o1 F: U9 [. v5 \) Y; L% V# I  M7 a) ?4 Y4 e4 b

7 y& o# O/ b" P7 _6 S0 @2 U
分享到:  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 */% J3 z* Q3 `0 H% G& ^6 f
Program.heap = 0;: P( w% J! ~; c% m# Q
Program.argSize = 100;  /* minimum size */" }$ h, l0 v0 y' U* R3 _9 ~& g
Program.stack = 0xF000;                   //我改到F000  也不行
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
地板
发表于 2015-10-28 09:51:31 | 只看该作者
/* create a default heap */
0 ~  e; ^: g9 o8 ovar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
$ b" K' m% @6 c9 s+ Lvar heapMemParams = new HeapMem.Params();$ }( C* p. i# i- o" ?) h6 J) Y
heapMemParams.size = 0x4000;
6 D7 C! K% z* S! \/ x: C9 S4 H9 X9 ^+ f, D7 X8 N' [
var Memory = xdc.useModule('xdc.runtime.Memory');
0 R! ^6 ^2 g2 }2 B/ ~Memory.defaultHeapInstance = HeapMem.create(heapMemParams);8 n- s& y1 Y, g( F! C2 h9 R! S

( |$ v+ j) l  s8 K7 ^. h8 b我大约calloc  每次共计大小为5K*16bits,
, L# L0 S4 L' X而默认配置才0x4000、需要改大。  q% s" s  y( }
& |$ b* Q: w/ H0 m: Q( d; S
回复 支持 反对

使用道具 举报

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 | 只看该作者
补充说明1 s$ Q* p* s: w5 N+ T  R5 g
我大约calloc  每次共计大小为5K*16bits,怀疑哪里需要配置一下
1 D& G" b2 ~- P6 E(不过疑惑的是,为何单独DSP仿真就没有问题呢?)/ h/ [4 ]! N8 u/ g+ S

) m0 u- f6 |0 p- F) _是不是需要在DSP.CFG中进行配置
' i4 r( l* y  G* T2 ]5 Y% K, V我现在的配置为
. x! R$ K7 C7 ~) _( j$ a6 B) d" w. X# D7 ~& \
/*
  x1 H4 q2 ~# O+ a, Q" T1 F *  ======== Operating System Configuration ========
+ J- D0 O, h4 x" H3 u/ H" t */% g* z1 Y* B# V0 T( |5 b& G
6 L* J) T4 ^& F# U
/* no rts heap */
1 Q, m8 w( r2 M, ~7 s- q! ^Program.heap = 0;
4 k- U% s1 o: F9 X; n/ X) KProgram.argSize = 100;  /* minimum size */7 P. Y0 Z  e* h& ]# ?( s
Program.stack = 0xF000;                   //此处修改后的值。不太懂,所以改大1 |( `  L3 d6 E

  x% W6 l1 Z2 X/* create a default heap */- s/ ]2 a6 n4 v
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
/ T! L) x' F  y, i4 w3 h; M3 avar heapMemParams = new HeapMem.Params();
$ [  F5 F8 v$ }3 T5 `heapMemParams.size = 0xFf00;           
//此处修改后的值。不太懂,所以改大) s! k0 o- |' Y/ S' t
; Z+ _% }+ R. w* ~
var Memory = xdc.useModule('xdc.runtime.Memory');
* Q3 W, T9 r" v8 W  k9 PMemory.defaultHeapInstance = HeapMem.create(heapMemParams);
2 `& z5 v7 d3 M* K& {
9 r8 O) U$ U  H- A& f/* configure System module */
" C% \" B! Y- [& @! Ovar SysMin = xdc.useModule('xdc.runtime.SysMin');
# R' V; _$ z5 l0 o1 T* ASysMin.bufSize = 0x1000;8 Y8 F+ ~2 r  P7 }' B
SysMin.flushAtExit = false;
- ?6 x# L2 M% ?* A1 G( C
; m$ b6 I" z5 `3 p7 X% Hvar System = xdc.useModule('xdc.runtime.System');# M* P( [$ i2 s) r& Z
System.SupportProxy = SysMin;; H/ ~0 x/ A" {# S6 u6 i: K9 F5 M

. T2 h& f3 n6 A" i5 ^# V' ~/* configure SysBios to use the lower half of Timer 1 */+ ]. }# o5 D# i, x6 M
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
. Q* N* G5 x. d$ B% `$ l) R. Nvar Clock = xdc.useModule('ti.sysbios.knl.Clock');
5 x2 E' r2 Q, j2 y  o% u$ |' C# FTimer.timerSettings[1].master = true;. @' ?! f! \) R* H
Timer.defaultHalf = Timer.Half_LOWER;
7 l$ P% z! ?8 {Clock.timerId = 1;+ J/ e8 Q: S& J  A% ]
- C0 L8 q& z8 P" J% {2 |# |5 ?7 n
0 m7 u0 @: x' k7 `# i: K; J
/*
4 J, }' `+ t. G2 ?9 { *  ======== Miscellaneous Configuration ========/ X( H! i8 N+ ?- |: X5 z2 N, b
*/9 e. P* j5 x' D7 B4 U4 y- w
" g0 N3 n; V/ [; r
/* set default diags mask */% z2 B  [9 t2 a: p
var Diags = xdc.useModule('xdc.runtime.Diags');! c: m* Y& O; m$ W' b7 h6 l
var Defaults = xdc.useModule('xdc.runtime.Defaults');
' ?* a" Z# R' V% s1 [0 a
9 R# K% a, u; O' ~& r/ }Defaults.common$.diags_ENTRY     = Diags.ALWAYS_OFF;
) X% K' S0 c8 U4 `& d; T/ x, XDefaults.common$.diags_EXIT      = Diags.ALWAYS_OFF;
$ k. x4 I: @6 R& P! O, oDefaults.common$.diags_LIFECYCLE = Diags.ALWAYS_OFF;
" q! Y2 [0 S  v+ h2 yDefaults.common$.diags_INTERNAL  = Diags.ALWAYS_OFF;  /* needed for asserts */
: J* ?' x. i% s6 M' j9 ]Defaults.common$.diags_ASSERT    = Diags.ALWAYS_OFF;  /* development only   */
8 C2 V8 j! v- F' U4 f* rDefaults.common$.diags_STATUS    = Diags.RUNTIME_ON;
) p# z- _' C# ^4 N4 TDefaults.common$.diags_USER1     = Diags.ALWAYS_OFF;  T* j9 F& X2 C) [2 e
Defaults.common$.diags_USER2     = Diags.ALWAYS_OFF;& @! x+ O5 F5 C2 J$ B0 W" y% L
Defaults.common$.diags_USER3     = Diags.ALWAYS_OFF;7 H  ~0 y. Q" [  D3 A9 l
Defaults.common$.diags_USER4     = Diags.ALWAYS_OFF;) P1 E) j, k# P7 e; Z# K  G
Defaults.common$.diags_USER5     = Diags.ALWAYS_OFF;
5 u- F; g1 q/ {0 d4 vDefaults.common$.diags_USER6     = Diags.ALWAYS_OFF;
: J* W  ^! ]2 XDefaults.common$.diags_INFO      = Diags.ALWAYS_OFF;, X9 Z. j& d4 i7 M
Defaults.common$.diags_ANALYSIS  = Diags.ALWAYS_OFF;
& {! I* S( t- v7 p
2 P, s/ A( X' |. b( R8 E/* override diags mask for selected modules */& A2 ?+ Y) h/ U8 }: f/ Q
xdc.useModule('xdc.runtime.Main');& C% s9 o+ Q2 \: W
Diags.setMaskMeta(
" d& `$ ]0 C- u4 R/ U' p2 p    "xdc.runtime.Main",
' p1 a0 D7 H" Q/ ?( t. J8 a& E    Diags.ENTRY | Diags.EXIT | Diags.INFO,
) M% ^& D7 s9 l$ [* b/ W    Diags.RUNTIME_ON
3 s9 H8 _) x) O6 V. N2 o; ^);
& J' F& i# I/ j5 i, K$ I' Y3 v3 m0 [: o
var Registry = xdc.useModule('xdc.runtime.Registry');+ k( c' S" j" m% h/ J- \
Registry.common$.diags_ENTRY = Diags.RUNTIME_OFF;& Z) y& b" f# s; |6 X- E$ o1 N
Registry.common$.diags_EXIT  = Diags.RUNTIME_OFF;
5 m3 \* M5 j0 ~3 Z6 Q! ARegistry.common$.diags_INFO  = Diags.RUNTIME_OFF;7 @" |. E+ N8 P
Registry.common$.diags_USER1 = Diags.RUNTIME_OFF;8 T" W5 u- R& `- F/ a" w. M" }
3 Z! D6 U% ?( _2 [) w$ S  |  P# M5 [
/* create a logger instance */# u# V( C! @9 c2 @5 r3 N' d
var LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');, a9 Z; w7 [9 S% q1 w0 v$ ^& i
var loggerBufP = new LoggerBuf.Params();
, \$ e( _3 G% o7 l' B, bloggerBufP.numEntries = 128;  /* 128 entries = 4 KB of memory */
& U% H7 w7 k2 PloggerBufP.bufType = LoggerBuf.BufType_FIXED;
4 {6 b5 F, |# p. l- ~/ |
5 y1 e% u/ F& j& @/ V2 s: @var appLogger = LoggerBuf.create(loggerBufP);
) X) E+ k4 M- H. X( }5 P; pappLogger.instance.name = "AppLog_Core1";: z! d  U! G0 w7 x# D# E* ?) E
Defaults.common$.logger = appLogger;6 _2 y% V" \- [. r! {5 ~! o* r, }6 N
Memory.defaultHeapSize = 0x8192;    * [5 M( l6 }" H: d+ s0 z
Idle.idleFxns[0] = "&LEDStatus";
- h& U) N  L+ k' d( S% KCache.initSize.l2Size = Cache.L2Size_32K;
  x4 ?5 r  c1 l' d) u
& f# _+ a+ ^* S3 K' k- `$ Y
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-7 04:13 , Processed in 0.043207 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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