嵌入式网络接口(精选9篇)
嵌入式网络接口 篇1
1概述
人机接口是人与计算机之间传递和交换信息的媒介,嵌入式系统应用的兴起为人机接口的设计提供了更为宽广的平台,本设计就是一种以Nios II嵌入式系统为核心实现的网络人机接口。在这里,人机接口的实现是通过目标电路板上uClinux操作系统中的CGI程序及负责处理CGI程序的Boa网页服务器实现的。远程用户使用互联网浏览器输入参数并触发Boa网页服务器上的CGI程序对参数数据进行处理。
Nios II是一种在FPGA上实现的软核心32位RISC处理器。本设计中的硬件平台选用实验室自制的具有以太网功能的Nios II开发板。uClinux是一种非常流行的嵌入式操作系统,与其它嵌入式操作系统相比,其优势是具有强大的网络功能和大量的开源应用程序。Boa是一个可运行在uClinux之上的单任务的小型HTTP网页服务器,它具有源代码开放、性能优秀的特点并且支持CGI程序。CGI是通用网关接口(Common Gateway Interface)的缩写,它是一种用于网络浏览器与网页服务器之间数据传递的协议,本文中的参数处理都是通过用C语言编写的CGI程序完成的。
2软、硬件系统组成
本系统采用软、硬件协同设计,其中,软件部分包括uClinux、Boa及编写的CGI程序;硬件是自制的Nios II处理器开发板,主要由FPGA芯片EP1C6Q240C8、以太网接口芯片DM9000A、必要的存储器(如SDRAM、FLASH芯片)以及调试接口(如JTAG、RS-232)组成。图1为系统组成框图。
3配置Boa
Boa是一个单任务的小型HTTP网页服务器,具有源代码开放、性能优秀的特点并且支持CGI程序,特别适合应用在嵌入式系统中。对于uClinux-dist而言,添加Boa的过程就是执行命令$make menuconfig并在用户应用程序菜单中的网络程序子菜单中选择Boa(‘uClinux Application Configuration=>Network Applications=>boa’),然后重新编译整个uClinux-dist即可。
Boa的默认设置为:①主页文件为‘index.html’并放置于‘目标板/home/httpd/’目录;②CGI二进制程序文件放置于‘目标板/home/httpd/cgi-bin/’目录。以上这2个设置及其它的一些设置可以通过文件‘目标板/home/httpd/boa.conf’来修改。如果想要使用Boa的默认设置就不用对这个文件进行修改,本设计中就是使用Boa的默认设置。
在uClinux-dist的源代码中,‘index.html’位于‘uClinux-dist/vendor/Generic/httpd’目录下,在uClinux-dist编译完成后,‘index.html’会自动拷贝到‘目标板/home/httpd’(即Boa默认的主页目录),并可以通过它将自己修改好的主页文件复制到‘uClinux-dist/vendor/Generic/httpd’来代替uClinux-dist提供的‘index.html’,并重新编译uClinux-dist就可使修改生效。用户在网络浏览器中输入目标板的IP地址(如http://192.168.1.2)就可以访问修改后的主页文件‘index.html’了。这个‘index.html’也将成为本文示例的主页面,图2为主页文件‘index.html’。
4CGI示例程序介绍
CGI是通用网关接口的缩写,它是一种用于网络浏览器与网页服务器之间传递数据的协议。在本文示例中,用户在参数输入页面输入的3个不同参数就是传递给目标板uClinux系统的数据;在参数显示页面显示的结果是从目标板uClinux系统返回的数据,整个程序交互运行的过程说明了CGI传递数据的原理。
CGI程序可以使用任何编程语言编写,但是为了利用现有的代码,以减小编程的复杂程度,本例中的2个CGI程序都是用C语言来编写的,并且它们都是通过修改uClinux-dist中提供的演示程序得到的。其中‘cgi_demo’用于收集用户输入的数据,它的源代码来自‘uClinux-dist/user/cgi_generic/’目录,当按下“确定”按钮时,所有3个参数将显示在参数显示页面;当按下“清除”按钮时,所有输入的参数将变成‘null’并且不会触发参数显示页面。图3为‘cgi_demo’生成的HTML参数输入页面。‘query-results’是第2个CGI程序,它用于显示用户从浏览器中输入的参数,图4为‘query-results’生成的HTML参数显示页面。‘query-results’的代码是通过修改‘uClinux-dist/user/cgihtml/examples/’中的示例代码得到的。
5CGI示例的设计原理
这里将详细说明上文中整个CGI示例是如何实现的。
5.1 主页文件
这里的主页文件就是‘index.html’(见图2),将其复制到‘uClinux-dist/vendor/Generic/httpd’,在编译uClinux-dist后,‘index.html’会自动拷贝到‘目标板/home/httpd’(即Boa默认的主页目录)。主页‘index.html’中有一个参数输入页面的链接,它是通过在‘index.html’中添加以下代码实现的:
当用户点击“参数设置”链接后(见图2),目标电路板就会执行‘目标板/home/httpd/cgi-bin/cgi_demo’CGI程序并生成参数设置页面(见图3)。
5.2 参数设置页面
参数设置页面是由使用C语言编写的CGI程序‘cgi_demo’动态生成的。它是通过修改uClinux-dist中提供的演示程序源代码(在‘uClinux-dist/user/cgi_generic/’中)得到的。这样做有以下优点:①利用现成的代码进行修改可减小编程难度;②不用单独为其编写Makefile文件,修改后的代码会在编译uClinux-dist时随uClinux-dist自动编译。
‘cgi_demo’是由文件cgi.c和template.c编译形成的。其中template.c用于实现子函数template_page(),而template_page()子函数用于生成参数输入页面中各个输入框体。template_page()子函数使用HTML语法中的form标签来显示输入参数的各个框体,并且使用form标签的action属性将参数提交到‘cgi-bin/query-results’进行显示。cgi.c提供‘cgi_demo’的main()主函数用于调用template.c中的template_page()子函数。
5.3 参数显示页面
CGI程序‘query-results’用于生成参数显示页面(见图4)显示用户从参数输入页面输入的参数。‘query-results’的源程序query-results.c是通过修改uClinux-dist中cgihtml库的示例程序源代码(在‘uClinux-dist/user/cgihtml/examples/’中)得到的。cgihtml是一套C语言库文件,它包含了大量的函数用于处理数据,并且它将CGI输出格式化,便于生成HTML输出,这大大简化了用C语言编写CGI程序的代码长度。要在uClinux-dist中使用cgihtml库,需要执行$make menuconfig命令,并在用户应用程序菜单中选择cgihtml(uClinux Application Configuration=>Miscellaneous Configuration=>cgihtml),之后重新编译uClinux-dist使设置生效。
query-results.c分别使用cgihtml库中的子函数read_cgi_input()和print_entries()来获取和显示参数。
在出现参数显示页面后,本文的CGI通信示例就结束了。这个例子提供了一个数据输入与显示的接口,完成了一次从用户到目标板再从目标板到用户的数据交换过程。通过对query-results.c的进一步修改就可以实现其它不同功能的数据交换。比如,使用cgi_val()函数就可取得参数名对应的参数值,将此值赋予其它变量就可以实现任意的计算。CGI通信程序流程见图5。
6总结
本文详细说明了如何使用Nios II、uClinux、CGI、Boa、cgihtml来实现一个嵌入式网络人机通信接口。使用本文的方法并通过设计良好的HTML页面,就可以快速地设计出简单、友好、具有用户交互性的人机接口。
参考文献
[1]王建校,危建国.SOPC设计基础与实践[M].西安:西安电子科技大学出版社,2006.
[2]杨树青,王欢.Linux环境下C编程指南[M].北京:清华大学出版社,2007.
[3]李兰英.Nios II嵌入式软核SOPC设计原理及应用[M].北京:北京航空航天大学出版社,2006.
嵌入式网络接口 篇2
将上述嵌入式系统应用于实时多媒体数据的网络传输,如图2所示。这里的实时多媒体可以是 MPEG-4或 MPEG-2 等,其数据流一般是连续、恒定码率的。
2.2 硬件扩展
根据上述数据流的特点,需在嵌入式系统与外设(编、解码器)之间加入数据缓冲控制单元。对于发送端和接收端,数据缓冲控制单元的设计有所不同,下面以MPEG-2 为例说明。这里考虑系统的处理能力、网络的承受能力以及图像质量,MPEG-2 的输出为 4Mbps 的CBR(固定比特率)TS流。
2.2.1 发送端
编码器送出连续、恒定速率的码流。如果将此码流直接送到 CPU 外部总线,将会导致操作系统频繁地处理中断,甚至会产生中断不能及时处理从而导致数据丢失。因此,有必要在编码器与外部总线之间加上 FIFO,同时用 CPLD 实现 FIFO 的读写控制逻辑。编码器送出的数据流连续不断地以恒定速率写入FIFO;当FIFO中的数据积聚到一定值后,每写入若干个数据就向CPU发一个中断;CPU在收到中断后通过外部总线读入相当量的数据,并将其打包送入网络。正常情况下,每个中断读数据个数是一定的,在一段时间内FIFO写入和读出将维持平衡,且不会产生“饥饿”状态;当操作系统因处理别的任务而没有及时响应中断时,FIFO将暂时进入“饱和”状态,但只要FIFO容量足够大就不会产生数据溢出现象。由于CPU从FIFO读取单位数据的速度大大高于外设向FIFO写单位数据的速度,“饱和”状态一般能消除。由此,可以解决前述问题。
2.2.2 接收端
在接收端,由于解码器的输入要求是一个连续、恒定速率的码流,同样要求在CPU外部总线与编码器之间加上FIFO和CPLD。同时,接收端的数据包由于经过了网络,不可避免地会引入延时,且数据包之间的延时是不确定的,甚至会产生数据包的丢失。这些都需要在接收端予以考虑,增加了接收端数据缓冲控制单元的复杂度。
为了解决数据包到达延时及抖动问题(数据包的丢失将间接导致延时的增加),可以简单地靠增大FIFO容量解决。但增大FIFO将意味着从编码器到解码器之间延时的增加,影响了实时性。因此,为了保证一定的实时性,同时考虑成本因素,不能单纯靠增大FIFO解决。
由于FIFO容量的限制,在出现大延时的情况下,FIFO将可能出现“空”状态。这意味着送给解码器的数据流会有中断,从而可能导致解码器的不正常工作并可能不能恢复(在数据流恢复正常后)。为此,需要在FIFO出现“空”状态之前,即处于“饥饿”状态时(可以设置一个阈值),由CPLD停止向FIFO读数据而向解码器发填充包。填充包中含有同步头,可以维持解码器的同步。短时间的插空包会使视频图像出现马赛克,如果时间过长,可能会出现黑屏。在实际试验中,接收端视频的质量与网络的负载情况有关。当网络负载较重时,图像会出现马赛克,黑屏现象一般极少发生。
2.3 驱动程序
基于嵌入式以太网接口设计分析 篇3
随着计算机网络技术的快速发展, 以太网已经成为当今一种技术成熟的信息传输网络, 这种网络已经广泛应用到因特网、工业控制网络、办公网络等各种日常网络通信中, 成为当前的主流计算机通信网络。因此, 各种工业传输设备都在试图通过以太网的网络接口连接进入以太网络, 共享以太网的资源和技术服务。
从技术角度讲, 要想实现这种工业传输设备在信息接入层接入以太网的网络接口通常采用两种方式:方式一是采用单片嵌入式微控制器 (MCU) +单片专用以太网控制器芯片方式实现以太网接口, 如图1所示;方式二是采用单片带有以太网接口的嵌入式微控制器 (MCU) 方式实现以太网接口, 如图2所示。方式一主要是利用各种常用的嵌入式微控制器配以专用以太网控制器芯片实现以太网的网络接口, 其主要特点是技术成熟, 配置灵活多样, 便于充分发挥每个芯片各自的优势, 设计起来得心应手;方式二是在单片MCU芯片上增加了以太网接口, 其主要优势是减少了体积, 减小了功耗。
通常不论是哪种接口方式, 要完成数据接入以太网都必须按照IEEE802.3标准的要求完成MAC (Media Access Control) 层和PHY (Physical Layer) 层的信息处理。MAC层主要完成数据封装、数据收/发控制等功能;PHY层主要完成数据进出以太网前后的数据编码/解码。
2 接口方案
在选择以太网接口设计方案过程中, 除了考虑接口系统的组成结构之外, 还要结合产品的技术要求了解设计方案更多的附加信息, 例如嵌入式系统功能分配、设计方案实现的难易程度、产品综合成本、产品研发周期以及所使用的芯片的市场供货条件等因素, 下面本文就对上述两种以太网接口设计方式做进一步分析, 介绍两种接口方式的主要特点和性能, 为以太网接口设计方案的选择提供必要的参考。
2.1 单片嵌入式微控制器 (MCU) +单片专用以太网控制器芯片方式
在这种以太网接口设计中, 单片MCU可以选择各种常用的单片机芯片, 例如MCS-51系列单片机、PIC单片机以及各类ARM控制器等;而专用以太网控制器也有多种型号选择, 如RTL8019、ENC28J60、CP2201等。
在选用MCS-51系列单片机作为MCU设计时[1], 由于51单片机片内存储器空间不足, 无法满足以太网接口大量数据的快速缓冲存储需要, 必须加入外部数据存储器扩展芯片作为数据传输处理缓存。
为了存储一些本地端口和远程端口的网络参数 (如:IP地址、子网掩码、网关) 等信息, 由于这些网络信息都是相对长期不变的, 且需要在掉电情况下仍能得到保留, 因此需要加入一个E2PROM芯片完成相关信息的存储。
为了实现以太网接口, 必须得到TCP/IP协议的支持。但一个完整的TCP/IP协议栈非常复杂, 需要占用系统的很多资源, 特别是在51单片机系统中由于没有操作系统的支持, 完整的TCP/IP协议栈很难实现。为此可以选用u IP协议栈, 该协议栈是TCP/IP协议栈的简化版, 具有较小的代码量, 代码用C语言编写, 对外开放, 便于移植修改, 无需操作系统支持等特点, 非常适合于在51单片机系统上使用, 该协议栈可以实现TCP/IP协议中最基本的5个网络协议功能, 包括:ARP、IP、ICMP、UDP、TCP协议;该协议栈提供一些接口函数完成底层的硬件驱动, 并为上层的网络应用提供功能支持, 可以实现web服务器、web客户端、电子邮件发送程序SMTP客户端、Telnet服务器、DNS主机名解析程序等基本以太网功能。由于需要把u IP协议栈中常用的基本协议算法 (如ARP、IP、ICMP、UDP、TCP等) 保存在一个EPROM芯片中, 因此, 在系统中还需要加入一个EPROM芯片。
在系统中专用以太网控制器芯片可以采用Realtek公司生产的100引脚RTL8019, 该芯片具有8/16位总线模式, 集成了IEEE802.3协议标准的介质访问控制子层 (MAC) 和物理层 (PHY) 的功能, 采用全双工收发, 传输速率可达10 Mb/s;以太网控制器芯片也可以采用Microchip Technology公司生产的26引脚ENC28J60, 该芯片采用标准的SPI串行接口, 只需4条连线即可与MCU实现连接, 接口速率可达10 Mb/s, 具有8K接收/发送双端口数据缓冲RAM, 简化了硬件电路设计, 如果MCU采用PIC18F系列单片机, Microchip公司还可以免费提供配套的TCP/IP软件协议栈, 大大简化了系统的软件设计。
这种MCU+专用以太网接口芯片的系统结构框图如图3所示:
采用这种MCS-51系列单片机作为MCU+单片专用以太网控制器芯片方案设计的特点是由于MCU资源有限, 需要增加一些辅助芯片, 系统硬件结构相对复杂, 所以接口电路板体积相对较大, 功耗偏大;但由于系统中使用了RTL8019以太网控制器芯片完成了MAC层和PHY层的网络功能, 而使系统软件的设计相对简单, 产品研发周期短。
为了减少硬件体积, Microchip公司推出一种28脚的专用以太网控制芯片ENC28J60, 该芯片支持IEEE802.3协议, 能够实现MAC层和PHY层的网络功能, 支持全双工和半双工模式, 与主控MCU采用SPI接口, 其接口速率最高可达10Mb/s, 能够很好地满足嵌入式以太网接口的设计要求。此外, 该芯片还具有8K数据收/发缓冲双端口SRAM, 还可以根据实际需要对收/发缓冲器的大小进行配置, 同时配有用于快速数据传送的内部DMA, 进一步增加了芯片对数据处理的支持和管理, 减少了嵌入式系统中MCU的数据处理负荷。由于该芯片的管脚数仅为28, 且具有片内数据缓冲器, 因此, 可以较好的减少整个嵌入式系统的体积以及功耗。另一方面, Micro Chip公司为使用PIC18单片机作为MCU的嵌入式系统免费提供TCP/IP协议栈, 该协议栈经过适当的修改, 可以方便的移植到实际的嵌入式系统中;该协议栈可以实现HTTP、FTP、UDP、TCP/IP、ICMP、APP等网络协议, 大大方便了系统的软件设计减少了产品研发周期短。
同样, Silicon Laboratories公司也推出了另外一种28脚的专用以太网控制芯片CP2201, 该芯片集成了IEEE 802.3以太网媒体访问控制器 (MAC) 和10Base-T物理层 (PHY) , 内部配有专用的2KB发送缓冲RAM和4KB接收FIFO缓冲RAM, 发送缓冲区可以按照IEEE 802.3要求自动生成以太网数据包;接收缓冲区操作由硬件自动管理, 不需要主MCU的介入处理;内部带有一个8KB非易失性FLASH存储器, 在该FLASH上最后6个存储单元中预编程有唯一48位MAC地址, 可以简化产品批量生产时所需的序列化过程, FLASH其他单元可用于存储用户常数、Web服务器内容等通用非易失性数据;采用自适应方式兼容10/100/1000 BASE-T全双工/半双工网络;与主控MCU之间采用8位并行复用接口, 传输速率较高;有四种电源工作模式, 可以使系统整体功耗最小化。Silicon Laboratories公司也为该芯片免费提供了配套的TCP/IP协议栈及设备驱动程序以及以太网开发套件, 包括使用以该芯片为网络控制器的嵌入式系统所需的全部硬件、软件和示例, 极大地简化了以太网接口设计。
2.2 单片带有以太网接口的MCU方式
在这种以太网接口设计中, 单片MCU芯片内部包含有专用以太网控制器所具有的基本网络功能, 再配以少量的外围器件就可以完成一个基本的以太网接口设计。这种内部带有以太网控制器功能的MCU芯片有CS6208、S 3 C 4 5 1 0 B、S T M 3 2 F 1 0 7、L M 3 S 8 9 6 2、AT 9 1 S A M 7 X 2 5 6、M C A r r a y S 1 2 N E 6 4、DS80C400、MC9S12NE64等。由于在这种设计方案中, MCU不但要完成整个系统的管理控制, 同时还需要实时完成以太网接口的数据收/发处理控制, 因此, 这种MCU具有较高的处理能力。以这种MCU组成的以太网接口系统结构框图如图4所示。
CS6208芯片是Myson Century公司生产的带有以太网控制器的128脚单片MCU芯片, 该芯片的特点是具有与8051指令集兼容, 比8051运行速度快3倍的CPU内核, 其时钟最高频率为60MHz;带有65K的ROM和32K的RAM, 存储器结构与8051兼容;支持IEEE 802.3协议, 具有片内10/100M介质访问控制层 (MAC) 功能和10 Base T的物理层 (PHY) 接口;收发缓冲区与CPU共享片内32K的RAM区;支持ARP, IP, ICMP, UDP, TCP, DHCP, and BOOTP协议以及HTTPD服务。该芯片将TCP/IP协议栈的底层函数标准化, 并把它封装成API函数, 因此只需通过调用API函数即可解决TCP/IP协议栈的数据处理问题, 大大缩短了产品的开发周期。
S3C4510芯片是Samsung公司生产的基于以太网应用系统的高性价比16/32位RISC微控制器, 该芯片内含一个低功耗、高性能的ARM7 TDMI RISC处理器核, 非常适合于对价格及功耗敏感的应用场合。该芯片在以太网设计上带有片内10/100M介质访问控制层 (MAC) 功能和一个MII (Medium Independent Interface) 介质独立接口, 该接口是一个MAC和PHY之间的管理接口, 由于缺少物理层功能 (PHY) , 所以需要额外配置一片具有MII接口的物理层收发器 (如RTL8201) 以实现一个完整的以太网接口功能, 该系统结构图如图5所示。
虽然该系统额外配置了一个以太网芯片, 但由于ARM芯片强大的内部资源配置, 所以无需增加其他的外围芯片就可以完成以太网接口的基本功能, 提高了系统的性价比。
3 结论
通过以上分析可以看出, 在嵌入式以太网接口设计过程中, 各种设计方式都具有自己的特点。如果整个嵌入式系统只完成以太网接口单独功能, 其他附属任务较少, 可采用CS6208单芯片就可以实现以太网接口功能;如果整个嵌入式系统除了完成以太网接口功能之外, 还需要完成很多其他的控制功能, 可选用高性能的ARM控制器 (如S3C4510芯片) 配以相应的附属芯片就可以实现以太网接口功能;如果在原有的嵌入式系统中增加以太网接口功能, 可采用原有嵌入式处理器附加以太网专用芯片 (如RTL8019) 实现以太网接口功能, 这样可以节省费用和研发时间。
参考文献
[1]顾亦然, 王锁萍.51单片机的网络连接控制器设计[J].现代电子技术杂志, 2004 (20) .
[2]王平.工业以太网技术[M].北京:科学出版社, 2007 (07) .
网络接口的检测 篇4
ifstat命令
ifstat可以监控网络接口,比较简单地查看网络流量
ifstat默认是不监控回环接口的流量的流量的单位是KB/s
使用ifstat -a可以监控所有的接口
vcq9wOAmIzIwMjg0Ozxicj4KLWIg08NrYml0cy9zz9TKvrT4v+22+LK7ysdrYnl0ZXMvcyhiaXS6zWJ5dGXT0LrOx/ix8NOmuMO2vNaqtcCwySk8YnI+Ci1xILCyvrLEo8q9o6y+r7jm0MXPorK7s/bP1jxicj4KLXYgz9TKvrDmsb7Qxc+iPGJyPgotZCDWuLao0ru49sf9tq/AtMrVvK/XtMys0MXPojxicj4KPC9wPgo8cD5pZnRvcDwvcD4KPHA+aWZ0b3DSssrH0ru49sq1yrG1xMH3wb+84L/YuaS+36Osv8nS1Lzgv9hUQ1AvSVDBrL3TtcijrLWrysfDu9PQsaix7bmmxNyhozxicj4KPC9wPgo8cD48aW1nIHNyYz0=“www.2cto.com/uploadfile/Collfiles/0718/2014071808541441.png” alt=“”>
第一行:带宽显示
中间部分:外部连接列表,即记录了哪些ip正在和本机的网络连接
中间部分右边:实时参数分别是该访问ip连接到本机2秒,10秒和40秒的平均流量
=>代表发送数据,<= 代表接收数据
底部三行:表示发送,接收和全部的流量
底部三行第二列:为你运行iftop到目前流量
底部三行第三列:为高峰值
底部三行第四列:为平均值
-i设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n使host信息默认直接都显示IP,如:# iftop -n
-N使端口信息默认直接都显示端口号,如: # iftop -N
-F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
-h(display this message),帮助,显示参数信息
-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
-b使流量图形条默认就显示;
-f这个暂时还不太会用,过滤计算包用的;
-P使host信息及端口信息默认就都显示;
-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M
进入iftop画面后的一些操作命令(注意大小写)
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或10秒或40秒内的平均流量;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按j或按k可以向上或向下滚动屏幕显示的连接记录;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按<根据左边的本机名或ip排序>
按>根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的连接;
按f可以编辑过滤代码
按!可以使用shell命令
嵌入式网络接口 篇5
目前,嵌入式浏览器[1,2,3]广泛应用于Internet - TV、i DVD、Web终端、数字电视机顶盒、家庭网关、掌上电脑等各种信息电器和便携式网络终端中,其作为中间件,已不仅仅是用于门户导航,还承担互联网内容接收、用户交互( UI) 、视频业务导航、业务支撑等功能。
为了支持各种业务的快速部署以及各个组织定义的不同Java Script接口规范,浏览器必须扩展多个符合规范的Java Script接口,以提供给业务应用。为了实现扩展的Java Script接口,传统的设计方法是静态扩展Java Script接口,即在浏览器软件发布时,Java Script接口已确定,浏览器软件中包含完成实体功能的组件,浏览器内核扩展Java Script接口与具体组件的实现已绑定。由于嵌入式系统存储空间的限制,如果要开发新接口或者不同业务产品需要不同的Java Script接口组合,必须修改浏览器内核代码,新增、打开或关闭相关Java Script接口的绑定,然后重新编译测试后把浏览器运行库下载到机顶盒中。这种方法步骤繁琐,修改周期较长,无法对需求变化做出快速的响应,不同业务的组合,必须升级浏览器才能扩展新的业务功能,使得浏览器与具体业务捆绑,这不符合浏览器作为中间件进行快速业务开发的原则。
本文基于动态查找的方式设计了一种嵌入式浏览器扩展接口的方法,该方法独立于浏览器内核外实现了Java Script接口的扩展,并且动态查找加载组件,实际应用证明加速了第三方应用的开发和部署,减少浏览器静态扩展接口的工作量。
2 浏览器静态扩展Java Script接口过程
图1 为浏览器通常扩展Java Script的方式,即静态扩展Java Script接口的过程。
浏览器静态扩展Java Script接口的过程主要包括以下步骤:
(1)根据扩展的Java Script接口定义新的接口文件;
(2)使用Web引擎提供的工具生成Java Script引擎所需的绑定文件,根据引擎和引擎开发语言的不同,可能有不同的结果,这些绑定文件就是将Java Script引擎的调用转换成具体的实现类的调用,例如负责转接扩展对象属性或方法的C ++ 代码;
(3)绑定文件调用接口扩展模块;
(4)接口扩展模块通过组件接口直接调用组件具体实现的代码;
(5)编译时需包含组件库代码。
3 基于动态查找的嵌入式浏览器扩展接口方法
从浏览器静态扩展Java Script接口的过程可以发现,使用静态扩展Java Script接口的方法必须在代码编译前确定好Java Script接口,且编译时需包含组件库的实体实现代码,这种情况下对于不同Java Script接口需求需要进行不同的编译,步骤繁琐,修改周期较长,无法对需求变化做出快速的响应,不同业务的组合必须升级浏览器才能扩展新的业务功能,使得浏览器与具体业务捆绑,这不符合浏览器作为中间件进行快速业务开发的原则。
本文提出了基于动态查找的嵌入式浏览器扩展接口方法,包含接口扩展框架、通用接口扩展模块、组件库管理模块、组件库客户端四个模块。下面具体详述各部分内容。
3. 1 接口扩展框架
接口扩展框架是使用Java Script编写的文件,用于将业务Java Script接口转换为通用Java Script扩展接口,浏览器内核只需扩展通用Java Script扩展接口即可查找到相应的组件库实体,通用Java Script扩展接口的输入参数是业务Java Script接口的名字、指令和输入参数。
3. 2 通用接口扩展模块
通用接口扩展模块属于浏览器内核Web Core,使用静态扩展Java Script接口的方式扩展了通用Java Script扩展接口,并使用通用接口调用组件管理模块来动态查找组件库及运行相应接口。
3. 3 组件库管理模块
组件库管理模块属于浏览器内核,是新增的模块,包含组件库载入管理器和组件库接口调用器。组件库载入管理器用于在访问业务网页时使用业务Java Script接口的名字在指定目录下查找动态库是否存在组件库载入接口。组件库载入接口是预先定义的与业务接口名相关的接口。如果找到则将组件库加载到内存中,组件库接口调用器创建组件库实例,然后调用组件实例的相应接口。组件库管理模块的代码与组件库代码不直接进行绑定,即编译时不需要包含,而是运行时进行动态查找和加载组件。
3. 4 基于动态查找的嵌入式浏览器扩展接口的过程
基于动态查找的嵌入式浏览器扩展接口主要过程如图2 所示。
基于动态查找的嵌入式浏览器扩展接口方法过程具体包含以下步骤:
(1)业务网页中调用业务Java Script接口,如果发现浏览器不支持该接口调用接口扩展框架,接口扩展框架中使用通用Java Script接口扩展了业务接口;
(2)通用Java Script接口为静态扩展接口方式扩展的接口,在内核绑定文件中使用通用接口模块进行实现;
(3)通用接口模块通过通用接口调用组件库接口调用器;
(4)组件库接口调用器从组件库载入管理器中查找该组件库是否已载入到内存,如果没有载入到内存,转到步骤5,如果已载入到内存,转到步骤6;
(5)使用业务Java Script接口的名字在指定目录下查找动态库是否存在组件库载入接口,如果找到则将组件库加载到内存中,否则返回错误;
(6)组件库接口调用器获取到组件库实例;
(7)调用组件实例的相应接口。
4 应用实例
下面通过一个应用实例对本方法做进一步阐述。
4. 1 实例环境
应用实例中的操作系统为嵌入式Linux操作系统,业务为符合广电NGB - H中媒体处理单元的应用,媒体处理单元的核心接口是名为Media Player的Java Script对象,该对象在HTML标准中未实现,需要浏览器扩展。
4. 2 实例实现
为了支持广电总局NGB - H规范中的媒体处理单元对象,采用如图3 所示的过程实现动态扩展接口并查找媒体处理单元组件库。
( 1) 在浏览器内核中使用静态扩展的方式扩展通用扩展接口call App,输入参数为Java Script对象名、指令( 即对象的属性和方法) 、参数,浏览器在发布时,就具有了开放式的动态管理接口,具有动态扩展的能力;
( 2) 在接口扩展框架中使用通用扩展接口call App实现Media Player对象及其方法,比如Media Player对象的创建则将Media Player名称和new指令作为参数;
( 3) 组件库扩展名为Get Mediaplayer Client的组件库载入接口,该接口用于创建组件库对象实例;
( 4) 当访问业务页面时,发现DOM并没有实现Media Player对象,则通过接口扩展框架调用call App接口;
( 5) 通用接口模块使用带接口名的Get Mediaplayer Client调用组件库接口调用器;
( 6) 组件库接口调用器从组件库载入管理器中查找带Get Mediaplayer Client名的组件库是否已载入到内存,如果没有载入到内存,转到步骤7,如果已载入到内存,转到步骤8;
( 7) 在指定目录下使用dlsym查找动态库是否存在组件库载入接口,即Get Mediaplayer Client接口,如果找到则将组件库加载到内存中,否则返回错误;
( 8) 组件库接口调用器获取到组件库实例;
( 9) 当业务页面运行到Media Player的play接口时,组件库接口调用器直接调用组件实例的相应play接口。
5 结束语
本文提出的基于动态查找的嵌入式浏览器扩展接口的方法,业务功能更新时,无需将业务与浏览器内核引擎绑定,接口的扩展无需再修改浏览器,业务扩展方便,升级快、部署快。此外,此方法动态加载组件库,减少了资源耗费,适用于嵌入式浏览器系统。
摘要:面向数字电视的嵌入式浏览器通常向业务开发者提供具备本地功能的JavaScript接口开发业务,在浏览器实现时多采用静态扩展接口、将组件库与浏览器一起编译链接的方式,该方法易造成嵌入式浏览器冗余、不灵活等问题。为解决此问题,本文设计了一种基于动态查找的嵌入式浏览器扩展接口的方法。该方法中设计了接口扩展框架、通用接口扩展模块、组件库管理模块和组件库客户端,定义了通用JavaScript接口、通用接口和组件库载入接口,独立于浏览器内核外实现了浏览器动态扩展接口、动态查找组件并绑定组件功能。此方法经实践证明可加速第三方应用的开发和部署,减少了浏览器静态扩展接口和绑定组件库的工作量,并降低了资源消耗。
关键词:嵌入式浏览器,组件加载,JavaScript接口
参考文献
[1]PENGYe.Research on Mobile Browser’s Model and Evaluation[C]//Web Society(SWS),2010 IEEE 2nd Symposium.IEEE,2010.
[2]王静.基于嵌入式Linux的IPTV机顶盒浏览器的研究与实现[J],计算机与现代化,2012,(1):203-206
[3]张云蛟.基于IPTV嵌入式浏览器功能扩展的研究与设计[D],成都:电子科技大学,2014.
[4]Taeho Kwon,Student Member,IEEE,and Zhendong Su.Automatic Detection of Unsafe Dynamic Component Loadings[J],IEEE TRANSACTIONS ON SOFTWARE ENGINEERING,2011,38(2):293-313
[5]W3C.HTML5[EB/OL].[2014-10-28].http://www.w3.org/TR/html5/.
[6]Web Kit.org.Web Kit[EB/OL].[2015-05-29].http://www.webkit.org/.
嵌入式网络接口 篇6
1 USB接口硬件设计
1.1系统硬件的总体结构
USB技术规范将使用USB进行数据传输的双方划分为两种角色[2]:Host机和Slave机,并且规定,数据传输只能发生在Host机和Slave机之间。要将实现USB Slave的USB接口的数字设备应用于嵌入式系统中,就要在嵌入式系统中集成USB Host功能模块,使之具有与USB Slave设备进行数据传输的能力,图1所示为系统总体结构。
1.2 USB Host模块硬件连接
USB Host功能模块硬件连接如图2所示。CPU选用与MCS-51系列单片机完全兼容的Dalla 8公司的80C320单片机,而且运行速度在同样晶振频率下比80C32平均高2.5倍,最高工作频率可达33MHz。USB主机接口芯片选用SL811HS。
1.3 SL811HS
SL811HS[3]是Cypress公司推出的遵从USB1.1协议的专用于嵌入式系统USB主控制器(Host/Slave)芯片,由主/从控制器模块、RAM缓存及控制寄存器模块、串行接口引擎SIE等模块组成。其中,SIE模块负责完成USB总线与主机之间数据的串、并转换等功能;RAM缓存用于数据缓存,它和控制寄存器(占前16B)的空间为00H~FFH,共256B。SL811HS的功能框如图3所示。
该芯片既能与USB低速设备进行通信,也能与USB高速设备进行通信[4]。由于提供了8bit宽数据总线及中断支持,使得该芯片能方便地与一般的单片机、DSP等控制器进行通信,并受到CPU的控制。其特点主要有:能通过硬件设置或软件设置的方法使该芯片工作在Host或Slave模式;自动探测所连接的设备是低速设备还是高速设备;8bit双向数据总线;片上SIE、USB收发器;自动产生SOF令牌包,以及自动生成令牌包、数据包中所需要的CRC5/CRC16数据;内部256B RAM,支持乒乓操作;支持SUSPEND/RESUME、WAKE UP、LOW-POWER模式。
2 USB接口软件设计
2.1接口固件设计
USB Host模块设计中最困难的就是固件(Firmware)设计,固件编程要遵循复杂的USB规范,所以比硬件设计工作量大得多。该模块固件程序主要由如下部分组成:对SL811HS进行设置的初始化程序,这部分程序在系统复位后就立刻执行;发现USB设备接入的子程序,并判断该设备是高速还是低速设备;对该USB设备进行Enumerate,即枚举,并指定其USB地址的子程序;其他数据通信子程序利用该部分程序完成指定的应用要求[5]。USB传输函数usb Xfer程序流程如图4所示。
以包为基础,USB定义的4种数据传输类型所能达到的传输速度、占用USB总线的带宽、传输数据的总量和应用场合等都是不同的。每种传输方式都由很多个事务来完成。USB事务处理一般由三个阶段组成:令牌阶段、数据阶段和握手阶段。令牌阶段定义了事务处理的类型,包括SETUP、IN和OUT;数据阶段负责运送和传输相关的数据,Data0和Data1两种数据包交替使用,以支持双方的传输同步;握手阶段由接收方向发送方提供反馈,告知数据是否正确接收。
在USB Host模块中,固件的核心部分是USB传输函数usb Xfer。usb Xfer管理着USB的事务处理,其入口参数有:设备地址Usb Addr、端点地址Endpoint、令牌包类型PID、端点最大负荷Payload、传输数据总长度Length、数据缓存区指针Buffer。
USB主机检测到设备连接好后要对其进行配置,称为设备的枚举,该部分固件的核心是设备请求函数Vendor Cmd。Vendor Cmd构建在usb Xfer函数之上,通过调用usb Xfer进行若干次的控制传输来实现。控制传输的实现是固件程序中一个比较复杂的部分。控制传输由三个阶段组成:建立阶段、数据阶段和状态阶段。建立阶段,主机进行SETUP事务处理,向目标设备发送标准设备请求;数据阶段,由若干个IN事务处理或OUT事务处理组成;状态阶段,主机则完成与数据阶段相反的事务处理,结束本次控制传输。
设备的枚举过程主要包括以下几个步骤:(1)主机请求设备控制端点0,以确定缺省管道支持的最大数据量;(2)主机给USB设备分配1个唯一的地址;(3)主机从描述符中读取配置信息并加以执行;(4)主机验证设备所需要的资源是否可以获得;(5)主机USB设备发送1个配置值,指出如何使用该设备。枚举成功后,主机和设备就可根据设备接口类型,采用相应的接口协议进行数据控制和传输。USB设备类型主要划分为:音频设备、显示设备、人机接口、海量存储器等。特定的设备类型又划分为若干个子类,它们又有可能采用不同的接口协议传输指令和数据。以U盘为例,类代码08h(海量存储器类),子类代码06h(SCSI指令集子类),传输协议50h(Bulk—Only传输协议)。按照这些标准,U盘的操作过程可分为:指令、数据和状态三个阶段,也就是主机首先向设备Bulk—Out端点写包含SCSI的指令块(CBW);然后从Bulk—In读数据或向Bulk—Out端点写数据;最后从Bulk—In端点读取传输状态(CSW)。通过Mass Storage类的子类命令的实现,在建立了FAT文件系统后,该文件系统就可以直接调用子类命令对U盘进行各种操作,以实现对文件的管理。
2.2驱动程序设计
主机控制器驱动程序设计主要包括四个部分:主机控制器的初始化和管理、传输执行和资源的调配、中断处理以及根集线器操作和控制。主机控制器为USB总线驱动屏蔽了硬件操作,完成USB底层数据传输,它为上层驱动提供了简单的软件接口,定义了usb_operation函数结构体供USB总线调度调用。
Struct usb_operations{
int(*allocate)(struct usb_device*);
//分配USB设备资源
int(*deallocae)(struct usb_device*);
//收回USB设备资源
int(*get_frame_number)(struct usb_device*usb_dev);
//获得当前帧号
/int(*submit_urb)(struct urb*purb);
//提交URB请求块
int(*unlink_urb)(struct urb*purb);
//撤销URB请求块
};
函数调用涉及两个不同数据结构的变量,其中,usb_device包含了对设备地址、描述表、配置、端点等基本设备信息;urb说明了USB总线请求的基本信息,包括USB通道信息、数据缓冲区、带宽和完成处理函数等。USB总线上所有的交易都是由函数submit_urb()发起的。主机控制器驱动程序基本流程如图5所示。
由于USB总线的通用操作如USB设备枚举、具体数据传输等已经由主机控制器驱动程序完成了,所以主机端设备驱动程序这部分的驱动程序只需要完成与具体设备相关的操作即可。USB设备驱动程序首先要做的是向Linux内核注册它自己,并告诉系统它所支持的设备类型以及它所支持的操作。这些信息通过usb_driver结构来传递。
struct usb_driver usb_storage_driver={
name:“usb-storage”,//驱动程序的名字
probe:storage_probe,//函数指针
disconnect:storage_disconnect,//函数指针
id_table:storage_usb_ids,//保存设备厂商ID和产品ID
};
usb_device是程序中一个重要的数据结构,驱动程序在设备探测阶段可通过它获得设备的相关配置信息。当一个设备插入USB总线时,主机对设备进行总线枚举,完成对设备的配置并读入设备属性。相关属性如设备描述符、配置描述符等信息被主机控制器保存在usb_device结构中。然后,内核根据设备标志找到对应的驱动程序,并调用该驱动程序的storage_probe()函数。usb_device结构被作为参数传入该函数。驱动函数的注册和注销都比较简单,注册时只需要将usb_storage_driver结构作为参数传递给usb_register()函数即可,usb_register(&usb_stor age_driver)注销类usb_deregister(&usb_storage_driver)、Storage_disconnect()在设备被卸载时被调用。
2.3用户程序设计
用户程序是系统与用户的接口,通过通用驱动程序来完成对外设的控制和通信。在编写用户程序时,首先建立与外设的连接,然后再实施数据的传输。本设计使用Visual C++6.0编译环境,将API函数包装成一个USB DLL连接库程序文件,其编程方法与串口编程类似:首先查找设备,打开设备的句柄,然后进行读写和控制操作,最后关闭设备句柄。在VC动态链接库中需将以下函数进行封装:
__declspec(dllexport)int__stdcall Ez Bulk_Data Out(uns
I gned char*Data Out,int Data Out Len);
__declspec(dllexport)int__stdcall Ez Bulk_Data In(unsig
ned char*Data In,int*lp Data In Len);
__declspec(dllexport)int__stdcall Ez Open Device();
__declspec(dllexport)int__stdcall Ez Close Device();
然后在VB中调用此USB.DLL做以下声明。这样就可以直接在VB中调用这些函数作相应的开发了。
Private Declare Function Ez Init Lib“USB.DLL”(By Val Pipe In As Byte,By Val Pipe Out As Byte,By Ref lp Void As Any)As Long
Private Declare Function Ez Bulk_Data Out Lib“USB.DLL”(By Ref Data Out As Byte,By Val Data Out Len As Long)As Long
Private Declare Function Ez Bulk_Data In Lib“USB.DLL”(By Ref Data In As Byte,By Ref Data In Len As Long)As Long
有了嵌入式主机后,脱离PC机的数据传输不再是梦想了。在MP3播放器、数码相机里嵌入USB主机模块,使其由传统的USB外设成为USB主机。这样,这些嵌入式的主机就可以直接与移动硬盘、打印机等USB设备相连接,实现特定的功能。例如:江苏某企业生产的提花毛皮机控制系统中就实现了USB Host模块功能,用户系统可以直接读写作为Slave的U盘,将花型准备系统设计的花型以文件的方式存储到U盘中,在用户需要时,可读取U盘中的花型文件进行分析、处理,效果良好。
目前USB主机的研究与应用已得到国内外的广泛重视和迅速发展,正在推广使用的USB3.0标准能提供4.8Gb/s的高速数据传输性能(USB1.1和USB2.0分别是12Mb/s和480Mb/s),甚至支持光纤连接。这样其峰值速度就可达到20Gb/s,如此就可实现USB高速组网或广播电视节目信号在USB设备上的传输。USB3.0标准还可解决因USB2.0供电不足而无法支持大功耗USB移动设备的问题。随着移动数码产品的发展趋势,提出了USB2.0协议的补充协议USB OTG和无线USB传输规范,同时具备主从机功能的高速USB OTG设备和无线USB的应用将是未来开发者们研究的方向。充分利用USB简便的特性以及高速数据传输性能,扩大其支持设备的种类,这将给USB的应用带来广阔的市场,也将给人们的生产生活带来巨大的便利。
摘要:简单介绍了USB接口技术的原理及其优点。基于嵌入式系统与USB设备等不能直接传输数据及嵌入式系统大容量存储难等问题的现状,提出了在嵌入式系统中集成USBHost功能以解决这一问题。
关键词:USB接口,嵌入式系统,USB—Host,SL811HS
参考文献
[1]王田苗.嵌入式系统设计与实例开发[M].第二版.北京:清华大学出版社,2003:141-145.
[2]马伟.计算机USB系统原理及其主/从机设计[M].北京:北京航空航天大学出版社,2004:93-98.
[3]Cypress Semiconductor Corporation.SL811HS Datasheet[EB/OL].http://www.uclinux.org/,2005-02-05.
[4]陈启美,丁传锁.计算机USB接口技术[M].南京:南京大学出版社,2003:73-89.
嵌入式网络接口 篇7
人们对于嵌入式系统的图像要求越来越高,传统的VGA模拟显示已经无法完全满足客户的需求。笔者介绍了一种基于TMS320DM6446(简称DM6446)双核处理器的HDMI数字高清系统的设计[1],该设计可以较好地提升嵌入式系统图像质量。
DM6446是TI公司推出的双核芯片,该芯片包括1个ARM子系统、1个DSP子系统和1个视频处理子系统(VPSS),其中VPSS包括1个视频前端(VPFE)和1个视频后端(VPBE)[2]。SiI9134是Silicon Image公司生产的符合HDMI1.3标准的HDMI发送芯片[3]。图1是本设计的系统框图。摄像头采集的信号经过视频解码芯片TVP5146之后转换成8 bit BT.656信号送给DM6446视频前端。DM6446视频前端对图像做放大、去隔行、白平衡等处理之后将其送给视频后端,视频后端将视频数据按照16 bit BT.601格式送给HDMI芯片SiI9134,SiI9134最后将HDMI信号送给高清显示器显示。
2 HDMI工作流程及实现
图2是HDMI芯片工作时序图。首先需要对SiI9134做复位并将Mute位置1,之后完成对音/视频工作频率、工作模式、音/视频路径等静态参数的配置。在完成芯片的基本配置之后通过设置输出使能位打开输出,并同时开启通用控制信息帧(GCP)传输,GCP在图像的消影期间传输,主要用于传输附加控制信息。此时因为GCP中的Mute位为1,所以显示器接收到此标志位之后并不显示实际图像,而只输出消屏(Blank)信号,也就是整个图像为黑屏。之后SiI9134启动图像的HDCP(HighBandwidth Digital Content Protection)加密认证。SiI9134只有通过认证识别到符合HDCP规范的显示器并相互交换密钥之后,显示器才能正常显示加密数据。加密认证之后,SiI9134开始输出经过加密的音视频数据,并将Mute位清0,重新打开GCP传输。显示器接收到GCP并识别到Mute位为0之后开始解密数据并显示实际的图像。如果认证失败,则显示器无法解密发送端加密后的数据,将显示雪花点信号。
本系统的软件实现流程图如图3所示。
3 HDCP加密认证实现
HDCP版权内容保护机制是HDMI系统的一项重要功能。为了对数字影像的内容加以保护,HDMI发送端对视频信号先加密后传输,而接收端只有通过认证并获取密钥之后才能对加密的数据进行解析。加密认证的主要过程如图4所示。HDMI发送芯片Si I9134首先需要产生一组64 bit的随机数AN。此处只要将HDCP_CTRL寄存器的TX_ANSTOP位置1,Si I9134芯片就会产生一组随机数。发送端将产生的随机数AN通过DDC I2C接口写入显示器EDID(Extended Display Identification Data)对应的寄存器空间。之后发送端将自己的密钥AKSV传送给显示器并将其写入DDC_AKSV地址。显示器根据获得的AN和AKSV就能计算出Ri′。为了实现密钥互换,发送端从显示器读取BKSV,并计算出Ri。最后,发送端读回显示器计算得出的Ri′并与Ri做比较,如果两者相等则加密认证通过。之后发送端启动数据加密,开始传输经过加密的音/视频数据,而显示器则可以根据密钥对音/视频数据进行解密[2]。
Si I9134和HDMI显示器之间的HDCP加密通信过程都是通过DDC I2C接口完成的。从图5可以看出,HDMI系统是双I2C结构的。Si I9134和显示器都属于从设备,无法直接通信,所以需要DM6446先通过与Si I9134之间的I2C接口控制其相关寄存器,Si I9134 I2C控制寄存器在获得来自DM6446的命令之后再发起和显示器之间的I2C通信。
4 HDMI信息帧的实现
HDMI允许在视频信号消隐期间传输信息帧(Infoframe)。HDMI共有7种格式的信息帧,本文以最常用的辅助视频信息帧(AVI)的实现加以说明。AVI信息帧主要包含视频色空间、图像画面比例、是否缩放、SDTV HDTV等信息。显示器接收到这些信息之后就可以更好地显示画面。例如在AVI信息帧中指定当前图像的色空间为YUV4∶2∶2格式,显示器就可以根据此信息来显示图像[5]。传统的VGA和DVI等接口就没有此功能,所以只能传送RGB格式的信号。信息帧的本质是为视频的发送端和接收显示端添加了一个通信的机制。AVI信息帧的格式如表1所示。表中前4 byte分别是信息帧标志位、版本号、数据长度和校验和,其中前3 byte为固定值,而校验和需要根据所传输的数据来计算。从0x44寄存器开始的15 byte是实际的控制数据,数据的意义可以参见EIA标准文档CEA-861-B[6]。
为了实现AVI信息帧的传输,首先需要配置好相关控制参数,然后将0x40~0x52(不包括0x43)寄存器的值按unsigned char类型做累加,最后将累加和按位取反得到校验和并将其填入0x43寄存器。之后将INF_CTRL1寄存器的AVI_PRT和AVI_EN位同时置1,打开AVI信息帧输出。AVI_RPT代表重复模式,也就是每一帧图像的控制期都传输AVI信息帧。在设计时一定要注意AVI_EN使能位必须在软件Power up使能和输入时钟及时序稳定之后才能打开。因为Si I9134工作在内同步模式下,需要从DM6446内同步信号中获取同步信息,所以要先打开DM6446的视频输出,再打开AVI信息帧传输。其他种类信息帧的实现方法类似。
5 HDMI与DVI的兼容性设计
考虑到现在有的LCD显示器只支持DVI接口,而不支持HDMI接口,所以要设计一种兼容两种模式的输出方案。在硬件接口上,只要通过一个普通的HDMI-DVI转换头即可实现。而更多的兼容性设计主要体现在软件方面。DVI相比HDMI,主要是不支持音频、信息帧、YUV色彩空间等。在软件编写子函数时可以先将所有HDMI功能都实现,只是在检测到所连接的显示器不支持HDMI时将某些功能关闭。所以对显示器EDID的参数检测是实现HDMI与DVI兼容性显示的关键。
对于所连接显示器的参数检测主要是通过Si I9134DDC I2C接口获取显示器E2PROM中存储的EDID信息。EIA/CEA 861B规范规定,CEA EDID数据传输的第1个时序扩展段中要包含VSDB(Vendor Specific Data Block)信号[7]。如果是HDMI设备,就能找到一个有效的VSDB,它包含一个24 bit的HDMI数据识别符,其值为0x000C03。只要Si I9134从显示器EDID空间查找到该描述符就认为其所连接的是HDMI显示器,并将全局变量b HDMI置1,开启所有HDMI功能。反之,如果无法查找到有效的VSDB标识符,软件就将b HDMI清0,只开启DVI功能。此外,为了更好地兼容DVI显示,可以通过读取显示器EDID信息来判断所接显示器的类型,从而决定是否开启HDMI的全部功能。
摘要:介绍了基于双核嵌入式处理器TMS320DM6446平台的HDMI接口的设计与实现。介绍了HDMI接口的工作流程、HDCP加密实现、信息帧控制以及与DVI兼容显示等。本系统可实现720p和1080i的高清视频输出。利用HDMI数字接口高分辨力、低损耗等特点,可以克服现有VGA模拟显示的许多缺点,极大提升了嵌入式平台图像质量。
关键词:HDMI,高清,双核处理器,TMS320DM6446,HDCP
参考文献
[1]董庆敏,罗键.HDMI接口标准及应用设计[J].电视技术,2007,31(2):32-34.
[2]Texas Instruments Incorporated.TMS320DM6446digital media System-on-Chip[EB/OL].[2009-10-20].http://focus.ti.com/lit/ds/symlink/tms320dm6446.pdf.
[3]沈璐,郑善贤.用于数字电视的HDMI1.3接收芯片点评[J].电视技术,2007,31(10):41-43.
[4]沈璐.HDMI接口在音视频接收系统中的设计与开发[D].长沙:湖南大学,2007.
[5]姜巧巧,冯维,王身鸿.基于Davinci平台视频缩放操作的改进[J].电视技术,2008,32(8):31-32.
[6]Electronic Industries Alliance.A DTV profile for uncompressed high speed digital interfaces,EIA standards EIA/CEA-861-B[S].2002.
嵌入式网络接口 篇8
1、研制测试平台的必要性
研制第三方配置项测试独立的测试平台的必要性主要包含以下几点:
(1) 受设计条件限制, 第三方配置项测试无法注入全面的测试激励, 对软件的性能测试、接口测试、安全性测试、可靠性测试等往往需要进行很多异常测试, 来验证软件对异常处理的正确性, 而实装平台上的软件通常已经固化, 无法模拟异常测试输入, 同时对相关的测试输出缺乏直观有效的观测对比手段, 研制独立的测试平台有利于测试的全面性;
(2) 某些应用于特殊场合的嵌入式系统 (如航空航天设备、国防装备等) , 研制任务重、研制周期短, 其软件开发, 系统联试, 第三方配置项测试等往往需要并行进行, 而供各方使用的实装平台往往只有一套, 无法同时满足各方的要求, 研制独立的测试平台有利于第三方测试的有效进行;
(3) 由于某些嵌入式系统的保密性要求, 其试验往往在条件差, 环境恶劣的场所进行, 且试验繁忙, 测试工作只能见缝插针进行, 不利于测试人员长期现场工作, 以及测试的全面充分。
2、接口转换计算机软件测试平台概述
接口转换计算机软件运行在接口转换及时统插件的接口转换计算机中, 在VxWorks实时操作系统支持下运行, 结合硬件电路实现嵌入式系统中各设备的接口适配和自动信息交换。
接口转换计算机软件接口配置如图1所示:
(1) 网络接口1:内部接口, 接口转换及时统插件通过嵌入式系统内部控制总线与系统内部各设备进行网络通信; (2) 网络接口2:外部接口, 接口转换及时统插件通过双冗余网络接口与嵌入式系统外部各设备进行网络通信; (3) RS-422串行通讯接口1:外部接口, 接口转换及时统插件通过串口与串口通讯设备进行通讯, 完成嵌入式系统与串口通讯设备之间的信息交换; (4) RS-422串行通讯接口2:外部接口, 接口转换及时统插件通过串口接收时统设备的准秒脉冲。
针对接口转换计算机软件第三方测评需要, 建设接口转换计算机软件测试平台, 对被测软件的功能、性能、接口、边界、强度、安全性等方面开展配置项测试。测试平台的研制包括被测件运行环境、外围通讯环境、测试管理环境和辅助环境四个主要组成部分的建设。
3、平台主要功能和技术特点
3.1 主要功能
测试平台的建立主要功能是模拟以下平台环境: (1) 建设接口转换及时统插件与武器系统内部各设备的内部网络通信环境; (2) 建设接口转换及时统插件与系统外部设备的外部网络通信环境; (3) 建设接口转换计算机与串口通讯设备的串口通讯环境; (4) 建设接口转换计算机与时统设备的串口通讯环境; (5) 实现UDP网络协议下的单播、组播、广播通讯; (6) 建设接口、边界、安全性异常状态的测试激励环境; (7) 建设可录取、监听、解析、回放的测试输出观测环境; (8) 关键输入输出单位的人机交互建设。
3.2 技术特点
接口转换计算机软件第三方配置项测试平台建设除了能够实现与实装设备上一致的所有网络通讯、串口通讯以及正常的功能、性能、接口等测试以外, 还包括以下几个技术特点:
(1) 开发外围模拟器, 使各模拟器功能更加全面, 可以模拟实装设备上无法实现的接口、边界、安全性等异常状态的测试激励, 来验证软件对异常处理的正确性;
(2) 通过模拟器的开发实现关键输入输出单位的人机交互、各状态参数的设置与观测, 通过安装EtherPeek网络分析软件, 对被测件交互报文进行实时收录与解析, 提供测试数据的观察与记录, 实现一个友好的测试输入、输出观测环境;
(3) 平台留有可扩展接口, 可在相应基础上进一步扩展, 增加外围模拟器组件和接口关系, 构建后续相关系列测试环境, 实现良好的可扩展性。
4、平台结构及组成
测试平台根据接口转换计算机软件的运行环境和外围接口, 实现对测试所需信号信息的激励、采集, 完成数据通讯。平台示意见下图2, 组成主要包括:被测件运行环境、外围通讯设备、测试管理环境、辅助环境。
接口转换计算机软件所运行的硬件环境包括接口转换计算机和时统板组成。接口转换计算机主要由一块PC104组成, 必须满足普军级要求, 同时满足一定的硬件配置要求, 包括CPU主频、内存容量、存储盘容量等以及包含所需要的相应接口。接口转换及时统板主要包括CPLD集成电路、时统产生芯片、译码电路以及插座等相关硬件组成。
根据接口转换计算机软件需求说明、接口协议等要求, 确定外围各模拟器的通讯需求和功能, 建立被测件外围接口通讯环境, 实现了: (1) 被测件外围通讯接口; (2) 接口、边界、安全性异常状态的设置与观测; (3) 关键输入输出单位的人机交互。
外围各模拟器的硬件环境主要是满足一定配置要求且性能稳定的工控机, 相应的硬件环境要求主要包括CPU主频、内存容量、硬盘容量等配置要求, 以及包含所需要的相应网络接口和串口等接口。x'�
各模拟器的软件环境为Visual Studio 2008 C++, 组装后实现模拟各外围设备与接口转换计算机软件的信息交互。
5、平台校验及测试
5.1 平台硬件
平台硬件校验主要验证被测件运行环境和模拟器运行环境是否符合平台硬件环境及外围各模拟器的硬件环境指标。
经校验接口转换计算机软件测试平台的被测件运行环境和模拟器运行环境均符合相应硬件环境指标。
平台软件的验证主要比对相同的测试
5.2 平台软件
用例在时装环境和在第三方测试平台上的运行情况, 查看两者的执行结果是否一致或在偏差范围内。接口转换计算机软件测试平台的验证情况如下:
(1) 选取部分正常功能测试用例分别在时装环境和接口转换计算机软件测试平台上执行, 正常功能在测试平台上的执行正确, 执行结果与实装环境下执行情况一致;
(2) 选取部分性能测试用例分别在时装环境和接口转换计算机软件测试平台上执行, 被测件在测试平台上的运行性能满足指标要求;
(3) 选取部分原来在实装环境下无法执行的异常接口和边界等测试用例在测试平台环境上执行, 经测试, 测试平台环境上可以完成原测试无法执行的异常接口和边界测试等。
6、结语
针对接口转换计算机软件的测试需求, 在借鉴通用测试工具技术的基础上实现了一个测试平台, 为测试人员提供了一个良好的测试环境, 平台具有很好的针对性和适用性。在使用接口转换计算机软件测试平台对接口转换计算机软件配置项进行功能、性能等测试时, 系统运行稳定, 不仅完成了原来在实装环境上的全套测试用例, 而且能够执行在实装环境上无法进行的异常测试用例, 为软件的可靠性提供了保障。
摘要:嵌入式系统的专用程度和可靠性要求高, 常用的测试方法不能对其进行有效和完善的测试。本文分析了嵌入式系统接口转换计算机软件测试要求, 研制了第三方配置项测试独立的测试平台, 包括测试平台的主要功能、技术特点、平台结构和组成、以及平台的校验测试, 并在该平台上完成了接口转换计算机软件的第三方配置项测试实验, 验证该平台具有很好的针对性和适用性。
关键词:接口转换计算机软件,软件测试,嵌入式系统
参考文献
[1]吕宝林, 王晓东等.航天遥感相机TDI CCD成像系统逻辑软件测试平台的设计.硅谷, 2010, (02)
[2]池云.嵌入式软件测试研究.中国科技信息, 2009, (02) .
嵌入式网络接口 篇9
1 CPCI总线背景下的嵌入式计算机
CPCI, 是对紧凑型外围设备互联的简称, 在此背景下设计的嵌入式计算机, 具有体积小、性能强、结构紧凑、安全可靠等特点, 可以应用于十分恶劣的环境条件中。就目前的发展形式看, 由于其强大的环境适应能力以及电磁兼容性, 加上设备对于振动、冲击、高温、灰尘等有着较好的防护能力, 在通讯、仪表仪器、汽车、航空航天、军事等多个领域获得了广泛应用。
为了满足功能和应用环境的特殊要求, 在对嵌入式计算机进行设计时, 要坚持模块化的设计思想, 将主板、功能元件、电源等安装在坚固的机箱内, 通过CPCI总线与主板的连接, 实现系统功能。本文提到的通用接口, 是指主板与不同功能扩展板之间的硬件和软件接口, 利用这个接口, 可以实现主板对于扩展板的控制, 以及相关数据的采集和传输功能。
2 通用接口的设计
根据功能需求和成本投入的不同, 通用接口的设计方法也是多种多样的, 这里采用的是现场编程技术与软件、硬件设计相结合的方法, 结合通用总线接口设计技术、数据库共享实时访问技术、数据交换技术等, 利用相关的电路设计和函数设计, 对CPCI总线背景下的嵌入式计算机通用接口进行设计。
接口主要包括硬件和软件两个部分, 软件部分的设计重点在于信息格式的定义、功能的划分以及数据结构的确定, 是对系统功能的实现;硬件部分则是指功能扩展模块上的硬件接口, 可以为系统提供通用化和标准化的数据交换平台。
一般情况下, 通用设备的驱动程序位于系统主板上, 而逻辑设备的驱动程序则位于扩展板上。在系统中设置共享数据存储区域, 可以实现主板对于扩展板的控制, 以及相互之间的数据和信息交换。
2.1 硬件设计
通用接口的硬件设计, 主要是针对扩展板通用硬件接口设计和总线接口设计而言的。在对通用硬件接口进行设计时, 需要注意以下几个方面的问题:
(1) CPCI总线接口设计:COCI作为一种同步总线, 其总线宽度为32位, 最大支持扩容至64位, 最高工作频率为64Mhz, 具备良好的数据传输速度和吞吐率。同时CPCI总线支持自动化配置, 程序可以在初始化的过程中自动完成对存储空间等资源的分配, 因此CPCI总线背景下的设备均支持即插即用的功能。CPCI总线接口主要包括外围控制、总线桥接芯片和匹配电路, 其数据信号主要通过反射的方式进行传播, 因此, 在对外围控制和匹配电路进行设计时, 要按照相应的规范进行, 以保证总线信号的完整性。
(2) 可编程逻辑芯片:主要用于实现地址译码、内部寄存器以及双口RAM的访问控制等功能。在设计中, 使用Lattice公司生产的M4A5192/96现场可编程逻辑阵列实现。该芯片的基本工作电压为5V, CPCI兼容, 内部拥有192个宏单元, 16个单向输入引脚, 同时支持边界扫描测试, 可以实现在线编程。
(3) 双口RAM以及数据定义:双口RAM是实现主板与扩展板之间数据交换的基础, 在设计时, 需要根据其功能的差异, 对数据结构进行定义, 将其划分为相互独立的存储区。扩展板的处理器可以从自身不同的功能分区读取相应的参数, 并依据参数实现对自身硬件的管理和控制。
2.2 软件设计
对于通用接口而言, 其软件主要是基于多任务操作系统Vx Works进行设计, 从而实现通信、存储器优化管理、中断管理服务等系统功能。
2.2.1 主板程序的功能和函数
主板上运行的程序为通用设备的驱动程序, 存在于系统内存之中, 优先级较高。主板在运行过程中, 可以通过CPCI总线技术, 实现对硬件接口的初始化和控制, 通过双口RAM, 实现数据的交换和传输。其自身的功能众多, 可以通过相应的函数实现。以扩展板初始化为例, 该功能主要由General–SlaveInitial (Vendorl D, Devieel D, Ver, Initfile) 函数实现, 主要是对扩展板的生产厂商、设备版本号、相关参数、配置文件的路径等信息进行读取, 并将相应的扩展板初始化参数写入双口RAM的扩展板初始化参数区, 为扩展板的初始化提供数据支持。
2.2.2 扩展板程序的功能和函数
扩展板上运行的是逻辑设备驱动程序, 主要是针对自身的硬件进行管理和操作。与主板相同, 同样需要针对不同的功能, 选取相应的参数实现。
3 结语
CPCI总线背景下嵌入式计算机同样接口的设计, 对于其自身功能的实现有着十分巨大的作用, 可以充分发挥出嵌入式计算机的优点, 因而在多个领域得到了广泛应用, 不仅大大降低了产品的使用和维护费用, 也带来了巨大的社会效益, 具有重大的技术价值。
摘要:本文主要针对CPCI总线总线背景下, 嵌入式计算机设计过程中遇到的相关问题, 对其通过接口的设计进行了分析和研究。采用现场编程技术与软件、硬件设计相结合的方式, 运用相应的技术, 有效实现了CPCI总线背景下嵌入式计算机通用接口的设计, 并成功在工程实践中得到了应用。
关键词:CPCI总线,嵌入式计算机,通用接口,设计
参考文献
[1]汪强.基于CPCI总线的嵌入式计算机通用接口设计[J].计算机工程与设计, 2008 (4) .
[2]吴涮, 张军平, 张文军.嵌入式计算机中USB主机控制器的研究与设计[J].计算机工程, 2004 (23) .