基于ARM7核处理器uC/OS-ii系统的Nos-Wlan移植
3 LPC2478处理器uC/OS-ii系统框图
本文引用地址://m.amcfsurvey.com/article/111153.htm该系统以NXP的LPC2478处理器为核心,外围集成了FLASH,SDRAM,UART模块,以太网接口模块,USB OTG接口模块,LCD液晶屏和触摸屏模块,以及以FPGA为核心的视频采集模块以及华大电子的Nos-Wlan模块,该系统主要应用于视频监控领域,其系统硬件框架如图4所示:
图 4 系统硬件框架
4Nos-Wlan模块软件移植
根据华大电子Nos-Wlan软件用户手册,Nos-Wlan模块软件移植所调用的模块内部接口函数有:hedrv_Init,hedrv_UsbPlugIn,hedrv_UsbPullOut,hedrv_UsbRx,hedrv_UsbTxDone,hedrv_UsbControlDone,hedrv_TickFunction,所需要实现的模块内部回调函数有:hosts_UsbHostReset,hosts_UsbTx,hosts_UsbControl,Nos-Wlan模块软件移植代码部分主要实现模块内部的初始化,模块内部所使用源时钟注册,USB控制帧及批量传输帧的发送和接收。其中,系统USB HOST(OHCI)驱动是基于周立功公司所提供的基于U盘的OHCI驱动修改而来,以适应USB无线网卡的需求。
4.1 模块初始化
模块初始化函数aq3_usb_init,完成整个模块的初始化,包括Nos Wifi模块内部内存池的初始化(调用模块接口函数hedrv_Init)、USB传输部分主数据结构的初始化、USB传输主线程的创建、模块内部源时钟的初始化及网卡的初始化(调用模块接口函数hedrv_UsbPlugIn),网卡初始化完成后模块内部会调用用户注册的初始化完成回调函数(DevInitDone,用户实现),该函数由网卡初始化函数hedrv_UsbPlugIn的参数传入。
4.2 模块的卸载
模块卸载函数aq3_usb_exit,完成整个模块的卸载,包块模块主源时钟的释放、Nos Wifi模块的卸载(调用模块接口函数hedrv_UsbPullOut)及所申请资源的释放等。
4.3 Nos-Wlan模块临界保护的实现
由于ucos-ii是实时的多任务嵌入式操作系统,模块需要对相关数据结构进行临界保护,其实现只需要使用ucos-ii提供的临界保护函数即可:
void hosts_EnterCritical (void)
{
OS_ENTER_CRITICAL();
}
void hosts_LeaveCritical (void)
{
OS_EXIT_CRITICAL();
}
4.4 模块源时钟
模块的源时钟时由系统tick定时器产生的,驱动向系统tick服务程序注册定时器超时回调函数,该函调函数进行计时,当10ms定时时间到时,该函数调用模块定时器超时处理回调函数hedrv_TickFunction。
评论