ARM汇编基础
我们在学习 STM32的时候几乎没有用到过汇编,可能在学习 UCOS、 FreeRTOS等 RTOS类操作系统移植的时候可能会接触到一点汇编。但是我们在进行嵌入式 Linux开发的时候是绝
对要掌握基本的 ARM汇编,因为 Cortex-A芯片一上电 SP指针还没初始化, C环境还没准备
好,所以肯定不能运行 C代码,必须先用汇编语言设置好 C环境,比如初始化 DDR、设置 SP指针等等,当汇编把 C环境设置好了以后才可以运行 C代码。所以 Cortex-A一开始肯定是汇
编代码,其实 STM32也一样的,一开始也是汇编,以 STM32F103为例,启动文件
startup_stm32f10x_hd.s就是汇编文件,只是这个文件 ST已经写好了,我们根本不用去修改,所
以大部分学习者都没有深入的去研究。汇编的知识很庞大,本章我们只讲解最常用的一些指令,
满足我们后续学习即可。
I.MX6U-ALPHA使用的是 NXP的 I.MX6UL芯片,这是一款 Cortex-A7内核的芯片,所以
我们主要 讲的是 Cortex-A的汇编指令。为此我们需要参考两份跟 Cortex-A内核有关的文档:
《 ARM ArchitectureReference Manual ARMv7-A and ARMv7-R edition.pdf》和《 ARM Cortex-A(armV7)编程手册 V4.0.pdf》 ,第一份文档主要讲解 ARMv7-A和 ARMv7-R指令集的开发,
Cortex-A7使用的是 ARMv7-A指令集,第二份文档主要讲解 Cortex-A(armV7)编程的,这两份
文档是学习 Cortex-A不可或缺的文档。在《 ARM Archite