记录一下博主从事嵌入式软件开发学习到的一些基本概念和基础知识。
1 基于单片机开发的三层结构
狭义:底层就是组成单片机的硬件结构(CPU+存储器+IO等),驱动层就是POTRA、DDRB之类的让代码与硬件结构关联起来的东西(驱动),包括让片内物理地址映射到内存页从而可以在上位机PC端通过映射的内存地址操控物理寄存器里面的实际电荷。应用层就是自己写的单片机控制程序,包括设置寄存器+运算+信号传输等,其中设置寄存器就是在调用(应用)驱动层来控制单片机硬件。
广义:底层包括硬件结构和内存映射页、DDRB之类的,即狭义的硬件结构+驱动层。驱动层即狭义上的应用层,例如调用底层设置寄存器。应用层就是调用驱动层封装好的函数,只关心实现某功能,不关心如何设置硬件使其实现某功能。具体的设置硬件步骤在驱动层完成。
例:实现CAN通讯,驱动层完成有关CAN寄存器的设置,调配好CAN的物理结构,应用层直接调用驱动层函数,形参可能就是要发送的CAN报文,这样在应用层就只需要调用CAN报文发送函数,以及要发送的CAN报文就可以直接发送CAN报文了,而不需要对有关CAN的任何寄存器操作。
2 CPU的构成
算数逻辑单元(ALU)、控制单元、核心寄存器组
2.1 算数逻辑单元(ALU)
用于完成操作数的指定运算,包括加、减、乘、除等算数运算和与、或、异或、循环等逻辑运算。同时还可以对位(bit)变量进行位处理,如置位、清零等。
2.2 控制单元
用于对指令进行识别,并根据指令控制单片机各部件有序运行。包括程序计数器、指令寄存器、指令译码器、时序控制逻辑电路。
- 程序计数器(PC):存放着下一条将要从程序存储器中取出的指令的地址。在读指令时,PC将其中的数作为所取指令的地址输出给程序存储器,然后程序存储器按此地址输出指令,同时PC本身自动加1,然后指向下一条将要执行的指令在程序存储器中的地址。
- 指令寄存器(IR)、指令译码器及时序控制逻辑电路:单片机执行指令时,以主振频率为基准时间,控制器控制CPU的时序,将各个硬件环节的动作组织在一起。首先从程序存储器中读出指令,送入指令寄存器(IR)中保存,然后送入指令译码器中进行译码,译码的结果送入定时控制电路,由定时控制逻辑产生各种定时信号和控制信号,再送到单片机各个部件去执行相应的操作。
2.3 核心寄存器组
3 寄存器
一种半导体存储器,能够把二进制数码存储起来的部件,一个寄存器可能存储一个字节或者多个字节的信息。一个地址代表一个寄存器,编程时用地址或者用寄存器名称都可以对其控制的功能下达指令,且一个寄存器有很多位,每一位都可以控制不同的功能(通过高低电平控制)。寄存器就是组成单片机存储结构的基本单元。
单片机中有两种存储器,即程序存储器ROM和数据存储器RAM,它们都被规定了各自的地址范围,一般将这些地址范围称做寻址空间。它们里面存贮的信息即按照地址一个字节一个字节的放置。