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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2015-9-4 08:33:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
创龙工程师你好,我在OMAPL138单独调试DSP程序(使用SYSBIOS)时,在任务中使用calloc函数动态申请内存,用完后free,类似如下结构6 B" {; h7 S& P: ^# |

) S0 E9 a5 A) q4 g0 F    float *x_d=(float  *)calloc(len_in,sizeof(float));                    //256
# g# i9 M- [. \1 I6 G' [9 k" m% V
其他程序段。。。。。
5 _. X5 F: M9 r8 F, | # J- Y% N# _5 t6 w% m' |
   free(x_d);6 o& r0 B8 Z1 h9 M& I
$ ^  e7 g" x& U8 b
使用DSP侧单独调试功能,验证动态申请没有问题,
% Q2 W" X8 q# `, X0 T) g! v% p4 @% ]$ e5 H% {3 i$ [
但是,当ARM侧加载DSP核心程序实际运行时,上述函数申请的内存好像失败,没有成功。请问是不是需要在哪里设置。
( u/ c2 f+ s8 F( T$ Z

0 K0 P* s, L& O3 G0 x8 [# N1 Q# V- D8 K, d, i

! x  k: q' s$ q9 C- m6 n. Y9 N8 d
7 N. U5 p) d% ?+ ]# a5 @
7 Z3 N, U9 M! E3 P' \& s2 x7 R2 a( e/ {1 N% f0 M
" C9 M& G  m$ K# y" d
- }% L: u6 v$ w6 D) \; s2 P

6 z$ C& s9 p/ o/ H
) z! P) K2 D" E# N
分享到:  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 */
/ c' {, _! R; c. t: q# s6 ~Program.heap = 0;5 q7 A* c" o  L( J0 M
Program.argSize = 100;  /* minimum size */1 J! {: R( v- d
Program.stack = 0xF000;                   //我改到F000  也不行
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
地板
发表于 2015-10-28 09:51:31 | 只看该作者
/* create a default heap */
) A/ ]7 h' ?. L& Jvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
4 m" E& M2 S! V  yvar heapMemParams = new HeapMem.Params();
! P. G& h: Z, g  x( j& CheapMemParams.size = 0x4000;
. K- `6 U/ Z, T& ]  \/ A
6 N' @7 l7 m! C( N2 h, c2 evar Memory = xdc.useModule('xdc.runtime.Memory');
8 I) c8 P- _( ]; KMemory.defaultHeapInstance = HeapMem.create(heapMemParams);# |' t7 e3 c5 a; `6 H4 p

+ \* w7 I! e0 Q我大约calloc  每次共计大小为5K*16bits,
- k) h7 A5 h7 ?& O6 N9 u而默认配置才0x4000、需要改大。8 B; C6 T6 P9 d2 b) |( q
, ^* d1 d) I  \- j% m
回复 支持 反对

使用道具 举报

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 | 只看该作者
补充说明# y. H2 J; i1 ^
我大约calloc  每次共计大小为5K*16bits,怀疑哪里需要配置一下* q4 s" p& h' [$ J. I0 y
(不过疑惑的是,为何单独DSP仿真就没有问题呢?); r: w1 q6 c) S- u+ G

, F- A& {9 X, j5 a# Y# v  M是不是需要在DSP.CFG中进行配置
! q6 I2 E% {% h2 t6 T我现在的配置为
9 A9 P; F" c2 Q' [% b$ K
5 t5 G3 b3 Y1 r: p" A, Q/*8 r, j8 w, a4 Q* |# I* s
*  ======== Operating System Configuration ========1 o; t: M1 p) ~# K) v
*/
- C3 Z1 J) E6 b5 l$ ^( s  D. i& e6 y
/* no rts heap */$ h' U% k" c% V, C2 O
Program.heap = 0;
9 w1 q# z, R+ f8 o; Z9 v9 d; @Program.argSize = 100;  /* minimum size */
7 e/ ~: I9 w3 g$ d) d% z. [Program.stack = 0xF000;                   //此处修改后的值。不太懂,所以改大
, \5 |, ^$ b, O' c* ~6 p$ ]6 n. s
/* create a default heap */
7 D) V, C4 l  V' X4 Fvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');. {# c: h1 o9 [- u$ Z
var heapMemParams = new HeapMem.Params();
( L. w2 ^- S, z! b8 q/ r  [. dheapMemParams.size = 0xFf00;           
//此处修改后的值。不太懂,所以改大9 K/ D* T% J4 I5 b6 `$ {

* z: [2 H4 @, }) m6 v. k) T5 `/ [
var Memory = xdc.useModule('xdc.runtime.Memory');
9 U2 {7 s& |. w% GMemory.defaultHeapInstance = HeapMem.create(heapMemParams);9 x9 o$ N9 q1 ?2 l7 a% V% e& N/ ]
' Z" K2 X9 j7 B+ w- O' W4 h' L
/* configure System module */$ ]& {& \( T/ G6 W
var SysMin = xdc.useModule('xdc.runtime.SysMin');- [; J, C: b' P- V! n9 F6 J* ~  `9 V
SysMin.bufSize = 0x1000;
2 }6 H. S* A& G  ASysMin.flushAtExit = false;% [  j. T  E2 |& T2 r/ S! ~
' D% m( u  \% Y/ }) h' p
var System = xdc.useModule('xdc.runtime.System');) V9 N# n& F# G3 C  J, F
System.SupportProxy = SysMin;; `9 l& q- m: o" F1 c8 r5 m2 D/ z
8 d+ @4 @( i: H
/* configure SysBios to use the lower half of Timer 1 */' Y4 r) P- z  g; I' X1 Y
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
+ f+ x2 |! U' `9 Lvar Clock = xdc.useModule('ti.sysbios.knl.Clock');- `( \+ Y1 s9 p( o
Timer.timerSettings[1].master = true;
2 S- ?8 v5 N7 X4 N! V2 \7 o  F1 d) WTimer.defaultHalf = Timer.Half_LOWER;/ H3 u  S3 `; h+ [6 E2 m
Clock.timerId = 1;9 p5 J; x- g/ Q( s$ F5 Y

4 h+ o. G# Q/ @
5 T7 X8 `; U2 F1 \: _3 [6 z; g/*
7 C4 i( N8 |: I *  ======== Miscellaneous Configuration ========, J8 L# S( z4 R0 f/ {, |
*/
5 j3 l1 z. k$ \/ p4 i& r6 P. z! z4 j/ p) M( i
/* set default diags mask */* G) @  h! S) d" E4 k% X9 ^2 G
var Diags = xdc.useModule('xdc.runtime.Diags');0 B0 l& S/ a2 H% A' c
var Defaults = xdc.useModule('xdc.runtime.Defaults');
" t4 m5 L' A$ W" z, e4 f: u3 F5 A; K* Y) q' F
Defaults.common$.diags_ENTRY     = Diags.ALWAYS_OFF;
/ f! G, T  |) TDefaults.common$.diags_EXIT      = Diags.ALWAYS_OFF;/ m% k" K$ q. r* G3 c9 q
Defaults.common$.diags_LIFECYCLE = Diags.ALWAYS_OFF;
* v6 F' L9 r2 n' p% ~* a2 }Defaults.common$.diags_INTERNAL  = Diags.ALWAYS_OFF;  /* needed for asserts */" O2 @3 @& j9 }5 }; M7 f
Defaults.common$.diags_ASSERT    = Diags.ALWAYS_OFF;  /* development only   */6 n" ~  m9 t. B
Defaults.common$.diags_STATUS    = Diags.RUNTIME_ON;
5 k, w* J* b/ N# ]# J9 X& y7 Z& Q9 ]Defaults.common$.diags_USER1     = Diags.ALWAYS_OFF;
4 B( ], Q' E: `" V0 y& jDefaults.common$.diags_USER2     = Diags.ALWAYS_OFF;
: o% G' K& b  p% t" J( uDefaults.common$.diags_USER3     = Diags.ALWAYS_OFF;8 S  f* W5 M$ u7 t" g; i
Defaults.common$.diags_USER4     = Diags.ALWAYS_OFF;
1 j0 O+ `0 O7 v& E( cDefaults.common$.diags_USER5     = Diags.ALWAYS_OFF;
) B% [3 Q* J) F  I# \5 IDefaults.common$.diags_USER6     = Diags.ALWAYS_OFF;5 y) J: y5 g0 N* h, ?6 O, v
Defaults.common$.diags_INFO      = Diags.ALWAYS_OFF;0 M3 z. `' A- w- D: F
Defaults.common$.diags_ANALYSIS  = Diags.ALWAYS_OFF;
. @6 b1 ]5 J9 G, r8 R* Q! _( O  V* b+ J, A6 P9 i- I
/* override diags mask for selected modules */
5 l& }3 n6 Z/ f8 F8 y3 D! h  Txdc.useModule('xdc.runtime.Main');
; S. |' p5 z& G- ~  \. s' j7 Q* HDiags.setMaskMeta(' }$ T* [8 E/ R7 I
    "xdc.runtime.Main"," p  A4 E" A+ i) S4 o) i& O0 P8 ^
    Diags.ENTRY | Diags.EXIT | Diags.INFO,# [- }, a9 r5 H! f+ w
    Diags.RUNTIME_ON
+ ^8 a( T) A4 S7 Q+ B% `$ q1 s/ d);
8 N& B3 I: u; J) p8 G$ o6 _5 B! {+ i+ p$ Q) @8 z% M% h* A
var Registry = xdc.useModule('xdc.runtime.Registry');3 X9 Z3 X5 b& V0 l  c
Registry.common$.diags_ENTRY = Diags.RUNTIME_OFF;9 K  g% y) \# M% u; e5 M0 Y
Registry.common$.diags_EXIT  = Diags.RUNTIME_OFF;$ ~- V' L5 l% x3 |
Registry.common$.diags_INFO  = Diags.RUNTIME_OFF;7 a) m0 c" d3 L) A$ H% o. ~
Registry.common$.diags_USER1 = Diags.RUNTIME_OFF;0 j: S  D, f( z$ w% w& W" k4 N

) z3 b" ~1 _& T2 W+ f' _. }; T$ U, ]! {/* create a logger instance */" B& X7 X  y0 ~" d, F" h+ O% f8 q1 o
var LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');
' d7 U' y4 H$ d1 w0 B5 [var loggerBufP = new LoggerBuf.Params();
0 ]& F6 @% q/ f3 E* j2 \loggerBufP.numEntries = 128;  /* 128 entries = 4 KB of memory */  X" S& ~& e+ h$ i& p3 u% g7 T7 O3 D
loggerBufP.bufType = LoggerBuf.BufType_FIXED;
9 v: m# |5 A+ U4 x' w
7 Y1 _3 i; B2 j5 Mvar appLogger = LoggerBuf.create(loggerBufP);4 t& F* S" ^9 r9 @( O" q
appLogger.instance.name = "AppLog_Core1";# k! |, G! ]5 i% U- N$ S8 \5 z2 F
Defaults.common$.logger = appLogger;
4 Y9 r% _) b% uMemory.defaultHeapSize = 0x8192;   
5 U3 ~) ^+ N+ y" ZIdle.idleFxns[0] = "&LEDStatus";
7 y* @! ?# p! E4 ]Cache.initSize.l2Size = Cache.L2Size_32K;
& x0 g* p9 ]2 c, ~; j
2 s' \  _. c) B! ^2 n& f
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-25 22:47 , Processed in 0.047145 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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