图源自fm.zju.edu.cn,侵删。
1.基本概念
(1)定义:有CPU,上面有程序在跑
嵌入式系统特点:功能、可靠性、成本、体积、功耗
嵌入式系统体积比较小
(2)与其他系统的区别:
区别于PC:PC资源更足:CPU、内存、硬盘、电源
区别于逻辑硬件电路:硬件上面没有CPU
(3)软硬件划分
软件:操作系统、编程模型
硬件:CPU
2.MCU 微控制器/单片机
封装尺寸相同时选容量最大的,实际做的时候可以换成容量小的
32位ARM
16位Thumb
Thumb2——Cortex{
Cortex A application 高端 手机
Cortex R Realtime
Cortex M Microcontrol 低端单片机
}
不考X86
arm 特权模式、用户模式、中断模式、快中断模式
MIPS无快中断,快中断关系到寄存器
工作模式之间怎么切换,如用户模式怎么切换到系统模式:软中断
ISA条件执行
S标志:要不要改寄存器,带S标志修改标志寄存器会影响后一条跳转指令的结果。后一条指令如果是跳转,并且前面修改了标志位就要stall
中断向量表的第一项是一个初始值,reset启动地址,Cortex启动地址不为0,ARM启动地址为0
startup.s拷贝有全局变量的寄存器,清零xxxxxx寄存器
main不是上电后第一个执行,启动程序之后才做
3.软件模型
(1)轮询:没有任何中断
(2)前后台:主循环要做的事情是固定的,有中断和循环,把数据放到共享内存,在大循环里读取共享内存,在大循环里要不断关中断开中断
(3)中断驱动:没有大循环,只有中断,中断来就做事情,没有就休眠
(4)动态队列:在中断里做基础工作,其他工作放队列里,主循环要做什么由队列决定
VS前后台 主循环要做的事跟中断有关系
VS中断 中断来了之后事情不是在中断中做的,而是在主循环里面做的
4.bootloader做什么:两种:一种为了linux,一种为了RTOS
一种SDRAM,一种Flash(本身)
两阶段工作:把CPU放在核里,初始化CPU、SDRAM,调整CPU频率等跟操作系统无关的事情
把操作系统可执行代码放在SDRAM,然后跳到SDRAM,开始系统
不具有第二阶段工作能力的bootloader,能把cpu初始化,然后跳到flash中开始操作系统。
5.RTOS
(1)什么是实时:ddl前完成
强实时
弱实时
ns us ms
(2)抢占式调度
①什么时候调度
还在CPU上不会被拉下来,要么自己发起:新任务(唤醒一个线程)、优先级发生变化、IO等待(间接主动等待,线程主动发起)。要么中断
调度是怎么实现的:堆栈指针、栈顶指针、寄存器,切出来做什么,切进去做什么
一个任务新建时要不要在寄存器里放假的什么东西(?)
优先级反转时怎么解决:提高优先级
6.Linux
设备驱动程序,作为内核模块的方式加载,内核模块在加载的时候两个必须的函数,in out。
7.接口与外设
GPIO:通用输入输出,复用:有多个功能,输入输出不能同时进行,不需要关心太EE的事情
在ARM上运行的速度远远低于CPU上的速度
外设寄存器实际上是一个地址
文件系统的sys文件夹,改动可以操控GPIO
串行通信:
UART:9600(波特率) 8(bit) N(停止位) 1(校验位1位)
1个起始位+8+1个停止位=10个位,考法:考是否通过校验
SPI
9.文件系统
NOR:可以给出地址直接读,可以运行程序,速度比SRAM慢,大容量数据储存器
NAND:不能给出地址读一个值,一次读一个block,写入、擦除速度慢,适合做bootload
flash:不能随意写入,写入之前先要擦除,读-擦除-写,一次写一个block,有写入次数限制
日志文件系统:往下写,不擦除
根文件系统:虚拟文件系统
开发过程:
上位机:PC
下位机:嵌入式板卡
中间怎么连的:下载调试一条线,通信一条线
仿真器:具有硬件的功能
Makefile 目标 依赖 动作