• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 无线手持磁条卡信息终端设计

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

录入:edatop.com     点击:

  3.2 LwIP在μC/OS-Ⅱ上的移植

  LwIP是瑞士计算机科学院的Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。它占用较少的RAM和ROM,这使LwIP协议栈适合在低端嵌入式系统中使用。LwIP还支持点对点协议(PPP),可以通过PPP连接GPRS网络,实现无线上网。

  LwIP在设计时就考虑到移植问题,把所有与硬件、编译器和操作系统相关的部分独立出来,放在LwIP-1.3.0\include\arch和LwIP-1.3.0\arch目录下。因此LwIP在μC/OS-Ⅱ上的移植,主要工作就是编写这两个目录下的相关文件。要编写的文件主要包括cc.h、sys_ arch.h和sys_arch.c三个文件。移植LwIP协议栈,主要是针对具体硬件、编译器和μC/OS-Ⅱ系统重新设计以上3个文件。除此之外,还有一个配置文件lwipopt.h,主要对LwIP进行功能配置。cc.h,sys_arch.h和sys_arch.c三个文件和lwipopt.h文件的修改内容如下:

  3.2.1 cc.h

  主要定义与编译器有关的宏,主要包括LwIP数据类型、调试输出宏、临界保护的宏、错误编码、字的高低位顺序等等。

  3.2.2 sys_arch.h

  主要定义与操作系统相关的一些结构体与宏,包括邮箱、信号量、线程ID等。

  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的邮箱操作:

  \

  (4)LwIP的sys_arch_timeouts函数。在LwIP当中,每一个线程都有一个定时器链表来保存相关的定时信息,移植时要做的事情是为每一个定时器链表提供一个用来保存链表表头指针的结构变量sys_timeouts,并通过sys_arch_timeouts函数返回每个线程对应的sys_timeouts变量,并且保证在出错时也能返回一个可用的sys_timeouts变量。相关的数据结构和函数定义如下:

  \

  (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 GPRS无线Modem驱动

  无线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驱动。该文件中主要实现下面几个函数:

  \

  4 结语

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

1  2  

上一篇:日本无线充电:三洋电机的非接触充电板
下一篇:基于CortexM3的SD卡 片浏览器

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图