1嵌入式系统与ARM
嵌入式系统以应用为中心、以计算机技术为基础。ARM(Advanced RSIC Machines)是一家出售芯片设计技术授权的公司,目前其设计的ARM微处理器占据了32位RISC(Reduced Instruction Set Computing)微处理器75%以上的市场份额。
2 ARM体系结构
ARM已经从V3发展到V6。目前流行的ARM芯片内核有ARM7TDMI、StrongARM、ARM720T、ARM9TDMI、ARM922T、ARM940T、ARM946T、ARM966T、ARM10TDMI等。PhilipsLPC2214(以下简称LPC2214) 是基于ARM7TDMI-S的高性能32位RISC微控制器,属于V4T版本。
2.1 ARM处理器内核
现代的VLS技术把附加的系统部件与内核集成在同一芯片中。其中,内核是最为密集和复杂的部件,是确定一个新系统时选择的关键。LPC2214的内核是ARM7TDMI(图1)的可综合版本(软核)。字母意义分别是:T-高密度16位的Thumb指令扩展、D-支持片上调试、M-短时间64位乘法指令、I-EmbededICE观察点硬件。
图 1
2.2 ARM 微控制器
嵌入式微控制器(单片机)就是将整个计算机集成到一块芯片中。各厂商购买ARM公司的核心授权后,扩展与各自领域相关的片内外围电路,并集成在芯片中,使基于ARM处理器核的芯片多元化。设计者应尽可能采用片内外围电路完成所需的功能,来简化系统设计,提高系统可靠性。LPC2214微控制器(如图2)通过AHB 到VPB 的桥将VPB总线与AHB 总线相连,片内外设(中断控制器除外)连接在VPB总线上。LPC2214具有:多个串行接口,2 个16C550 工业标准UART、高速I2C 接口(400 kHz)、2 个SPI 接口;8路10 位A/D 转换器(0~3V测量范围),转换时间可低至2.44uS;2个32 位定时器(带4 路捕获和4 路比较通道);PWM 单元(6 路输出);实时时钟和看门狗;112个通用I/O 口(可承受5V 电压);2 个低功耗模式,空闲和掉电;片上集成高速闪存。
图 2
税控收款机是一种带有计税功能的电子收款机,它内部装有自动记录但不能更改和抹掉的计税存储器。税控收款机由以下几部分组成:中文显示系统、中文打印系统、专用税控处理系统、外围设备驱动、电源、带物理安全保证的机箱。税控机制由以IC卡为基础的发行、管理、申报、维护、经营等系统组成。有关数据由税务部门用专用IC卡读出,以便稽查。
此系统充分合理地利用了其片内实时时钟、外部存储器接口、UART等其它外设接口。片上闪存作为用户程序的存储空间,其高速零等待特性保证系统的实时运行。其片上程序保护机制,防止代码被任意更改和复制。整个系统的设计结构简洁,极具竞争优势。
3 系统移植
ARM芯片获得了许多实时操作系统(Real Time Operating System)供应商的支持,比较知名的有:Windows CE、Linux、pSOS、VxWorks Nucleus、OSE、eCOS、μC/OS-II等,我们将在税控收款机系统上移植μC/OS-II。
3.1 μC/OS-II移植
LPC2214的ARM7TDMI-S内核用ARM ADS作为编译器移植μC/OS-II。包括以下内容:
① 设置OS_CPU.H头文件中与处理器和编译器相关的代码如:整数、浮点数、堆栈等数据类型定义,打开或者关闭中断函数设置,定义堆栈增长方向,任务切换的执行代码。
② 用C语言在OS_CPU_C.C文件中编写6个操作系统相关函数:任务堆栈初始化函数OSTaskStkInit( ),μC/OS-II在执行某些操作时调用的用户函数:OSTaskCreateHook( )、OSTaskDelHook( )、OSTaskSwHook( )、OSTaskStatHook( )、OSTimeTickHook( )
③ 在OS_CPU.ASM文件中用汇编语言编写四个与处理器相关的函数:运行优先级最高的就绪任务OSStartHighRdy( )、任务级的任务切换函数OSCtxSw( )、中断级的任务切换函数OSIntCtxSw( )、中断服务函数OSTickISR( )。这里介绍的是通用方法,在具体的项目中还有很多工作要作。
3.2 建立完整的嵌入式实时系统
μC/OS-II提供的仅仅是一个任务调度的内核,要想实现一个以LPC2214为主控单元,应用于税控收款机的嵌入式实时多任务操作系统,还需相当多的扩展工作。主要包括:
① 建立文件系统相关的API函数:如初始化文件函数InitOSFile( )、通过文件缓冲区读写数据函数ReadOSFile( )和WriteOSFile( )、打开和关闭文件函数OpenOSFile( )和CloseOSFile( )。
② 为外部设备建立驱动程序并规范相应的API函数。外设驱动程序可以对系统提供访问外围设备接口,把操作系统和外围设备分离开来。当外围设备改变的时候,只需更换相应的驱动程序,不必修改操作系统的内核以及运行在操作系统的软件。如:液晶驱动、键盘驱动、UART接口驱动等。
③ 创建图表用户接口GUI函数,实现Unicode字库的显示及相关函数。
④ 系统的消息队列。消息相关函数在各个任务之间、用户应用程序之间以及用户应用程序和系统的各个任务之间通常是通过消息来传递信息和同步的。
⑤ 税控收款机软件设计采用模块化思想,其用户程序的开发大体分为如下部分:主程序、自检诊断模块、IC卡读写模块、UART通讯模块、开票模块、液晶显示和按键等人机接口模块。
图 3
4 ARM体系中的调试
调试阶段在整个系统开发过程中所占的比重越来越大,因此拥有高效、强大的调试系统可以大大减少开发时间,加快产品面市时间,减轻系统开发工作量。ARM体系结构包含了完善的调试手段,下面仅介绍基于JTAG的ICE类型调试的原理。
4.1 基于JTAG的ICE类型调试
基于JTAG的调试系统结构(图4)包括:位于主机上的调试器、目标系统、主机和目标系统之间进行分析和转换的模块。JTAG调试是边界扫描方式,LPC2214微核电路部件的每个I/O引脚包含一个电路元件,此元件的接口连接到JTAG二进制位移位寄存器上进行测试,这样每个引脚都被JTAG采样或监听。ARM7TDMI(图2)的TAP控制器通过JTAG接口控制各个硬件扫描链,扫描链0可以访问所有外围部件;扫描链1是扫描链0的一部分,它可以访问数据总线和控制总线BREAKPT;扫描链2主要用于访问Embedded ICE逻辑部件中的各寄存器。ARM7TDMI调试接口建立在IEEE1149-1190标准之上,该标准定义了访问芯片的5个引脚串行通讯协议,可以通过5个引脚访问芯片内部,从而可以进行调试和测试。JTAG调试过程:
① 设置程序断点、数据断点或相应外部请求,以便进入调试状态;
② 当程序运行到断点指令时,处理器进入调试状态,此时断点指令还没执行;
③ 在调试状态用户执行所需的调试能,如停止目标程序执行、查看目标内核状态、查看和修改存储器的内容等。
图 4
5.结束语
本文通过对嵌入式实时操作系统μC/OS-II中的关键技术及ARM体系组结构和调试的分析,结合LPC2214的硬件结构和运行环境,说明了μC/OS-II的移植、PLPC2214的应用和调试。
参考文献:
1,Jean J. Labrosse 著,邵贝贝等译,μC/OS-Ⅱ__源码公开的嵌入式实时操作系统.北京:中国电力出版社,2001.
2,周立功 等编著,ARM微控制器基础与实战.北京:北京航空航天大学出版社,2003-11.