zoukankan      html  css  js  c++  java
  • [ARM] Cortex-M Startup.s启动文件相关代码解释

    1. 定义一个段名为CSTACK, 这里:

        NOROOT表示如何定义的段没有被关联,那么同意会被优化掉,如果不想被优化掉就使用ROOT.

        后面的括号里数字表示如下:

        (1):这个段是2的1次方即2字节对齐

        (2):这个段是2的2次方即4字节对齐

        (3):这个段是2的3次方即8字节对齐

    SECTION CSTACK:DATA:NOROOT(2)

    2. 下面代码表示执行后面的指令函数(我理解为函数~),指令函数_iar_program_start和SystemInit为系统定义好的,在C库启动代码中。

        SystemInit:完成系统的初始化,自带的模块,主要是设置系统的时钟。

        __iar_program_start:这个函数是在启动代码中 armsrclib humb下面的代码中找到,是系统自带的启动模块

    EXTERN __iar_program_start
    EXTERN SystemInit

    3. PUBLIC 表示导出标号。外部可以使用

       符号 __vector_table 是有特殊意义的,所以必须注意添加进去
        ; The vector table is normally located at address 0.
        ; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
        ; The name “__vector_table” has special meaning for C-SPY:
        ; it is where the SP start value is found, and the NVIC vector
        ; table register (VTOR) is initialized to this address if != 0.

    PUBLIC _vector_table

    4. 通过 SFE 运算得到改段的结束地址,注意这个运算是在link的时候完成。所以IAR 的处理办法就是先定义一个block作为堆栈区,然后将堆栈指针放到这个block的末端

        剩下的就是各个中断向量

            DATA
    __vector_table
            DCD sfe(CSTACK)
            DCD Reset_Handler ; Reset Handler
            ......

    5. 首先,因为之前是DATA模式,所以这里先切换回THUMB模式。

        PUBWEAK: PUBLIC WEAK

        如果程序员在自己的代码中定义了后面声明的中断处理函数(如这里的NMI_Hander),那么在本文件中系统自带的中断处理函数无效,如果程序员没有自定义,则执行本文件的处理函数。

            THUMB
    
            PUBWEAK Reset_Handler
            SECTION .text:CODE:REORDER(2)
    Reset_Handler
            LDR R0, =SystemInit
            BLX R0
            LDR R0, =__iar_program_start
            BX R0
                   
            PUBWEAK NMI_Handler
            SECTION .text:CODE:REORDER(1)
    NMI_Handler
            B NMI_Handler

    未经允许不得转载:浩瀚先森 » [ARM] Cortex-M Startup.s启动文件相关代码解释

  • 相关阅读:
    Redis 简介
    图片懒加载、selenium和PhantomJS
    Python网络爬虫之三种数据解析方式
    Scrapy框架之CrawlSpider
    Scrapy 框架
    python 网络爬虫概念与HTTP(s)协议
    Mysql概念及基本操作
    Python re 模块
    线程与进程应用场景
    全局解释器锁 GIL
  • 原文地址:https://www.cnblogs.com/harleygwak1206/p/5501110.html
Copyright © 2011-2022 走看看