嵌入式系统原理与实践 期末个人总结:
考试题型: 填空 选择 问答
时间:两小时闭卷
数字电路不考
黑体字个人认为需重点掌握
英文名称参考:
SR 状态寄存器(或者堆栈寄存器?部分资料....)
LR 连接寄存器,在ARM体系结构中LR的特殊用途有两种:一是用来保存子程序返回地址;二是当异常发生时,LR中保存的值等于异常发生时PC的值减4(或者减2),因此在各种异常模式下可以根据LR的值返回到异常发生前的相应位置继续执行。
PC (PROGRAM COUNTER)程序计数器
CPSR: Current Program Status Register当前程序状态寄存器
SPSR: Saved Program Status Register备份程序状态寄存器
SPSR用来进行异常处理,有以下功能:
1.保存ALU中的当前操作信息。2.控制允许和禁止中断。3.设置处理器的运行模式。
ISR 中断服务程序
RTC 实时时钟(Real-Time Clock)、
DMA 直接内存存取
SIO 超级输入输出芯片(SIO)
PLL 锁相回路
DRAM: Dynamic Random Access Memory),即动态随机存取存储器
SRAM静态随机存取存储器Static Random-Access Memory
SDRAM Synchronous Dynamic Random Access Memory同步动态随机存储器
SDRAM将CPU与RAM通过一个相同的时钟锁在一起,使RAM和CPU能够共享一个时钟周期,以相同的速度同步工作,与 EDO内存相比速度能提高50%。SDRAM基于双存储体结构,内含两个交错的存储阵列,当CPU从一个存储体或阵列访问数据时,另一个就已为读写数据做好了准备,通过这两个存储阵列的紧密切换,读取效率就能得到成倍的提高。
ROM(Read Only Memory)
RAM(Random Access Memory)
第一课与第二课:
(1)嵌入式系统概念:
以计算机技术为基础,软件、硬件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
统一寻址:用总线连接,用统一的地址线数据线控制线,用地址选择芯片
(2)RISC和CISC各自全称、区别、优势和劣势、44B0是何指令集
44B0是RISC指令集
RISC: Reduced Instruction Set Computer,精简指令集计算机。特点是所有指令的格式都是一致的,所有指令的指令周期也是相同的,并且采用流水线技术。
CISC: Complex Instruction Set Computer,复杂指令计算机,是台式计算机系统的基本处理部件,每个微处理器的核心是运行指令的电路。指令由完成任务的多个步骤所组成,把数值传送进寄存器或进行相加运算。
CISC:通过设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改用硬件的指令系统实现,以此来提高计算机的执行速度
RISC的基本思想是尽量简化计算机指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令,而把较复杂的功能用一段子程序来实现。从而使指令的平均执行周期减少,提高计算机的工作主频,同时大量使用通用寄存器来提高子程序执行的速度
优势与劣势:
(1)指令系统:在RISC机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。
CISC计算机的指令系统比较丰富,有专用指令来完成特定的功能。CISC处理特殊任务效率较高。
(2)存储器操作:RISC对存储器操作有限制,使控制简单化;而CISC机器的存储器操作指令多,操作直接。
(3)程序:CISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而RISC汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。
(4)中断:RISC机器在一条指令执行的适当地方可以响应中断,相比CISC指令执行的时间短,所以中断响应及时;而CISC机器是在一条指令执行结束后响应中断。
(5)CPU:RISC CPU包含有较少的单元电路,因而面积小、功耗低;而CISC CPU包含有丰富的电路单元,因而功能强、面积大、功耗大。
(6)设计周期:RISC设计周期短,微处理器结构简单,布局紧凑,且易于采用最新技术;CISC设计周期长,微处理器结构复杂。
(7)用户使用:RISC易学易用,微处理器结构简单,指令规整,性能容易把握;CISC实现特殊功能容易,功能强大,微处理器结构复杂。
(8)应用范围:由于CISC指令系统的确定与特定的应用领域有关,故CISC机器更适合于专用机;而RISC机器则更适合于通用机。
(3)ARM和THUMB 各自含义 优势劣势
ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。
ARM : ARM指令集是指计算机ARM操作指令系统,为32位。
在ARM中有两种方式可以实现程序的跳转:一种是跳转指令;另一种是直接向PC寄存器(R15)中写入目标地址值。
ARM指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类。
Thumb : Thumb是ARM体系结构中一种16位的指令集。Thumb指令集可以看作是ARM指令压缩形式的子集,具有16bit的代码密度。Thumb指令体系并不完整,只支持通用功能,必要时仍需要使用ARM指令,如进入异常时。其指令的格式与使用方式与ARM指令集类似,而且使用并不频繁。
区别: arm指令是32bit,thumb指令16bit。
从占内存的空间来说,一条thumb比一条ARM少一半。但是,thumb要完成arm完成的所有(或尽可能所有)功能,thumb的数量一定会比arm指令的个数要多一些。
Thumb指令与ARM指令的具体区别
1.分支指令:跳转的范围小,除B指令外,都是无条件跳转.
2.数据处理指令:Thumb指令只有2个操作数,而ARM指令是3个操作数.
3.单寄存器加载存储指令:Thumb指令只能访问R0~R7.
4.多寄存器加载存储指令:Thumb指令只能访问R0~R7的子集.
5.Thumb特有指令:PUSH和POP作用于R13.
采用arm指令集还是thumb指令集:工作状态
利用指令BX进行两种工作状态的切换,同时操作数寄存器的状态位(0位)。1为thumb,0为ARM
这条指令的解释:Rn是R1~R15的任何一个寄存器,处理器处理这条指令:将Rn的内容copy到PC中,然后跳转到相应的绝
对地址,并利用Rn的bit[0]判断跳转后执行的是arm指令还是thumb指令。(bit[0]=1arm指令; bit[0]=0thumb指令)
(1)源码用c来写,如果编译成thumb指令,那么目标代码只有编译成arm指令的65%,thumb指令密度大。
(2)另一方面,处理器在这两种状态下的性能是依附于指令存储器的宽度的。 32bit存储器情况:ARM性能较好,这是因为同样的代码,编译的结果:
THUMB的指令会比ARM多,thumb指令仍然花费指令周期从32bit内存预取。
16bit存储器情况:尽管thumb的指令数比arm多,但每一条thumb预取指令需要一个周期,而每条arm指令需要2个周期。
但是,有一个问题。无论在arm下,还是thumb下,堆栈操作都是32bit,因此,对于堆栈的操作,用thumb指令,会使得性能下降。方法,供给32bit的内存来存放堆栈。
另外,与ARM代码相比,运用thumb代码,存储器的功耗降低30%。显然,ARM和thumb各有所长,若系统要求执行效率高,则运用32bit存储器和 ARM指令集;若对系统成本及功耗要求高,则应运用16bit存储器和thumb指令集。当然,若两者联合运用,充沛施展各自的长处,会取得更好的效果。
补充说明:
(1)有些功能只能有arm指令来实现,比如,拜访CPSR寄存器来使能/禁止中断或者转变处理器工作模式;拜访协处理器CP15;履行C代码不支持的DSP算术指令;
(2)异常中断处理。在进入异常中断后,内核主动切换到ARM状态。即在异常中断处理程序入口的一些指令是ARM指令,然后根据需要可以切换到thumb状态。在异常中断处理程序返回前,程序再切换到ARM状态。
(3)ARM处理器总是从ARM状态开始执行的(自动的)。因而,如果要在调试器中运行thumb程序,必须为该thumb程序添加一个ARM程序头,然后再切换到thumb状态,调用该thumb程序。
附加解释:
1.Arm指令32bit,thumb指令16bit,arm体系结构将存储器看成是以字节为单位的线性排列,引出问题: 16bit的指令和32bit的指令合起来才是有意义的,所以每次需要取出2,4个单元。
ARM处理器(或其他)如何解决,特殊寄存器PC,arm状态(低2bit不要,高30bit是PC),thumb状态(低1bit不要,高31bit是PC),这样,PC变化一个最小单位,就能从存储器中取出对应大小的数据。那么这两个字节,或4个字节在存储器 如何存储。需要约定,否则,设计和实际乱掉了。
(4)大端和小端。
确定大小端:ENDIAN接高接低
小端 低字节低地址高字节高地址 大端 高字节低地址 低字节高地址
2.存储器中存储指令的时候,32bit是如何利用4个字节的,引出大端小端。
在正常程序执行时,每执行一条ARM指令,PC的值加4字节,每执行一条Thumb指令,PC加2字节,整个过程是按顺序执行。所以,在ARM时,PC内容低2bit为0b00;在thumb时,PC内容低1bit地址是0b0。
(5)44B0的七种模式:
ARM(S3C44B0)有7种操作模式:在不用应用环境下需要调用不同的资源
不同操作模式的主要目的是为了在不同模式情况下,可使用的资源和信息不同。
7种操作模式:
(1)用户模式usr:正常程序执行的模式;
(2)管理模式svc(超级用户模式supervisor):供操作系统使用的保护模式;
(3)系统模式sys:运行具有特权的操作系统操作任务
(4)快速中断模式fiq:用于高速数据传输和通道处理;
(5)中断模式irq:用户通常的中断使用;
(6)数据访问终止abt:用于虚拟存储及存储保护;
(7)未定义模式und:支持硬件协处理器的软件仿真(执行未定义的指令);
关于7种模式的补充说明
(1)除了用户模式外,其他6模式称为非用户模式;除了用户模式和系统模式外,其他5种称为异常模式(称为异常模式的原因是发生了中断或异常,或者要访问被保护的资源)。
(2)ARM的工作模式可以通过软件改变,也可以通过中断或异常改变。
(3)这7中工作模式对应着系统中的中断向量表(7个)
在ARM+Linux系统中,用户程序不能访问受操作系统保护的系统资源,因此,不能进行工作模式切换,只有运行在内核态的程序才能更改工作模式。当需要处理器模式切换时,用户态的程序可以中断,内核态的中断处理程序开始响应,并做出处理。
系统中所有的调度都是围绕着中断向量表展开的,
(6)寄存器
上图中寄存器个数为37个,其中寄存器的逻辑类型有17个(加上SPSR为18个)
在不同的模式下,操作者能使用(或说看见)的资源怎么样?
(1)在不同的工作模式下,使用者可以见到的寄存器是不同的。
(2)物理寄存器和逻辑寄存器
个人理解:硬件实现的寄存器称为一个物理寄存器;
同一个物理寄存器用作N个用途时,表现出来为N个逻辑寄存器;
(3)S3C44B0有37个物理寄存器,如何分配使用。
(1)计算机任何工作都需要PC和CPSR状态寄存器保存的信息:
4种状态位;irq,fiq中断是否允许;工作状态;操作模式
(2)堆栈寄存器:指向每种模式专用的栈地址;
连接寄存器:两种用途
(a)在程序调用的时候用来存放地址;
(b)发生异常或中断时用来存储强制转会的地址;
(3)程序状态寄存器的备份。
(异常工作模式,用来处理完异常工作模式后,恢复CSPR)
(4)微处理器大量的数据交换:R0~R7
(5)还有5个也用于数据交换:R8~R12
(6)额外的待遇:FIQ还有5个自己专用的寄存器R8~R12
FIQ拥有自己的5个数据寄存器,就可以不用执行保存和恢复现场的指令。响应速度会加快。
SR 状态寄存器
LR 连接寄存器,在ARM体系结构中LR的特殊用途有两种:一是用来保存子程序返回地址;二是当异常发生时,LR中保存的值等于异常发生时PC的值减4(或者减2),因此在各种异常模式下可以根据LR的值返回到异常发生前的相应位置继续执行。
PC (PROGRAM COUNTER)程序计数器
CPSR: Current Program Status Register当前程序状态寄存器
SPSR: Saved Program Status Register备份程序状态寄存器
SPSR用来进行异常处理,有以下功能:
1.保存ALU中的当前操作信息。2.控制允许和禁止中断。3.设置处理器的运行模式。
(7)芯片手册图:
(至少记住上半部分图)
总线上最重要的五样东西:CPU ,存储器,中断控制器,DMA,LCD
DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。
DMA分为ZDMA(通用DMA)和BDMA(桥式DMA)
LCD(液晶显示器 liquid crystal display)
四个通信口:
(1)UART通用异步收发器 (计算机与外围设备串行通信)
(2)IIC
(3)IIS
(4)SIO
计算机应用越大,外部设备的种类和数量就会越多
1.任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现。为了简化硬件电路设计、简化系统结构,常用一组线路,配置以适当的接口电路,与各部件和外围设备连接,这组共用的连接线路被称为总线。采用总线结构便于部件和设备的扩充,尤其制定了统一的总线标准则容易使不同设备间实现互连。
2.总线的竞争问题;
高速器件和低速器件的问题。
如何实现总线连接:统一的地址线,数据线,控制线,用地址选择芯片。
3.所有部件挂在一条总线上存在的问题:
(1)各个设备速度不一致,在竞争总线时带来麻烦。如果碰见慢速设备,造成瓶颈(申请和释放总线的速度很慢),对于高速设备影响很大。
(2)挂在总线上的设备过多的时候,造成延时。这对高速器件影响很大。
4.S3C44B0的总线:
(1)系统总线;系统总线桥&仲裁/BDMA;外围设备总线。
(2)高速设备接在系统总线;低速设备接在外围设备总线;
(3)主设备和从设备的介绍。系统总线有多个主设备,总线不允许大于等于2个主设备同时申请总线。引出“总线仲裁器”。总线仲裁器根据约定好的总线优先级来决定总线的归属。
44b0关于总线优先级的约定有两种选项:轮询;固定优先级
a)复位之后(固定优先级法),S3C44B0总线优先级顺序(7个总线master):
从高到低:DRAM刷新控制器;LCD_DMA;ZDMA0,1;BDMA0,1;外部总线master;写缓冲区;cache和cpu
LCD_DMA;ZDMA0,1;BDMA0,1之间的优先级顺序可以通过SBUSCON编程来控制
(b) 轮询方式下,所有的主设备都是相同的优先级。
5.引出Cache:
在cpu wrapper中的一个直接存储器(8k)
(1)用作8K(数据或指令)高速缓冲存储器cache;
(2)用作4Kcache和4Ksram;
(3)用作8k的sram。
cache提高运行效率;sram提高isr的运行效率(中断服务程序ISR的运行速度很重要)。
(8)地址映射:
百度概念:为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射。
28根地址线---2^28=2^10*2^10*2^8=256M 分为8个bank
6、7bank间大小可变,分界线可变
Bank~bank7首地址速记:0x00,000000; 0x02,000000; 0x04,000000; 0x06,000000。。。逗号后面6个零,16M,所以,每2单位(16M)就是32M。
2的零次方哪一列
2的一二次方哪一块
2的三次方哪一行
(9)内存控制器(13个):
(10)内存控制器初始化程序语句:
ldr r0, =标号 将初始化区域数据首地址加载到R0
ldmia r0, {r1,r13} 将初始化的数据存入通用寄存器r1,r2,r3,r4……r13
ldr r0, 0x01c8,0000 指向13个内存控制器的首地址
stmia r0, {r1,r13} 将通用寄存器r1,r2,r3,r4……r13中的初始化数据存入13个内容控制寄存器
逐字逐句解释!!!!!!
LDR R0,=SMRDATA ;将存储控制组件各控制器的初始化数据区的起始地址装载到R0
LDMIA R0,{r1-r13} ;将R0作为起始地址的13个连续字的初始化数据装载到R1~R13
LDR R0,=0x01C80000 ;配置总线宽度与等待控制寄存器BWSCON 的地址
STMIA R0,{R1-R13} ;将R1~R13中内容存储到R0作为起始地址的13个连续字的存储区 SM(1)ldr加载指令
LDR指令的格式为:LDR{条件} 目的寄存器,<存储器地址>
LDR指令用于从存储器中将一个32位的字数据传送到目的寄存器中。该指令通常用于从存储器中读取32位的字数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。该指令在程序设计中比较常用,寻址方式灵活多样,请读者认真掌握。
指令示例:
LDR R0,[R1] ;将存储器地址为R1的字数据读入寄存器R0。
LDR R0,[R1,R2] ;将存储器地址为R1+R2的字数据读入寄存器R0。
LDR R0,[R1,#8] ;将存储器地址为R1+8的字数据读入寄存器R0。
(2)ldmia rd!, {Rlist} 将寄存器Rlist中的内容加载到基地址为Rn处。!一定需要吗?还是说,!表示增加后的基地址返回,不加是基地址不变。
依次将R1到R13的值传入R0相应的地址,每次传输之后递增R1指向的存储地址
(3)stmia:存储寄存器的内容到基地址为Rd处。
CPU 单元
Cache的引入:
(1)高速cpu与低速SDRAM之间的速度问题。
(2)SRAM运行速度高于SDRAM
(3)程序访问的局部性:
(a)指令访问的局部性比数据明显;
(b)但数组型数据,结构体等数据局部性很强。
(4)引入cache后cpu与sdram之间的数据或指令传输。
(5)cache大小和SDRAM大小的比例:4:1000(命中率90%)
采用LRU机制提高命中率;
利用写穿式保证数据的一致性。
1.S3C44B0如何保证cache和SDRAM读取的一致性
写穿式:任一从CPU发出的写信号送到Cache的同时,也写入主存,以保证主存的数据能同步地更新。
优点是操作简单,但由于主存的慢速,降低了系统的写速度并占用了总线的时间。
S3C44B0中cache的结构:
1.8Kcache分为4组,每组分为128行,每行16bit信息,共2K。
2.四路组相连映射的cache中,SDRAM中4×16bit大小的块作为映射单位,其中,每16bit存放在每一组中对应行。
组相联映射
SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器
CPU 单元:
写缓冲机构
(11)中断
1.来自芯片外部的中断:5pin,8种中断
2.来自芯片内部的中断(外围):
(1)从CPU手中申请控制资源的权利:
(2)外设与CPU的通信:
(3)定时器
(4)其他:看门狗和ADC
理解:关于44b0的中断:
1.44b0允许30个中断,这些中断来自于外部,和芯片内部(芯片内部的外围,例如uart)。
2.这30个中断可以被44b0编成两个级别(优先级)的中断:IRQ和FIQ。
3.对于编成同一类型中断的中断源,如果同时发生,如何解决?
44b0提供了两种中断服务的方式:
(1)需要通过程序确定中断源的优先级,方法是查询中断pending寄存器。“它表明“将”发生中断的类型”。 这种中断处理方法的缺点:有等待时间(latency time)。
(2)中断矢量的方式: CISC类型的微处理器的通用特性(为什么RISC没有,CISC的硬件可以做的复杂)。主要好处能够减少等待时间。44b0能够完成这一功能主要是因为芯片内的中断控制器硬件提供了中断服务向量。
实现过程:当多个中断发生的时候,“硬件优先级逻辑”确定先服务那个哪个中断,同时,这个硬件逻辑申请(应用apply)中断向量表(首地址是0x18或0x1c)中的跳转指令。这个跳转指令的目的就是去执行对应的ISR.这样能够减少等待时间。
I_ispr:irq的中断程序的pending寄存器。
Movs和mov的区别:加s影响标志位,不加s不影响标志位。
sub sp,sp,#4
stmfd sp!,{r8-r9}
ldr r9,=I_ISPR
ldr r9,[r9]
mov r8,#0x0
mov r9,r9,lsr,#1
bcs %F1
add r8,r8,#4
b %B0
ldr r9,=handleADC
add r9,r9,r8
ldr r9,[r9]
str r9,[sp,#8]
ldmfd sp,[r8-r9,pc]
isrIRQ解释:
(1)r8,r9入栈。
(2)将I_ISPR的内容存到r9里面(先存地址,再将地址的内容存入)。
(3)将r9逻辑右移,当移除为1时,知道对应bit位为待处理的中断。该中断的相对地址由r8计算。
(4)r8用来存储pending寄存器中发生中断的中断源的“相对地址”。先令r8=0x0,然后pending中等于1的位置,每隔一个加地址4。
(5)如果没有移除1,则跳转到0继续移(B0表示向后back到0),如果移除1,则向前跳转到1(F1:forward 1)
(6)将相对地址编成绝对地址:r8+(=handleADC),然后将r9入栈。
(7)将r8,r9,还有中断处理程序的绝对地址同时出栈,其中中断处理程序的首地址(绝对地址)赋予了PC
1.只适用于IRQ;
2. 包括1个主单元+4个辅单元。
3.每个单元都分为四个“G”和两个“Gk”。前者的优先级大于后者;并且“GkA”高于“GkB”。所以mGKB的优先级是最低的,即ADC的中断。
4. “G”中连接的4个优先级是可以编程的。
5.FIQ中断优先于IRQ中断
动画次序:
1.mGn和sGn中的四个中断源的优先级是可编程的。寄存器I_PSLV和I_PMST
优先级产生单元中的4个从单元的优先级由I_PSLV来定义。每个从单元有4个可编程中断源,需要2bit×4来说
明优先级1~4(00:1;01:2.。。越小级别越高),那么4个从单元共需要32bit。
I_PMST:定义4个从单元的优先级,需要8bit,因此,还剩下的bit用来还做了两件工作:
(1)主单元工作模式是固定的,还是轮询的。
(2)从单元。,。。。。。。。。。。
2.相应当前状态的查询是I_CSLV和I_CMST
在轮询情况下, I_CSLV和I_CMST与对应的I_PSLV和I_PMST可以不一样。
3.如果多个中断同时发出申请,可以通过查询I_ISPR(类似于INTPND)
只适用于IRQ.FIQ需要查询INTPND。
4.清除INTPND,用I_ISPC(用于IRQ。F_ISPC用于FIQ
第三课:S3C44B0的IO控制器
(12) LCD控制器
LCD控制器:
(1)生成时序信号;
(2)把视频数据变换成要求格式的数据:4,8单扫描;4双扫描;
(3)LCDDMA负责数据从mem传送到lcd控制器。
44b0中与LCD有关的(8+4)个管脚。
借鉴xscale,管脚说明:
(1)VCLK:像素点时钟。
(2)VLINE:表明行的结束。
(3)VFRAME:表明帧的开始。
(4) VM: LCD驱动器的AC信号
(13)通用异步收发器UART
UART的功能(提供RS-232C数据终端设备接口):
(1)发送时:将“计算机内部”传来的”并行数据“转换为“串行数据流”,在输出的串行数据流中加入奇偶校验位,输出数据流+奇偶校验位两端加上开始bit=0,停止bit=1。
(2)接收时:将“计算机外部”来的串行数据转换成字节(计算机用的是并行数据);对接收来得数据进行奇偶效验,在接收数据中删除起始和结束bit。
实现串口通信需要完成两部分工作:
(1)将串口电平转换为设备电路板的工作电平,即实现RS-232电平和TTL/COMS电平的转换;
(2)接收并检验串行数据,将数据编程并行的,并提供给处理器使用。
实现RS-232电平和TTL/COMS电平转换用接口芯片;实现数据的串行到并行转换用UART。它们是实现串行通信必不可少的两个部分。
(14)IIC总线:
IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是一种简单、双向、二线制、同步串行总线,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。这种方式简化了信号传输总线接口。
开始信号之后,如果是master先传地址(7bit)和传输方向(读或写),然后传数据。以字节为单位,没字节后有ack应答信号。在一次完整的传输过程中,传输的“字节”数是不限制的。IIC传输是以字节为单位的。无论字节是地址还是数据,一个字节结束后都有一个应答信号。如果地址超过8bit,则用两个字节传(字节间有有ack)
(15)IIS 总线
I2S(Inter—IC Sound)总线, 又称 集成电路内置音频总线,是为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专门用于音频设备之间的数据传输,采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真
IIS传输是如何实现的:
(1)IIS传输需要5个管脚。数据入、出两个。串行数据传输时的时钟1个。因为声音是立体声,所以,要传一个左右声道的时钟信号(如果约定好先8bit是左声道,后8bit是右声道是不是也可以,可以省掉一个LRCK),还需要一个codeclk信号。估计声音编码的基本单位。
(2)IIS传输:
(1)设定IIS控制器是master还是slaver
(2)设定IIS是发,还是收,还是收发。IISCON
(2)IIS还是MSB-JUSTIFIED
(3)先设置DCLK,LRCK和CODECLK。
通过设置寄存器IISPSR中的prescaler值。
还要通过IISCON选择CODECLK和DCLK。
(4)FIFO的设置:IISFCON和IISFIF
读写:普通还是DMA
大小:
FIFO使能:
(5)其他的设置:
LRCK高为左声道还是右声道;
串行数据是8bit,还是16bit。
(5)开启FIFO(IISFCON)
开启DMA(IISCON)
开启IIS,即启动传输(IISCON)
(16)GPIO总线扩展器
General Purpose Input Output (通用输入/输出)简称为GPIO,或总线扩展器,人们利用工业标准I2C、SMBus或SPI接口简化了I/O口的扩展。当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。
问题:
L3总线包含什么?(GPIO)
L3MODE
L3DATA
L3CLOCK
第四课:
ARM 程序设计
(17)ARM 体系混合编程
P5 B:无条件跳转到reset ISRIRQ查询那一段指令被中断,中断矢量模式比非中断矢量模式快
Ldr pc,Handler Handle ADC
这段程序的作用是:
(1)保存r0信息;
(2)利用r0将pc指向handleLabel中的地址。
(18)初始化
初始化堆栈:
1.针对7种操作模式,有6种sp,要想对sp进行初始化,首先要让系统进入该工作状态。因为,汇编中sp只有一个标识符。
2.用户堆栈不用初始化。
3. 程序细节:先将MODE位全部清零(保存在r0),然后,将用“或”来实现各种模式的选择(保存在r1)。注意:这时不允许INT,所以,同时进行“NOINT”的设置。
P19 未定义模式下SR的初始化
逐行解释:!!!
Mrs r0,CPSR 取当前程序状态寄存器的内容赋值到r0
BIC R0,R0,#MODEMASK (#0x1F) 清空模式位
ORR R1,R0,#UNDEFMODE|NOINT(#0x1b|0xc0) 选择新的模式,将新的模式控制字赋值给r0
Mrs cpsr_cxsf,r1 取当前r0的内容赋值到当前程序状态寄存器
Ldr sp,=UndefStack 表示将UndefStack这个标号所代表的地址赋给堆栈指针
注释:
bic r0,r0,#0x1f
@bic指令(bit clear): r0:= r0 and (not op2).上边的指令目的是把bit0~bit4清零.
mrs 将状态存储器内容传到通用寄存器
bic 比特清零
ORR Logical OR逻辑或
(19)宏指令
1.MACRO,MEND伪操作可以将一段代码定义为一个整体,称为宏指令。
2.宏操作的使用方法与子程序有些相似,子程序可以提供模块化的程序设计,节省存储空间并提高运行速度。但是,使用子程序结构时需要保护现场,从而增加了系统能量开销,因此,在代码较短且需要传递的参数较多时,可以使用宏操作代替子程序。
第五课:
(20)OSI:开放系统互连(open system interconnet)
1.物理层:为设备之间的数据通信提供传输媒体(物理通道)。 (数据链路层解决的问题)
2.数据链路层:
设备之间的物理媒体是长期存在的,但是“连接”是有生存期的。所谓连接
就是真正进行的数据通信。
每次通信都要经过两个过程:“建立通信联络”和“拆除通信联络”。这种建立起来的数据
收发关系叫做“数据链路”。
物理媒体上传输数据不可避免会产生差错,为了弥补物理层的不足,需要对数据进行检
错和纠错。
数据链路的建立,拆除,对数据的检查,纠错是数据链路层的基本任务。
3.网络层:
如果物理媒体不止一根,而是很多根交错在一起,产生“把任意两台数据终端设备的数
据链接起来的问题”,也就是路由或寻径。
此外,当一条物理信道建立以后,被一对用户使用,往往有许多空闲时间被浪费,自然
会希望让多对用户用一条链路,为了解决这个问题,出现了逻辑信道技术和虚拟电路技
术。(复用:由传输层作??)
4.传输层:
ISO模型分为7层。传输层是低3层和高3层的连接点。
第一个端到端的层次,具有缓冲作用。
当网络层服务质量不好的时候,将服务加以提高,以满足高层要求;当网络层服务质量
较好时,只作少量工作。
复用:一个网络连接上创建多个逻辑连接。
屏蔽各种通信子网的差异(吞吐量,传输速率,数据延迟通讯费用),使会话层感觉不
到。
5.会话层:
建立和维持会话。
使用效验点可使通信会话在通信失效时从效验点继续恢复通信,对于传输大文件极为重要。
6.表示层:
会话层以下的5层完成“端到端”的数据传送,并且是可靠,无差错的传送。
但是数据传送只是手段,不是目的。最终的目的是实现对数据的使用。
不同计算机的体系结构对数据的表示法不同,表示层要完成这个工作。
7.应用层:
为应用程序服务。
(21)以太网
.以太网的传输单元称为“帧”。
以太网的发送方式是一帧一帧发送的。
以太网数据:不够64个字节补零
(22)以太网的尽量传输机制与重传机制
1.以态网是无连接的,不可靠的服务。采用尽量传输的机制。
解释:以太网并不知道对方有没有收到自己发出的数据包,但是,如果他发出的数 据包发生错误,他会进行重传。
以太网的错误主要是“碰撞”:两台机器同时监听到网络是空闲的,同时发送 数据,就会发生碰撞,碰撞对于以态网来说是正常的。
说明:假设A检测到网络是空闲的,开始发数据包,尽力传输,当数据包还没有到达B时,B也监测到网络是空闲的,开始发数据包,这时就会发生碰撞,B首先发现发生碰撞,开始发送碰撞信号,所谓碰撞信号,就是连续的01010101或者10101010,十六进制就是55或AA。这个碰撞信号会返回到A,如果碰撞信号到达A时,A还没有发完这个数据包,A就知道这个数据包发生了错误,就会重传这个数据包。但如果碰撞信号会返回到A时,数据包已经发完,则A不会重传这个数据包。
以太网为什么要设计这样的重传机制。首先,以太网不想采用连接机制,因为会降低效率,但他又想有一定的重传机制,因为以太网的重传是微秒级,而传输层的重传,如TCP的重传达到毫秒级,应用层的重传更达到秒级,我们可以看到越底层的重传,速度越快,所以对于以太网错误,以太网必须有重传机制。
要保证以太网的重传,必须保证A收到碰撞信号的时候,数据包没有传完,要实现这一要求,A和B之间的距离很关键,也就是说信号在A和B之间传输的来回时间必须控制在一定范围之内。IEEE定义了这个标准,一个碰撞域内,最远的两台机器之间的round-trip time 要小于512bit time.(来回时间小于512位时,所谓位时就是传输一个比特需要的时间)。这也是我们常说的一个碰撞域的直径。
512个位时,也就是64字节的传输时间,如果以太网数据包大于或等于64个字节,就能保证碰撞信号到达A的时候,数据包还没有传完。
这就是为什么以太网要最小64个字节,同样,在正常的情况下,碰撞信号应该出现在64个字节之内,这是正常的以太网碰撞,如果碰撞信号出现在64个字节之后,叫 late collision。这是不正常的。
补充:
-------------------------------------------------------------------------------------------------------------------------
2018.11.20 after exam 总结的要点(QAQ眼神暗示.....):NCACHBE0 与NCACHBE1两个寄存器的功能?
答:设置非缓冲区范围。
NCACHBE0 = 0xC0000000;
NCACHBE1 = 0x00000000;
"不应该把IO地址放入缓冲区,而应该把它放入非缓冲区;不应该不把SDRAM放入非缓冲区,而应该放入缓冲区。所以,这里把除SDRAM地址外的所有映射地址做为非缓冲区。然后依据地址设置NCACHBE0和NCACHBE1。NCACHBE0在在这里是有用的,高地址为0x0c000000,低地址为0x00000000;而 NCACHBE1可以理解为不用它,所以起始和终止地址都设为0."
以上仅供参考学习交流使用,部分内容及图片来自网络
另一位classmate整理的,互相补充
https://blog.csdn.net/JustFollow/article/details/84037076