完整版请参考幕布文档 https://www.mubucm.com/doc/7wbA96kL7oK
第一章 绪论
第一章 绪论
一、嵌入式系统的定义与发展史
定义
本书定义
与单片机的区别
发展史
可从四个方面考察:硬件、软件、代表产品与系统结构
二、嵌入式系统的特点
三要素:嵌入、专用、计算机
三、嵌入式系统的分类
按照技术复杂度分类:无操作系统、小型操作系统、大型操作系统控制的嵌入式系统
按用途分类
按照电路板分类:单硅片嵌入式系统、单板、多板
四、嵌入式系统的基本组成
软硬件基本要素
硬件的三大组成:嵌入式处理器、外围电路和外部设备
硬件、软件组成框图、嵌入式操作系统特点、嵌入式系统结构演变可参考PPT
第二章 嵌入式微处理技术
一、嵌入式处理器基本分类
本书的嵌入式处理器指的是什么:不是传统意义上的中央处理器(CPU),而是指集成了cache、调试电路、系统总线接口甚至外设的芯片,称为soc。但本书为了承接性,除非必要,还是使用术语处理器或CPU
嵌入式系统的分类标准:按设计目标,性能,功能以及应用方面进行分类,可分为6类
①通用型嵌入式微处理器
按设计目标不同可分为两类:①不为嵌入式系统专门设计却用于嵌入式系统,如X86②为嵌入式设备共用目的设计的高性能专用处理器
例子:S3C2410A处理器(PPT上)
②微控制器(又称单片机)
特点:①将整个计算机系统集成到一块芯片中 ②通常以某种微处理器内核为核心,芯片内部集成各种必要部件和外设
③嵌入式DSP处理器
专用于嵌入式系统的数字信号处理器(专门处理数字信号的)
④可编程片上系统
原始定义:把一个或多个CPU单元以及功能部件集成在单个芯片上。这种芯片就是所谓的片上系统SoC(也称为系统级芯片)。
进化版:基于FPGA的SoC设计方案—可编程片上系统(SoPC,SystemOn a Programmable Chip)
编程语言:Verilog,VHDL,以及C语言
⑤嵌入式双核/多核处理器
双核(Dual Core)处理器:基于单个半导体的一个处理器芯片上拥有两颗一样功能的处理器核心
多核的两个结构
⑥可扩展处理平台
可扩展处理平台把处理器核固化在FPGA芯片上,研发人员可以在PC机上用HDL编写自己的硬件电路
二、嵌入式处理器典型技术
I/O端口统一编址与特殊功能寄存器
统一编址:IO地址空间和主存地址空间统一编址(与之相反的是单独编址)
特殊功能寄存器SFR:是所有片内外设的数据端口,控制端口和状态端口。因此在初始化该控制器时,应仔细阅读理解每个外设控制器的SFR端口地址以及每一位的定义
哈佛结构
指令和数据单独存储
优点:较高执行效率和数据吞吐率
哈佛结构Cache与统一型Cache(普林斯顿结构)的区别是前者是数据和指令分别放在两个独立的Cache中
桶型移位器
桶型移位器采用了开关矩阵电路
正交指令集
特点
指令集大部分指令长度相同;指令的操作码和操作数寻址字段长度相对固定;在寻址字段中,所有寄存器的寻址可以替换;在正交指令集中,一条机器指令的操作码、寻址方式、第1操作数地址、第2操作数地址相互独立(正交的由来)
例子
双密度指令集
指令密度:在执行同等机器指令操作步骤序列前提下,单位内存空间所容纳的机器指令数。
双密度指令集处理器:指令集包含有指令密度不相同的两套指令集(高密度指令集与低密度指令集)。
看门狗定时器——产生复位信号
嵌入式处理器专用的部件。它能够让嵌入式处理器处理器自动脱离死锁工作状态。
定时器与看门狗的异同
地址对准和端序
边界地址:指处理器一次性地或周期性地读写内存的起始地址。把整个内存块按照4字节、2字节或者其他2的整数倍长度划分内存读写块,且从零号开始编号
地址对准访问:从边界地址进行内存访问
端序:多字节数据存放时,最高字节存放在最低地址单元还是最高地址单元,分大端小端。
地址重映射
定义:原本物理存储单元与分给它的地址间有固定的映射关系,若在运行时改变这种关系则称为地址重映射
把SDRAM地址空间迁移到0地址开始处,把Flash ROM的地址空间迁移到系统存储器的高端地址。
FIFO缓冲寄存器
按照FIFO方式进行数据读写的寄存器
主存控制器
三、主流嵌入式微处理器
常见的主流处理器
ARM处理器简介
ARM 32位处理器体系结构是市场占有率高的32位嵌入式RISC微处理器结构。
第三章 ARM汇编语言程序设计
一、ARM体系结构版本及系列
掌握ARM处理器的注意点
ARM体系结构简介
ARM处理器目前在用的ARM体系结构版本是V4、V5、V6、V7和V8。(共V1到V8)——PPT上有具体的介绍
ARM体系结构版本的变种
与标准ARM体系结构版本功能不完全一致的ARM内核,会使用一些字母后缀来标明基于某个标准ARM体系结构版本之上的不同之处
ARM体系结构版本变种表(见PPT)
ARM体系结构版本的命名规则(见PPT)
当前在用的ARM核概况(见PPT)
ARM核与体系结构版本间的关系——体系结构与内核版本号相对应
ARM处理器简介
目前在用的ARM处理器系列主要有6个:ARM7,ARM9,ARM10E,ARM11,SecurCore,Cortex
ARM7的特点
PPT上有ARM7,9,10,11系列处理器的特点
二、ARM处理器结构——7种工作模式+2种工作状态+ARM寄存器组织(R0-R15寄存器)
ARM流水线
有3级指令流水线、5级指令流水线、8级指令流水(书上有详细解释)
ARM模式状态
异常与中断定义(中断是异常的处理)
ARM处理器支持7种工作模式=1种用户模式+6种特权模式(5种异常工作模式+系统模式)
注:ARM的SYS模式与PC机的特权级运行模式是不能够简单比较的
ARM工作状态
带有T变量的ARM处理器核可以工作在2种状态:ARM状态,Thumb状态
两种模式的切换方法
ARM寄存器组织——ATPCS规则
ARM寄存器概述
ARM寄存器组织表=R0-R15+CPSR+SPSR
ARM处理器总共有37个32位寄存器,其中有31个通用寄存器,6个状态寄存器
影子寄存器:专用物理寄存器。在异常模式下,它们将代替用户或者系统模式下使用的部分寄存器
在ARM寄存器组织表中带有阴影色块的寄存器称为影子(备份)寄存器
ATPCS命名规则——ARM中寄存器的命名规则
规则的作用:ATPCS是集成开发环境ADS中规定的子程序之间调用的基本规则。程序员在编程时使用ATPCS规定的寄存器名称可以方便记忆,提高工作效率,减少差错
R0-R15寄存器——通用寄存器
子程序间通过寄存器R0~R3来传递参数。这时,寄存器R0~R3可记作a0~a3。被调用的子程序在返回前无需恢复寄存器R0~R3的内容
在子程序中,使用寄存器R4~R11来保存局部变量。这时,寄存器R4~R11可以记作v1~v8。如果在子程序中使用了寄存器v1~v8中的某些寄存器,则子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值。在Thumb程序中,通常只能使用寄存器R4~R7来保存局部变量
R12用作过程调用中间临时寄存器,记作IP。
寄存器R13用作堆栈指针,记作SP。在子程序中寄存器R13不能用作其他用途。寄存器SP在进人子程序时的值和退出子程序时的值必须相等。
寄存器R14称为连接寄存器,记作LR。它用于保存子程序的返回地址。如果在子程序中保存了返回地址,寄存器R14则可以用作其他用途。
寄存器R15是程序计数器,记作PC。它不能用作其它用途。
CPSR(程序状态寄存器)——状态寄存器
SPSR(备份程序状态寄存器)——状态寄存器
三、ARM Cortex处理器
Cortex M3处理器核
四、ARM存储器组织
数据类型和存储格式
ARM的存储体系——金字塔型
片上存储器的用法
ARM处理器芯片内部含有存储器,称作片上存储器。
片上存储器的存储空间可以通过指令进行配置
协处理器CP15
CP15即所谓的系统控制协处理器
诸如Cache配置、写缓存配置之类的存储系统管理工作由协处理器CP15完成。
存储器管理单元MMU
用途
保护单元
保护单元提供了一个相当简单的代替MMU的方法来管理存储器,简化了硬件和软件
五、ARM处理器的片上总线
ARM公司定义了片上总线规范,取名为AMBA(先进微控制器总线结构,AdvancedMicrocontroller Bus Architecture)
目前流行使用的AMBA总线标准是1999年推出的2.0版
AMBA2.0定义了3种总线:AHB,ASB,APB
六、ARM的异常中断
ARM异常与中断的特点:中断向量表中存放的是转移指令而不是向量地址
异常中断分类
ARM异常中断响应过程:①保存原状态寄存器到备份状态寄存器②设置新状态③保存原来的下一条指令地址至R14④对PC赋值跳转至中断服务程序
注:“③保存原来的下一条指令地址至R14”时,一般来说,下一条指令的地址应该是PC+4,这个值被保存到LR中。但由于发生异常时,PC的值有可能已经更新或者没有更新,LR里所需保存的值也会不同
IRQ、FIQ和ABT异常中断处理程序的返回
中断返回步骤
当IRQ、FIQ和ABT异常中断处理程序退出时(总结:非ABT异常均PC=LR-4)
全部异常中断的四种返回方式图解
PPT图文字说明
我自己做的图理解
注:PC寄存器中存储的内容是(当前执行指令的地址)
七、ARM的经典处理器核—ARM7TDMI
ARM7介绍
ARM7TDMI使用流水线以提高处理器指令的流动速度。流水线允许几个操作同时进行。
使用3级流水线,因此,指令的执行分3个阶段:取指、译码和执行
ARM7TDMI核是冯·诺依曼(Von Neumann)体系结构
第四章 嵌入式系统调试技术
一、嵌入式硬件调试结构和调试技术
目标机与宿主机的定义:嵌入式系统处理器所在的电路主板为目标机,而调试所在的计算机为宿主机。
按主机与目标机的处理器体系结构是否相同分类:本地调试(相同)与远程调试(不同)
嵌入式计算机调试基本结构:主机—目标机结构;主机常常是PC平台
调试信道=信号线+仿真器
主机往往和目标机的体系结构不同。因此,需要有通信转换器对调试信息进行转换。
一般称连接在宿主机和目标机之间的信号线,连同仿真器为调试信道
二、ROM仿真器
用于离线编程
用RAM以及附加电路制成的替代工具称为ROM仿真器
三、实时在线仿真ICE
目前最为有效的调试嵌入式系统的手段
四、指令集模拟器
特征与使用场合
是用来在一台计算机上模拟另外一台计算机上目标程序(机器指令)运行过程的软件工具,有时也叫做软仿真器
是一个纯软件系统,在内部有一个反映目标处理器硬件的数据结构,指令集模拟器的操作界面与IDE类似
指令集模拟器的使用场合
两种流行的指令集模拟器
ARMulator
SkyEye(略)
指令模拟精度
三个级别:指令级,周期级,时序(节拍)级
ARMulator完全实现了指令级和周期级模拟精度,但是没有完全实现时序级精度。
五、片上调试技术
定义
片上调试是在CPU的内部嵌入额外的控制模块,即片上调试器;使得CPU的工作模式分为正常模式和调试模式。
主要有三种:背景调试模式BDM;JTAG;Nexus
边界扫描测试接口JTAG
JTAG是一种片上调试接口
JTAG成为电子行业的一种国际测试标准。
JTAG信号
六、半主机调试方式(略)
半主机的实质是让不支持ANSI C函数库功能的目标系统使用调试主机提供的C函数库功能。
第五章 ARM处理器指令集
一、ARM处理器的指令系统
ARM处理器指令系统的主要特征
ARM指令集和Thumb指令集的共同点
ARM指令集和Thumb指令集的不同点
ARM与x86的指令系统比较
注:正交性的概念
二、ARM指令集的编码格式和语法
ARM指令集的编码格式
ARM指令的一般语法格式
需要速记的指令
ARM指令的执行条件
CPSR寄存器和SPSR寄存器的位定义格式复习
指令执行条件表——指令条件码表
第二操作数说明
由于ARM指令中具有寄存器移位的第二操作数功能,使得ARM指令集中取消了专门 的移位指令
第二操作数有两种形式:立即数型与寄存器型
立即数型
寄存器型
格式:Rm,{<shift>}
三、ARM处理器的寻址方式
定义
寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。
ARM处理器具有8种基本寻址方式
①立即寻址
②寄存器寻址
③寄存器偏移寻址
④寄存器间接寻址
⑤基址寻址(!的作用表示更新)
指令LDR和STR的变址模式
①前索引寻址:指令执行完毕,基址寄存器值不变
②回写前变址:地址在数据传送之前改变
③后索引寻址:传送前基址不变,传送后自动更新
⑥多寄存器寻址
多寄存器寻址的辅助操作码
⑦堆栈寻址
寄存器堆栈的分类
组合出4中类型的堆栈
数据块地址增长与更新控制+堆栈类型控制
⑧相对寻址
相对寻址是基址寻址的一种变通。由程序计数器PC提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。
四、ARM指令分类说明
分支指令
ARM有两种方法实现分支转移
长跳转
直接向PC寄存器(R15)中写入目标地址
转移指令(4种)
注:如果不写条件码{cond},就是无条件跳转指令
① B 分支指令
语法: B{cond} label
跳转指令,pc=label
② BL 带链接分支指令
语法:BL{cond} label
带返回的跳转,pc=label,lR=BL后面的第一条指令地址
③ BX 分支并可选地交换指令集
语法:BX{cond} Rm
跳转并切换状态,pc=Rm&0xfffffffe,T=Rm&1
④ BLX 带链接分支并可选择地交换指令集。
语法:BLX{cond} label | Rm
LOAD/STORE指令
作用
Load用于把内存中的数据装载到寄存器,Store指令用于把寄存器中的数据存入内存
3种类型的Load/Store指令
单寄存器传输指令
Load/Store指令变址模式(就是前面变址部分的东西)
例子
多寄存器传输指令
交换指令——LOAD/STORE指令的特例——用于在内存和寄存器之间交换数据
Rm给[Rn],[Rn]给Rd
数据处理指令
特点
数据处理指令只能对寄存器的内容进行操作。
该类型指令需要加S的场景以及可以省略的场景
所有ARM数据处理指令均可选择使用S后缀,以影响状态标志。
比较指令CMP、CMN、TST和TEQ不需要后缀S,它们会直接影响状态标志。
三大类型
数据传送指令(如MOV、MVN);
算术逻辑运算指令(如ADD、SUB、AND);
比较指令(如CMP、TST)。
数据处理指令表
乘法指令
包括32位(可以是有符号数也可以是无符号数)的乘法/乘加指令+64位有符号数/无符号数的乘法/乘加指令
语法规范
前导零计数指令
算术指令CLZ,用于计算操作数中前导0的个数。如0001234的前导0个数为3个
前导零计数指令的作用
确定操作数左移位数
确定一个掩码的最高优先级
程序状态寄存器指令
有两种,用于通用寄存器与状态寄存器之间进行数据传送——MRS+MSR
读状态寄存器指令MRS
写状态寄存器指令MSR
程序中不能通过MSR指令直接修改CPSR中的T控制位来实现ARM状态/Thumb状态的切换
协处理器指令
协处理器是什么
协处理器是一种芯片,用于减轻系统微处理器的特定处理任务。例如,数学协处理器可以控制数字处理;图形协处理器可以处理视频绘制。
协处理器指令
异常中断指令
软中断指令SWI,用于实现从用户/其它模式变换到管理模式
ARM伪指令
ARM伪指令的作用:简化编程
ARM伪指令有4条
ADR伪指令
小范围的地址读取伪指令,该指令将基于PC的地址值或者基于寄存器的地址值(或者说是指令的地址)读取到寄存器中
ADRL伪指令
中等范围的地址读取伪指令。ADRL伪指令比ADR伪指令可以读取更大范围的地址。
ADRL伪指令在汇编时被编译器替换成两条指令
LDR伪指令
!!!与ARM存储器访问指令的LDR相比,伪指令的LDR的参数有“=”符号
大范围地址读取伪指令LDR。LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器;
NOP伪指令
一般用于延时
第六章 ARM汇编语言程序设计
一、ARM汇编语言程序概述
ARM汇编语言程序格式主要有两种
ARM汇编语言程序的语句格式
当程序中的符号与指令助记符或者指示符同名时,用双竖线将符号括起来。如||buffe_a||,这时双竖线并不是符号的组成部分。
二、ARM汇编语言指示符
符号定义指示符
定义变量+变量赋值+定义寄存器名称
数据定义指示符
定义数据缓冲池+内存表+指定大小的内存单元
汇编控制指示符
条件+循环+宏
信息报告指示符
用于报告汇编程序的错误信息
其他指示符
EQU
用于定义常量,类似C语言的#define
如num EQU 50
AREA
用于定义代码段
ENTRY
指定程序的入口点
END
告诉编译器已经到了源程序结尾
三、ARM汇编语言程序格式
ARM汇编语言以段为单位组织源文件
ARM汇编源程序和映像文件
ARM汇编程序基本格式
例子:数据块复制示范程序(太多了,写不下,详情见PPT)
例子:子程序调用小例子
四、ARM汇编程序与C/C++程序的混合编程
在C/C++程序中如果必须使用汇编指令来完成某些操作,可以采用两种方法
内嵌汇编与调用汇编
内嵌汇编
语法规则
调用汇编——C/C++程序与ARM汇编语言程序的相互调用
六种相互调用的情况
C/C++程序调用ARM汇编程序要点——EXPORT指示符+extern关键词声明程序可被调用
例子:C程序调用ARM汇编
例子:ARM汇编程序调用C子程序——参考【摘录】arm汇编语言调用C函数 - IamEasy_Man - 博客园 (cnblogs.com)
ATPCS建议函数的形参不超过4个,如果形参个数少于或等于4,则形参由R0,R1,R2,R3四个寄存器进行传递;若形参个数大于4,大于4的部分必须通过堆栈进行传递。
思路:先在C函数里实现功能;C在main里调用汇编函数,在汇编函数里传参并调用C的功能函数;(注意R14和R0哪个先入栈,哪个在最上面)
第七章 嵌入式系统开发工具
一、嵌入式软件开发工具概论
中高端嵌入式软件开发的硬件架构
开发工具基本分类
集成开发环境图与IDE组件有哪些(见PPT)
二、ARM开发工具概述
ARM开发工具类别
三、ARM映像文件格式
映像文件定义
映像文件的周期:ELF目标文件.o->.ARM映像文件axf->不含调试信息的映像文件.bin
ELF目标文件格式.o
ARM映像文件.axf
不含调试信息的映像文件.bin
ELF文件简介
只有ELF头信息是固定的,ELF文件所有其余部分的位置由ELF头信息、程序程序头部表和节头部表定义
三种ELF文件类型
ELF文件结构:双重性
ELF文件格式的两种视图:连接视图和执行视图
ARM映像文件的组成
两种ARM映像文件:.axf文件或者.bin文件
ARM的ELF文件的段
包含了3段
四、ADS的组成与使用
ADS的组成
ADS的6大组件:代码生成工具,集成开发环境,调试器,指令集模拟器,ARM 开发包,ARM应用库
详见PPT:ADS命令行开发工具、ARM编译器和连接器相关文件类型、ARM编译器四种、ARM汇编器、ARM连接器、ARM符号调试器、ARM运行时库、GUI开发工具、AXD
五、GNU交叉工具链简介
概述
基于GNU工具链的ARM程序开发流程
第八章 嵌入式外设控制器
嵌入式中断控制器概论
本章学习内容:中断控制器、DMA控制器、时间控制相关部件
中断控制所包括的通用操作
ARM的中断类型
普通中断请求—IRQ
特点:优先级低于FIQ
快速中断请求—FIQ
特点:告诉数据传输和通道处理,有充足的私用寄存器
IRQ与FIQ的开启方式(I,F清零则开始、置1则关闭)
S3C44B0X的中断控制器
概述:可处理30个中断源=26个独立中断源+4个共用中断源
S3C44B0X的中断源清单(见PPT)
S3C44B0X的中断源优先级(也要查表,看中断源清单上的序号,序号越靠前,优先级越高)
S3C44B0X “线或”的4个外部中断源(4个共用的中断源的使用方法)
各种中断相关的寄存器
中断请求(悬置)寄存器INTPND
记录中断请求信号的到来,26个有效位,记录中断是否发送
INTPND中断请求寄存器的操作流程
中断模式寄存器INTMOD
记录中断请求的模式是IRQ,还是FIQ,26个有效位
中断屏蔽寄存器INTMSK
1值=屏蔽中断,0值=非屏蔽
记录哪些中断源不被相应
INTCON中中断控制寄存器
用于从全局上控制所有中断,相当于总开关
中断服务悬挂寄存器I_ISPR或F_ISPR
标记该中断源是否正处于中断服务状态,只读寄存器
I_ISPR或F_ISPR每位的意义
中断服务悬挂清除寄存器I_ISPC或F_ISPC
用于清除中断请求寄存器
一旦“位置1”,2个东西都被清零——不再服务,不再请求
中断优先级产生模块
程序查询(非向量中断)
查询PEND寄存器里的置1位决定中断源。
软件读取INTPND查询中断源
在同一时刻发生了多个中断请求,通过软件查询方式来决定中断服务的优先级
中断优先级查询模块(向量中断)
各个中断源的中断优先级通过该模块的硬件接线决定
中断优先模块开启条件与判优逻辑
S3C44B0X的中断优先级判优小结
中断控制器的主要初始化操作
流程
两个中断向量表
中断系统中有两张中断转移表,经过二重转移才跳到中断处理程序(好像是第一张存跳转指令,第二章存中断向量地址)
S3C44B0X的DMA控制器 (没讲好像)
时钟电源管理器
主频时钟与时钟电源管理器的概念
嵌入式处理器主频时钟来源于锁相环(PLL)
在时钟电源管理器的控制下,主频时钟按照设定的分频模式被输送到各个硬件部件,以达到使能/禁能各个功能部件以及节省功耗的目的。
锁相环详解
作用:锁相环参考接收到的脉冲信号的频率和相位,输出一个同步时钟信号--主频信号。(是为了得到频率相同的信号)
基本结构
鉴相器+可调相/调频的时钟发生器+环路滤波器
鉴相器:用于判断锁相环所输出的时钟信号和接收到的晶体震荡脉冲信号中时钟的相差幅度。
可调相/调频的时钟发生器:用于根据鉴相器所输出的信号来适当的调节锁相器内部的时钟输出信号的频率或者相位,使得锁相器完成上述的固定相差功能。
环路滤波器:用于对鉴相器的输出信号进行滤波和平滑,大多数情形下是一个低通滤波器。用于滤除由于数据的变化和其他不稳定因素对整个模块的影响。
S3C44B0X锁相环输出频率与输入频率的关系
时钟发生器的概念
时钟信号发生器(简称时钟发生器)为处理器提供时钟信号。
可以是一个独立的芯片,也可以集成在处理器内部
S3C44B0X的时钟电源管理器
S3C44B0X的内建时钟电源管理器为CPU和外部设备提供时钟信号。
在软件控制下,时钟电源管理器能够为嵌入式应用提供五种电源管理模式。
S3C44B0X的初始时钟脉冲信号产生方式
外部晶振或直接输入外部时钟
五种电源管理模式
正常模式+空闲模式+低速模式+停止模式+液晶屏的SL_IDLE模式
用户可以通过对CLKCON寄存器的设置来控制外设的操作模式。
各种模式的详情见PPT
实时时钟控制器RTC
实时时钟的概念
实时时钟(RTC,也叫日历时钟)为嵌入式系统提供时钟节拍脉冲信号、计时信号(年/月/日、星期、时/分/秒)和闹钟(告警)信号。
通常在系统停电的情况下由后备电池供电继续工作。若无,则需要在加电之后写入校准的实时时间数据
时钟节拍
时钟节拍是由硬件定时器发出的周期性中断请求信号
两个时钟节拍之间的时间间隔被定义成嵌入式操作系统的任务延时基本单位。
时钟节拍的中断服务子程序被用来遍历任务控制块,以判断任务是否延时计满
脉宽调制定时器
脉冲宽度调制器的概念
使用主频信号的另外一个外设部件是脉冲宽度调制器(PWM),它可以提供指定占空比的脉冲信号,也可以提供计数定时信号。
脉宽调制定时器(PWM,Pluse-Width Modulation)主要用于提供各种占空比的脉冲信号,以及定时中断请求信号
S3C44B0X脉宽调制定时器的工作方式见PPT
第九章 嵌入式存储器与接口技术
一、嵌入式系统常用存储器
嵌入式系统常用的存储器:ROM,SRAM,SDRAM,Flash
1.1闪速存储器Flash Memory
定义与特点
一种半导体集成电路存储器
主要物理特点是非易失(掉电不丢失)
两种类型的Flash
Nor Flash | 非型闪存 | NOR闪存
Nor Flash存储器可以进行字节读写,所以在Nor Flash存储器上运行代码基本上不需要软件支持。
Nand Flash|与非型闪存|NAND闪存
Nand Flash存储器由于其物理特性独特,数据读写比较复杂,对其存储的数据管理方法与其他存储设备的管理方法不同,需要软件支持
基于Nand Flash上的特殊的文件系统称之为闪存文件系统( Flash File System ,FFS )
共同特点
写入次数有限,写入前需清空
1.2 SDRAM
一种同步动态存储器,嵌入式系统通常直接使用一颗SDRAM芯片作为主存储器
二、嵌入式系统常用总线
概述
嵌入式产品里面内连在PCB上的设备以及外接的设备大都采用总线方式连接。
这些总线的控制器以两种方式存在。一种是集成在处理器内部,另外一种是以专用芯片形式出现
IIC总线 或 I^2C总线
一种双向二进制同步串行总线,它是目前SOC控制外围设备的常用总线。
物理上一共有两条信号线和一条地线。两条信号线分别为串行数据线和串行时钟线
IIC总线不设置仲裁器和时钟发生器,而是通过定义一个仲裁过程来实现总线仲裁,并由仲裁胜利方提供总线时钟
I2C总线中的每一个设备都有唯一的7位地址,也就是说一个I2C总线系统中理论上可挂接128个不同地址的设备。
I2C总线是一个串行的8位双向数据传送总线,用I2C总线连接的设备处于主从模式,主设备既可接受数据,也可发送数据。
I2C总线的传输规范
仅当SCL信号线为稳定高电平时,SDA信号线上的数据有效;当SCL信号线为低电平时,允许SDA信号线上的数据改变。每一位数据传输需要一个时钟脉冲
在位传输时,有两个重要的传输位:START(开始位)和STOP(结束位)。START位出现在SDA信号线电平由高向低转换并且SCL信号线电平为高的场合。STOP位出现在当SDA信号线电平由低向高转换并且SCL信号线维持高电平场合。
在字节传输时,传送到SDA线上的每一个字节必须为8位;每次传送的字节数不限;每一个字节后面必须跟一个响应位。数据传输时,首先传输最高有效位(MSB,Most Significant Bit)。如果在传输的过程中,从设备不能一次接收完一个字节,此时它就使时钟置为低电平,迫使主设备等待;当从设备能接收下一个数据字节后,将释放SCL线,继续后面的数据传输。
S3C44B0X的I2C总线读写操作(见PPT)
S3C44B0X的I2C总线控制器(见PPT)
SPI总线
一种同步串行总线接口,用于主从分布式的通信网络
由4根接口线即可完成主从设备之间的数据通信:时钟线(SCLK)、数据输入线(SDI)、数据输出线(SDO)、片选线(CS)
CAN总线
控制器局域网,是一种串行数据通信总线
CAN的媒体访问采用多主随机发送协议,实现了无冲突的媒体访问协议CSMA/CA (载波侦听多路存取/冲突避免)
CAN主要技术特点(见PPT)
工业以太网
三、嵌入式系统常用接口
GPIO
四、嵌入式系统常用外部设备
键盘
|