基于ARM芯片LPC2214和μCOS-II的家庭智能终端的设计与实现
软件设计采用模块化设计,保证程序具有良好的可移植性和可重用性,各种软件模块分别属于不同的程序层。如图3所示,笔者将软件模块分为三个程序集合,即软件的程序层。内层是μCOS-Ⅱ内核,承担任务管理、内存管理和时间管理功能。应用程序层主要完成数据处理和请求内核服务的功能。中间件层移植和编写各部分通信协议和底层接口芯片的驱动程序。图3中最外围层为硬件接口层,它不是实际的软件层,并不做软件编写工作。智能终端的软件部分非常复杂,由于篇幅所限,本文重点介绍操作系统的移植和远程监控及控制。
2.2 μCOS-Ⅱ操作系统在LPC2214上的移植
将μCOS-Ⅱ操作系统移植到LPC2214上需要0S_CPU.H、OS_CPEL_C.C、OS_CPU_A.ASM三个文件。OS_CPU.H主要定义不依赖于编译的数据类型、指定堆栈的生长方式以及定义底层接口。
为了具有良好的可移植性,μCOS-Ⅱ并不使用C语言中的short、im、long等数据类型,而是以整数数据类型代替。LPC2214有四种堆栈形式:满递减、满递增、空递减、空递增,但是ADS1.2编译器只支持满递减堆栈,即选择由上向下增长方式。
定义底层接口是为了在C语言中调用汇编代码高效地完成某些系统服务功能。本文采用软中断指令实现底层接口。底层接口代码如下:
OS_CPU_C.C文件首先根据LPC2214体系结构和ADSl.2编译器定义任务的堆栈结构。在定义堆栈结构的函数:OS_STK OSTaskStkInit(void(*task)void(*pd).void*plat,OS_STK**ptos,INT16U opt)中定义了一个全局变量OsEnterSum,主要用于对关中断次数进行计数,这样可以实现开中断和关中断的嵌套。此文件也包括实现软中断的详细代码。
此外,本文件还包括运行多任务时系统启动前调用最高优先级任务的函数void0SStartHighRdy(void)以及几个供用户编写的Hook函数。
OS_CPU_A.ASM包括四个简单的汇编语言函数:调用启动前最高优先级任务函数OSStartHigh Rdy(),从低优先级任务切换到高优先级任务的函数OSCtxSw()、OS-IntCtxSw(),时钟节拍中断处理函数OSTickISR()。任务切换函数在任务切换之前要利用堆栈保存被切换任务的有用状态。LPC2214具有17个寄存器,但并不是所有的寄存器都需要进入堆栈。为了节省堆栈空问和减少切换时的时间开销,建立了一个任务切换时的堆栈结构,如图4所示。
2.3 远程监控和远程控制
远程监控与远程控制的软件设计采用客户端一服务器方式。TCP/IP协议的传输层有两个数据传输协议:传输控制协议TCP和用户数据报传输协议UDP,二者各有特点。UDP协议是提供最少服务和费用的协议,它不基于连接来传输数据,因此UDP的传送数据是不可靠的。TCP协议是基于连接的双向传输的可靠数据传输协议,但是TCP协议的使用费用较高。在智能终端的设计中,充分考虑了数据传输的便利性和可靠性,并且鉴于ARM系统能够提供足够的资源,根据数据的不同要求,采用了不同的传输层协议。在软件设计中使用Socket API函数来编写UDP和TCP通信任务。TCP和UDP通信时,Socket API的应用流程如图5所示。
家庭智能终端是家庭内外信息交换和家电控制的平台。本文采用Philipes公司的ARM7芯片LPC2214和μCOS-Ⅱ操作系统设计了硬件和软件,克服了8位单片机处理速度慢、接口资源和存储资源不足的限制。利用RS-485和蓝牙网络作为家庭内部网络,局域网和电话网络作为外部网络,保证了大数据量传输的稳定性和可靠性,并且兼顾了传统的电话网络远程控制方式。实践表明。系统具有良好的实时性和稳定性,在高端家庭智能终端领域具有巨大的发展潜力。
智能家居 ARM LPC2214 μCOS-II 相关文章:
- 看国外如何节电(01-03)
- 智能家居系统分类(01-07)
- IP智能家居控制系统(01-04)
- 家居智能化营造方便舒适居家环境(01-07)
- 解读智能家居 (01-04)
- 家居智能化营造方便舒适居家环境(2)(01-07)