基于S3C2410芯片Linux-Wlan-ng的移植和应用
扫描二维码
随时随地手机看文章
1.引言
嵌入式技术、网络技术和多媒体技术的结合不仅解决了模拟图像在传输过程中的失真等问题,还使得设备的体积更加微型化、智能化和网络化。伴随网络的发展,运用网络设备作为传输媒介的图像数据采集及传输系统成为主流。本文采用在 S3C2410芯片上建立Linux操作系统,在操作体统基础上移植 Linux-Wlan-ng驱动程序,从而实现开发板具有无线通信能力。在Linux操作系统内核里添加OV511驱动程序,从而实现 Linux下驱动Webeye V 2000摄像头,通过Video4Linux接口控制摄像头参数,图片的格式和窗口大小等等。将采集到的图像数据通过网络接口传送到上位机或远程终端进行处理。本文主要采集的是数控系统中加工零件的图像信息,进行数据处理程序有:恢复 YUV格式的彩色图,提取Y,U和V分量值,恢复Y格式的灰度图,精度测量,边缘检测,二值化和特征值提取等等。
2. 系统硬件平台
本文系统硬件平台的处理器采用 Samsung公司的集成有 ARM920T内核的处理器S3C2410,该处理器资源丰富,具有 16KB的指令 Cache和 16KB数据 Cache、MMU虚拟存储器管理器、LCD控制器、支持 NAND Flash系统引导, RAM控制器、3通道 UART、4通道 DMA、4通道带 PWM定时器、RTC、并行 I/O口、8通道 10位 ADC、触摸屏接口、 IIC接口、IIS接口、2个 USB接口控制器、 2通道 SPI及内部 PLL时钟倍频器,主频昀高可达 203MHz。此外,在处理器丰富资源的基础上还进行了相关的配置和扩展,配置了 64MB的 Flash和 64MB的 SDRAM,并引出了两个 HOST USB接口。首先在一个 USB接口上外接一个带 USB口的摄像头 Webeye V 2000,其内部采用的是 ov7620、ov511和一个存储芯片。然后在另一个 USB接口上外接的 USB口的无线网卡,以无线方式发送图像数据到上位机或远程终端。无线网卡采用 NETGEAR MA111,它基于 IEEE802.11b协议,昀大传输率为
11Mbps,它的室内传输距离可达 100米,室外极限传输距离接近 500米,并可以通过自行调整不同传输率,工作在 11、5.5、2、1Mbps,来确保传输效果。 Samsung 2410并行 I/O口连接到运动控制芯片 MAX314,由 MAX314控制电机运动,构成嵌入式数控系统。整个系统的硬件概图如图 2.1所示:
500)this.style.width=500;" border="0" />
3. WLAN网卡驱动的移植
本文选择在嵌入式 Linux操作系统层面上对无线网卡驱动进行移植。
3.1 嵌入式LINUX操作系统 Linux具有内核小,多任务、多进程的特征,实时性效率高,源代码开放,内核直接支持网络等优点。由于嵌入式系统的硬件资源十分有限,因此不能直接把Linux作为操作系统,需要针对具体的应用功能配置内核,制作根文件系统。只有这样才能将整个系统能够存放到容量较小的Flash中。Linux的动态模块加载使Linux的裁减极为方便,高度模块化和模块化使添加非常容易。根据图像采集模块,无线传输模块和数控系统模块的需要配置适合的嵌入式Linux操作系统。系统采用VIVI启动,内核采用Linux-2.4.18,根文件系统采用Cramfs文件系统。 [!--empirenews.page--]
3.2 USB无线驱动程序的移植
由于Linux操作系统的开源特性和USB无线网卡逐渐成为标准设备,网络上存在一部分开放的驱动源码程序。本文在此基础上做一些修改,移植到嵌入式平台下即可成功驱动设备。NETGEAR公司的MA111型网卡,其芯片为prism2系列,故可选用linux-wlan-ng系列的驱动程序,驱动程序可以在http://www.linux-wlan.com网站上下载。编译目标文件需要建立宿主机平台,宿主机的操作平台为:X86+Redhat 9.0操作系统,在此基础上建立交叉编译环境arm-linux-gcc。编译的具体步骤如下:
①下载USB无线网卡驱动程序并解压:
tar zxvf linux-wlan-ng-0.2.1-pre11.tar.gz
②vi src/mkmeta/Makefile
在Makefile文件中添加变量HOST_CC= gcc
③运用make config命令配置运行脚本
Build Prism2.5 USB (_usb) driver? (y/n) [y]: y
Linux source directory:根据具体情况而定
Prefix for build host compiler? (rarely needed) []: arm-linux-
④运用make命令对配置好的驱动程序进行编译
⑤驱动程序编译好后(prism2_usb.o和p80211.o)插上无线网卡,手动加载驱动程序,命令
如下:
#insmod prism2_usb.o
#insmod p80211.o prism2_doreset=1
4.无线传输测试
无线数据的传输测试包括两种测试: AP模式和 ADHOC模式。在具体的测试过程中需要
关闭etho,打开wlan0。在 AP模式情况下设置开发板的 IP地址为:192.168.0.221,而无线路由器的 IP地址为:192.168.0.1,SSID为:AIBO_W_NET。对 USB 无线网卡设备进行配置, 包括设置网络名称、安全密码、以及IP 地址等,AP模式下具体命令和测试结果如下:
./wlanctl wlan0 lnxreq_ifstate ifstate=enable
./wlanctl wlan0 lnxreq_autojoin ssid=AIBO_W_NET authtype=opensystem
./ifconfig eth0 down
./ifconfig wlan0 192.168.0.221 netmask 255.255.255.0 broadcast 192.168.0.255
经过以上命令配置后,运用PING命令测试开发板和路由器之间的通信完全畅通,说明开发板和上位机可以无线通信,为项目实现无线传输图像数据奠定基础。如图4.1所示:
500)this.style.width=500;" border="0" />
5. 无线传输的应用
针对S3C2410芯片和Linux操作系统平台移植Linux-Wlan-ng主要应用到嵌入式数控系统中采集加工零件的图像数据,监视数控系统中零件加工过程和精确测量。因为Linux操作系统中嵌有ov511芯片的驱动,故在编译Linux操作系统时需要加载ov511驱动,有动态和静态两种加载方式。本文采用静态加载方式,在系统启动时就不需要手动加载驱动程序。主要步骤:
①(*)选择Multimedia device->下的Video for linux。加载video4linux模块, 为视频采集设备提供了编程接口;
②在usb support->目录下(*)选择support for usb和usb camera ov511 support。这使得在内核中加入了对采用OV511接口芯片的USB数字摄像头的驱动支持。 [!--empirenews.page--]
软件通过Video4Linux编程接口对图像或视频数据进行采集,并编写相应的网络传输程序实现远程传输图像数据。Video4Linux是Linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供一系列接口函数,这些视频设备包括现今市场上流行的TV卡、视频捕捉卡和USB摄像头等。对于USB口摄像头,其驱动程序中需要提供基本的I/O操作接口函数open、read、write、close的实现。对中断的处理实现,内存映射功能以及对I/O通道的控制接口函数ioctl的实现等,并把它们定义在struct file_operations中。本系统采用内存映射法,即mmap()方式截取图像或视频数据。mmap()函数调用使得进程之间通过映射同一个普通文件实现共享内存。该映射内容区可读可写并且不同进程间可共享,不需要任何数据的拷贝。采集到图像数据后,运用网络接口无线传输到上位机或远程终端上进行数据处理。上位机中涉及到的程序有:将YUV420P格式的数据转换成RGB格式,提取Y,U和V分量值,将YUV格式的数据文件转换成txt文件便于运用Matlab仿真,测量加工零件的距离等(涉及到单目测距方法,在以后的论文中讨论);套接口是网络通信的基础,在Linux下定义的一些套接口的函数大致如下:对于一个简单TCP/IP服务器,其基本结构如下所示:
①建立套接字函数socket();②绑定地址和端口函数bind();③建立套接口队列函数listen();④接收连接函数accept();⑤处理连接函数read()/write();⑥关闭套接口close()。
与之对应的客户程序的基本结构如下所示:
①建立套接字函数socket();②连接服务器connect();③处理连接函数write()/read ();④关闭套接口close();
运用无线网络传回图像数据恢复的图片如图5.1,5.2和5.3所示(仅提取Y分量即灰度图,大小320X240,摄像头和黑斑距离50CM,+X代表摄像头向右移动XCM):
500)this.style.width=500;" border="0" />
6. 结束语
本文提出了一套基于嵌入式平台(S3C2410芯片+Linux操作系统)的图像采集、无线传输和数控系统的设计和应用。在嵌入式数控系统加工零件过程中,运用图像采集模块和无线传输模块获取零件加工的过程,当前状态和精确测量。应用结果证明:系统很好的完成了图像采集和无线传输,得到的图像清晰,采集的数据可用于图像处理。特别是:平台中无线传输模块和数控制系统模块的结合实现传递信息,共享资源;使得数控领域具有分布式,移动性,微型化和智能化等特点。