驱动程序开发
裸机驱动(无操作系统) Linux驱动
以计算机技术为基础,在软件和硬件层间可以被剪裁的专业硬件计算机系统
SOC:片上系统
Kernel:内核
x86 (CISC:complex instruction set computer 复杂指令集电脑)
ARM:低功耗,低成本,低消耗 (RISC:reduces instruction set computer 精简指令集)
GPIO:通用目的的输入和输出
控制某个引脚变成高电平或者低电平
红字:网络标号,不可能独自出现
UART:用于不同设备,不同芯片之间的通信
APB:高级外设总线
AHB:高级高速总线(连接RAM,USB等)
Kernel:
ALU:算数逻辑单元
R0~R15:通用寄存器(全局变量)
pc(program counter):程序计数器,保存当前指令的下一条地址
lr:链接寄存器,为了从硬件的体系上实现函数的调用
sp:栈指针,RAM开空间,sp保存栈的地址,即为初始化栈指针(汇编初始化)
Cache:高速缓存
I Cache:指令Cache
D Cache:数据Cache
冯诺依曼架构:与哈佛相反
哈佛架构:数据与算法分开存放,提高效率
MMU:内存管理单元,决定SOC是否合适上操作系统,为了虚拟内存使用,将虚拟地址映射到物理内存空间上,提高RAM的使用效率
汇编需要关闭Cache和MMU
RAM:随机访问存储器
ROM:只读存储器(非易失性存储器)
flash闪存:nor flash 可以被寻址
存放编写的代码
nand flash 不可被寻址
块设备,512个字节一起写入,只能写0,一般用于硬盘
CPSR:当前程序状态寄存器
SPSR:备份CPSR
FIQ:快速中断请求
IRQ:中断请求
模式切换时,寄存器状态也发生改变
不同的工作模式都有自己不同的栈指针,都要分别初始化
所有模式公用一个pc,cpsr
发生异常时,一般在偏移量放入跳转指令,即函数指针的数组,初始化异常向量表