嵌入式系统及应用.docx
- 文档编号:5926479
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:39
- 大小:29.47KB
嵌入式系统及应用.docx
《嵌入式系统及应用.docx》由会员分享,可在线阅读,更多相关《嵌入式系统及应用.docx(39页珍藏版)》请在冰豆网上搜索。
嵌入式系统及应用
嵌入式系统及应用
实验指导书
前言
嵌入式软件开发实验内容是结合《嵌入式软件开发及应用》这门课程的核心
内容所精心设计的。
实验采用的是优龙公司YL—LPC2148开发板,其核心芯片是
飞利浦LPC2148芯片。
实验内容涵盖了从基本工程的建立方法到嵌入式操作系统
的移植,从基本IAR环境的设置到芯片主要功能模块的驱动和测试等主要知识点
和工作流程。
实验设置的目的是从实际出发,让同学们将课堂上的内容学以致用;
将枯燥的书面信息跃然板上,更可以调动同学们的动手兴趣,提高学习热情。
另
外,所有实验都有其实际应用价值,能为同学们今后走向工作岗位快速进入良好
的工作状态打下良好的实践基础。
嵌入式软件开发实验共分五次课,每次三学时,下面是实验安排:
实验一:
IAR环境的使用及LPC2148存储器映射
实验二:
GPIO与频率控制
实验三:
中断控制及UART通信
实验四:
LCD控制与综合
实验五:
μC/OS移植
为了提高学生实验课的学习效率,在每次实验的指导中给出了实验的基本原
理并对其关键点进行了详细的阐述,还包括相关寄存器的物理地址等信息。
每次
实验课中都设置了成若干小的实验项目,并针对各个实验项目都设有思考问题,
用来帮助同学们加深认识,同时培养独立思考的能力。
该门实验课软件和硬件并
重,需要有较多的知识储备,需要具有“汇编语言”、“C语言”、“计算机组成原
理”、“操作系统”等多门课程的基础。
另外,由于LPC2148中采用ARM7TDMI
核,所以希望同学们多阅览关于ARM7架构和指令集的参考资料并做好课前预
习工作。
实验一IAR环境的使用及LPC2148存储器映射
项目1:
使用IAR集成开发环境并创建启动项目
实验原理:
IAR公司推出的IAREmbeddedWorkbench软件包是一种专门针对嵌入式系统应用开发
的集成开发环境,其中集成了几乎所有的必须工具。
利用IAR开发环境进行嵌入式开发首先
要建立一个启动项目工程,该工程中包含了初始化ARM的必要汇编程序(见文件
),在这个启动项目工程基础上可通过添加文件、编写main函数来完
成其他实验内容。
调试过程中可采用RAM和FLASH两种方式。
前者在内部RAM中调试掉电不
保存;后者在内部FLASH中调试代码,通过仿真器将代码下载到片上。
实验内容:
创建一个启动项目
(1)创建新工程
*Project->CreateNewProject创建新工程,在Toolchain中选择ARM
*右键点击工程名称选择Add->AddGroup,在弹出的对话框中命名Config
*在工程目录下创建Config文件夹,将、、
和各文件拷贝其中
*右键点击Config选择Add->AddFiles,将Config文件夹中的
文件加入
*Project->Options:
GeneralOptions->Target选项卡中将Device设成NXPLPC2148
*在工程目录下新建文件并添加进工程
(2)识别调试模式
选择调试模式:
(3)调试模式设置:
在Configurations中可添加、更改调试模式。
(4)RAM模式设置:
如果用并口下载模式,在Driver中选择RDI,并在Category中RDI选项卡中输入所用
RDI驱动路径(H-JTAG安装目录下文件)。
(5)FLASH模式设置:
Flashloader中选择IAR安装目录下
\arm\config\flashloader\Philips\。
(6)输出文件设置:
实验要点:
阅读及文件内容,理解两者区别。
思考:
RAM及FLASH两种调试模式的区别及设置方式异同点。
项目2:
RAM模式和Boot模式的映射
实验原理:
ARM7TDMI内核基于冯·诺依曼结构,数据和指令混合编址;系统包含几个不同的存
储器组,如图所示,图中反映了复位后从用户角度所看到的整个地址空间映射。
从图中可知LPC2148具有32KB的静态RAM,可存储程序代码或数据。
SRAM支持按8位、
16位和32位方式访问。
另外还有主要由USB使用的8KBSRAM存储器也可用作数据存储、
代码存储和代码执行的通用RAM存储器。
存储器映射的基本概念是:
每个存储器组在存储器映射中都有一个“物理上的”位置。
它是一个地址范围,该范围内可写入程序代码,每一个存储器空间的容量都永久固定在一个
位置,这样就不需要将代码设计成在不同地址范围内运行。
由于ARM7处理器上的中断向量
表位于地址0x00000000-0x0000003F(片上FLASH)上,所以没次发生异常时,CPU都从
0x00000000-0x0000003F地址上读取异常向量。
但是为了提高存取速度(RAM快于FLASH),
往往将FLASH中的64字节的异常向量表复制到0x40000000-0x4000003F(片内RAM)中,
再把0x40000000-0x4000003F范围内的存储单元地址重新映射到0x00000000-0x0000003F
上。
这样当CPU读取0x00000000-0x0000003F上的内容时,实际上是针对地址
0x-0x4000003F的操作,从而加快了存取速度。
实验内容:
RAM模式和Boot模式的映射
查找LPC2148的存储器映射模式,从中选取用户RAM模式和Boot装载程序模式,然后
在用户RAM模式下将0x40000000-0x4000003F范围内的内容分两次分别用0x11、0xBB填
充,最后将映射模式设置成Boot模式。
在线调试,并通过IAR中提供的memory窗口观察在
RAM模式下0x00000000-0x0000003F和0x40000000-0x4000003F内容是否相同,Boot
模式下地址0x00000000-0x0000003F和0x7FFFD000-0x7FFFD03F上的数据是否相同。
实验要点:
学会通过MEMMAP寄存器设置ARM映射模式,#include后可设置MEMMAP
模式(MEMMAP地址:
0xE01FC040),解释实验中观察到的现象。
思考:
LPC2148芯片存储器共分几部分,这么设计有什么好处。
解释实验中的现象。
项目3:
异常向量表拷贝
实验原理:
启动用户程序时,MEMMAP=1,若用户程序需要随时更改异常向量表,需要将异常向量表
(64字节)复制片内RAM的0x地址上,然后设置MEMMAP=2进行重映射,以后就
可以在SRAM中对向量表进行更改了。
实验内容:
将起始函数__program_start的前64个字节(异常向量表)的内容拷贝到起始地址为
0x的SRAM中,然后将地址映射模式改为MEMMAP=02。
实验要点:
实验在FLASH模式下调试进行。
思考:
为什么该实验需要在FLASH模式下调试进行而不能在RAM模式下?
图系统存储器映射
AHB外设
VPB外设
保留地址空间
Boot块
(12KB从片内Flash存储器重映射)
保留地址空间
8KB片内USBDMARAM存储器
全部512KB片内非易失性存储器
32/64/128/256KB片内非易失性存储
器
0x00000000
0x00040000
0x40000000
0x7FD02000
0x80000000
0xC0000000
0xE0000000
0xF0000000
0xFFFFFFFF
0.0GB
1.0GB
2.0GB
3.0GB
3.5GB
3.75GB
4.0GB
0x7FFFFFFF
0x7FFFD000
0x7FFFCFFF
保留地址空间
8/16/322KB片内静态RAM存储器
0x7FD01FFF
0x7FD00000
0x7FCFFFFF
0x40008000
0x40007FFF
保留地址空间
0x3FFFFFFF
0x0003FFFF
0x00080000
0x0007FFFF
实验二:
GPIO与频率控制
项目1:
GPIO的驱动及测试
实验原理:
GPIO:
LPC2148有两个32位的通用I/O口:
PORT0的32个可用引脚中为输出引脚,
未用,其余30个为输入/输出引脚;PORT1中引脚可用作GPIO功能。
慢
速GPIO的驱动主要通过IOPIN、IOSET、IODIR和IOCLR四个寄存器以及PINSEL0、PINSEL1
寄存器的设置来完成。
IOPIN:
GPIO端口引脚值寄存器,用来读取端口引脚的当前状态;
IOSET:
GPIO端口输出置位寄存器,写入1,对应引脚输出高电平,写入0,无效;
IODIR:
GPIO端口方向控制寄存器,下入1,输出,写入0,输入;
IOCLR:
GPIO端口输出清零寄存器,写入1,对应引脚输出低电平并清零IOSET相应位,
写入0无效
PINSEL寄存器控制芯片管脚复用的具体配置,通过设置该寄存器来确定引脚的具体功
能。
对于PORT0,它们的地址为:
IO0PIN:
0xE0028000;
IO0SET:
0xE0028004;
IO0DIR:
0xE0028008;
IO0CLR:
0xE002800C;
PINSEL0:
0xE002C000;
PINSEL1:
0xE002C004;
PINSEL0与PINSEL1描述如表和表所示:
实验内容:
利用慢速GPIO,编写板上LED灯及蜂鸣器的驱动及测试函数。
板上外部输入S5控制LED
灯闪烁,S4控制蜂鸣器鸣叫。
实验要点:
为S4,为S5,为蜂鸣器;蜂鸣器由脉冲控制。
需要别写延迟函数。
思考:
LED灯闪烁频率和蜂鸣器鸣叫频率如何控制。
表引脚功能选择寄存器0(PINSEL0)位描述
位符号值功能复位值
1:
000
01
10
11
GPIO
TxD(UART0)
PWM1
保留
0
3:
200
01
10
11
GPIO
RxD(UART0)
PWM3
EINT0
0
5:
400
01
10
11
GPIO
SCL0(I
2
C0)
捕获(TIMER0)
保留
0
7600
01
10
11
GPIO
SDA0(I
2
C0)
匹配(TIMER0)
EINT1
0
9:
800
01
10
11
GPIO
SCK0(SPI0)
捕获(TIMER0)
0
11:
1000
01
10
11
GPIO
MISO0(SPI0)
匹配(TIMER0)
0
13:
1200
01
10
11
GPIO
MOSI0(SPI0)
捕获(TIMER0)
保
0
15:
1400
01
10
11
GPIO
SSEL0(SPI0)
PWM2
EINT2
0
17:
1600
01
10
11
GPIO
TxD(UART1)
PWM4
保留
0
19:
1800
01
10
11
GPIO
RxD(UART1)
PWM6
EINT3
0
21:
2000
01
GPIO
保留
0
10
11
捕获(TIMER1)
保留
23:
2200
01
10
11
GPIO
保留
捕获(TIMER1)
SCL1(I
2
C1)
0
25:
2400
01
10
11
GPIO
保留
匹配(TIMER1)
保留
0
27:
2600
01
10
11
GPIO
保留
匹配
保留
0
29:
2800
01
10
11
GPIO
保留
EINT1
SDA1(I
2
C1)
0
31:
3000
01
10
11
GPIO
保留
EINT2
保
0
表引脚功能选择寄存器1(PINSEL1)位描述
位符号值功能复位值
1:
000
01
10
11
GPIO
EINT0
匹配(TIMER0)
捕获(TIMER0)
0
3:
200
01
10
11
GPIO
捕获(TIMER1)
SCK1(SSP)
匹配(TIMER1)
0
5:
400
01
10
11
GPIO
痘?
.3(TIMER1)
MISO1(SSP)
匹(TIMER1)
0
7:
600
01
10
11
GPIO
匹配(TIMER1)
MOSI1(SSP)
捕获(TIMER1)
0
9:
800
01
10
11
GPIO
匹配(TIMER1)
SSEL1(SSP)
EINT3
0
11:
1000
01
10
11
GPIO
PWM5
保留或
捕获(TIMER1)
0
13:
1200
01
10
11
GPIO
保留或
捕获(TIMER0)
匹配(TIMER0)
0
15:
1400
01
10
11
GPIO
VBUS
保留
保留
0
17:
1600
01
10
11
保留
保留
保留
保留
0
19:
1800
01
10
11
GPIO
保留或AOUT(DAC)
保留
0
21:
2000
01
10
11
保留
保留
保留
保留
0
23:
2200
01
10
11
保留
保留
保留
保留
0
25:
2400
01
10
11
GPIO
捕获(TIMER0)
匹配(TIMER0)
0
27:
2600
01
10
11
GPIO
捕获(TIMER0)
匹配(TIMER0)
0
29:
2800
01
10
11
GPIO
EINT3
捕获(TIMER0)
0
31:
3000
01
10
11
仅为输出端口
UP_LED
CONNECT
保留
0
项目2:
锁相环PLL
实验原理:
PLL用于倍频输入时钟来提供CPU和相关总线的工作时钟。
这里通过PLL倍频我们得
到ARM7的工作时钟FCclk和VPB总线工作时钟FPclk。
PLL接受的输入频率范围为:
10MHz-25MHz。
图说明PLL与FCclk和FPclk的关系:
F
OSC
PLL
VPB分频器
处理器时钟
FCclk
VPB时钟
FPclk
图
#1:
PLL控制寄存器
*PLLCON:
最新的PLL控制位保持寄存器,写入该寄存器的值在有效的PLL馈送序列执行
前不起作用。
地址为:
0xE01FC080。
*PLLCFG:
最新的PLL配置值保持寄存器,写入该寄存器的值在有效的PLL馈送序列执行
前不起作用。
地址为:
0xE01FC084。
(4:
0位:
倍频值M,6:
5位:
分频值P)
*PLLSTAT:
PLL控制和配置信息的读回寄存器,如果曾对PLLCON或PLLCFG执行了写
操作,但没有产生PLL馈送序列,这些值将不会反映PLL的当前状态,读取该
寄存器提供了控制PLL和PLL状态的真实值。
地址为:
0xE01FC088。
*PLLFEED:
该寄存器使能装载PLL控制和配置信息,该配置信息从PLLCON和PLLCFG
寄存器装入实际影响PLL操作的映像寄存器。
地址为:
0xE01FC08C。
必须正确
写入PLLFEED馈送序列才能使PLLCON和PLLCFG寄存器的更改生效。
馈送
序列如下:
(1)将值0xAA写入PLLFEED;
(2)将值0x55写入PLLFEED;
#2:
PLL频率的计算
输出频率:
OSC
FMcclk()
其中:
M是PLLCFG寄存器中MSEL倍频值;F
OSC
是晶振频率;
cclk范围是10MHz—F
max
(处理器工作最大值)。
#3:
工作流程
*PLLCON=1//使能PLL,但没激活PLL;
*设定PLLCFG中M、P值//倍频和分频值;
*发送PLL馈送序列;//激活PLL设置;
*等待PLL锁定//查询等待位=1;
*PLLCON=3//设定M和P值后,连接PLL;
*发送PLL馈送序列,把M和P的值写入硬件
#4:
VPB寄存器
*VPBDIV:
控制VPB时钟速率与处理器时钟之间的关系,地址为0xE01FC100。
1:
0位设置
如下:
00:
VPB总线时钟为处理器时钟的1/4
01:
VPB总线时钟为处理器时钟的1/1
10:
VPB总线时钟为处理器时钟的1/2
11:
写入无效
实验内容:
利用PLL设置处理器时钟FCclk和VPB总线时钟FPclk。
再编写函数取得FCclk和FPclk,
并比较它们的值。
实验要点:
F
OSC
为12MHz;
思考:
若ARM核工作频率不超过60MHz,那么在F
OSC
为情况下,PLLCFG中M、
P的取值范围。
项目3:
定时器的使用
实验原理:
LPC2148有两个32位可编程定时/计数器。
它们对外设时钟(FPclk)周期进行计数,两
个计数器除了基地址以外,其它都相同。
#1:
主要控制寄存器及其描述
*中断寄存器IR:
定时器0-T0IR(0xE0004000);定时器1-T1IR(0xE0008000)
IR包含4个位用于匹配中断,4个位用于捕获中断。
若中断产生,IR中相应位会置位;
向IR位中写入1会复位中断,写入0无效。
具体描述见表。
表中断寄存器IR描述
IR位功能描述复位值
0MR0中断匹配通道0的中断标志0
1MR1中断匹配通道1的中断标志0
2MR2中断匹配通道2的中断标志0
3MR3中断匹配通道3的中断标志0
4CR0中断捕获通道0事件的中断标志0
5CR1中断捕获通道1事件的中断标志0
6CR2中断捕获通道2事件的中断标志0
7CR3中断捕裢ǖ?
事件的中断标志0
*定时器控制寄存器TCR:
定时器0-T0TCR(0xE0004004);定时器1-T1TCR(0xE0008004)
TCR用于控制定时器计数器的操作。
为0x00时,计数器被禁止,为0x01时计数器使能。
*定时器计数器TC:
定时器0-T0TC(0xE0004008);定时器1-T1TC(0xE0008008)
当预分频计数器达到计数上限时,32位定时器计数器TC加1。
*预分频寄存器PR:
定时器0-T0PR(0xE000400C);定时器1-T1PR(0xE000800C)
预分频计数器计数最大值,达到此值后TC+1且下一个时钟脉冲预分频计数器复位。
*预分频计数器寄存器PC:
定时器0-T0PC(0xE0004010);定时器1-T1TCR(0xE0008010)
每个FPclk周期,PC加1。
*匹配寄存器MR0-MR3:
定时器0:
T0MR0-T0MR3(0xE0004018-0xE0004024);
定时器1:
T1MR0-T1MR3(0xE0008018-0xE0008024);
当匹配寄存器与定时器计数值相等时自动触发相应动作:
产生中断,复位定时器计数器
或停止定时器。
具体执行什么动作由MCR寄存器控制。
*匹配控制寄存器MCR:
定时器0-T0TC(0xE0004014);定时器1-T1TC(0xE0008014)
匹配控制寄存器用于控制在发生匹配时所执行的操作,功能见表。
表匹配控制寄存器描述
MCR位功能描述复位值
0中断(MR0)1:
MR0与TC匹配产生中断;0:
禁止中断0
1复位(MR0)1:
MR0与TC匹配使TC复位;0:
特性禁止0
2停止(MR0)1:
MR0与TC匹配使TC和PC停止,TCR[0]
清零;0:
特性被禁止
0
3中断(MR1)1:
MR1与TC匹配产生中断;0:
禁止中断0
4复位(MR1)1:
MR1与TC匹配使TC复位;0:
特性禁止0
5停止(MR1)1:
MR1与TC匹配使TC和PC停止,TCR[0]
清零;0:
特性被禁止
0
6中断(MR2)1:
MR2与TC匹配产生中断;0:
禁止中断0
7复位(MR2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 应用
![提示](https://static.bdocx.com/images/bang_tan.gif)