导图社区 计算机三级嵌入式系统开发技术
计算机三级嵌入式系统开发技术的一些易错常考知识点,分享了:嵌入式系统概论、嵌入式处理器、嵌入式系统硬件组成、嵌入式系统软件、嵌入式系统的开发,一起来看吧。
编辑于2023-03-25 20:43:47 江苏省嵌入式系统开发技术
嵌入式系统概论
嵌入式系统及应用
嵌入式系统
嵌入式系统的组成与分类
嵌入式系统的逻辑组成
嵌入式处理芯片
数字信号处理器DSP
指令系统中增加了单指令多数据(SIMD)并行处理的特殊指令
嵌入式系统与数字媒体
数字(电子)文本
字符集及编码
UCS/Unicode编码
UTF-8
CJK汉字使用3字节表示
文字的制作与展现
字符形状的描述方法
点阵法
轮廓法
数字图像
数字图像的获取和主要参数
主要参数
位平面数目
像素颜色分量的数目
数字图像常用文件格式及应用
常用图像文件格式
GIF
无损压缩
数字音频与数字视频
音频/视频信息的数字化
取样
取样频率通常在40kHz以上
量化
编码
数字音频常用文件格式及其应用
电话数字语音
300~3400Hz
CD立体声
20~20000Hz
固定电话通信中使用PCM编码(脉冲编码调制,码率为64kb/s)和ADPCM编码(自适应差分脉冲编码调制,码率为32kb/s)
数字通信与计算机网络
计算机网络
计算机网络的组成与类型
计算机网络的组成
计算机等智能电子设备
数据通信链路
通信协议
网络软件
以太局域网
分类
按网络终端设备互联的拓扑结构
星型网
环形网
总线型网
混合型网
数据帧格式
发送设备MAC地址
接受设备MAC地址
控制信息
有效载荷
校验信息
以太网卡
每块网卡都有一个全球唯一的48个二进制位组成的MAC地址
以太网交换机是一种高速电子开关,连接在交换机上的所有终端设备都可同时相互通信
互联网
IP数据报
IP数据报由两部分组成
头部
数据区
数据区的长度最大可达到64KB(16位)
路由器
功能
选择路由和转发IP数据报,并进行协议转换
嵌入式处理器
嵌入式处理器概述
ARM处理器概述
ARM处理器架构的发展
ARMv7M
仅支持Thumb-2指令集的子集
Cortex-M3
ARMv4
ARM920
增加了16位的Thumb指令集
ARM处理器体系结构
ARM处理器的工作状态及工作模式
ARM处理器的工作模式
用户模式User
程序正常执行工作模式
快速中断模式FIQ
处理高速中断,用于高速数据传输或通道处理
外部中断模式IRQ
用于普通中断处理
管理模式SVC
操作系统的保护模式,处理软中断SWI
中止模式ABT
处理存储器故障,实现虚拟存储器和存储器保护
未定义指令模式UND
处理未定义的指令陷阱,用于支持硬件协处理器仿真
系统模式SYS
运行特权级的操作系统
ARM处理器的寄存器组织
ARM状态下的寄存器组织
通用寄存器
R13用作堆栈指针SP
R14用作程序链接寄存器LR
ARMC处理器的异常
经典ARM异常种类、异常向量表及优先级
复位RESET
异常向量地址0x0000000
未定义指令UND
0x00000004
软件中断SWI
指令预取中断PABT
数据访问中止DABT
外部中断请求IRQ
快速中断请求FIQ
ARM处理器中的MMU和MPU
ARM处理器中的MPU
MPU允许ARM处理器的4GB地址空间定义8对域,分别控制8个指令和8个数据内存区域
典型ARM处理器介绍
经典ARM处理器
ARM920T
包括MMU/16KB的指令Cache和16KB的数据Cache
ARM处理器分类
ARM专家处理器(SecurCore)
SC100(基于M0)
SC300(基于M3)
ARM处理器指令集
ARM指令的寻址方式
寄存器间接寻址
用于间接寻址的寄存器必须用[]括起来
ARM指令集
分支指令
B转移指令
BAL Label即无条件跳转到label
BL
带返回的跳转指令
BLX
带返回且带状态切换的转移指令
加载存储指令
STR
向内存写
LDR
从存储器读
可以访问外部设备的指令助记符
数据处理类指令
ADD加法
ADC带进位加法
ADCS中加S表示相加的结果会更新CPSR的状态标志
TST位测试指令
与操作,更新CPSR中条件标志位的值
RSB反向减法
嵌入式系统硬件组成
嵌入式系统硬件组成概述
嵌入式最小硬件系统
电源电路
稳压器
普通稳压器
低压差稳压器(LDO)
时钟电路
复位电路
调试测试电路
存储器
基于ARM内核的典型嵌入式应用系统组成
嵌入式最小硬件系统
前向通道
后向通道
人机交互通道
相互互联通信
嵌入式处理芯片
基于ARM内核的嵌入式芯片的硬件组成
互联通信组件
SPI
串行外设接口
总线系统是一种同步串行外设接口
可完成全双工的同步串行通信
IIC
只有两根信号线
时钟线SCL
数据线SDA
I/O接口及常用I/O设备
串行外设接口SPI
SPI接口的连接
一主一从式
互为主从式
多主多从式
串行异步通信接口UART
起始位以逻辑0为标志,停止位以逻辑1为标志
通用串行总线USB
USB总线通信采用主从方式,它有一个主机
USB总线的接口信号
USB总线(1.1和2.0)有4根信号线,采用半双工差分方式,用来传输信号并提供电源
Mini USB连接器有5个引脚
USB的信号编码方式
翻转不归零制(NRZI)编码方式
电平保持时,传送逻辑1
电平翻转时,传送逻辑0
USB的主要特点
USB可以提供500mA(USB3.0提供900mA)电流
USB2.0的速度为480Mb/s,USB3.0的速度达到640MB/S
集成电路互连总线接口IIC
总线仲裁
总线控制遵循“低电平优先原则"
常用简单输出设备
LCD显示设备
通用计算机中使用的LCD显示器包括
显示屏
驱动电路
接口
接口标准
VGA
DVI
HDMI
电源
外壳
嵌入式系统的存储器
存储器的分类
随机存取存储器
DDR2(或DDR3)SDRAM与DDR相比,使原来DDR可预读2位变成可预读4位(8位)数据
存储器主要性能指标
带宽
并行总线的存储器带宽
带宽=总线频率*数据宽度/8*传输次数/总线周期(B/s)=总线频率*数据宽度*每周期传送次数/8
串行总线的存储器带宽
带宽=总线频率*0.1(B/s)
ARM内核典型嵌入式处理芯片
S3C2410的时钟及电源管理组件
时钟信号,经过主锁相环电路得到更加固定的锁相后的时钟,在时钟控制器、电源控制器以及USB控制器的控制下,产生不同需求的时钟信号
MPLL时钟(锁相环时钟)
UPLL时钟(USB时钟)
HCLK时钟(连接到AHB总线上外围高速组件使用的时钟)
PCLK时钟(连接到APB总线上外围组件使用的时钟)
FCLK时钟(内核所需快速时钟)
电源管理模块
正常模式
慢速模式
掉电模式
掉电模式下电源管理模块将断开内部电源,除非唤醒逻辑有效,否则内核不产生功耗
休眠模式
休眠模式下电源管理模块仅断开ARM内核时钟FCLK,让CPU处于休眠状态,但为外围硬件组件提供时钟
S3C2410的脉宽调制定时计数器PWM Timer
S3C2410内部有5个16位定时器Timer,有4个具备PWM输出
PWM Timer内部结构
占空比=TCMPBn/TCNTBn
TCNTBn是计数缓冲寄存器
TCNTBn=PCLK/(预分频值+1)*时钟因子
TCMPBn是比较缓冲寄存器
PWM特殊功能寄存器
定时器配置寄存器TCFG0~1
定时器控制寄存器TCON
定时器观察寄存器TCNTO0~TCNTO4
S3C2410的通用I/O接口GPIO
GPC、GPD端口
作为LCD液晶屏接口引脚
第三功能11都与LCD有关
GPC/GPD用于LCD显示时
GPCCON=0xAAAAAAAA
GPDCON=0xAAAAAAAA
S3C2410的实时时钟RTC
实时时钟模块RTC采用单独的供电引脚和单独的时钟源
分频系数由时钟源决定,无法通过编程改变
嵌入式系统软件
嵌入式系统的软件组成
嵌入式软件的特点
软件与硬件一体化
软件代码时空效率要求高,实时性要求高
软件可裁剪
软件应用环境复杂,安全性和可靠性要求高
软件开发难度大
软件面向用户、面向产品、面向应用,受限于功能和具体应用环境
软件产业高度分散
软件具有较长的生命周期
引导加载程序
引导加载程序的概念和功能
引导加载程序负责
系统的上电自检
硬件初始化
建立存储空间映射
配置系统参数
建立上层软件的运行环境
加载和启动操作程序
嵌入式系统的设备驱动程序
设备驱动程序的概念
设备驱动程序的功能
设备初始化
设备打开
设备读取和写入
设备状态查询和设备控制操作
嵌入式操作系统
实时系统与实时操作系统
实时系统
实时系统对外界的响应是否正确不仅取决于功能正确性,而且取决于对事件处理的时间正确性
实时操作系统
细粒度的任务优先级控制
实时抢占式调度
相同优先级的多个任务则可采用时间片轮转调度机制
实时调度的目标是在正常情况下尽可能满足所有任务的时限,而在峰值负荷条件下至少保证强实时任务的时限
实时操作系统的实时性指标
评价实时系统的实时性最重要的指标是响应时间
与任务切换和中断延时时间有关的参数是衡量实时操作系统性能的最重要指标
中断延时时间
从接收到可屏蔽中断请求信号到操作系统作出响应并转入中断服务程序所需要的最长时间
任务切换时间
任务抢占时间
系统讲控制权从低优先级的任务转移到高优先级任务所花费的时间
嵌入式操作系统概述
嵌入式操作系统的特点和分类
按实时性分类
强实时操作系统
VxWorks
RTEMS
QNX
μC/OS-Ⅱ
Nucleus
按商业模式分类
免费的嵌入式操作系统
RTEMS
eCOS
FreeRTOS
商业嵌入式操作系统
VxWorks
μC/OS系列
常用嵌入式操作系统简介
Nucleus PLUS 嵌入式操作系统 是ATI公司为实时嵌入式应用而设计的抢占式多任务商业操作系统内核
Linux内核
Unix与Linux
Linux遵守IEEE规定的POSIX规范
Linux与自由软件
Linux遵从的协议名称为GPL
Linux内核与Linux发行版
Linux指操作系统内核
GNU/Linux为操作系统
嵌入式Linux操作系统
Linux的实时化技术
内核补丁方式
在通用Linux内核上打上实时扩展补丁
实时任务和普通的应用采用同样的编程方式并使用同样的API
双内核方式
在系统中增加微内核形态的第二个内核,作为硬件与通用Linux内核间的抽象接口
微内核的主要任务是中断管理
优点
微内核可以提供硬实时支持
缺点
微内核与标准Linux内核共存,实时任务需要按照微内核提供的另一套API进行设计,且实时任务与非实时任务独立,令任务调试更加困难
超微内核方式
在实时内核和非实时内核之外增加了一个功能进一步缩减的超微内核
超微内核是一个专门负责处理中断的底层小程序
Linux内核的结构与组成
处于中间的是进程调度,右边是进程间通信
进程间通信
管道
命名管道
信号消息队列
共享内存
信号量
socket
嵌入式Linux操作系统的构建
基于嵌入式linux发行版构建嵌入式Linux
Xenomai
超微内核机制的Linux内核实施开发框架
μC/OS操作系统概述
μC/OS-Ⅱ的特点
μC/OS-Ⅱ的基本功能
任务调度
任务管理
时间管理
内存管理
任务间通信与同步
μC/OS-Ⅱ的任务及其管理
μC/OS-Ⅱ的任务构成
μC/OS-Ⅱ的任务由三部分构成
任务的程序代码
任务堆栈
任务控制块
μC/OS-Ⅱ的任务状态
处于被中断的任务在中断返回后转入运行态
μC/OS-Ⅱ的任务调度
μC/OS-Ⅱ支持
任务级的任务调度
发生在当前运行态任务因等待某一事件而被阻塞或者被挂起时,或是有更高优先级的任务处于就绪状态时
发生时,内核通过系统函数OS_TASK_SW()进行任务级的任务切换
中断级的任务调度
内核通过OSIntExit()判断是否存在更高优先级的就绪任务,如果存在则进行中断级的任务切换
利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()实现关中断和开中断
利用宏OS_ENTER_CRITICAL()使系统进入临界状态,关闭所有可屏蔽中断
利用函数OSSchedLock()和OSSchedUnlock()给调度器上锁和解锁
μC/OS-Ⅱ的中断处理
中断服务程序的执行步骤
保存全部CPU寄存器
调用OSIntEnter()或OSIntNesting直接加1
在用户中断服务程序中,可以直接将变量OSIntNesting加1
或者直接调用函数 void OSIntEnter(void),该函数在关中断状态下对变量OSIntNesting加1,并在返回前开中断
执行用户中断服务代码(调用中断处理函数)
调用OSIntExit()
恢复所有CPU寄存器
执行中断返回指令
μC/OS-Ⅱ的系统服务
μC/OS-Ⅱ的任务管理服务
任务挂起和任务恢复
调用OSSemSuspend()函数可以挂起一个任务
μC/OS-Ⅱ的时钟节拍与时间管理服务
用户必须在调用OSStart()启动多任务调度以后再开启时钟节拍器
μC/OS-Ⅱ的任务间通信和同步服务
信号量
创建信号量
OSSemCreate()
若信号量表示某事件的发生次数,则初始值应设为0
若信号量作为二值信号量使用,初始值应设为1
删除信号量
OSSemDel()用于删除一个信号量。在删除信号量之前,必须首先删除操作该信号量的所有任务
无等待的请求信号量
OSSemAccept()
查询信号量状态
OSSemQuery()
消息队列
无等待的请求消息队列
OSQAccept()
在没有接收到消息时,并不会挂起任务,因而可以在中断服务程序中调用
创建消息队列
OSQCreate()
μC/OS-Ⅱ应用程序设计
μC/OS-Ⅱ的初始化与main()函数结构
主函数main()实现的功能主要包括
硬件初始化
调用OSInit()初始化μC/OS-Ⅱ内核
创建任务
创建任务间通信或同步的内核对象
应用程序相关的初始化操作
调用OSStart()启动多任务调动
μC/OS-Ⅱ用户任务的三种结构
单次执行任务
三步走
任务准备工作
任务实体
自我删除函数调用
OSTaskDel(OS_PRIO_SELF)
周期执行的任务
在每次完成具体功能后调用系统延时函数OSTimeDly()或OSTimeDlyHMSM()等待下一个执行周期
嵌入式系统的开发
开发嵌入式系统的基础知识
嵌入式系统的调试
调试工具的任务是,控制程序代码的执行并使系统中看不见的信息成为可视
调试的目的是发现错误并定位错误
嵌入式系统的开发过程
需求分析和规格说明
系统设计
构件设计
系统集成与测试
系统开发工具软件
GNU
GCC概述
GCC是一种针对Linux操作系统环境下应用程序的编译工具
GCC生成可执行文件时,若用户未指定文件名,则GCC生成一个名为a.out的可执行文件
GCC的命令及参数
针对ARM系列微处理器为核心的目标机,其GCC的基本命令格式是
arm-linux-gcc [options] [filenames]
GCC命令参数
-S 该参数表示仅完成预处理、编译操作而不进行后续操作,此时编译器仅把输入的源文件生成后缀为.s的汇编语言文件
GDB
GNU开发工具套件中的程序调试工具
GDB的基本命令
file
装入需要调试的可执行文件
run
该命令执行当前被调试的程序
watch
用来观察变量的值
系统开发实例
基于嵌入式WEB服务器的应用设计
A为嵌入式操作系统
B为CGI接口