主要学习自北邮国院物联网工程大三下学期微处理器课程。
Introduction-随便聊
嵌入式系统是什么?专用的计算机系统。为专门功能可能对计算机架构,外设等做出一些取舍。
通常的限制:Cost(比如大量部署传感器节点),Size and weight limits(特定应用场景,比如下水道流量检测系统,需要体积小的节点),Power and energy limits(比如部署在极端环境下,喜马拉雅山顶采集节点,不方便去充电),Environment(防水,防高温等)
MCU MPU两种嵌入式系统区别:focus on 控制 还是 处理。控制比如点灯,机械臂,电机这些都是。处理比如摄像头采集到的数据进行图像处理。
编程语言:靠近计算机底层,主要使用汇编和c。
OS:嵌入式系统里不一定有操作系统结构。操作系统这个东西说白了就是更好地帮助管理计算机资源调度用的。现在我们来分析一下我们lab2的代码主函数:
void main(){
//background
while(1){
}
}
void IRQ_Handler(){
//interrupt handler function, frontground
}
后台部分:一个循环,重复去执行要做的任务。
这种方法乍一看也没啥问题。但是想想这样的计算机能做什么,只能按顺序执行一遍又一遍所有任务,甚至没法变顺序。
前台部分:中断处理,我们lab2里的uart_rx_isr函数,一般也用IRQ_Handler(实际上如果对lab2里的uart_rx_isr溯源一下,就会发现其实他也是被IRQ_Handler调用的,这个方法在启动对应中断时,触发中断就会自动调用)。
前后台合起来的系统还是一个裸机无os系统,只不过加了中断之后允许我们用中断的任务去打断后台轮询,改变一下执行顺序。比如串口中断发个数过来,CPU把手头后台的事情放下,去处理一下前台中断,处理完了再回来。
我们课程仅限于裸机开发的内容。
计算机系统简要介绍
Von Neumann Architecture
运算器控制器 (合在CPU中) 存储器 main memory 输入设备输出设备 IO
前面介绍过MPU重点在于数据计算处理,MCU则是控制,因此MPU不需要一些外设去控制外接的组件。
Harvard Architecture
和冯诺依曼区别就是在于指令和数据分开存储。这样寻指取指取数效率高。
Stored Program Concept
主要两个部分:RAM存储程序和数据,ROM存储不变只读的程序和数据。
cpu执行指令就是三个步骤的重复执行:fetch decode execute 取指解码执行
assembly
如果高级语言相当于人话翻译给计算机,汇编语言相当于计算机语言翻译给我们。更贴近底层,因此运行效率也更高,而且可以直接操作硬件。
ADD r3, r1, r2 ;r3 = r1 + r2
SUB r3, r0, r3
MOV r2, r1 ;r2 = r1
; 是注释。变量r123是寄存器register,是可以操纵硬件的部分,我们可以通过对其赋值来操作硬件。
高级语言通过 compiler 翻译为汇编语言,汇编语言通过 assembler翻译为二进制机器语言。