集成电路的工作速度主要取决于组成逻辑门电路的晶体管的尺寸。晶体管的尺寸越小,其极限工作频率越高,门电路的开关速度就越快。
在linux OS中,用“任务”替代“进程”,而没有“进程”这个对象。
数字媒体类:
电子文本:
ASCII 字符集,包含96个可打印字符
GB2312包括6000多汉字、西文、俄文等其他字符
GB2312采用进行存储和传输汉字
GB2312中的所有字符在GB18030中也都存在,且编码相同
GB18030采用双字节或四字节存储和传输汉字
GB18030与UCS/Unicode均包含中日韩统一汉字(CJK )约7万多个
Unicode/UTF-8采用三个字节存储和传输汉字
Unicode/UTF-16采用的是双字节可变长编码。ASCII 字符、标点符号、希腊字母、阿拉伯文和CJK 汉字等均使用双字节编码,其他不常用字符则使用4字节编码。
GIF:256色
数字有线电视所传输的数字视频采用的压缩编码标准是:MPEG-2
HDMI 最高数据传输速度为10.2Gbps
蓝牙最高速率1Mbps ,传输距离为10m 之内
计算机网络:
无线局域网(WLAN )的通信协议是802.11,通常也称为Wi-Fi ,
所谓热点,其正式名称是无线接入点
数据传输速率可以达到11Mbps 、54Mbps 、108Mbps 甚至更高。
路由器的主要功能是将多个异构或同构的物理网络进行互连
网络中的路由器具有两个以上的IP 地址
以太网数据帧不含IP 地址
SoC :
SoC 芯片可以分为通用SoC 芯片和专用SoC 芯片两大类
专用SoC 芯片可分为定制的嵌入式处理芯片和现场可编程嵌入式处理芯片两类
ARM 处理器:
7种异常主要包括:
复位RESET
未定义指令UND
软件中断SWI
指令预取中止PABT
数据访问中止DABT
外部中断请求IRQ
快速中断请求FIQ
ARM 处理器工作模式,
用户模式(usr):ARM 处理器正常的程序执行状态
系统模式(sys):运行具有特权的操作系统任务;
管理模式(svc):操作系统保护模式
数据访问终止模式(abt )、
未定义指令终止模式(und )
中断模式(irq )
快中断模式(fiq),支持高速数据传输或通道处理;
R0~R7在任何模式下均作为通用寄存器使用
R13(SP )
R14 (LR )
R15 (PC )
ARM 指令体系:
Thumb-2指令集提供了专门用于开、关中断的专用指令,
关外部中断使用的指令为:CPSID I,
开外部中断的指令为:CPSIE I。
Thumb-2状态兼容16位指令和32位指令编码
在存储结构方面,ARM7采用冯诺依曼结构,而ARM9~ARM11均采用哈佛结构。 ARM 处理器采用单周期操作
ARM 处理器都采用流水线技术
存储器的带宽是指每秒可传输(读出/写入)的最大数据总量。存储器带宽与存储器总线的工作频率周期有关,也与数据线的位数(位宽)和每个总线周期的传输次数有关。 半导体存储器芯片的存储容量取决于该芯片的地址总线的条数和数据总线的位数。 NOR Flash的特点是以字节为单位随机存取,
NOR Flash写入和擦除速度较慢,影响了它的性能。
NAND Flash以页(行)为单位随机存取,在容量、使用寿命和成本方面有较大优势。 NAND Flash读出速度稍慢,编程较为复杂,因此大多作为数据存储器使用。
数码相机存储卡和U 盘中的Flash 均采用NANDFlash ,
程序(代码)存储器、数据存储器
I/O接口与I/O设备:
GPIO:
GPIO 的引脚一般是多功能复用的,一般具有0态和1态和高阻状态;
作为输入接口时具有缓冲功能,
作为输出接口时具有锁存功能。
SPI:
SPI 一般使用4条信号线:SCK 、MISO 、MOSI 和SSEL
SPI 能构成“多主多从式”系统
USB:
USB2是半双工差分工作方式
USB 2.0 的速度为480Mbps ,USB3.0达到5Gbps
UART :
UART 的中文名称是
UART 由发送器、接收器、控制单元及波特率发生器等构成。
UART 传送信息的格式以开始,以结束
I2C:
I2C 是多主总线
I2C 传送数据时,每次传送的字节数目没有限制
CAN:
能够实现多主通信;
CAN 总线的数据帧由7个不同的域组成,其中域的长度可选为0~8 B;
一般面向控制应用领域的ARM 芯片内部已经嵌入了CAN 总线控制器
S3C2410:
S3C2410嵌入式处理器芯片的电源管理模块共有4种工作模式。
正常模式(NORMAL MODE)
慢速模式(SLOW MODE)
空闲模式(IDLE MODE)
掉电模式(POWER_OFF MODE) 慢速模式下不使用PLL 时钟(MPLL 关闭不使用),由外部晶体或外部时钟直接提供给其它组件使用。
S3C2410采用ARM920T ,哈佛结构
中断模式寄存器的功能是决定中断源的中断属于普通中断IRQ 还是快速中断 中断屏蔽寄存器的功能是屏蔽中断源的中断请求
子源中断挂起寄存器的功能是记录子中断源中断请求的挂起状态
芯片内置UART0、UART1和UART2共三个接口
通过对UART 的控制器寄存器进行编程可确定每个UART 的相关中断是否允许 RTC:
RTC 内部的年(YEAR )、月(MON )、日(DAY )数据寄存器中的数据以码表示 RTC 内部的寄存器只能以的方式访问
系统的I/O与存储器采用统一编址方式
每个并行I/O接口都有控制寄存器、数据寄存器以及上拉寄存器
地址空间共1GB
BANK0只能是16位和32位总线宽度的访问,其他所有BANK 可访问8位、16位和32位。 嵌入式系统软件:
IEEE 的实时UNIX 分委会认为实时操作系统应该具备7个特征:
具有异步I/O和中断处理能力;
任务切换时间和中断延迟时间确定;
优先级中断和调度;
抢占式调度;
内存锁定;
连续文件;
同步。
嵌入式系统通常具备:
引导加载程序,
外设驱动程序,
操作系统,
文件系统,
网络协议栈,
图形用户界面,
数据库,以及各种各样的应用程序等
在嵌入式操作系统中,核心部分称为内核kernel
RTOS :
RTOS 实时指标:吞吐量、生存时间、响应时间 吞吐量:在给定时间内系统可以处理的事件总数。 生存时间:用于衡量输入数据的有效等待时间,超过了这个时间,处理器即使接收到输入数据,也不能够给出有用的输出数据。
任务时限有两种: 截止时间,也就是任务开始执行时间到任务必须完成的时间间隔。 预设时间,或者叫做任务最快完成时间,这是无中断响应情况下的任务最快执行时间。
实时系统的属性包括可靠性、可预测性和时间约束性。 可预测性是实时系统的一项重要性能要求,它是指RTOS 能够对外部事件的响应时间和实时任务的执行时间进行判断,以确定被事件触发的实时任务能否在规定的时间内完成。 响应时间的具体指标包括:中断延迟时间和任务(进程)切换时间。
一般按响应时间将实时系统分成三类:
强实时系统,其响应时间一般在毫秒级或微秒级;
普通实时系统,其响应时间一般在秒级;
弱实时系统,其响应时间一般在数十秒级。
RTOS 响应中断请求并且完成相应(ISR )的时间非常快,且这个时间必须具有某种程度的一致性。精细衡量这个时间一致性变化的术语是抖动。
HAL:
HAL 系统库提供以下服务:
结合Newlib ANSI C标准库,向用户提供熟知的标准库函数;
提供设备驱动,使用户可以访问系统中的所有设备;
为用户提供了与HAL 服务相统一的标准接口(HAL API ),例如数据访问、中断处理 系统初始化,在main ()函数之前完成软核处理器Nios 和运行库环境的初始化任务; 设备初始化,在main ()函数之前完成每个设备的实例化和初始化。
引导加载程序Bootloader :
Bootloader 程序会提供几种不同的OS 装载方式:例如通过、或装载。 具有操作系统的嵌入式系统加电后最初执行的操作称为引导或者自举(Boot ),对应的程序称为引导程序,或者引导加载程序(Bootloader )。
引导加载程序主要完成:
加电自检
外设存在自检
内存地址映射
初始化外围设备
内存寻址定位
加载并启动操作系统。
U-Boot 是一种通用的引导加载程序,对PowerPC 系列处理器支持最为丰富,对Linux 操作系统的支持最为完善。 RTLinux 基本的设计理念就是“架空”Linux内核,将Linux 的任务以及Linux 内核本身作为一个低优先级的任务,而实时任务作为最高优先级的任务。
VxWorks 操作系统是美国WindRiver 公司于1983年设计开发的一种嵌入式实时操作系统(RTOS )。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空航天等高精尖技术及实时性要求极高的领域中。
Tiny OS主要用于无线传感器网络的操作系统
Tiny OS的技术特点是轻线程、主动消息、事件驱动和组件化编程。
QNX 是由加拿大QSSL 公司(QNX Software System Ltd.)开发的分布式实时操作系统, 符合POSIX 基本标准和实时标准,使其应用可以方便的进行移植;
它具备一个微内核的操作系统;
内核提供4种服务:进程调度、进程间通信、底层网络通信和中断处理。
硬实时系统(强实时系统):Vxwork 、uC/OSⅡ
软实时系统(普通实时系统):
单内核系统:Unix 、Linux 、Android 、早期Windows 、MS-DOS
微内核系统:Vxworks 、μC/OS-II、QNX 、IOS 、Symbian
微内核包括任务管理、调度器、中断管理和进程间通信模块;
Linux:
Linux 的运行效率还没有超过Unix
Linux 内核第一次问世是在1991年10月
Linux 系统最初以Unix 为原型,以实现POSIX 标准作为其目标
嵌入式Linux 进程间通信机制包括:
信号
管道
消息队列
信号量
共享内存
套接字
Linux 内核的主要作用是:
进程管理与调度
内存管理
文件管理
网络接口
进程间通信。
Linux 内核主要由5个子系统组成:
进程调度(SCHED );
内存管理(MM );
虚拟文件系统(VFS );
网络接口(NET );
进程间通信(IPC )
嵌入式Linux 操作系统主要由用户进程、OS 服务组件和Linux 内核三大子系统组成。 Linux 内核为用户进程提供了一个虚拟接口(系统调用)。
系统调用是Linux 中用户进程与操作系统之间的重要接口。
OS 服务组件是位于Linux 操作系统内核之上的一层服务模块或者实时程序集合。
IOS:
IOS 前身是UNIX-BSD
iOS 的系统结构分为以下四个层次:核心操作系统,核心服务层,媒体层,触摸框架层(the Cocoa Touch layer)
μC/OS-II :
移植μC/OS-II到一个嵌入式电路板上正常运行,必须满足以下要求:
处理器的C 编译器能产生可重入代码;
用C 语言就可以打开和关闭中断;
处理器支持中断,并且能产生定时中断(通常在10~100Hz之间);
处理器支持能够容纳一定量数据(可能是几千字节)的硬件栈区;
处理器有将栈区指针和其他CPU 寄存器读出和存储到栈区或内存中的指令。
μC/OS-II 的事件控制块有4种类型,需要使用4个不同的函数来创建。
4个不同的函数分别是:
信号量:OSSemCreate ()
互斥信号量:OSMutexCreate ()
消息邮箱:OSMboxCreate ()
消息队列:OSQCreate ()
μC/OS-II 内核提供:
任务调度
任务间通信与同步
任务管理 时间管理
存储管理
μC/OS-II软件结构:
应用软件层 API 层
内核层
设备驱动层
μC/OS-II系统中的每个任务都处在以下5种状态之一:休眠态、就绪态、运行态、挂起态(等待某一事件发生)和被中断态
μC/OS-II的就绪任务登记在中,的每一位代表了一个优先级任务的就绪状态,称为就绪位。
就绪态中μC/OS-II就绪表为每一个任务提供一个二进制位,登记该任务是否就绪,就绪时对应位的值为1。
μC/OS-II基本不包含设备驱动程序,需要系统开发商自行开发。
使用μC/OS-II的栈空间校验函数,可以确定每个任务到底需要多少栈空间。
时钟节拍:用于实现任务的正确延时和超时确认。节拍率应是10~100Hz。
任务(上下文)切换的函数:OSCtxSw()
任务级调度的前导函数:OSSched()
退出中断函数:OSIntExit()
OSSched ()函数是任务调度的前导函数,根据三个条件用于判断进行任务调度的条件是否满足。
(1)中断嵌套层数OSIntNesting=0,也就是所有的ISR 已经执行完毕。
(2)任务调度加锁层数OSLockNesting=0,也就是调度没有被禁止。
(3)就绪表查找到的最高优先级任务的优先级比当前任务的优先级高。
OSIntExit()将中断嵌套层数计数器的值减1。
OS_CPU_C.C用于创建任务的、定义用户接口hook 函数原型等。
OS_CORE.C为,功能包括系统初始化、启动多任务调度开始运行、任务创建管理与调度、TCB 初始化、就绪表初始化、ECB 初始化、任务事件就绪表、空闲任务等。 OS_MEM.C为,包括创建分区、获得存储块等。
OS_TASK.C为,包括改变一个任务的优先级、创建或者删除一个任务、挂起一个任务、恢复一个被挂起的任务等
OSInit()函数先建立最初的任务就绪表,然后建立4个空白的数据链表:
任务控制块链表
事件控制块链表
标志链表
内存控制块链表
嵌入式系统开发:
JTAG:
大多数嵌入式CPU 、DSP 、FPGA 器件都支持JTAG 标准。
多个器件可串联在一起接受JTAG 测试
JTAG 标准中规定的TAP 接口具有5根信号线。
GNU:
GNU 包括了编译器、连接器、调试器、文本编辑器、语法除错等工具。
其中GCC 是编译器、GDB 是调试器工具。
将程序代码烧写到ROM 中去的专用设备和工具程序俗称“编程器”
ADS:
三种存储区域类型来进行划分,即划分为RO 段、RW 段、ZI 段。RO 段是指代码和常数的存储区域,具有只读属性。
一个工程项目中至少应包含一个生成目标,ARM 提供的可执行输出文件的模板包括了下面3个生成目标:Debug 、Release 、DebugRel 。
ADS1.2采用工程项目形式来管理应用程序中涉及的源文件、库文件、头文件等。工程项目中可以按照一定的逻辑关系来分组管理文件。
在进行编译连接时,地址映射连接类型有2种方式,分别是Simple 简单连接类型和Scattered 连接类型。
当地址映射关系比较简单时,使用编译、连接选项来确定输入文件的连接顺序。
当地址映射关系比较复杂时,使用scatter (分散加载)格式的文件来确定输入文件的连接顺序。
在采用Scattered 连接类型时,需要提供一个scatter 格式的配置文件,该配置文件是一个文本文件,描述ARM 连接器在完成连接操作时所需要的分组及定位信息等。一个scatter 文件中通常要描述一个下载时域的首地址、域的大小、域的属性,以及若干个运行时域的首地址、域的大小、域的属性、包含的输入段等信息。
RVDS:
RVDS 开发工具套件中,主要包括工程管理器IDE 、编译连接器RVCT 、调试器RVD 和指令集仿真器RVISS 等。
调试器RVD 是RVDS 工具套件中的功能模块之一,它支持硬件在线调试和软件仿真调试。
仿真平台(仿真开发平台)一般指嵌入式系统开发过程中使用的虚拟机管理、仿真软件或者指令集模拟器。
指令集模拟器(Instruction Set Simulator, ISS)是在宿主机上模拟应用程序在目标机上运行行为的一个软件工具。
指令集模拟器的操作界面与通用机的集成开发环境类似。
运行时,它接受编译器或汇编程序生成的目标代码中的及其指令输入,模仿目标机CPU 的取指、译码和执行操作,并将中间执行结果或最终执行结果存入目标机硬件映射数据结构中。调试人员可以在指令集模拟器界面的控制下,通过观察目标机映射寄存器显示框、映射存储器显示框、变量观察窗口等了解目标代码的执行结果。
基于嵌入式WEB 应用:
支持以太网通信的电路,包括以太网控制电路及以太网驱动电路。
AX88796芯片内部寄存器的读/写地址,其首地址是0x1000 0000。