首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

MDK或许ADS里_user_initial_stackheap函数的作用

2013-01-19 
MDK或者ADS里_user_initial_stackheap函数的作用MDK里,最后一段:Enter User Mode and set its Stack Poin

MDK或者ADS里_user_initial_stackheap函数的作用
MDK里,最后一段:
;  Enter User Mode and set its Stack Pointer    //用户模式的栈已经定义好了
                MSR     CPSR_c, #Mode_USR
                MOV     SP, R0
                SUB     SL, SP, #USR_Stack_Size


; Enter the C code
;
                IMPORT  __main
                LDR     R0, =__main
                BX      R0


; User Initial Stack & Heap
                AREA    |.text|, CODE, READONLY

                IMPORT  __use_two_region_memory
                EXPORT  __user_initial_stackheap
__user_initial_stackheap

                LDR     R0, =  Heap_Mem
                LDR     R1, =(Stack_Mem + USR_Stack_Size)
                LDR     R2, = (Heap_Mem +      Heap_Size)
                LDR     R3, = Stack_Mem
                BX      LR


                END
__user_initial_stackheap
这个函数说是自动被调用的,我们已经设置好了用户的栈,为何要加呢,我再往上看了些,不是很懂,太抽象,能给直观的讲讲吗?谢谢。能通俗易懂就好了,呵呵
我理解就是:进入_main后,系统库函数会自动调用这个函数,但是用来干啥的呢?RO- R3就是那个库函数的参数,实际上是库函数调用了__user_initial_stackheap后只是将几个参数放入寄存器,返回后,库函数继续利用RO-R3的值再进一步处理,可是处理的是什么呢,有人说是库函数堆栈的初始化,但是初始化堆栈前面不是已经初始化完了吗?求指教。
[解决办法]
请参照:
《RealView? 编译工具4.0 版   库和浮点支持指南》
在ARM官网上可以直接下载,里面说的比较清楚

这部分内容在2.10

热点排行