学习ARM开发(7)

学习ARM开发(7)

上一次,学习到第一段代码,这次接着学习第二段代码,而第二段代码主要作用于保存数据的。
/*
*************************************************************************
*
* 启动代码。
*
* 如果不作内存初始化,就只建立堆栈,重新定位代码到RAM位置。
* 然后就可以跳到第二阶段的代码运行了。
*
*
*
*************************************************************************
*/
/* 保存变量的数据区 */

_TEXT_BASE:
        .word        TEXT_BASE

.globl _armboot_start
_armboot_start:
        .word _start

/*
* These are defined in the board-specific linker script.
*/
.globl _bss_start
_bss_start:
        .word __bss_start

.globl _bss_end
_bss_end:
        .word _end

#ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START
IRQ_STACK_START:
        .word        0x0badc0de

/* IRQ stack memory (calculated at run-time) */
.globl FIQ_STACK_START
FIQ_STACK_START:
        .word 0x0badc0de
#endif
上面这段代码,主要保存一些全局变量,用于BOOT程序从FLASH拷贝到RAM,或者其它的使用。
还有一些变量的长度是通过连接脚本里得到,实际上由编译器算出来的。
posted @ 2005-07-24 14:32  ajuanabc  阅读(96)  评论(0编辑  收藏  举报