1.语言基础 c基础、Linux及c高级、数据结构
2.顶层开发 IO、进程、网络
3.底层开发 ARM、系统移植
操作系统的功能:向下管理硬件,向上提供接口(函数)
接口种类:1,内存管理;2,文件系统;3,进程管理;4,网络协议;5,涉笔管理
ARM学习内容:ARM的编程模型、ARM寄存器组织(重点)、ARM的异常处理、汇编语言
4.逻辑1和0
计算机系统中用高低电平来表示逻辑1和0
数据再计算机中的存储、传输、运算都是以二进制的形式进行的
5.
计算机由输入设备、输出设备、存储器、运算器、控制器五部分组成
运算器和控制器组成CPU
程序时指令的集合
一个处理器能够访问的内存空间的大小,N位地址总线的处理器访问的内存空间时2的N次方
6.C编译
ARM认识唯一的语言只有0和1
x86机器码(二进制)
ARM(汇编语言)
C语言通过不同的编译器生成 X86或者ARM读懂的语言
-------------file a.out: search file information查看文件信息------------
7,GCC编译步骤
1,预处理:将不能参与编译的内容(如宏定义、头文件等)处理,主要进行宏定义替换/头文件展开/注释;gcc -E hello.c -o hello.i
2,编译:C代码生成汇编代码,检查语法错误;gcc -S hello.i -o hello.s
3,汇编:将汇编编译成机器码(二进制)gcc -c hello.s -o hello.o
4,链接:将.o文件链接对应的库函数gcc hello.o -o hello
8,总线:控制总线/地址总线/数据总线
9,RISC:精简指令集处理器(ARM)在功耗、体积、价格等方面有很大优势
CISC:复杂指令集处理器(x86)处理能力上有优势
10,Cortex-A:面向尖端的基于虚拟内存的操作系统和用户应用
Cortex-R:实时处理器为要求可靠性、容错功能和实时响应的嵌入式洗头膏提供高性能解决方案
Cortex-M:针对成本和功耗敏感的MCU和终端应用,一般不跑操作系统
11,System on chip 片上系统(SOC)
12,约定:Byte 8bits halfword 2Byte 16bits word 4Byte 32bits
13,一个处理器能够识别指令的集合,ARM指令集32bit,每条指令占用32位存储空间
注:Thumb指令集16bit,实现ARM指令PC自增4byte,实现Thumb指令PC自增2byte
14,当处理器运行ARM指令时:所有的指令必须Word(4byte)对齐,即指令存储的起始地址必须时4的整数倍
15,多字节数据的存储:小端对齐:低地址放低有效位,高地址放高有效位
大端对齐:低地址放高有效位,高地址放低有效位
ARM是小端对齐a[0]=012345678 (78是低有效位)
16,ARM Cortex-A处理器有8个工作模式
User:用户模式----执行上层应用程序时ARM处于该模式
FIQ: 快速中断模式----处理高优先级的中断
IRQ: 普通中断模式----处理低。。。。。。
SVC: 特限模式----复位或软中断指令执行后ARM进入此模式
Abort: 中止模式模式----存取异常
Undef: 未定义模式----指令未定义
System: 系统模式
Cortex-A处理器特有模式:
Monitor:为安全而扩展出的用于执行安全监控代码的模式
17,CPU 学习 1,寄存器---CPU内部的存储器,没有地址;register存储类型可存在CPU中
2,处理器接口-----寄存器,指令集;
注释:extern,state,register,auto四种存储类型
18,R15---PC(Program Counter) 存储当前执行指令的地址
1,执行完一条指令后该基础年起的值自动加4指向下一条指令
2,可人为修改
R14---LR(Link Register)
用于返回主函数 PC = LR
R13---SP(Stack Pointer)
栈的本质时内存,存放的临时数据,指向当前模式下的栈顶(压栈or出栈地址)
---------------nm a.out 查看 .c file中的函数------------------------------
CPSR(current program status register)
10000user 10001fiq 10010irq 10011svc 10111abort 11011undef 11111system 10110monitor
19,ARM的异常处理
a,异常源:FIQ IRQ Reset 软中断 DataAbort PrefetchAbort
当IQR异常产生后ARM的处理
1,保存CPSR寄存器的值到对应异常模式下的SPSR
2,修改CPSR a修改模式位IRQ模式;b禁止对应的异常;c修改为ARM状态
3,将产生异常处指令的下条指令的地址保存到LR_IRQ
4,PC = 0x00000018=异常处理地址
从异常处理程序返回到main需要做哪些准备
1,SPSR->CPSR回到之前的模式,重新打开中断
2,LR->PC实现程序返回