keil arm 关于heap和microlib
[复制链接]
使用lpc2478和keil arm,碰到如下问题:
在启动文件中修改堆栈初始化程序:如下程序,目的是将stack放在处理器内部ram中,将heap放到外部sdram中(heap比较大,在__user_initial_stackheap的R0和R2直接指定了heap的起始和终止位置),仿真中使用malloc和free测试,验证heap是正常工作的。但是后来程序中加入了图像转换程序(在其他平台验证过的),编译可以通过,但是仿真是进不了main,停在SWI_Handler B SWI_Handler,不知道是什么原因啊???
后来将Use MicroLIB选项打开,则可以进入main了(此时堆栈的分配和不使用Use MicroLIB时不同的),但是由于没有分配足够的heap空间,图像转换程序并不能正常工作。
测试来测试去,感觉好像应该就是和heap有关,但是也不能确定,请各位高手指教啊!!!!
IF :DEF:__MICROLIB
EXPORT __heap_base EXPORT __heap_limit
ELSE ; User Initial Stack & Heap AREA |.text|, CODE, READONLY
IMPORT __use_two_region_memory EXPORT __user_initial_stackheap __user_initial_stackheap
LDR R0, = 0xa0080000;Heap_Mem ; LDR R1, = (Stack_Mem + USR_Stack_Size) LDR R2, = 0xa0100000;(Heap_Mem + Heap_Size) ; LDR R3, = Stack_Mem BX LR ENDIF
怎样能够在keil给出的lpc2478的启动文件基础上改写出能够将堆和栈分配在不同空间的启动程序呢????
[ 本帖最后由 forever6110 于 2012-4-28 08:13 编辑 ]
|