用于高清视频传输的Linux无线路由卡的设计

2015-12-20 06:58李志善苏威积
计算机工程与设计 2015年1期
关键词:源码布线内核

李志善,苏威积

(中国航天科工集团第二研究院706所,北京100854)

0 引 言

随着城市中高清网络摄像机的大量应用,急需开发一款满足大带宽、系统稳定要求的路由卡,其能方便地配备到高清摄像机上进行应用。应用它可以降低城市中重新布线的施工量和成本,应用起来也比较方便,将多个不方便布线并配有Linux路由卡的网络摄像机的视频通过Wifi集中传送到另一台已经布好线并配备Linux路由卡的网络摄像机,由它将视频传输回监控中心。

1 Linux路由卡的硬件设计

本文选择一款雷凌的RT5350 芯片制作的路由卡,其完全满足上述要求。RT5350 的 SoC 整合雷凌的IEEE802.11n草 案 标 准 的1T1R 的MAC/BBP/PA/射 频,高性能360 MHz的MIPS24KEc CPU 内核,一个5端口集成10/100 以太网交换机/PHY 和 一 个USB 主 机/设备[1]。它是一款高质量、小尺寸以及低成本的无线片上可编程系统芯片,在一个单芯片上几乎囊括各种AP Router所需元件,提供了优越的无线基地路由器解决方案,不管用户所处环境多么复杂,如处在人口密集的地方或者频繁变换位置,RT5350都能灵活地建构出最佳的无线路由器收发机制[2]。同时,RT5350芯片上已经内置了独特的封包接收式天线分集技术,支持802.11n,150 Mbps无线局域网速率,高性能的CPU 可以轻松管理高级应用,如不超载主机处理器的Wifi数据处理。此外,RT5350 提供各种硬件接口(SPI/I2S/I2C/PCM/UART/USB),以支持各种可能的应用。这种网络摄像机配置Linux路由卡的应用结构如图1所示。

Linux路由卡硬件包括6部分:RT5350处理器、Flash存储器、SDRAM 闪存、天线、HJTAG 接口、与网络摄像机连接的接口。其结构如图2所示。

图1 实际应用结构

图2 路由卡的硬件结构

其中RT5350 处理器是路由卡的核心,内部集成了放大器,它有5个百兆PORT 以及丰富的外设接口;Flash存储器用来存放程序,存放Linux 内核及Boorloader;SDRAM 用来将Bootloader复制到其中来运行系统;天线用来增加传输距离;HJTAG 用来下载程序;网络摄像机的接口用来给路由卡来供电,并将摄像机的网络接口与路由卡的网络接口相连,然后将视频流经过路由卡传输出去。

应用Altium Designer对路由卡原理图进行设计,层次原理图包括以下几个电路:

(1)分压电路。由于网络摄像机为路由卡提供3.3 V电压,RT5350的管脚有1.2 V,1.8 V,所有路由卡需要分压电路。

(2)重启复位电路。路由卡还包括路由重启按键,当路由死机可以手动复位电路。

(3)数据转换电路。RT5350处理器和网络摄像机的网络接口不是简单的物理连接,因为RT5350 是PHY 接口,而网络摄像机的网络接口为MAC 接口,采用一款PHY 芯片78Q2133实现它们之间的网络连接。

(4)天线电路。为了增加传输距离,外置天线。

(5)指示灯电路。路由工作指示灯及WPS指示灯。

(6)数据存储电路。4M Flash,16M SDRAM。

(7)HJTAG 下载电路。

然后根据原理图对PCB 图进行布线,此路由卡采用双面布线,布线的时候要注意以下几个问题:

(1)对电源和地的布线要格外的注意,不恰当的布线会影响产品的性能,带来EMC问题,严重的时候影响产品的成功率。为了提高可靠性要适当加粗电源和地的布线宽度,需要在电源和地之前加上去耦电容来消除噪声[3]。

(2)布线之前要进行分析,将敏感的容易受到干扰的器件远离高频信号线,而且必要的情况下加屏蔽罩,对容易发热的器件也要进行考量,将其与温度敏感器件分开。对发热器件可能影响到系统性能的,还要加散热片进行处理,信号线要尽量不出现环路,即使形成环路也要使环路尽可能小,为了提高系统的抗干扰性,需要设置较大面积的地线敷铜区域。

(3)对于晶振及天线等实施地线包围的措施,防干扰。

(4)天线的设计要注意阻抗匹配。

图3所示为嵌入式Linux的路由卡实物。

将路由卡配置插到摄像机上应用,简单方便,如图4所示是其中一款可插路由卡的网络摄像机,其和其它普通网络摄像机并无大的差别,应用时只需插入Linux路由卡,便可以经过Wifi传输视频。其简单方便,可以迅速和原有设备兼容使用。

图3 路由卡的实物

图4 配置路由卡的网络摄像机

2 Linux内核的移植、编译与生成引导程序Uboot

硬件设计完成之后,接下来是对内核的移植和编译。

2.1 内核的移植编译

内核 (kernel)是所有Linux系统的主要软件组件。内核既是操作系统的心脏[4],也是它的大脑,因为内核控制着基本的硬件。内核是操作系统的核心,具有很多最基本功能,如虚拟内存、多任务和TCP/IP网络等功能[5]。

本路由卡的Linux内核的移植和其它设备的Linux内核移植类似,包含对内核源码的修改、添加一些必要的驱动、对内核的交叉编译、内核程序的烧写[6]。

(1)先完整的下载一个版本的内核源码,根据硬件平台的实际情况来选择内核源码的版本,并对源码进行改写,改写一定要结合硬件体系结构的特点[7];

(2)根据系统要实现的功能,对系统所需要的硬件驱动进行有针对性的添加,对没有必要的外设驱动,可暂时不添加。这样可以快速地实现内核的裁剪和移植,这个过程也就是常说的内核配置或内核定制;

(3)对该系统进行针对目标平台的交叉编译,生成一个内核映象文件 (如zImage,uImage,bzImage)[8];

(4)最后通过一些手段 (如TFTP)把该映象文件烧写到目标平台中[9]。

本路由卡采用了Ralink (雷凌)公司提供的RT288x_SDK 作为整个嵌入RT5350 开发平台的kernel、根文件系统的软件开发源。

其中arch是特定体系下的源码,crypto是Crypto API,Documentation是内核源码文档,drivers是设备驱动程序,fs是VFS和各种文件系统,include是内核文件,init是内核引导和初始化程序,ipc是进程间通信代码,kernel是像调度程序这样的核心子系统,lib是通用内核函数,mm 是内存管理子系统和VM,net是网络子系统,scripts编译内核所用到的脚本。

因为目标平台是ARM,而在X86平台上进行开发,所以要采用交叉编译[10]。

接着在Red Hat下安装Ralink (雷凌)提供的交叉编译工具链buildroot-gcc342。安装过程如下:

#cp RT288x_SDK/toolchain/buildroot-gcc342.tar.bz2/opt,拷贝工具链到//opt目录下。

#tar jxvf buildroot-gcc342.tar.bz2,在/opt目 录 下 解压生成buildroot-gcc342,作为整个系统交叉编译工具[11]。

#gedit/etc/profile

在末尾添加export PATH=MYMPATH :/opt/buildroo t-gcc3 42/bin/,保存退出。

#source/etc/profile

测试,打印出交叉编译工具的信息,则安装成功。

#mipsel-Linux-uclibc-gcc-v

RT288xSDK 源文件中未添加RT5350 的Wifi驱动,需要进行移植。本路由卡采用Ralink公司提供的Wifi驱动包2011_0825_RT5350_APSoC_Wifidriver v2.6.0.0_DPA.tar.bz2作为驱动源文件[12]。具体的操作工程如下:

首先,将Wifi驱动压缩包2011_082_5_RT5350_APSoC_ Wifidriver_v2.6.0.0 _ DPA.tar.bz2 拷 贝 到RT288x SDK/source/Linux-2.6.21.x/drivers/net/wireless目录下,解压后生成rt2860v2,rt2860v2_ap,rt2860v2_sta这3个目录。

然后修改RT288xSDK/source/Linux-2.6.21.x/ralink/Kconfig配置文件,添加Wifi驱动源文件目录source"drivers/net/wireless/rt2860v2_ap/Kconfig"[13]。

进入内核目录source下在终端下输入make menuconfig后,如图5所示。可以对内核其进行设置。

图5 内核配置页面

内核的配置界面包括4 部分内容:select the product you wish to target;kernel/liberary/defaults selection;load an alternate configuration file;save configuration to an alternate file。select the product you wish to target用来选择你的目标平台,本系统选择RT5350,RT288xSDK 源文件中还可以选择RT2880、RT3052、RT3352,选择完毕后,将光标移到Exit,接着对其它项进行设置[13];kernel/liberary/defaults selection包括对交叉编译路径的设置、选择内核配置选项等;load an alternate configuration file保持默认配置即可;save configuration to an alternate file保存配置文件选项组。内核的配置通常包括yes和no两个选项,选择yes就是把所选的选项编译到内核的映像中,no则不编译。还有包含3 个选项的编译选项,需要在yes、no、Module中进行选择,Module则比较特殊,选择Module则该选项被编译到内核映像且将其代码生成模块的形式。对内核的配置,也可以不通过图形界面,也可以通过对Kconfig文件直接进行修改,但是编译一定要通过Makefile[14]。一个完整的Linux内核源码包括很多功能,并支持很多硬件系统,因此对于内核合理的配置对于内核编译是很重要的,决定着最终编译的内核的大小,最大的限度的将没有用的功能裁剪,并且不影响系统的功能,内核还能成功的编译,对于内核的效率,系统的性能至关重要[15],对内核的配置、裁剪、编译需要有深厚的编译内核功底,需要在实际项目中不断积累宝贵的经验。设计的路由卡采用RT5350,4M Flash,16M SDRAM,对内核进行相应的配置,并保存,退出,便可以对内核进行编译。如图6所示。

执行make dep和make命令,便可在生成的系统文件中添加Wifi驱动[16]。如果没有错误,运行一段时间将显示内核编译时间,以及大小等运行结果,如图7所示。

2.2 生成引导程序Uboot

图6 设备特性设置

Bootloader是在操作系统运行前执行的一段程序[17]。BootLoader的作用就是用来加载操作系统。从具体运行过程看,BootLoader在内核移植过程中起着重要的作用,是内核能否正常启动的关键。不同硬件系统的BootLoader是不同的,否则直接移植过去,内核一般不能正常启动。建立一个通用的嵌入式Bootloader几乎不可能。目前,嵌入式的世界中己有多种Bootloader,种类划分也有很多方式。常见的Bootloader见表1。

表1 常见的Bootloader

Bootloader的作用和BOIS类似,对硬件设备的驱动进行初始化,为内核的正常启动做好准备。图8为内核启动的流程[18]。

本路由卡的开发过程中,就采用了Ralink 公司的Uboot作为Bootloader 的开发源码。具体操作如下:在Uboot目录下,输入make menuconfig命令,进入配置页面进行配置,选择芯片RT5350,及其支持最大SDRAM 64M。如图9所示。

图8 内核启动流程

图9 Uboot设置界面

输入make 命令,在Uboot 目录下生成引导程序uboot.bin 及 uboot.imgo uboot.bin 用 于 NOR Flash,uboot.img用于SPI Flash及NAND Flash[19]。RT5350支持SPI Flash,因此选用uboot.img。

2.3 烧写uboot与uboot_uImage

RT5350通过tftp服务完成uboot与root uImage的烧写,初始化SDRAM,复制Bootloader到SDRAM,执行Bootloader,复制映像到SDRAM,传递根盘地址参数给内核,内核解压,启动,寻找跟盘文件系统加载到嵌入式系统上[20]。

具体步骤:先将root uImage拷贝到宿主机/tftpboot目录下。然后再确保目标设备和宿主机在同一个IP 地址段,才能有效的通信,再运行sudo/etc/init.d/xinetd restart命令将宿主机的tftp服务开启,最后,当uboot启动时,进入 “Load system code then write to Flash via TFTP”的选项,通过向控制台上输入宿主机IP 和烧写的内容root uImage,这样便完成了root uImage烧写[21]。

3 结束语

本文基于RT5350嵌入式微处理器和Linux操作系统,设计了无线路由卡的软硬件系统,初步实现了视频的无线传输,成功制作了一款低成本、易于使用的Linux路由卡,为解决一些不方便布线的监控点的视频传输问题提供了一个快速可行的方案,不但减少了施工量,而且缩减了产品投入使用的时间。创造性的使用Wifi来实现高清视频的短距离传输,为未来相关的工程应用提供了一个好的思路。在整个开发过程中从硬件芯片的选择到硬件原理图、PCB电路图的布线,再到Linux的移植和编译都是由笔者独立完成,经过多次修改和实验。这款路由卡还有待在实际应用中接受检验,并需要不断完善。另外,由于并未充分考虑这款路由卡在数据加密及功耗方面的性能,今后的设计还会对其进行进一步研究。

[1]Ralink Technology Corporation.RALINK AP SDK 3.6.0.0 user’s manual[S].Ralink Technology Corporation,2011.

[2]Ralink Technology Corporation.RT5350preliminary datasheet[S].Ralink Technology Corporation,2010.

[3]YANG Jishen.Power quality and electromagnetic interference control in modern industrial[M].Beijing:Publlishing House of Electronics Industry,2011 (in Chinese).[杨继深.现代工业中电能质量与电磁干扰控制 [M].北京:电子工业出版社,2011.]

[4]SONG Baohua.Linux device driver development [M].2nd ed.Beijing:The Press of People postal and Electricity,2010(in Chinese). [宋宝华.Linux设备驱动开发详解 [M].2版.北京:人民邮电出版社,2010.]

[5]YANG Yong,YE Mei,ZHANG Qinyan,et al.Wireless network card device driver based ARM embedded Linux [J].Nuclear Electronics and Detection Technology,2010,30 (4):519-523 (in Chinese). [杨勇,叶梅,张秦艳,等.基于ARM 的嵌入式Linux无线网卡设备驱动研究 [J].核电子学与探测技术,2010,30 (4):519-523.]

[6]WANG Minghu.OU Wensheng.The exploitation induction of ARM embedded Linux [M].Beijing:Publishing House of Electric Power China,2008:55-102 (in Chinese). [汪明虎,欧文盛.ARM 嵌入式Linux应用开发入门 [M].北京:中国电力出版社,2008:55-102.]

[7]ZHU Jianguang.Data collection system based ARM embedded Linux [D].Shanxi:North University of China,2011 (in Chinese).[朱建光.基于嵌入式Linux的数据采集系统研究[D].山西:中北大学,2011.]

[8]DU Chunlei.The architecture of ARM and program [M].Beijing:Tsinghua University Press,2009:58-223 (in Chinese).[杜春雷.ARM 体系结构与编程 [M].北京:清华大学出版社,2009:58-223.]

[9]DU Haixing.The analysis and transplant of embedded Bootloader based ARM [J].Microcomputer Information,2010(29):58-59 (in Chinese). [杜海星.基于ARM 的嵌入式Bootloader分 析 与 移 植 [J].微 计 算 机 信 息,2010 (29):58-59.]

[10]ZHANG Shi.The tutorial of ARM embedded system [M].Beijing:China Machine Press,2008:35-66 (in Chinese).[张石.ARM 嵌入式系统教科书 [M].北京:机械工业出版社,2008:35-66.]

[11]WU Shili,LIU Qi,ZHU Lan.The resolve and practice of embedded Linux app exploitation [M].Beijing:China Machine Press,2008:135-146 (in Chinese). [吴士力,刘奇,朱兰.嵌入式Linux应用开发全程解析与实战 [M].北京:机械工业出版社,2008:135-146.]

[12]YANG Zhu.Embedded software development[M].Beijing:Beijing University of Aeronautics and Astronautics Press,2010:308-346 (in Chinese). [杨铸.嵌入式底层软件开发[M].北京:北京航空航天大学出版社,2010:308-346.]

[13]WANG Wei.The design and application of BootLoader based on embedded Linux [D].Chengdu:Southwest Jiaotong University,2006 (in Chinese). [王薇.基于嵌入式Linux 的BootLoader 的 设 计 与 应 用 [D]. 成 都: 西 南 交 通 大学,2006.]

[14]ZHU Xiaoyuan,XIE Longhan.Development of embedded Linux system [M].Beijing:Publlishing House of Electronics Industry,2012:11-12 (in Chinese). [朱小远,谢 龙汉.Linux嵌入式系统开发 [M].北京:电子工业出版社,2012:11-12.]

[15]TIAN Ze.The development and application of embedded sys-tem [M].Beijing:Beijing University of Aeronautics and Astronautics Press,2005 (in Chinese). [田泽.嵌入式系统开发与应用 [M].北京:北京航空航天大学出版社,2005.]

[16]GONG Cuiling.Implementation of home gateway research and key technology [D].Nanjing:Nanjing University of Posts and Telecommunications,2013 (in Chinese).[龚翠玲.家庭异构网关研究与关键技术实现 [D].南京:南京邮电大学,2013.]

[17]Barbalace A.Performance comparison of VxWorks,Linux,RTAI,and Xenomai in a hard real-time application [J].IEEE Transactions on Nuclear Science,2008,55 (1):435-439.

[18]Xing JS,Liu JX,Wang YJ.Schedulability test performance analysis of rate monotonic algorithm and its extended ones[J].Journal of Computer Research and Development,2005,42 (11):2025-2032.

[19]Hart Darren.Real-time Linux in real time[J].IBM Systems Journal,2008,47 (2):207-220.

[20]WEI Dongshan.The app exploitation entirety manual of embedded Linux [M].Beijing:The Press of People postal and Electricity,2008:240-292 (in Chinese). [韦东山.嵌入式Linux应用开发完全手册 [M].北京:人民邮电出版社,2008:240-292.]

[21]ZHAO Jiong.Linux kernel completely analysis [M].Beijing:China Machine Press,2010:1-8 (in Chinese).[赵炯.Linux内核完全剖析 [M].北京:机械工业出版社,2010:1-8.]

猜你喜欢
源码布线内核
面向数据可靠传输的高译码率带反馈的LT码
强化『高新』内核 打造农业『硅谷』
企业如何保护源码
摆脱繁琐布线,重定义家庭影院 Klipsch Reference Wireless 5.1
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
电子布线系统在工程中的应用
卫星固定站集成布线方案的优化设计
微生物内核 生态型农资
基于数据结构教辅系统的实验课程改革