嵌入式系统复习笔记

发布 2022-10-21 07:22:28 阅读 2507

注意点:本复习指导基本已包括所有的程序设计以及分析题,每个考点后面均有例题,例题前的所有知识点我已经把他写的尽量通俗易懂,把程序分析的方法也写明,希望大家用几个小时时间来看看,通过考试绝对没有问题! ps:

本材料后面所写的参考页码均是以新版书为标准,用旧版书的同学麻烦自己写上旧版书的页码,知识点都是一样的!!!本人能力有限,如有错误,请见谅!!

1、状态寄存器cpsr各bit的意义:

各位同学只需了解控制位bit0~bit7

mode[4:0]是见表1 p29

t:为状态:0表示arm状态,1表示thumb状态。

i、f表示irq中断fiq中断的使能。1时中断禁止,0时中断使能(允许该中断)。

2、三个特殊用途寄存器 sp(r13) lr(r14) pc(r15)

r13(sp):堆栈指针,保存当前处理器模式的堆栈栈顶。

r14(lr):链接r,保存子程序(含发生异常)的返回地址。

r15(pc):程序计数器,保存下一条指令的地址。

注意点:pc指针永远指向取值(什么意思?见第3点流水线)

3、arm7的流水线。

采用**流水线,即取指→译码→执行。

例:假设一共有三条指令:

0x4000 add pc,pc,#4 ;其中第二个pc指针的值为0x4008,将第二个pc+4=0x400c赋给第一个pc指针(回答上述pc指针永远指向取值的问题)

0x4004 sub

0x4008 cmp

那么cpu实际执行为:

周期取指译码执行。

t1 add

t2 sub add

t3 cmp sub add

解释:当第一cpu周期t1时先取址,取第一个指令的地址。

当第二cpu周期t2时取第二个指令的地址,然后译码,译的是第一个指令的码。

当第三cpu周期t3时取第三个指令的地址,译第二个指令的码,执行第一个指令。

所以:pc值=当前程序执行位置+8字节(如果cpsr中的t位为0,则+8;如果t位为1,则+4)

4、pll频率的计算(p133)

pllcfg寄存器的意义:一个8位的pll配置寄存器。

pllcfg[4:0]为msel[4:0],存放的是pll倍频器值(即m值);

例:msel[4:0]=00101 则表示5,m=5+1=6

pllcfg[6:5]为psel[1:0],存放的是pll的分频器值(即p值;)

例:psel[1:0]=00 则表示p=1

01 则表示p=2

10 则表示p=4

11 则表示p=8

pll频率公式:

注意点:的范围为156~320mhz;

例题:晶振的频率为10mhz,需要输出的系统时钟为60mhz,请问如何配置?

答: =10mhz,所以,所以 m-1=5,所以msel[4:0]=0b00101;

根据的范围可知, 所以,p只能取2,即psel[1:0]=0b01;

所以根据上述得:

pllcfg = 1<<5) |5) ;这句话的意思是将2(也就是0b01)向左移5位,也就是将pesl赋值了,然后与5逻辑或,也就是将0b00101赋值给msel了。

则系统时钟设置为:

#define fosc 11059200 ; 晶振10mhz;

#define fcclk (fosc * 6) ;系统频率为fosc的整数m倍。

#define fcco (fcclk*4) ;cco频率为fcclk的2p倍。

#define fpclk (fcclk/ 4)*1 ; vpb分频,只能为fcclk/ 4的倍。

5、引脚连接模块的配置。

注意点:请各位同学注意lpc2214的引脚描述图p97

1】引脚选择寄存器共3个,每个32位,pinsel0、pinsel1、pinsel2

其中每两位控制一个引脚(如何理解?)

解释:pinsel0[1:0]表示该寄存器1位、0位控制p0.0口。

其中00表示gpio的功能;01表示txd(uart0)的功能;10表示pwm1的功能;11保留。

详细见表 p173-p174

所以pinsel0[31:0]控制p0.0~p0.15pinsel1[31:0]控制p0.16~p0.31

【2】例题:将p0.10配置成gpio,p0.11配置成cts(uart1),如何配置?

解题分析思路:

①首先确定是pinsel0还是pinsel1来控制?这里是pinsel0控制;

而且p0.10是pinsel0[21:20]控制,p0.11是pinsel0[23:22]控制;

再根据p173的表可得,p0.10的gpio功能的值为00,p0.11的cts功能值是01;

01 00 =40x04<<20 (0x00400000)

这句话的意思是将这四位的值(也就是0x00000004)赋值进去,因为该值是从第20开始的,所以需要左移20,就变成了(0x00400000);

最后写出引脚配置语句,采用可先读寄存器值,然后按位进行逻辑“与”、“或”操作,再回写到该寄存器。

也就是:本题答案: pinsel0=(pinsel0 & 0xff0fffff)|(0x04<<20)

(本句的意思是,先读出pinsel0的值,然后和0xff0fffff逻辑与,因为pinsel0中我们只需要将要设置的0100赋值进去,不能改变其他值,原值&1=原值,起到保护其他值的作用。

二进制: 1111 1111 00 00 1111 1111 1111 1111 1111

十六进制: ff0fffff

然后我们将要赋值的值左移20位,与原值逻辑或即可)。

6、外部存储器的配置(emc)

1】系统有4个外部存储器组配置寄存器bcfg0 bcfg1 bcfg2 bcfg3 描述见p155

其中pinsel2[5:4]为boot[1:0],也是bcfgn[29:28],表示控制数据总线的宽度。

00 表示8位 01 表示16位 10表示32位 11保留。

寄存器的配置选项:

idcy:为防止总线竞争,存储器内部读/写访问间需间隔空闲时钟周期(1~ 16个cclk);

wst1:读访问长度(等待+操作:3 ~ 34个cclk);

wst2:写访问长度(等待+操作:1 ~ 32个cclk);

rble/mw:存储器组的总线宽度(8/16/32位);

wp:存储器组写保护(=1, 写保护)。

2】16位宽存储器组连接16位sram芯片;512kb、16位数据宽度(或者问mw=0b01或者问boot[1:0]=0b01),请问如何接线p362

解题分析思路:

①首先确定是16位数据总线宽度,那么将lpc2200中的d0~d15连接到sram上的i/o0~i/o15上。

512kb是容量,决定地址总线的宽度,,所以为19根地址总线,所以从a0~a18;

又因为是16位数据宽度,p口只有8位输出,所以a0为低位,不用接。

所以实际接线为a1~a18接到sram的a0~a17.见以下接线图为答案。

7、vic向量中断控制配置。

1】vic控制寄存器分三个寄存器:vicintselect(中断选择寄存器)、vicintenable(中断使能寄存器)、vicintenclr(中断使能清零寄存器p193~p194

vicintselect(中断选择寄存器):为32位寄存器,当某一位为1时,表示该通道的中断设置为fiq;为0时,分配为irq。

例:vicintselect[14]=1 则通道14的eint0中断设置为fiq中断。

vicintenable(中断使能寄存器):为32位寄存器,写入1时,对应通道的中断使能,写入0时,则对应通道中断无效。

例:vicintenable = 1<<14);即通道14(也就是eint0)中断使能;

嵌入式系统复习

what why how 一 课程主要内容。1 嵌入式系统概念及基本知识。2 arm体系结构及指令集。3 ucosii内核原理。4 lpc系统芯片结构。5 基于ucosii的arm编程应用。重点 1 arm体系结构及指令集。2 ucosii内核原理。难点 1 基于ucosii的arm编程应用。二 复...

嵌入式系统复习

复习。题型。一 选择题 本题共10小题,每题2分,共20分 考察 基本概念。难度 中低。二 填空题 本题共10小题,每题2分,共20分 考察 基本概念及简单应用。难度 中高。三 简答题 本题共8小题,每题4分,共32分 考察 基本概念。难度 中等。四 程序设计题 本题共4小题,每题7分,共28分 考...

嵌入式系统复习

问答题 编程题举例 1 嵌入式系统的定义 主要特点。答案要点 目前国内一个普遍被认同的定义是 以应用为中心 以计算机技术为基础 软件硬件可裁剪 适应应用系统对功能 可靠性 成本 体积 功耗严格要求的专用计算机系统。主要特点 是专用的计算机系统,用于特定的任务 资源较少,可以裁减 功耗低,体积小,集成...