文章目录

  • 一、裸机开发(21个)
  • 二、嵌入式Linux驱动例程
  • 三、汇编
  • 3.1 处理器内部数据传输指令
  • 3.2 存储器访问指令
  • 3.3 压栈和出栈指令
  • 3.4 跳转指令
  • 3.5 算术运算指令
  • 3.6 逻辑运算指令


一、裸机开发(21个)

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编_汇编

二、嵌入式Linux驱动例程

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编_汇编_02

三、汇编

我们在进行嵌入式 Linux 开发的时候是绝对要掌握基本的 ARM 汇编,因为 Cortex-A 芯片一上电 SP 指针还没初始化,C 环境还没准备好,所以肯定不能运行 C 代码,必须先用汇编语言设置好 C 环境,比如初始化 DDR、设置 SP指针等等,当汇编把 C 环境设置好了以后才可以运行 C 代码。

3.1 处理器内部数据传输指令

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编_汇编_03


Rx(0~12):普通寄存器

CPSR:特殊寄存器

用法,就是把后一个传到前一个

3.2 存储器访问指令

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编_逻辑运算_04


正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编_arm开发_05


LDR,相当于给一个地址命名,LDR 是从存储器读取数据,STR 就是将数据写入到存储器中

3.3 压栈和出栈指令

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编_汇编_06


正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编_出栈_07


首先就是这是向下增长,也就是说,栈顶是R12,出栈先是LR再之后依次出栈。

主要是为了,中断保存数据

3.4 跳转指令

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编_出栈_08


主要是,B和BL,

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编_汇编_09


如果调用这个函数,不会再返回此处,可以用B对于BL,是可以保存之前的位置标号,执行完再回来

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编_汇编_10

3.5 算术运算指令

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编_逻辑运算_11

3.6 逻辑运算指令

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编_嵌入式_12