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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

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

8 O) |! `' X1 p2 i' }7 u    float *x_d=(float  *)calloc(len_in,sizeof(float));                    //2569 T% B1 m& t  B' J( t& o& y; Y

3 _3 w7 C/ m8 }1 c其他程序段。。。。。
8 [, x, Q9 g* E4 T; M   z) j: E5 j0 n2 y
   free(x_d);
, }  e" P, q% K% P6 X2 [8 e$ U( @5 F$ @
使用DSP侧单独调试功能,验证动态申请没有问题,
. G3 w4 ^2 n" K! R
0 V: k- T4 i* v; z8 N2 A但是,当ARM侧加载DSP核心程序实际运行时,上述函数申请的内存好像失败,没有成功。请问是不是需要在哪里设置。$ z2 d/ Q6 @/ o2 a* S

3 q' X" H+ J% N, A; k$ C8 J! y' M* q& N

8 g  C/ D' X; h* p+ S. i' v, K6 T, U$ f# r; c; D5 K! N6 g
8 v0 \8 g0 V3 F6 ?# F' ?6 Q
  r, j- @. ?# e4 \: I" p1 o3 R' h
, i3 _+ s2 ]" N7 x0 D* n* f

1 q6 ^$ z# ^9 i
- y5 Z" l" A0 P! l9 e) {
9 X8 q! z9 L# z$ q
分享到:  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 */
) O( S, r, v9 p  P4 V& oProgram.heap = 0;
9 P& s& Z9 n/ U& WProgram.argSize = 100;  /* minimum size */$ Q! g8 R3 `  T/ S
Program.stack = 0xF000;                   //我改到F000  也不行
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
地板
发表于 2015-10-28 09:51:31 | 只看该作者
/* create a default heap */8 d0 I+ |; L, J+ E$ b  A
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');) G. j" Z, m9 K" @# a
var heapMemParams = new HeapMem.Params();
! p/ q. K2 b/ }+ ^heapMemParams.size = 0x4000;+ o4 }( n5 B2 b

5 L- `8 }* E  f4 l2 kvar Memory = xdc.useModule('xdc.runtime.Memory');
$ k& T+ [( ^2 xMemory.defaultHeapInstance = HeapMem.create(heapMemParams);
- J" f+ {. M6 T
' J8 [7 V6 p7 u' Y1 D我大约calloc  每次共计大小为5K*16bits,
. r6 h/ k, v7 B! T" v而默认配置才0x4000、需要改大。
. Y  R" L: _/ g
+ z: e- R; r0 B
回复 支持 反对

使用道具 举报

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 | 只看该作者
补充说明8 q! o. d& a/ C% s( N2 A' a+ t
我大约calloc  每次共计大小为5K*16bits,怀疑哪里需要配置一下
- b  z) i3 G; I! G(不过疑惑的是,为何单独DSP仿真就没有问题呢?)
# V' Q& C2 R, {: P

, g) ^& a3 D* ?/ _- f0 W3 D4 ]是不是需要在DSP.CFG中进行配置
/ T/ l# j2 k3 g( p7 U2 C0 H我现在的配置为' Z3 ^/ K+ t( e1 C  B

9 |  d* [; q8 g- [1 z/*6 ?; L( U. F# Q7 F! B/ v8 p( S' m
*  ======== Operating System Configuration ========
9 W8 t. N0 W" [! V */
! K* P3 W5 @+ N' Q" r+ i4 [9 c# G  Y/ C
/* no rts heap */% W  w2 L* x; x
Program.heap = 0;
; }3 U8 M) T1 a( f% q; jProgram.argSize = 100;  /* minimum size */
# E( B/ D5 ?0 uProgram.stack = 0xF000;                   //此处修改后的值。不太懂,所以改大
5 A4 ~9 F' K- q& c" [* j$ A/ l+ p" _4 H
/* create a default heap */
& i& w9 O3 W+ R6 j$ u+ s8 Qvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');3 k, w( {4 X+ l7 V
var heapMemParams = new HeapMem.Params();
1 q% X3 u0 A0 A, E1 P: \. y! xheapMemParams.size = 0xFf00;           
//此处修改后的值。不太懂,所以改大
; k5 D' F9 P" @+ c' O  k' u" J" M$ }6 f; C, J
var Memory = xdc.useModule('xdc.runtime.Memory');* [4 b" H6 n4 G! |" V* @' K) X1 n
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);
- C7 c  T$ \0 p( @- [8 ?3 d  i
1 z6 o1 M( z- m/* configure System module */0 `% M. Q  r, U
var SysMin = xdc.useModule('xdc.runtime.SysMin');6 ^( z) w& @. L; Y; F
SysMin.bufSize = 0x1000;
8 V2 T* B$ f3 o$ sSysMin.flushAtExit = false;
8 [5 E( ?6 B8 G- N5 A' U1 G# `9 P# T1 P( g* }/ B6 [
var System = xdc.useModule('xdc.runtime.System');
' c/ k# K' U, Y; Z5 P: eSystem.SupportProxy = SysMin;
% x* m' H6 `7 e2 W- l1 K0 U% z9 j6 S2 N* n5 \" _+ H
/* configure SysBios to use the lower half of Timer 1 */
8 Z1 U: q; h! w3 H+ kvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');1 `" k/ m3 @  f1 l( I0 R" @! |
var Clock = xdc.useModule('ti.sysbios.knl.Clock');
8 ~  @: D- ^6 f6 z3 e+ kTimer.timerSettings[1].master = true;
" Z8 f9 R% z2 N5 f* R0 v0 R6 ^Timer.defaultHalf = Timer.Half_LOWER;# g+ A- Z9 U6 J  [( O
Clock.timerId = 1;7 A1 Y: R) g3 u) e

% g6 X8 a0 l9 l: W2 }
/ ]$ m, B/ P7 }. B/*' k" m6 d* z3 n5 f
*  ======== Miscellaneous Configuration ========
- A" z: r. N/ y/ F+ } */
6 n" U1 T1 P; D6 C( ^8 {' v% ]$ Z1 I1 f! d' J  L2 H7 {) B) K. |7 X
/* set default diags mask */5 w% L4 [, {( s* g! H
var Diags = xdc.useModule('xdc.runtime.Diags');
  k0 g* w0 N$ k! x0 ]2 v1 p( ?6 ]var Defaults = xdc.useModule('xdc.runtime.Defaults');
; J. [3 A) i" U" f$ Z- U4 A: l4 N- f) e1 p( D
Defaults.common$.diags_ENTRY     = Diags.ALWAYS_OFF;
2 I7 I+ h+ @* k) L; qDefaults.common$.diags_EXIT      = Diags.ALWAYS_OFF;
# I$ \- e1 {" P7 ]Defaults.common$.diags_LIFECYCLE = Diags.ALWAYS_OFF;
, h$ l$ x# v; [1 `Defaults.common$.diags_INTERNAL  = Diags.ALWAYS_OFF;  /* needed for asserts */: @& m0 C# v) D4 o4 ~, I8 A
Defaults.common$.diags_ASSERT    = Diags.ALWAYS_OFF;  /* development only   */2 Z0 A9 d! }; Y) S( H3 x
Defaults.common$.diags_STATUS    = Diags.RUNTIME_ON;
+ a6 W% \; D: f) d8 tDefaults.common$.diags_USER1     = Diags.ALWAYS_OFF;9 v2 [) a, ~  y! Y% L; X0 u
Defaults.common$.diags_USER2     = Diags.ALWAYS_OFF;  R, Y, X: z+ ~  ~
Defaults.common$.diags_USER3     = Diags.ALWAYS_OFF;, i* r' g# M5 m: e
Defaults.common$.diags_USER4     = Diags.ALWAYS_OFF;1 u9 D6 W; e2 Z2 J
Defaults.common$.diags_USER5     = Diags.ALWAYS_OFF;
0 ?5 f8 U, U! I) sDefaults.common$.diags_USER6     = Diags.ALWAYS_OFF;% H0 g4 w) r2 P; X% q
Defaults.common$.diags_INFO      = Diags.ALWAYS_OFF;
4 r3 {& J# ~/ v  F2 W0 G- @$ n6 PDefaults.common$.diags_ANALYSIS  = Diags.ALWAYS_OFF;- T2 {7 i: R  x# A1 |5 |, i8 A
4 `$ @: p* m3 P9 j( n- N- _6 G; C/ O
/* override diags mask for selected modules */9 {: o- G: Z( O$ D; I9 L% i5 F8 n
xdc.useModule('xdc.runtime.Main');
4 S/ X* `$ K! y9 xDiags.setMaskMeta(
. [6 d. B0 |- P    "xdc.runtime.Main",
: M  i8 \7 I! k/ `3 J! l" l' f" L2 n    Diags.ENTRY | Diags.EXIT | Diags.INFO,
! g; }9 j0 Z$ \& u    Diags.RUNTIME_ON! P& k! x' m$ z3 y+ }* q
);
4 j) {  {: i: B
+ E/ ]! Q1 Q: q5 f4 n9 |var Registry = xdc.useModule('xdc.runtime.Registry');
/ G' U5 |! y  jRegistry.common$.diags_ENTRY = Diags.RUNTIME_OFF;$ _$ T4 i4 Z& I1 k! k7 ]
Registry.common$.diags_EXIT  = Diags.RUNTIME_OFF;
) @6 }: a7 y& T! bRegistry.common$.diags_INFO  = Diags.RUNTIME_OFF;
, T+ B% a5 \$ r" O, mRegistry.common$.diags_USER1 = Diags.RUNTIME_OFF;
* r  k! q- V. p6 n. F  f# D* u
5 O: T9 j# h$ B, c* b/* create a logger instance */
2 ^$ l+ E* e  M( G) qvar LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');8 J, K7 U1 d% W$ }6 l/ [. ^0 Q
var loggerBufP = new LoggerBuf.Params();
4 ?3 c6 y/ _# w6 cloggerBufP.numEntries = 128;  /* 128 entries = 4 KB of memory */5 J8 L+ L) W% E( `, L
loggerBufP.bufType = LoggerBuf.BufType_FIXED;
9 ?  q  d- E' g! p  U+ [9 Q+ C' s2 A: B; l8 M( }: B
var appLogger = LoggerBuf.create(loggerBufP);
* r  U. s2 b2 P1 ~appLogger.instance.name = "AppLog_Core1";' j) y, V) i1 W3 M1 K
Defaults.common$.logger = appLogger;8 Y  ?1 Y! F) V2 k$ j
Memory.defaultHeapSize = 0x8192;   
2 `& @, ~9 e1 Q& }! C& QIdle.idleFxns[0] = "&LEDStatus";
" k" V5 w7 s7 [Cache.initSize.l2Size = Cache.L2Size_32K;3 L+ h3 Y, e# b2 A5 L% x

7 d$ n5 E, q$ M4 j; h
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-28 15:24 , Processed in 0.041979 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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