启动文件开始的入口是?(谢谢解答)

2019-07-21 06:21发布


启动文件一开始就是这些设置栈和堆的设置

Stack_Size                EQU                0x00000400       

                        AREA        STACK,NOINIT,READWRITE,ALIGN=3
Stack_Mem        SPACE        Stack_Size
_initial_sp

Heap_Size        EQU                0x000000200       

                        AREA        HEAP,NOINIT,READWRITE,ALIGN=3       
_heap_base
Heap_Mem        SPACE        Heap_Size
_heap_limit

这个是启动程序中设置栈和堆的代码,但是我刚刚写了一个点亮led灯的代码段,只有将起始的地址放入到Reset_handler才有用
_start                PROC
                        LDR        R0,=RCCDE
                        MOV        R1,#(1<<5);
                        STR        R1,[R0]
                               
                        LDR        R0,=GPD
                        MOV        R1,#(1<<8)
                        STR        R1,[R0]

                        LDR        R0,=GPD
                        MOV        R1,#0
                        STR        R1,[R0]
                       
                        ENDP

这个是我写的

Reset_Handler            PROC
                                        EXPORT  Reset_Handler             [WEAK]
                                               
                                               
                                                LDR        R0,=_start                   只有放在这个里面才能起作用
                                                BX        R0
                                        IMPORT        main
                                                LDR        R0,=main
                                                BX        R0
                                                ENDP


所以我就有点怀疑,是不是上面的设置堆栈的代码也没有执行,或者程序是不是只是从Reset_handler开始运行,刚开始执行的代码难道不是设置栈堆处开始的吗?

0条回答

一周热门 更多>