新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 无线手持磁条卡信息终端设计

无线手持磁条卡信息终端设计

作者:时间:2011-04-21来源:网络收藏

3.2.3 sys_arch.c
主要实现与操作系统封装层相关的一些函数,包括邮箱操作函数、信号量操作函数等等,主要实现以下几个函数:
(1)LwIP系统的初始化函数。LwIP提供了系统初始化函数void sys_init(void),用来给用户初始化一些必要的数据结构。在本系统当中,sys_init()函数主要使用μC/OS-Ⅱ的内存管理函数,分配LwIP邮箱所需的内存和初始化LwIP的定时事件表。
(2)LwIP信号量操作函数。由于μC/OS-Ⅱ中已经实现了信号量的各种操作,只需使用μC/OS-Ⅱ中的信号量处理函数对LwIP的信号量操作函数重新进行封装就可以了。
(3)LwIP邮箱操作函数。LwIP中的邮箱对应μC/OS-Ⅱ中的消息队列。根据sys_arch.h文件里面定义的邮箱数据结构,使用μC/OS-Ⅱ的消息队列函数封装成以下几个函数就可以实现LwIP的邮箱操作:
e.JPG
(4)LwIP的sys_arch_timeouts函数。在LwIP当中,每一个线程都有一个定时器链表来保存相关的定时,移植时要做的事情是为每一个定时器链表提供一个用来保存链表表头指针的结构变量sys_timeouts,并通过sys_arch_timeouts函数返回每个线程对应的sys_timeouts变量,并且保证在出错时也能返回一个可用的sys_timeouts变量。相关的数据结构和函数定义如下:
f.JPG
(5)LwIP线程的创建函数。LwIP需要实现线程的创建函数,但是由于μC/OS-Ⅱ中没有线程的概念,只有任务,所以LwIP中线程创建可以通过调用μC/OS-Ⅱ中的任务创建函数实现。
(6)LwIP获取系统时间函数。当LwIP使用PPP作为数据链路层协议时,必须通过sys_jifties()函数获得以ms为单位的系统时间。因此要使用LwIP的PPP协议时,一定要实现这个函数;没有使用PPP协议时,无需理会。由于在μC/OS-Ⅱ,无论时钟节拍何时发生,μC/OS-Ⅱ都会对一个32位的计数器加1。可以通过调用μC/OS-Ⅱ的系统函数OSTimeGet()来获得该计数器的当前值,再根据系统的时钟节拍频率就可以实现sys_jifties()函数。
3.2.4 修改配置文件lwipopt.h
LwIP提供了配置文件lwipopt.h,可以通过定义一系列宏来剪裁LwIP功能,适应不同的应用需要。例如可以设置是否支持PPP协议,是否支持ICMP协议,是否支持自动获取IP等等。由于本应用系统使用GPRS上网,所以设置支持PPP协议。
3.3 GPRSModem驱动
Modem驱动完成MC39i的初始化、发送和接收PPP协议帧数据。
3.3.1 AT命令
驱动Modem是基于A T命令集实现的,微控斜器通过串行接口将AT命令发送给MC39i,从而完成对MC39i的控制。主要AT命令如下:
(1)设置错误返回。使用at+cmee=1命令,执行错误时,错误报告的格式均为ERROR。
(2)设置接入网关。使用at+cgdcont=1,“IP”,“CMNET”命令设置GPRS接入网关为移动梦网。
(3)激活GPRS功能。使用AT+CGACT=1,使GPRS模块附着到网络。如果命令返回O K,则GPRS连接成功;如果返回ERROR,则意味着GPRS连接
失败。
(4)拨号。ATD * 99 * * * 1#。拨号成功后,微控制器通过串口传送PPP协议帧,与Modem进行数据通信。
3.3.2 LwIP与Modem接口函数
Modem使用串行接口与微控制器进行通信。而LwIP提供了几个标准的串行设备接口函数,在LwIP中的创建sio.c文件实现GPRS无线Modem驱动。该文件中主要实现下面几个函数:
g.JPG

4 结语
本文的无线系统实现了轻量级TCP/IP协议栈LwIP在μC/OS-Ⅱ上的移植,并利用运营商的GPRS网络实现了与后台服务器的无线互联,其具有成本低,体积小和功耗低等优点,可应用于多种应用场合。

本文引用地址:http://www.eepw.com.cn/article/156375.htm

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭