关于OMAPL138在SYSBIOS下DSP侧动态申请内存问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2015-9-4 08:33:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
创龙工程师你好,我在OMAPL138单独调试DSP程序(使用SYSBIOS)时,在任务中使用calloc函数动态申请内存,用完后free,类似如下结构. X1 w* S! j$ c1 m
: i7 M2 S6 k  ]+ U
    float *x_d=(float  *)calloc(len_in,sizeof(float));                    //256
0 y, [% z( i; q# |& s+ @
- A9 l# v8 `# m1 U" w, G其他程序段。。。。。
1 S5 Y' _" V; u- k9 d; G1 z1 f ; q/ e# n; z! y& L* j" T) N5 Z* c
   free(x_d);
5 d% l7 Y0 m. O6 D
  U& A+ @0 m7 M# G3 w使用DSP侧单独调试功能,验证动态申请没有问题,
' [) ~6 t1 S6 x3 g
6 K8 }6 V$ D5 H, @) r但是,当ARM侧加载DSP核心程序实际运行时,上述函数申请的内存好像失败,没有成功。请问是不是需要在哪里设置。
  }% f: z* o; Z" X' \

$ E1 k! [$ i" w( p# W* {
8 E: N) q( r5 W1 A; f. a3 R
  b1 Z& l2 m; n" r7 A: f2 o
8 f/ I4 U' e2 o+ u" X/ n# E
( i3 W- D2 ~. t6 H' G. F% M- E
( o6 m+ V: ?6 r  S) U9 ^  k) H  u0 X$ E3 h1 g" w6 a
: n4 Y. w3 n& [0 u  t: R
( Y" u8 t9 w' q" k

5 ^% z; S+ l: [4 k. @* F
分享到:  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 */
3 p  }- y' I, v8 oProgram.heap = 0;! Q' |/ y3 N$ {2 S, K: @
Program.argSize = 100;  /* minimum size */
8 p1 P$ w: T: F2 r. bProgram.stack = 0xF000;                   //我改到F000  也不行
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
地板
发表于 2015-10-28 09:51:31 | 只看该作者
/* create a default heap */4 C5 k9 b2 q' [2 `
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');6 f+ T6 b& F2 O6 S' A% w) F& x
var heapMemParams = new HeapMem.Params();; Z" `, S! a- A  R
heapMemParams.size = 0x4000;
5 d, K4 Z$ A# m* z/ e' T1 o" z. k3 V) o# [) [  W4 D. U
var Memory = xdc.useModule('xdc.runtime.Memory');! n) v. Y* S$ v! H
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);
1 z6 g# }6 T( T0 {/ k5 q" S7 G- h5 n
. _6 @5 z7 a7 G我大约calloc  每次共计大小为5K*16bits,
4 X1 \. m4 u, h- \# r而默认配置才0x4000、需要改大。6 n* }, g$ N0 X4 O) W
1 q$ M% C) K  x4 B* ?" t
回复 支持 反对

使用道具 举报

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 | 只看该作者
补充说明
, [% l/ Y) `4 c4 s! {/ s我大约calloc  每次共计大小为5K*16bits,怀疑哪里需要配置一下
) a2 ]! O1 F% n& f; v(不过疑惑的是,为何单独DSP仿真就没有问题呢?)
+ C9 I/ I1 t* q" P, C* u

2 O& U7 p  b. ?3 @/ E5 P是不是需要在DSP.CFG中进行配置( O, u% y  C1 @8 }. O  A
我现在的配置为
6 [% |! {; z  t2 y! m6 J/ E5 @3 |# |/ }  J; Y+ R7 Z
/*2 A& F$ D4 h8 w
*  ======== Operating System Configuration ========
; P  W( m" Q3 r, z7 k- y */
7 u( `6 Z0 {+ @# Q& t/ Y! A. ?- X8 \( W; f* A* S' j
/* no rts heap */( H9 S9 d4 v+ |, r7 `: I: J4 z
Program.heap = 0;0 |) u' i; s( i8 a
Program.argSize = 100;  /* minimum size */
5 n# D; Y+ c& @! UProgram.stack = 0xF000;                   //此处修改后的值。不太懂,所以改大
* j8 A6 O' {) Z; u/ M* t9 I5 J+ L5 T0 s" S' V; m, M
/* create a default heap */! n& f/ Z8 g  o0 u: y$ j: \
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');% Q6 a0 j' M: f" }, R9 f8 N
var heapMemParams = new HeapMem.Params();, L( ?# e) }/ l% S0 i- T
heapMemParams.size = 0xFf00;           
//此处修改后的值。不太懂,所以改大7 k! H2 o* d' r" S$ a

, }8 G8 P% G, C* U
var Memory = xdc.useModule('xdc.runtime.Memory');+ i; G) v/ U& N
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);) I3 l) H+ T" N! w8 E: l
6 x1 i* Q- Y; F1 @. T! i
/* configure System module */
8 j7 y) O4 V5 n" N3 J" |var SysMin = xdc.useModule('xdc.runtime.SysMin');
; K0 @5 @( q) r3 r) WSysMin.bufSize = 0x1000;% }1 D6 |/ U/ k3 O% T
SysMin.flushAtExit = false;
  j6 M) T3 W5 S. u! ~% E( B
+ r' O, f# J+ Z& A$ q1 Wvar System = xdc.useModule('xdc.runtime.System');
- h5 q0 O3 M$ I5 N! b  h  fSystem.SupportProxy = SysMin;! t( K& a8 J* O( D, m, o
8 B5 E# @6 ?- @- E: K
/* configure SysBios to use the lower half of Timer 1 */
" ~  Y+ w8 A* n; ]- r8 o# q# I" Wvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');" F$ b) z) ]) }3 u& t1 ~; F
var Clock = xdc.useModule('ti.sysbios.knl.Clock');
: N2 o. Q( o6 `+ b4 [: x; i, S8 J" m; YTimer.timerSettings[1].master = true;
" L+ L; B' d5 ITimer.defaultHalf = Timer.Half_LOWER;) O$ ~1 f- l2 K, p9 Q; z& M; a
Clock.timerId = 1;( ~* X* \3 E6 y4 Y) [
* s1 s0 Q& e  J5 f

9 {0 Q$ ~" F/ M, r0 D0 k/*
; D% }8 m  D0 G. V( \2 j7 U *  ======== Miscellaneous Configuration ========
  G& C: i( u, h/ Q$ R- m+ N& _ */
7 u/ _6 G0 C0 L# ?) l* j1 b
# Y# p* f  ?2 k8 W2 z% u/* set default diags mask */
" P# m5 h' e* k' e& T: r( ]# {var Diags = xdc.useModule('xdc.runtime.Diags');
0 J% p) ~& ^! s: avar Defaults = xdc.useModule('xdc.runtime.Defaults');. }3 Z2 J; S2 G: }
$ V& @) l' Y+ b8 l$ }
Defaults.common$.diags_ENTRY     = Diags.ALWAYS_OFF;
; X# ]6 _/ X1 \; |0 IDefaults.common$.diags_EXIT      = Diags.ALWAYS_OFF;, s; X0 r6 E9 b9 V
Defaults.common$.diags_LIFECYCLE = Diags.ALWAYS_OFF;
0 F/ D/ p$ R; W0 L$ \' ZDefaults.common$.diags_INTERNAL  = Diags.ALWAYS_OFF;  /* needed for asserts */
$ u9 Z/ r1 L6 F% n. H$ jDefaults.common$.diags_ASSERT    = Diags.ALWAYS_OFF;  /* development only   */- `9 \* s6 S9 ?& P; A' B- z
Defaults.common$.diags_STATUS    = Diags.RUNTIME_ON;
4 B" F' x$ o5 s; d5 E# NDefaults.common$.diags_USER1     = Diags.ALWAYS_OFF;; U" ^' d; Q5 @: Z. c
Defaults.common$.diags_USER2     = Diags.ALWAYS_OFF;
4 k7 i0 f) S/ g! T/ p% G+ P( ]Defaults.common$.diags_USER3     = Diags.ALWAYS_OFF;& ?5 {$ d: \: G
Defaults.common$.diags_USER4     = Diags.ALWAYS_OFF;
4 i, o" k( ~2 y/ G: c9 cDefaults.common$.diags_USER5     = Diags.ALWAYS_OFF;
6 H+ n# k. {5 p; @$ @Defaults.common$.diags_USER6     = Diags.ALWAYS_OFF;% r: O! }$ c, c$ O) g( q; ]
Defaults.common$.diags_INFO      = Diags.ALWAYS_OFF;1 ^+ ?. z& z) n( y
Defaults.common$.diags_ANALYSIS  = Diags.ALWAYS_OFF;
6 T, ^7 @+ c$ M" O. A* ?" ?- x' _
  w$ B4 A1 I; @' T) S7 x9 A5 X+ o/* override diags mask for selected modules */
0 W" f9 d+ {6 V6 C( B! ~$ ixdc.useModule('xdc.runtime.Main');
1 K  ~- ?% ~5 M( y5 CDiags.setMaskMeta(' @0 v7 X) C8 S' F5 Z
    "xdc.runtime.Main",
, x% q/ {+ {4 ]' m3 ^) }7 ^( h    Diags.ENTRY | Diags.EXIT | Diags.INFO,/ U4 V0 U# w0 w7 `9 k6 ^7 M
    Diags.RUNTIME_ON. F( R) d# J/ z/ [  v
);
% i# W( q0 Y/ j( L' n4 E$ k1 z* M* K( n2 L) K
var Registry = xdc.useModule('xdc.runtime.Registry');3 n/ m5 v- a& G) ]
Registry.common$.diags_ENTRY = Diags.RUNTIME_OFF;3 ^, Q  u2 X. j6 ^* F0 [% U5 m
Registry.common$.diags_EXIT  = Diags.RUNTIME_OFF;7 x' j5 Z4 V4 z0 s. z/ X  g
Registry.common$.diags_INFO  = Diags.RUNTIME_OFF;
0 U. Q1 N1 y. Q2 M! PRegistry.common$.diags_USER1 = Diags.RUNTIME_OFF;$ }% Y4 a6 L$ Y! ]& [/ r/ s! G7 W
% X; c7 |3 p+ H2 e/ }6 I* S+ O
/* create a logger instance */
) A& r+ ]' n3 g5 R1 ?var LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');- j7 y1 E- n2 J
var loggerBufP = new LoggerBuf.Params();. e4 o/ A  v& V& f: |0 w
loggerBufP.numEntries = 128;  /* 128 entries = 4 KB of memory */
0 b: g% x; M1 F9 c5 ~loggerBufP.bufType = LoggerBuf.BufType_FIXED;
/ |% `% O2 @- I' B' _+ K$ J1 u1 w3 I+ d! F* w
var appLogger = LoggerBuf.create(loggerBufP);
  i% s0 `$ J# V0 H% N; d1 M6 n2 P* JappLogger.instance.name = "AppLog_Core1";; t0 w% O) |, ^
Defaults.common$.logger = appLogger;
4 s& ^/ h7 Z. v0 [* wMemory.defaultHeapSize = 0x8192;   
( M2 z! ^6 Q3 P; g; z5 ZIdle.idleFxns[0] = "&LEDStatus";+ s4 f6 @# z7 W% K
Cache.initSize.l2Size = Cache.L2Size_32K;
" I& w1 S" @9 w$ a
4 ?& L9 O7 f* \
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-20 20:11 , Processed in 0.043461 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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