欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

三级嵌入式选择知识点整理

程序员文章站 2022-07-12 10:18:39
...

SoC芯片

通用SoC是系统级芯片 既可以是单核 也可以是多核
该芯片中可以包含数字电路 模拟电路 数字模拟混合电路 及射频电路
片上系统可使用单个芯片进行数据的采集 转换 储存 处理 及I/O口功能
智能手机 和平板都使用的SOC
WAV是未压缩的数字音频 音质与CD相当

音频视频压缩编码

 **视频压缩编码**
 
有四种 MPEG-1 MPEG-2 MPEG-3 MPEG-4 
 目前数字有线电视所传输的数字视频采用的压缩编码是 MPEG-2  (该压缩编码制定于1994)
MP3音乐格式采用过MPEG-1
MPEG-3会导致画面轻微扭曲
APE是流行的数字音乐无损的压缩格式之一

数字音频信号数字化

顺序是 取样 量化 编码
量化的过程其实是模数转换的过程
量化精度是量化后的样本 一般用2位 8位 16位 的二进制整数表示

IP地址

共分5类 A, B, C, D, E
A, B, C为基本类 D, E分别为组播地址和备用地址
A类:由一个网络地址(最高位为‘0’)和三个主机地址组成 可连接16387064个主机
C类:前三个字节为网络地址 第四个字节为主机地址 IP地址为192.0.0.1到223.255.255.254 适合于小规模局域网 最多包含254个计算机

嵌入式系统 ,处理器及芯片

移植操作系统有4种操作类型 宿主机移植 体系结构移植 目标板移植 升级BSP

嵌入式系统的CPU有多种类型 比如DSP ARM FPAG

影响CPU性能的主要因素 主频 指令系统 高速缓冲存储器的容量和结构 逻辑结构(包指令流水线的数目)

嵌入式系统的特点: 专用性 隐蔽性 软硬件资源受限 高可靠性 实时性 软件固化

嵌入式CPU的特点 :支持实时处理 低功耗 结构可拓展 集成了测试电路

嵌入式系统使用Cache 增加少量的成本 就能提高性能
CPU使用最频繁的少量代码和数据放在Cache

CPU的时钟频率已经超过10GHZ

嵌入式产品开发的特点 使用宿主机----目标机的开发构架 与底层硬件控制程序的关系密切 软硬件资源受限 需要固化程序

嵌入式软件的特点 软件固化存储 对代码时空效率和实时性要求高 软件可裁剪 软件生命周期较长

选择嵌入式系统软件结构的一个·基本原则是 选择可以满足响应时间需求的最简单的结构 而非轮询结构

嵌入式芯片中 高速组件采用的标准是AHB 低速组件采用的标准是APB

  **处理器的分类*
  
  根据储存结构可分为冯·诺依曼结构和哈佛结构  MSP430采用的是冯·诺依曼结构 

  根据体系结构可分为CISC(复杂指令集结构)和RISC(精简指令集结构)
  ps: ARM处理器都是RISC

 **系统的分类**
 
 根据软硬件的复杂程度可分为 高端系统 中端系统 低端系统
  根据系统所使用的存储器的存储特性 可分为RAM(随机存取存储器)和ROM (只读存储器)
  根据存储器的物理位置可分为 片内存储器 片外存储器 外部存储器
  
   DDR SDRAM中DDR指的是双倍数据速率
   DDR2 SDRAM 可预读取4位数据

ARM处理器

ARM处理器在ARM11之后产品改名为Cortex命名 并分为A, R,M
A: 基于虚拟内存的操作系统和用户应用 主要应用于高端层次
R:应用于实时系统
M:针对微控制器

NVIC 面向Cortex-M

MPU是ARM处理器的内存保护单位
MMU是ARM处理器的内存管理单位 负责虚拟地址到物理地址的映射

单周期和指针流水线技术都是ARM处理器的技术特征

ARM处理器有三种工作状态 1. ARM状态 2.Thumb及Thumb-2状态 3. 调试状态
ARm状态工作在32位指令状态 指令代码全是4字节长度
Thumb工作在16位指令状态 指令长度是16位
Thumb-2兼容16位和32位指令状态

支持Thumb-2指令集的处理器有Cortex-M Cortex-R

现在许多ARM芯片内部已经集成了CAN控制器

32位ARM处理器支持字 半字 字节 三种数据类型

ARM处理器的工作模式 用户模式(ARM处理器的正常运行状态) 快速中断模式(支持高速数据传输和管道处理) 管理模式(保护模式) 系统模式(运行具有特权的系统任务)
除此之外还有数据访问中止模式 中断模式 未定义指令中止模式

ARM处理器从异常中断返回程序继续向下执行 恢复原本被保护的用户寄存器 将SRSR_mode寄存器值复制到CRSR 根据异常类型将PC值恢复成断电地址 清除I和F标志 允许IRQ和FIQ中断

在ARM经典处理器中 将7种中断异常分成6级 最高是复位 最低是软件中断SMI和未定义的指令UND

复位异常后 首地址是0x00000000
任何情况下 复位操作均自动进入正常工作模式

大(小)端模式

大端:从低位地址到高位地址读取数据 小端反之
PS:0x563412以大端模式存放到0x00000000~0x00000002
0x00000000 存放 0x56
0x00000001 存放 0x34
0x00000002 存放 0x12

前(后)向通道

前向通道是输入 后向通道是输出

AMBA总线协议

作用:用于连接和管理片上系统(SoC)中功能模块的开放标准和片上互连规范

连接AMBA的系统总线和外围总线的是桥接器

系统总线是低速总线 APB 外围总线是高速总线 AHB
高带宽外部存储器是和系统总线相连

AMBA有四个版本
ARM7和ARM9用的不是一个AHBA标准

实时系统
实时操作系统的特征
能够及时响应外部发生的随机任务请求 并在规定时间内完成任务

1.具有异步 I/O 和中断处理能力
2.任务切换时间和中断延时时间的确定
3.优先级中断和调度
4.抢占式调度
5.内存锁定
6.连续文件
7.同步

实时性能标准 : 吞吐量 生存时间 响应时间

实时系统的属性 包括可靠性 可预测性 时间约束性

硬实时 软实时 准实时的概念对时限没有要求

如果任务执行时间超过截止时间后系统的收益变为负 这个叫硬实时操作系统
如果任务执行时间超过截止时间后系统的收益下降 但仍为正 这个叫软实时操作系统

操作系统的分类

强实时性 :VxWorks, pSoS, uC/OS-II
典型微内核操作系统 Symbian VxWorks uC/OS-II QNX IOS 微内核 各功能切换之间开销较大
单(宏)内核 :Andriod OS WinCE Linux Mac OS DOS

TinyOS 是开放源代码的操作系统 主要用于无线传感器

uc/OS-II是免费的 uc/OS-III是收费的
ucLinux RTLinux uc/OS-II 都是开源的 VxWorks是不开源的

VxWorks是实时性很强 可靠性很高的嵌入式实时操作系统 支持基于抢占式任务调度 是嵌入式开发环境的组成部分

VxWorks属于硬实时微内核操作系统

FreeRTOS是完全免费的操作系统

uC/OS-II

uC/OS-II是抢占式 微内核 操作系统 不支持时间片轮转 最多可管理64个任务 其中8个任务是系统提供的 56个是用户自己编写的
且每个任务的优先级都是不同的

uC/OS-II 中断嵌套最多可以有255层

uC/OS-II 的事件控制块 有四种实现函数 OSSemCreate() OSMutexCreate() cOSMboxCreate() OSQCreate()

uC/OS-II能提供周期性时钟信号(即时钟节拍) 用于实现任务的正确延时和超时确认

uC/OS-II 一般具有四层软件结构 从上到下 依次为 应用软件层 应用程序接口层 内核层 设备驱动层

uC/OS-II 空闲任务是系统创建的·第一个任务 是一个不可或缺的系统任务 也是优先级最低的任务 大多数情况下 每个任务都是无限循环 都是出于这5种状态 空闲任务的状态不会一直不变

使用uC/OS-II的栈空间校验函数 可以确定每个函数需要多少栈空间

移植uC/OS-II 到一个嵌入式电路板上正常运行 必须满足 :
1.处理器的c编译器能产生可重入代码 且用c就可完成开关中断
2.处理器支持中断 并能完成定时
3.具有支持一定数量(可能为几千个字节)的硬件栈区

集成电路

根据规模可分为 小规模 中规模 大规模 超大规模 极大规模
嵌入式处理芯片一般是超大规模和极大规模
集成电路的工作速度取决于组成逻辑门电路的晶体管的尺寸
集体管尺寸越小 其极限工作频率越高 门电路的开关速度越快
集成电路的集成度每过18-24月翻一番 这就是有名的 摩尔定律

图像类

一个1024 * 768 的彩色图片 像素16位 压缩比5倍 求这个图片的大小??
(1024 * 768 * 16 / 8) / 5 = 0.3M

真彩色是24位

BMP JPEG GIF PNG都属于静态图像格式
用于描述数字图像的参数主要有图像大小(分辨率) 位平面数目 像素深度 颜色模型

一幅图像的数据量 = 图像水平分辨率 * 图像垂直分辨率 * 像素深度/ 8

网络相关模块

以太网数据帧组合:7位前导码 1位帧起始定界符 6位目的MAC地址 6位源MAC地址 2位类型/长度 数据(45 ~1500字节) 4位帧校验序列

路由器的主要功能 将多个异构或同构的物理网络进行连接
可总结为 1.网络互连 2.网络管理 3.数据处理

Wifi局域网 使用2.4GHz和5.8GHz两个频段
局域网使用专门铺设的传输介质进行联网和数据通信

IPv4的地址已经用完了 现在使用IPv6 为128位

组建以太网不可缺少的是集线器或交换机

JTAG

是一种嵌入式测试技术 卡可用于多个设备串联在一起一同测试 支持在线编程
有5根信号线

JTAG是和系统总线(APB)相连
JTAG调试不占用IO口或存储器

51单片机不支持JTAG调试

通信模块

**通信协议**
双向通信 UART IIC SPI  CAN USB  Ethernet

IIC有两条信号线  SDA SCL   每次传输的字节没有限制
IIC的从地址只能为8位

UART 收发信息有两种FIFO  普通模式     每次传输的数据位的长度可为5, 6, 7, 8

RS-232 无法消除共模干扰 传输距离是15m  负逻辑信号传输
RS-485 有很强的抗共模干扰  传输距离约为1200m 差分信号传输
232的传输速率低于485

USB总线(1.1和2.0两个版本) 采用半双工差分方式 通讯方式 主从式

CAN通信数据帧为8位 通信校验方式位CRC

**通信传输**
                                       
有线通信的传输介质可以使金属导体或光导纤维  
光纤通信利用光波传输信息 属于有线通信  
有线通信在一些领域是无线通信无法代替的

电波通过*空间传播  能量分散   传输效率较低

开发工具及调试

RDVS支持ARM芯片 支持对flash存储器的编程 代码执行效率高于其他编译器
ADS1.2中的一个工程文件至少有一个生成目标 生成来源可为Debug Release DebugRel

编译器GCC可编译c语言和汇编
当用GBD调试时 用file命令调试 用run命令来运行调试软件

嵌入式开发的集成开发环境 一般包含项目管理器 文本编译器 编译连接器

指令集模拟器是在宿主机上模拟调试程序·代码·

屏幕

**触摸屏**
分为电容屏(硬屏) 和电阻屏(软屏)

电容屏支持 多点触摸 相对来说较贵
电阻屏只能单点触摸 必须用专用的硬笔   廉价 

**显示屏**

LCD显示屏接口有一定标准 DVI VGA 现在最流行的是 HDMI
HDMI的传输速率最高可为10.2Gbps

字符的形状有两种描述方法 点阵*廓法
点阵法是描述字符在离散点阵中笔画的占位信息
轮廓法 把字符的轮廓用一组直线和曲线来勾画 字符库中记录的是每一个直线和曲线的端点及控制点的坐标

存储器

NOR flash 和 NAND flash 是市场上主要的闪存技术
NOR以字节读取 NAND以行(页)读取 NAND具有很长的使用寿命
存储卡和U盘均使用的是NAND

S3c2410存储器 地址空间共1G 其I/O口与存储器采用统一编址方式(和一般的IO口映射编址不同)

引导加载程序

英文简写是 Boot

Boot要进行的操作:

1.初始化处理器及外设的硬件资源配置
2.建立内存空间的映射关系 使能MMU 将内存和外存的地址变换**
3.装载操作系统映像到内存
4.对Flash存储器编程
5,运行操作系统
6.传递系统启动参数
7.命令行解析和输入/输出控制

BSP包括初始化程序 设备驱动程序 配置文件 引导加载程序
HAL的作用 提供标准库 提供标准接口 在main()函数之前就完成了初始化
硬件抽象层 包含在嵌入式软件中直接访问底层硬件的例程集合
U-Boot 全称为universal Boot Loader 是德国开发的 源代码开放
Linux操作系统的处理器种类最多的是U-Boot
U–Boot是被认为功能全面 具有灵活性 以及应用广泛的开放源码板级支持包

设备驱动程序包括设备的打开和关闭 设备初始化 设备的读取和写入

DSP

DSP是一种专用于数字信号处理的微处理器
DSP指令系统具有单指令多数据并行处理的一些特殊指令
DSP适合于音频 视频等数字信号的处理
DSP的特点之一是指令系统增加了SIMD类型的一些特殊指令 SIMD表示单指令多数据

进程调度和任务调度

任务处于休眠期是任务暂存于内存中 但不执行
进程调度模块所采用的调度策略是使各个进程公平合理访问CPU 同时保证内核能实现硬件操作

OSInit需要先建立四个空白的数据链表 分别是 任务控制块链表 事件控制块链表 内存控制块链表 标志链表

真正实现任务切换的是OSCtxSW()函数 任务级的调度是OSSched()函数执行 中断的调度是OSIntExit()

判断OSSched()执行成功的标志 OSIntNesting = 0 OSLockNesting = 0

OS_CPU_C.c 用于创建任务的自用栈空间 定义用户接口
OS_CORE_C.c 为核心代码调度
OS_MEM_C.c 内存管理
OS_TASK_C.c 任务管理

处于运行态的任务因为优先级更高的任务就绪 所以被CPU剥夺使用权 将会进入就绪态

进行任务级的调度三个条件 1.所有中断服务函数都执行完毕 2.调度没有被禁止 3.任务就绪表中查到的最高优先级任务的优先级高于当前执行任务的优先级

保护任务间的共享数据及通信的方法 1. 开关中断 2. 利用信号量 3.锁和解锁

运行态不可能转入休眠态

用户必须在多任务调度启动以后再**时钟节拍器

使任务从等待转入就绪态 的函数 是 OSSemPost()

处于运行态的任务调用OSTaskDel()后转入休眠态

任务调度的三个条件 中断嵌套层数共享全程变量 OSIntNesting = 0 任务调度加锁层数共享全程变量OSLockNesting = 0
就绪表查找到的最高优先级任务的优先级高于当前任务的优先级

进入临界区之前必须关中断 执行完临界区的代码之后开中断

中断服务函数可以主动要求事件控制块发信号 不会等待事件控制块发信号

中断服务子程序的伪码结构为 保存全部CPU寄存器到栈 调用OSIntEnter() 函数或对OSIntNeseting变量+1
执行中断服务代码或发出IPC消息通知特定任务去中断服务 调用OSIntExit()函数 恢复所有CPU寄存器 执行中断返回函数

被中断的任务不可能直接转入等待态

使运行的任务进入等待态的函数是 OSTimeDly()

编码

GB2313大约有6000多个汉字 以及一些图片符号(包括俄文 日本假字 拉丁文 汉语拼音 希腊文等)

GB2312的所有字符在GB18030全部存在 且编码相同

UTF-16 是双字节可变长编码

一个汉字在txt格式中为两个字节。

Linux

Linux的运行效率低于Unix
嵌入式Linux系统主要是由用户进程 OS服务组件 Linux内核组成

电源

在掉电模式和休眠模式下 只要有任何一个外部中断或RTC时钟中断发生 均将返回正常模式

嵌入式系统常用的电源模块是交流变直流(AC-DC) 直流到直流(DC-DC) 低压差稳压器(LD0)

其他

数码相机的操作控制是由低功耗8位MCU来控制的。
状态标志位一般放在CPSR寄存器中
系统复位引脚为nRESET 表示低电平复位
GPIO口输入具有缓冲作用 GPIO输出具有锁存作用
RTC寄存器内部的数据只能以8位的方式访问
RTC中的时钟分频系数受时钟源控制 无法通过编程控制
GPIO的数据寄存器既可以存放输入数据 也可以存放输出数据
GPIO口输入具有缓冲作用 GPIO输出具有锁存作用
基于Cortex-M0的专家处理器为SC100 基于Cortex-M3的专家处理器为SC300
IP是中文知识产权的英文缩写
ULCONO寄存器用于确定传输帧的格式