cortex M0 startup代码解析 如有错误欢迎指出

本文档详细解析了基于CMSIS的Cortex-M0核心设备启动文件startup_Nano100Series.s的内容,包括栈和堆的配置、中断向量表的建立以及复位中断服务程序的执行流程,为理解M0微控制器的启动过程提供指导。
摘要由CSDN通过智能技术生成
;/******************************************************************************
; * @file     startup_Nano100Series.s
; * @version  V1.00
; * $Revision: 3 $
; * $Date: 14/01/14 4:17p $ 
; * @brief    CMSIS ARM Cortex-M0 Core Device Startup File
; *
; * @note
; * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
;*****************************************************************************/  
;首先对栈和堆的大小进行定义,并在代码区的起始处建立中断向量表,
;其第一个表项是栈顶地址,第二个表项是复位中断服务入口地址。
;然后在复位中断服务程序中跳转C/C++标准实时库的__main函数。
;复位中断服务入口地址存放于0x0000_0000处。当M0遇到复位信号后,
;则从0x0000000处取出复位中断服务入口地址继而执行复位中断服务程序
;然后跳转__main函数,最后来到C的世界。




; <h> Stack Configuration栈配置,为后期跳转到C语言代码存放参数,地址做准备
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
;EQU相当于C语言的define
Stack_Size      EQU     0x00000500;,共1280个字节
;定义一片区域名为STACK,未初始化段,可读可写,8字节对齐
                AREA    STACK, NOINIT, READWRITE, ALIGN=3
;此指令用于分配一片连续的存储区域并初始化为0。表达式为要分配的字节数。
;SPACE可用“%”来代替
Stack_Mem       SPACE   Stack_Size
;__initial_sp表示一个标示,编译器计算这个标示的地址.
__initial_sp




; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>


Heap_Size       EQU     0x00000500


                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit




                PRESERVE8
                THUMB




; Vector Table Mapped to Address 0 at Reset
;中断向量表映射到0x00,
                AREA    RESET, DATA, READONLY
                ;使编译器指定一段只读的数据段,段名为reset
                ;EXPORT  __Vectors
                ;EXPORT相当于GLOBLE关键字,声明一个全局变量__vector,
;DCD指令:作用是开辟一段空间,其意义等价于C语言中的地址符“&”
;异常向量表从0x0000_0000开始,初始位置为Stack_Point所在地,
;自动取传入的地址存入SP寄存器中,其他中断存放中断程序地址,
;跳转到ISR中执行程序,具体查看datasheet page 111中描述

__Vecto
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值