基于VG2的智能家居控制器的实现
3 软件设计
本文采用μC/OS-II(v2.51)嵌入式操作系统作为家居控制器的软件平台。μC/OS-II是一个占先式多任务操作系统,可固化、可裁剪,易于移植,具有良好的可靠性和稳定性;支持多达64个任务,以及信号量、消息邮箱、消息队列等多种进程问通信机制。由于没有TCP/IP和USB协议栈,因此移植了1wIP和USB HOST协议来实现网络通信和USR数据传输。
3.1 μC/OS-II在VG2上的移植
采用Cygwin作为编译平台的EISC STUDIO集成开发环境,用户可以在C程序中插入汇编语言(可扩展指令集),在移植过程中修改了OS_CPU.H和OS_CPU_C.C,4个与处理器相关的函数在OS_CPU_C.C中实现。堆栈的增长方向为向下,入口宽度为32位。初始化后数据结构依次为opt,ptos,pdata,0x0,task,0x3000,0xe,0x7,0x6,Ox5,0x4,0x3,0x2,0xl,0x0。OSStartHighRdy()在OS_CPU_C.C中的实现实例如下(限于篇幅,其他函数不再一一列出):
3.2 1wIP协议在μC/OS-II上的移植
1wIP是一个比较完备的嵌入式TCP/IP协议栈,有与操作系统接口的封装层。1wIP的移植主要包括4个方面的工作:
◇处理与编译器和硬件相关的include文件;
◇实现与操作系统相关的结构和函数;
◇实现lib_arch中的库函数;
◇实现RTL8019As驱动程序。
RTL8019AS与Ne2k芯片兼容,可参照ethernetif.c网络驱动模板实现网络设备的驱动。
3.3 USB主机系统的实现
USB主机系统的实现主要是核心驱动程序(USBD)和主控制器驱动程序(HCD)的实现。HCD是协议栈最底层对主机控制器硬件和数据传输的抽象,向上为USBD提供一个软件接口(HCDI),向下管理和检测主机控制器硬件的行为。USBD是USB体系的中枢,用于检测和管理USB系统的所有活动,向上接收USB设备驱动程序和用户程序的各种命令和数据,向下把处理好的各种数据发送给HCD,并最终与设备进行通信。主机要支持设备类,就要建立特定的设备类协议,本设计实现了USB Mass Storage类,移植了ZLG/FS文件系统。
软件设计采用模块化、与内核相分离的原则,可保证程序具有良好的可移植性和可重用性,主要有网络模块、USB模块、市话控制模块、显
评论