实时
可预测性是实时系统的重要性能标准
按照响应时间 实时操作系统可分为 1.普通实时操作系统 响应时间一般是秒级 2.强实时操作系统 响应时间为毫秒和微秒级
3.弱实时操作系统 响应时间为数十秒
RTOS 响应中断请求并完成相应中断服务子程序的时间非常快 这个时间具有一致性 衡量这个时间一致性变化的术语称为抖动
响应时间的判断指标 是中断延迟时间 和 任务切换时间
实时任务的任务时限有两种 截止时间 任务执行预设时间
在实时系统中 在给定时间内 可以处理的事件总数称之为 吞吐量
衡量一个输入数据的有效等待时间 超过这个时间 处理器即使接收到输入数据 也不能给出有效的输出数据 这个时间称之为 生存时间
实时系统对外界的响应是否正确不仅取决于功能正确性 而且取决于对时间处理的时间正确性
评价实时系统的实时性最重要的指标是响应时间 即系统从事件请求开始到任务完成的时间间隔
实时性最强 可靠性最高的嵌入式实时操作系统名为VxWorks
实时操作系统每次完成任务所需时间的偏差叫 抖动 硬实时比软实时小
开发和调试
一般嵌入式系统的开发过程 可分为 需求分析与规格说明 系统设计 构件设计 系统集成与测试
仿真平台是指嵌入式系统开发过程中 使用虚拟机管理软件 仿真软件 指令集模拟器
如果对程序进行调试 编译命令需要添加参数-g
JTAG标准是片上调试技术的一种国际标准 通常有5根信号线
ADS1.2把目标文件中的信息按照三种存储区域·类型来划分 RO段 RW段 ZI段
RO段是存储代码和常数的存储区域 具有只读属性
JTAG的五条信号线分别为 TCK TMS TDI TDO TRST
GCC是编译器 GDB是调试器
嵌入式系统开发时 由于受到目标机资源限制 需要建立一个宿主机与目标机组成调试框架来完成任务
若为裸机环境 则需要JTAG与目标机用于调试和下载
RVDS开发工具套件中主要包括工程管理器 编译连接器 调试器 指令集仿真器
调试器支持硬件在线调试和软件仿真调试
嵌入式程序需要下载到目标机进行调试 调试完需要专用工具烧写到ROM中 这种烧写工具俗称编程器
嵌入式系统有一种使用驻留监控软件的调试方法 所谓驻留监控软件是一段固化在目标机ROM中的程序
这是一种成本较低的调试方法 不需要专门的硬件调试和仿真设备
ADS1.2进行编程连接时 地址映射连接类型有两种 Simple连接类型 和 Scattered连接类型
使用Scattered连接方式时 需要一个scatter格式的配置文件
若仅希望对应用程序进行编译而不进行连接 需要在GCC命令中 加入参数 -c
若希望编译连接后 生成一个用于调试的符号表 需要在GCC命令后加入参数 -g
嵌入式系统开发过程可分为四个阶段 需求分析和规格说明 系统设计 构件设计 系统集成与测试
测试的目的是验证系统功能 发现系统错误
调试的目的是发现错误并定位错误 调试工具的作用是控制程序代码的执行
调试过程中可用命令 watch来观察被调试程序中的变量值
一个应用程序的工程项目中 必须包含启动引导程序 uC/OS-II的库文件 应用程序文件
GCC生成的可执行文件为a.out
中止调试命令是 kill
存储器
数码相机存储器一般为Flash
芯片的容量 取决于数据总线和地址总线的位数
新型存储器 可分为FRAM(铁电随机存取存储器)和MRAM(磁性随机存取存储器)
目前有两种闪存技术 NOR Flash(以字节为单位随机存取) NAND Flash (以页为单位随机存取)
对于内存来说 1KB = 1024B 对于外设来说 1KB = 1000B
存储器带宽的计算 (工作频率 * 数据线宽度 / 8)* (一个周期传输几次字节);
若是串行总线 总线带宽 = 总线频率 / 10
随机存取存储器 RAM 只读存储器 ROM
RAM分为静态存储器SRAM 动态存储器DRAM
从存储结构看 ARM7采用冯 诺依曼结构 ARM9~11 采用哈佛结构
存储器的带宽与存储器总线的工作频率有关 也与数据线的位数和每个总线周期的传输次数有关
网络
Wlan的通讯协议为802.11 速率为11, 54 ,108 俗称wi-fi
Internet是选择合适的路由器 是发送的数据分组 找到目标计算机的地址 所采用的是 TCP/ IP 协议中的IP协议
以太网的通讯协议 是802.3 每个连接以太网的计算机都有唯一一个MAC地址
热点的正式名称叫 无线接入点 实际上是一个无线交换机或无线路由器
室内覆盖范围为30m 室外为100~ 300m
计算机网络是由计算机等智能电子设备(网络终端) 数据链路 通信协议 网络软件 等组成
网络中的每个网络终端都配有一个网卡 每个网卡都有全球唯一的48位二进制的MAC地址
ADSL是通过电话线把家庭用户计算机接入到互联网的技术 用户端需要配置一个ADSL MODEM设备
计算机必须要有以太网接口
以无线的方式接入互联网的技术有三类 1.无线局域网接入 2.GPRS移动电话网接入 3. 3G移动电话网接入
通用无线分组服务技术简称为 GPRS 它支持AT指令
Linux的网络模块分为两部分 一部分是提供对各种网络资源访问的控制 称为网络的协议
另一部分是 提供对各种网络硬件支持 称之为驱动程序
异常中断
ARM处理器的7种异常 1.复位RESET 2.未定义指令UND 3.软件中断 4.指令预取中止PABT
5.数据访问中止DABT 6.外部中断IRQ 7.快速中断
Thumb-2 的关外部中断的指令为CPSID I 开外部中断指令为CPSIE I
ARM处理器异常指令 软中断是 SWI 断点中断 BKPT
UART
UART全称为通用异步收发器 由发送器 接收器 控制单元 波特率发生器组成
UART有发送器 接收器 控制单元 波特率发生器 传输一个字符有固定的格式要求 以起始位开始 停止位结束 起始位以逻辑0位标志
停止位以逻辑1位标志 停止位可为 1位 1位半 2位
UART的时钟可由PCLK时钟分频可得
总线
基于ARM的处理器芯片是系统总线和外围总线构成的片上系统
系统总线主要是连接高带宽快速组件 外围组件主要是低带宽组件 (GPIO口属于低带宽)
AMBA是ARM公司为连接ARM内核与处理器芯片中的其他各个组件而定义的总线规范 即先进的微控制器总线体系结构
总线遵循的原则是“低电平优先”“”“线与”
芯片内部的USB设备接口与高速AHB总线相连 芯片内部的USB主控制器接口与低速APB总线相连
引导加载程序
嵌入式操作系统通常也具有引导加载程序 外设驱动程序 操作系统 文件系统 网络协议栈 图形用户界面 数据库 以及应用程序
嵌入式系统引导加载程序 主要完成加电自检 外设存在自检 内存地址映射 初始化外围设备 内存寻址定位 加载并启动操作系统
所有与特定电路板上硬件相关的功能都集成在一个库中 这个库名称为板级支持包
当系统启动时 Bootloader程序会提供几种OS装载方式 Ps: 以太网 串口 USB接口装载
嵌入式系统 加电(复位)的时候 所有的微处理器通常都是从某个CPU制造商预先安排的地址上取指令
例如基于某个微处理器从地址0x00000取得第一条指令 CPU执行的第一条指令就是 引导加载程序中的第一条指令
引导加载程序在引导加载操作系统时 设置寄存器和资源 跳转到操作系统所在空间 执行其引导 这个过程可以给内核传递参数
U-Boot是一种通用的引导加载程序 对PowerPC系列处理器支持最为丰富 对Linux系列处理器支持最为完善
HAL隐藏了硬件平台的差异性 提高了操作系统的可移植性
嵌入式操作系统的引导加载程序可分为两类 嵌入式系统正常工作时 使用的启动方式是从非易失性存储介质中引导和加载操作系统的代码 称之为启动加载模式
而在调试或维护更新阶段使用的系统启动方式则通过通信端口从调试主机上下载操作系统映像 称之为下载模式
为了方便移植 一些操作系统使用HAL技术 中文名称为 硬件抽象层 英文缩写就是HAL
位于内核操作系统和硬件之间
其原理是取消了操作系统对硬件平台的直接访问
任务进程调度
操作系统任务时限有两种 截止时间(任务开始到结束所需时间 )任务执行预设时间(在无中断响应下 任务最快执行时间)
嵌入式Linux进程间通信机制包括信号, 管道, 消息队列, 信号量, 共享内存, 套接字
Linux的任务和Linux内核本身作为一个低优先级任务 实时任务作为一个高优先级任务
调用任务管理函数 OSTaskSuspend()可以挂起一个任务 函数 OSSemPend() 用于等待一个信号量
任务控制块的内容包括 任务的优先级 任务的状态字 指向任务堆栈栈顶的指针
就绪态的任务执行完OSTaskDel() 将转入休眠态
处理时不可分割的代码称为 临界区 一旦这段代码执行完 不允许任何中断打断 系统调用OS_ENTER-CRITICAL
使用末尾连锁连续中断需要消耗3个时钟周期 普通中断需要32个时钟周期
可采用的任务间通信机制 信号量 消息邮箱 消息队列 互斥信号量 事件标志组
NVIC 是嵌套向量中断 VIC是向量中断
Linux内核包括五部分 进程调度 内存管理 虚拟文件系统 网络接口 进程间通信
系统把控制权从低优先级任务转移到高优先级任务所花费的时间称之为 任务抢占时间
NVIC 全称是嵌套向量中断控制器 WIC 是唤醒中断控制器
调用中断退出函数OSIntExit()标志着中断服务函数的终结 OSIntExit()将中断嵌套层数计数器的值 减一
对硬件设备进行管理和控制的程序模块是 驱动模块
中断服务子程序执行事件的方法有两种 1.让其他函数来完成 2.自己完成
源文件到可执行文件需要执行的步骤 预处理 编译 汇编 连接·
当某个任务在等待键盘输入时 此时任务处于挂起态 当键盘输入信息时 此时这个任务处于就绪态
内核对任务的管理通过名为任务控制块的数据结构进行 当任务切换时 任务的工作现场被保存到任务的自用栈
吞吐量 英文名 Throughput
所谓微内核 是将任务管理 调度器 中断管理 进程间通信模块编译成一个功能精简 空间紧凑的模块
芯片
目前32位芯片都是由英国开发的ARM芯片
ARM处理器芯片内部的模拟组块有ADC DAC 有的还有比较器
编码
目前中国大陆流行的国标码 是GB2312 GB18030 普通汉字是由两个字节组成
GB18030采用双字节和四字节存储和传输汉字 GB2321采用双字节存储和传输汉字
UTF-8采用三字节 UTF-16 采用双字节可变编码 一些不常用的字符为四字节 其他均为双字节
寄存器
R0~R15 都是通用寄存器 有两个特殊的寄存器 堆栈指针SR使用的寄存器是R13 程序链接寄存器LR使用的是R14 R15是程序计数器
图像
GIF图像文件格式颜色较少 不超过256 文件小 支持动画 适合互联网传输
JPEG图像文件格式静止图像数据压缩编码的国际标准
真彩色图像R,G, B三分量的像素深度为24
电源
ARM芯片的电源管理模块中 休眠模式是切断内核时钟 但仍为硬件外设提供电源
掉电模式是切断内部电源 除非唤醒
电源管理模块有4种模式 正常模式 慢速模式 空闲模式 掉电模式
慢速模式下不使用PLL时钟(MPLL关闭) 仅适用外部时钟
uC/OS-II
uc/OS-II 的就绪任务存储在就绪表中
c/OS-II 系统启动时 分别执行三个进程 OSInit() OSTaskCreate() OSStart()
uc/OS-II 的任务状态有5种 休眠态 就绪态 运行态 挂起态 被中断态
某个任务就绪时 对应位的值为1
uc/OS-II 操作系统 最大任务数为64 最高优先级定为0
uC/OS-II预定义的两个系统任务中 优先级低的是空闲任务 优先级高的是统计任务
uC/OS-II的任务由三部分组成 程序代码 即没有返回值的C函数 任务堆栈 用于保存任务的工作环境 TCB 用于保存任务状态和属性
uC/OS-II 的任务间通信机制中 通常用于解决任务级反转问题是 互斥信号量 适合处理多事件同步的是 事件标志组
uC/OS-II支持两种任务调度 一种是任务级的任务调度 一种是中断级的任务调度
前者一般发生在当前运行态任务因等待某一事件而被阻塞或挂起 或是有更高优先级的任务处于就绪态
uC/OS-II的软件部分分四层 从上到下 依次为 应用程序层 应用程序接口层 uC/OS-II内核层 设备驱动程序层
uc/OS-II 内核提供的功能 有任务调度 任务间通信与同步 任务管理 时间管理 内存管理
uc/OS-II 操作系统自己可以使用的任务数为 8个 用户编写的应用程序最多为56个
通信
蓝牙是短距离无线通信 距离大约为10m之内
IIC有两条信号线 一条是数据线SDL 一条是时钟线SCL
CAN的数据帧由7部分组成 帧起始 仲裁域 控制域 数据域 校验域 应答域 帧结尾
SPI采用四条信号线 串行时钟线SCK 主机输入/从机输出数据线MISO 主机输出/从机输入数据线MOSI 低电平有效的从机选择线SSEL
通用分组无线服务技术简称 GPRS 通常支持用AT指令集实现呼叫,短信,数据等业务
连接在交换机上的所有设备都可同时相互通信 交换机从发送设备发送一组数据
他会按照目的地址发送给接收设备
计算
假设采样频率为8KHz 样本值用8位二进制数进行编码 那么125ms的语音片段 用10Mbps的以太网传输
需要多少ms?? 采样周期为多少??
因采样频率为8KHz 则采样周期为125us 所需时间t = (125ms * 8) / (125us * 10) = 0.8ms
分频倍数 =(int)( 时钟频率/(波特率 * 16)) - 1
ps: 时钟频率100M 波特率 19200 分频倍数 = (int)100 000 000 / (19200 * 16) - 1;
求定时器常数???
定时器输入时钟频率 = PCLK / (预分频系数 + 1) / 分割器值
计数常数 = 定时时间间隔 / (1 / 定时器输入时钟频率)
一个芯片容量为16MB 数据线8条 地址线为??? 2^24 = 16MB 所以地址线为24条
一个芯片地址线为22条 数据线8条 容量是多少Mbit?? 2^22 = 4MB 1b = 8bit 容量是32Mbit
音频视频
现在数字电视采用的视频编码格式 MPEG-2
互联网中最新也是应用最多的视频编码格式是 H.264/MPEG-4 AVC
高清晰度多媒体接口 英文缩写·为 HDMI
我国高清电视的分辨率一般为1920*1080 其宽高比16:9
音频信号数字化 量化后的样本一般用是8位 12位 16位二进制表示
应用最多的视频编码格式是MPEG-4
文本
WWW网页是典型的超文本结构 Adobe公司开发的一种用于电子文档交换的文件格式名为 PDF
IC设计文档可分为 软核 硬核 固核
数字文本分为简单(纯)文本和丰富格式文本 前者的后缀名是 .txt
ARM处理器
ARM Cortex_A是ARM Cortex应用处理器 其中A53和A57是64位 其他均为32位
ARM7 ARM9 ARM11属于经典ARM处理器 ARM Cortex-M0/Cortex-M1/Cortex-3属于ARM Cortex嵌入式处理器
ARMTDMI-S中的T的含义是支持高密度的16位Thumb指令 D表示支持片上调试
ARM Cortex-A15采用哈佛结构 13级流水线
M 是3 R 是8
ARM7是冯·诺依曼 3级流水线 ARM9是哈佛结构 5级流水线
嵌入式系统 最小系统 一般包括 嵌入式处理器 时钟电路 复位电路 电源电路 存储器 调试测试接口
Andriod
Android 是以Linux为基础 半开源的系统
Android 是单内核
Android系统 分四层 从底层到高层 分别是内核 系统运行库 应用程序框架 应用
Android采用的是堆层式软件架构 分四层 从低到高 依次是Linux内核 系统运行库 应用程序框架 应用程序
其他
一些软件如果运行在嵌入式系统上 会具有代码轻量化 占用存储资源少 的特点
MISO 主机输入从机输出 MOSI 主机输出从机输入
人的语音信号是频率范围300HZ~3400HZ
慢速模式下不使用PLL
双绞线的特点 成本低 传输距离有限 易受外部高频电磁波干扰 误码率较高
最早的IEEE.802.11b(2.4Ghz频段) 采用 调频扩频技术 Bluetooth后来被IEE作为 个人无线局域网协议的基础
所谓占空比就是脉冲宽度与PWM周期之比 脉冲宽度即在一个周期内输出高电平的时间
基于低压差的稳压器 LDO
把需要较大空间的软件放在较小的物理存储器中运行 这就是所谓的虚拟存储器技术
英文缩写为MMU
Linux操作系统遵循从GNU计划下的公共授权协议
Linux系统遵从GNU下通用公共许可协议
苹果系统 iOS
用于无线传感器的操作系统 TinyOS
QNX 硬实时操作系统
基于嵌入式WEB服务器的应用系统中 其软件系统的4个重要软件组件是客户端浏览器 WEB服务器 WEB页面 设备操作程序
其中WEB页面用于人机交互界面 通过CGI 接口来与设备操作程序进行信息交互
除了操作系统 设备驱动程序 应用软件之外 的系统软件称之为 中间件
电路包括以太网通信电路 以太网驱动电路 以太网控制电路
硬件的主体分为中央处理器和存储器 中央处理器分为运算器 控制器 寄存器 高速缓冲存储器
用户界面有屏幕 键盘 指示灯 按键
软件的·主体是操作系统和应用软件