ARM嵌入式系统软件使用Word文件下载.docx
- 文档编号:21397151
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:12
- 大小:354.13KB
ARM嵌入式系统软件使用Word文件下载.docx
《ARM嵌入式系统软件使用Word文件下载.docx》由会员分享,可在线阅读,更多相关《ARM嵌入式系统软件使用Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
●ARM7TDMI-S处理器;
128k字节片内Flash程序存储器,具有ISP和IAP功能。
Flash编程时间:
1ms可编程512字节,扇区擦除或整片擦除只需400ms。
64/32/16K字节静态RAM(LPC2106/2105/2104)。
极小封装:
LQFP48(7×
7mm2)。
●向量中断控制器控制中断;
双UART,其中一个带有完全的调制解调器接口。
具有I2C串行接口和SPI串行接口;
两个定时器,分别具有4路捕获/比较通道;
多达6路输出的PWM单元;
实时时钟;
看门狗定时器;
通用I/O口;
●CPU操作频率可达60MHz;
双电源:
CPU操作电压范围:
1.65V~1.95V(1.8V±
8.3%),I/O电压范围:
3.0V~3.6V(3.3V±
10%);
两个低功耗模式:
空闲和掉电;
片内PLL允许CPU以最大速度运行,可以在超过整个晶振操作频率范围的情况下使用。
主要应用:
Internet网关;
串行通信协议转换器;
访问控制;
工业控制;
医疗设备等。
LPC2106/2105/2104包含一个支持仿真的ARM7TDMI-SCPU、与片内存储器控制器接口的ARM7局部总线、与中断控制器接口的AMBA高性能总线(AHB)和连接片内外设功能的VLSI外设总线(VPB,ARMAMBA总线的兼容超集)。
LPC2106/2105/2104将ARM7TDMI-S配置为小端(little-endian)字节顺序。
2.LPC2106/2105/2104存储器重新映射和BOOTBLOCK
AHB外设分配了2M字节的地址范围,它位于4G字节ARM存储器空间的最顶端。
每个AHB外设都分配了16k字节的地址空间。
LPC2106/2105/2104的外设功能(中断控制器除外)都连接到VPB总线。
AHB到VPB的桥接将VPB总线与AHB总线相连。
VPB外设也分配了2M字节的地址范围,从3.5GB地址点开始。
每个VPB外设在VPB地址空间内都分配了16k字节地址空间。
3.引脚说明
LPC2106/2105/2104封装为TQFP48(7×
7mm2),考虑到学生设计仿真硬件电路时,PROTEUS中的LPC2106是DIP形式,为避免学生混淆,下面以PROTEUS中DIP形式做管脚说明及使用介绍,其实管脚是完全一致的。
(1)电源和地
3.3V(管脚40、17)提供给I/O,1.8V(管脚5)提供给ARM7处理器
地:
管脚43、31、19、7
(2)
(管脚6)复位,复位电路设计参见上图。
(3)RTC(26)K和DBGSEL(27),用作JTAG下载调试,如没有用到可以不接。
(4)XTAL1(11脚)和XTAL2(12脚):
外接晶振。
(5)32个I/O口。
4.管脚配置为GPIO下的几个寄存器设置
⑴寄存器PINSEL0和PINSEL1的设置。
LPC2106的I/O口全都是3功能服用端口,也就是说即可用作普通输入输出端口,又用作第2或第3种功能。
设计人员可根据需要设置两个32位特殊功能寄存器PINSEL0和PINSEL1。
PINSEL0对应引脚P0.0~P0.15,PINSEL1对应引脚P0.16~P0.31。
都是寄存器中用两位来完成1根引脚的功能设置。
例如:
2GPIO方向寄存器设置
当管脚配置为GPIO模式时,可使用该寄存器控制管脚的方向。
任意管脚的方向位的设置必须与管脚功能一致。
⑶输出置1寄存器IOSET
当管脚配置为GPIO输出模式时,可使用该寄存器从管脚输出高电平。
写入1使对应管脚输出高电平。
写入0无效。
如果一个管脚被配置为输入或第二功能,写IOSET无效。
⑷输出清零寄存器IOCLR
当管脚配置为GPIO输出模式时,可使用该寄存器从管脚输出低电平。
写入1使对应管脚输出低电平。
如果一个管脚被配置为输入或第二功能,写IOCLR无效。
如果指定输出管脚在GPIO输出置位寄存器(IOSET)和GPIO输出清零寄存器(IOCLR)中的对应位都置位,那么管脚的输出电平取决于后写入的寄存器的值。
IOSET=0x00000080
IOCLR=0x00000080
P0.7输出电平为低,因为写GPIO清零寄存器在写置位寄存器之后。
四、软件调试
软件调试步骤如下:
1.启动ADS1.2,选择Codewarrior…
2.新建工程项目,项目类型为ARMExecutableImage,并在Projectname下输入工程名
3.右键单击空白处,添加所需项目文档进工程,见下图,除main.c是用户自己编写的应用程序外,其余的文件都是LPC2106的启动代码,简单应用无需更改。
4.点击图标
,进行工程相关设置
⑴选ARMfromELF,用PROTEUS仿真必须选择。
⑵设置代码起始地址(0x00000000)与数据起始地址(0x40000000)
⑶设置程序入口地址
⑷设置输出文件类型及文件名,用PROTEUS仿真必须选择INTEL32bitHex文件类型,文件名可随意输入。
全部设置完后点OK退出并保存设置。
⑸联合编译,点图标
。
如无错误,会得到编译信息,并会发现生成了自己命名的HEX文件。
⑹将HEX文件加载在PROTEUS中的PC2106中运行。
观察程序执行结果是否达到预期目标。
五、十字路口交通灯控制源程序仿真效果图
设计任务二uC/OS-Ⅱ的移植与应用
1.了解嵌入式实时操作系统μC/OS-II可移植、可裁剪等性能特点,正确理解实时操作系统中任务、信号、消息、中断等基本概念以及μC/OS-II多任务管理的调度算法;
2.掌握μC/OS-II在ARM7上移植的方法;
3.能将μC/OS-II移植在LPC2106中,并根据具体要求创建用户任务,解决实际问题;
1.μC/OS-II移植在LPC2106中。
2.编写用户任务程序,完成实时温度的采集控制。
硬件电路见参考硬件电路图,图中用滑动变阻器代替温度传感器转换后的电压,用ADC0809完成A/D转换,并用数码管显示出来。
1.嵌入式操作系统
随着计算机技术的迅速发展和芯片制造工艺的不断进步,嵌入式系统的应用日益广泛:
从民用的电视、手机等电路设备到军用的飞机、坦克等武器系统,到处都有嵌入式系统的身影。
在嵌入式系统的应用开发中,采和嵌入式实时操作系统(简称RTOS)能够支持多任务,使得程序开发更加容易,便于维护,同时能够提高系统的稳定性和可靠性。
这已逐渐成为嵌入式系统开发的一个发展方向。
嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件。
它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。
嵌入式实时操作系统有很多,如VxWorks、PalmOS、WindowsCE等。
这些操作系统均属于商品化产品,价格昂贵且由于源泉代码不公开导致了诸如对设备的支持、应用软件的移植等一系列的问题;
而开放源码的RTOS在成本和技术上有其特有的优势,在RTOS领域占有越来越重要的地位,例如μC/OS-II、uCLinux等。
2.μC/OS-II简介
μC/OS-II是专门为计算机的嵌入式应用设计的,是一个简单、高效的嵌入式实时操作系统内核,绝大部分代码是用C语言编写的。
CPU硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU上。
目前,它支持x86、ARM、PowerPC、MIPS等众多体系结构,并有上百个商业应用实例,其稳定性和可用性是经过实践验证的。
同时,它的源代码公开,可以从www.ucos-网站上获得全部源码以及其在各种体系结构平台上的移植范例。
最新的μC/OS-II2.0版以上的内核都具有可抢占的实时多任务调度功能,另外它还提供了许多系统服务,例如信号量、消息队列、邮箱、内存管理、时间函数等,这些功能可以根据不同的需求进行裁减。
可以说,uC/OS-II是一个具备现代操作系统特点的RTOS,同时它结构清晰、注解详尽,具有良好的可扩展性和可移植性,被广泛地应用于各种架构的微处理器上。
μC/OS具有执行效率高、占用空间小、实时性能优良和可扩展性能等特点,最小内核可编译至2KB。
μC/OS-II已经移植到了几乎所有知名的CPU上。
3.μC/OS-II在ARM7上的移植
μC/OS-II的移植代码主要分为3部分,第1部分是与处理器无关的代码,这部分无需更改,直接添加(附在嵌入式系统课程设计(学生)->
流水灯项目->
SOURCE文件夹中);
第2部分是与应用相关的两个头文件OS_CONFIG.H、INCLUDES.H;
第3部分是与处理器相关的代码,也是μC/OS-II移植的关键,主要由3个文件构成:
Os_cpu.h、Os_cpu_c.c、Os_cpu_c.s。
●Os_cpu.h:
该文件中主要定义了与处理器相关的数据类型,软件中断符号。
因为ucos不适用C语言中的short,int和long等数据类型,因为他们与处理器类型相关,隐含着不可移植性,因此需定义与处理器相关的数据类型,便于移植;
而定义的软件中断符号是为了在发生软件中断时,根据定义的软件中断号,跳转到指定的软件中断服务程序。
(1)定义与编译器相关的数据类型:
为了保证可移植性,程序中没有直接使用C语言中的short,int及long等数据类型的定义,因为他们与处理器类型相关,隐含着不可移植性;
而是自己定义了一套数据类型。
(2)选择开关中断的方式,同时定义软件中断符号。
(3)定义栈的增长方向:
虽然ARM处理器核对于两种栈的增长方式(向上/向下)都支持,但GCC的C语言编译器仅支持一种方式,即从上往下增长,并且是满递减堆栈。
所以OS_STK_GROWTH的值为1,
●Os_cpu_c.c:
该文件主要进行任务堆栈的初始化(OS_STK*OSTaskStkInit)和软件中断服务程序(voidSWI_Exception)。
软件中断服务程序中主要是对os_cpu.h中除了00,01中断号的其余中断标志号进行处理。
在该文件要编写10个简单的C函数,但是只有一个函数是必要的,其余的必须声明,但不一定要包含任何代码,唯一需要编写的是OSTaskStkInit()。
这个函数的功能主要是初始化任务的栈结构,在ARM体系结构下,任务堆栈空间由高至低依次将保存着pc、lr、r12、r11、r10、...r1、r0、CPSR、SPSR,因此在初始化任务堆栈空间时,应该与ARM体系结构中一样。
●Os_cpu_c.s:
该文件中包括软件中断标号入口处理SoftwareInterrupt,启动优先级最高的任务OSStartHighRdy,任务切换时的堆栈处理OSIntCtxSw和OSIntCtxSw_1。
当发生软件中断时,便跳到SoftwareInterrupt标号处,然后根据其中断号进行相应的处理OSStartHighRdy启动就绪态中任务优先级最高的任务。
OSIntCtxSw保存被中断任务的一些状态寄存器保存到该模式下的堆栈中,当优先级高的任务完成后,再从堆栈中返回。
而OSIntCtxSw_1是任务切换时,对新任务所做的堆栈处理。
4.μC/OS-II的多任务调度
μC/OS-Ⅱ以及绝大多数商业上销售的实时内核都是可剥夺型内核。
最高优先级的任务一旦就绪,总能得到CPU的控制权。
当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。
如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。
5.根据应用,划分任务,编写程序。
对于本任务可划分为3个任务,第一个任务按键识别;
第二个任务A/D转换;
第三个任务数码管显示。
仿真效果如下图所示,按下启动键,ADC0808将通道0的电压值转换并在数码管上显示出来。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 嵌入式 系统软件 使用