基于射频识别技术的车辆路口通行系统设计

时间:2012-07-12来源:网络

3. 软件设计

为了实现TCP/IP通信,同时使系统尽可能地轻量和简洁,本系统通过在uC/OS-II操作系统上移植LwIP协议栈加以实现。lwIP是瑞士计算机科学院的一个开源的TCP/IP协议栈实现,它是一套专门为嵌入式系统设计的源码开放的轻型协议栈。LwIP在保持TCP/IP协议基本要求的前提下,通过层与层之间共享内存,避免了许多繁琐的复制处理,这样做大幅度地节省了代码和数据存储空间,因此非常适合嵌入式应用。与其他轻型协议栈不同的是,LwIP不仅支持一般的网络协议,比如UDP协议、DHCP协议、PPP协议等,而且还支持多网络接口、IPv6和标准API。

3.1 LwIP在uC/OS-II上的移植

针对uC/OS-II[6]和ARM的ADS编译器,LwIP的移植只需要编写arch文件夹下的3个文件——cc.h、sys_arch.h和sys_arch.c。其中cc.h中有与CPU和编译器有关的定义,包括数据结构和大小端存储方式等。为了增强移植性,LwIP专门把和操作系统有关的数据结构和函数放在一起组成操作系统封装层,为诸如定时、进程同步和消息传递等操作系统服务提供统一的接口,移植时需针对不同的操作系统来实现特定的操作系统封装层,这些是由sys_arch.h和sys_arch.c实现的。其中sys_arch.h主要定义与操作系统相关的数据结构——信号量、邮箱和进程号,这些在uC/OS-II中都有对应的实体,LwIP中的邮箱对应于uC/OS-II中的消息队列。sys_arch.c中要实现和操作系统有关函数的定义,包括系统的初始化以及信号和邮箱的操作——创建、删除、投递和等待,这些功能需要用uC/OS-II中相应的函数进行重新封装。另外,TCP/IP协议栈中需要许多定时器的功能,在LwIP中是用sys_timeout结构体队列和相应的函数实现的。每个sys_timeout结构体包括本线程的timeout时间长度,以及超时后的回调处理函数sys_arch.c中sys_arch_timeouts()函数的功能就是返回当前进程所对应的sys_timeout结构体队列的头指针。本系统用的方法是在系统初始化的时候根据最大的LwIP进程数创建一个sys_timeout结构体指针的数组,以后每创建一个LwIP进程其优先级都从一个连续的已知区间进行分配,sys_arch_timeouts()函数通过调用OSTaskQuery()函数获得进程的优先级进而获得对应的sys_timeout结构体队列的头指针。

3.2 RTL8019驱动程序的编写

RTL8019驱动程序做的工作主要是8019的初始化、发送和接收以太网数据包。初始化函数rtl8019_init()是在添加以太网络接口时由netif_add()函数调用,调用过程中首先初始化此接口对应的全局网络接口结构体,然后设置8019的各功能寄存器。初始化完8019之后调用arp_init()函数启动ARP功能,然后用sys_timeout()函数启动ARP缓冲列表生命周期的定时器。数据包的发送首先从ARP缓冲队列中查找目的MAC地址,然后构造以太网数据帧的头部,最后调用底层的发送函数low_level_output()将数据帧发送出去。如果找不到对应的IP/MAC项,发送ARP请求数据帧。数据包的接收由中断[7]处理函数rtl8019_ISR()调用,它的执行过程是先调用最底层的接收函数low_level_input()从8019中接收数据帧,如果接收的是IP数据包,则更新ARP缓冲队列并把数据包传给网络接口结构指定的函数进行处理。如果接收的是ARP数据包,则调用etharp_arp_input()函数处理。最底层的接收发送函数采用的都是8019的远程DMA工作方式以提高性能[8]。

3.3 软件框图

44.jpg

图4 读卡器系统软件框图

信号机的响应级由监控中心的上位机设定,信号机可以在事先获得授权的情况下自主改变灯色,如果事先未获授权,或是同时收到多个不同标签的请求,则信息必须送到监控中心处理,由监控中心的上位机判定优先级后发指令控制信号机的动作。监控中心还可以随时获得特定车辆的位置以及所在区域的路况等信息,通过合理改变区域内信号机的绿信比,达到区域协调控制的目的。

1 2 3

关键词: 射频识别技术 车辆路口 通行系统

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版