图1.家庭网络结构图
项目书对家庭网关进行了如下的定义:
l 是一个协议转换器,对数据格式,传输速率和媒体驱动方式等协议的转换和通信转发的设备。
l 设备资源管理器(网络控制器),必须有一个I/O设备:通常应有一个输入装置(键盘、鼠标或话筒等)和某种类型的显示装置所组成。能解释设备描述文件。
l Web服务器,具有浏览器功能,可以将设备配置管理文件转换成操作页面,并具有用超文本传输协议HTTP发送的能力。
l 网关还应该是一个防火墙,保证家庭网络的信息安全。
根据项目书对家庭网络的定义,即家庭网设计的需求,我们在系统设计之初就需要对各个功能有很好的划分,对于不同的功能在哪个部分实现都要有详细的划分,例如防火墙功能,现在得网络系统中有硬件防火墙和软件防火墙之分,所以系统的前期定义决定着系统的后期研发难度和研发的内容,这里对家庭网关项目划分为硬件平台和软件平台两个部分,采用了Uclinux+SPARC V8 SOC的系统搭配来实现网关功能,具体内容后面会对其进行详细的介绍,下图给出了网关设计的结构图,其中处理器部分采用了我国自主研制的SPARC V8 SOC处理器。
图2.网关结构图
本文的详细介绍了家庭网络中家庭网关的设计于实现,在第二节会介绍SPARC V8 SOC处理器,第三节中给出硬软件的开发平台设计,最后一节给出了家庭网关的一个应用――家电设备远程控制应用。
SPARC V8 SOC处理器特点
SPARC V8处理器是航天时代公司为了适应未来航天需要和消费市场而设计的一款处理器,这里我们采用了针对消费市场和家庭网关项目而定制设计的SPARC V8 SOC处理器。与传统的32位RISC处理器不同,如SC4510B、AT91的ARM核网络处理器都只有一个以太网接口,很少有两个网口的处理器,而家庭网关要求处理器有两个以太网接口。SPARC V8是基于精简指令集(RISC)的CUP指令集体系,对于这款处理器我们掌握了其核心技术和源代码,这就为对处理器内核的改动提供了条件。为了适应家庭网络需求,我们的硬件设计师将两套以以太网物理驱动模块集成在了SPARC V8 SOC处理器中,并针对特殊的需要集成了家庭总线通信控制单元核(Yt0-010)在处理器中,以满足项目的要求。
从上一节的网关结构图中可以看到,在图的右边还有家庭总线通信控制单元,这个就是Yt0-010芯片,Yt0-010是家庭设备和家庭局域网之间信息的转接口,适合于小型的家庭网络。它有两个连接端,与家电设备的连接端称为设备接口端,与家庭总线的连接端成为总线端。设备的主控制单元和通讯接口电路之间采用异步串行通讯,芯片固化了家庭网络的标准协议,各种家电只要增加接口芯片之后都可以成为家庭网的可控设备。
Yt0-101控制和通讯都是通过各种类型不同的帧实现的。用于控制的包括在设备端的设置帧,其作用是读写ID寄存器、读写CR寄存器等操作,用于通讯的包括在在设备和总线端的广播帧和信息帧,用于通讯应答的包括设备端的传输状态帧和总线端的应答帧。
Yt0-101核也被集成在了SPARC V8 SOC处理器中,这就是为什在开始就称处理器为SOC处理器的原因。SPARC V8 SOC处理器已经不同于通用嵌入式处理器而是专用的SOC处理器,并且针对项目的要求进行了重新的设计,集成以太网模块和家庭网络通信控制器核于身,成为真正的SOC。
除此以外,SPARC V8 SOC处理器内部还集成了2个串口控制器、SDRAM、SRAM控制器等常用的一些外围设备控制器,对于家庭网关应用,这对样的SOC处理器已经足够强大了。
下图是一个SPARC V8处理器的结构框图,从中可以看到网口和家庭总线通信控制单元都是集成在AMBA总线上的。
>>>> 图3.结构框图
硬/软件开发平台设计
在整个开发系统中包括了硬件开发板、底层软件支持库、驱动程序、操作系统和上层应用程序。在这里对硬件开发板和操作系统及其与新设备相关的驱动程序进行介绍,至于基于操作性系统的WEB应用、安全应用等程序,又很多可以参考的程序,就不多说明了。
l 硬件平台
开发板SPARC V8 SOC处理器为核心,主要由BOOTROM、FLASH、SDRAM、RS232 接口、网口、复位电路、倍频电路、电源电路,键盘接口和320*240液晶接口等电路构成。
开发板中存储单元由两片128KB的AT29C1024组成BOOTROM、两片16M的AM29LV160DB的FLASH和两片32M的HY57Y561620CT_H的SDRAM组成。RS232驱动部分使用了MAX3232来进行电平转换。SPARC V8 SOC处理器中有两套以太网物理驱动模块,只要在外面连接以太网控制器就可以进行连接了。这里以太网收发芯片采用了INTEL的LXT971连接标准RJ45网络接口。电源部分由于板上有5V和3.3V并存的电源,所以采用了一块LM1086来对5V电源转换。键盘和液晶接口是为以后进行系统显示和控制而特别预留的接口,后期还会将图形界面一直到操作系统上。
l Bootloader
Bootloader在没有操作系统的支持下,构建了最简单的软件运行环境并将其保存在BOOTROM中,系统上电就直接运行。实现了简单命令行、网络通讯功能,开发板从上位机通过tftp下载操作系统,还提供了gdb调试,可以在此软件平台上搭建脱离操作系统的应用程序。
在开发平台的bootloader设计中,我们参考了很多成熟的bootloader项目,并且就自己的特定指定了一些要求。由于我们的bootloader不止是要完成操作系统的引导,系统程序的调试、运行也是要依赖于它,所以在下载模式中我们添加了系统程序下载这一项。并就系统软件调试的需要在bootloader中集成了gdb monitor监控程序。基本上对bootloader的需求可以分为两类,即上面提到的启动和下载模式。
启动模式中,要求实现自动加载的功能。这里我们借鉴了vxworks中启动方式,要求启动之初会有一小段的时间等待用户输入,当用户输入的时候就进入下载模式,否则自动进入启动模式在可能的介质和通讯方式中找到操作系统,因为操作系统存在的物理位置不固定,可能在上位机也可能在Flash中,所以要对这几种方式都能够提供支持。通讯方式我们在第一版中设计的是串口,串口实现简单而且上层软件比较的多,容易实现启动加载的功能。
下载模式中,要求有两种方式,一种是面向操作系统的,像上面U-boot一样,选择下载源进行连接然后在SDRAM中运行操作系统;另一种方式是面向系统软件的,在这种方式中又有下载、运行和调试三种方式。下载中要求即可以烧写Flash又可以写入SDRAM中。调试是要求将gdb中的monitor程序集成在bootloader中,实现远程软件调试。运行就是将下载到Flash或SDRAM中的程序运行起来。
l 调试手段
SPARC V8 SOC处理器开发系统提供了两个调试方式,包括硬件和软件两种方式:
硬件调试,硬件调试运用sparc v8空间处理器提供的dsu(hardware debug support unit),dsu能够将处理器设定位调试模式,可以读写所有的处理器寄存器和存储器,并且其本身有跟踪缓存,可以保存执行的指令和AMBA AHB 总线上的数据。Dsu是利用串口(RS232C)通讯的。
宿主机上运行的DUS,DUS程序是基于宿主机的程序,所以并没有对底层的操作阿而是通过串口和通讯协议来完成对硬件DUS信息的解析,所以并不需要对其进行大规模的修改就可以在我们的宿主机操作系统上运行。DUS可以在linux系统下运行,要运行在window上要安装cygwin之后才可以。
软件调试,软件调试是基于linux调试工具gdb,我们将gdbtk通过串口连接到我们的上位机上,当系统运行时,我们可以通过gdb查看存储器内容,在程序运行中可以加入断点,也可以单步执行程序,gdb与下位机的的monitor通过GDB远程串行协议。
宿主机上运行的gdbtk有公开的程序可以使用,而且gdbtk程序由于是基于宿主机的程序,所以并没有对底层的操作所以并不需要对其进行大规模的修改就可以在我们的宿主机操作系统上运行。Gdbtk可以在linux系统下运行,要运行在window上要安装cygwin之后才可以。由于gdbtk是基于不同处理器结构的,所以在宿主机上运行的gdbtk还是有差别的。不过现在大多数的处理器都有相应的gdb程序,你可以方便的找到你所需要的gdb程序。如果没有的话,就要自己来写了。
monitor程序运行在目标机上,所以其程序与处理器类型有关,不同的处理器的monitor程序不相同。由于我们的处理器是SPARC结构的,处理方式不相同,所以要采用基于SPARC结构的monitor程序。GDB提供了对SPARC结构的支持。
l 操作系统
对于操作系统的选择基于以下几个考虑:
ü 灵活、小巧
ü 可移植,
ü 对SPARC支持
ü 内核可裁减
ü 低成本
这里选择了uclinux,uclinux的选择是基于其对no-mmu sparcv结构硬件平台的支持,sparcv8空间处理器没有提供mmu功能,另一个重要的原因是用户的需求要求低成本和对网络支持,而uclinux恰恰满足了这个需求。
操作系统的移植包括结构层次的移植、平台层次的移植,uclinux对nommusparc提供了较好的支持,所以我们移植的工作量不大,多集中在板级移植上。我们采用的 uclinux是linux2.0内核,板级移植需要在linux/arch/中找到相应的nommusparc目录,对于SPARC处理器 nommusparc就是其对应的no-mmu的SPARC处理器支持包,然后根据启动的顺序修改ram.ld、blkmem.c、setup.c与启动相关的代码,此外还需要修改包括UART 相关代码、定时器相关代码、中断控制器等。这样就可以使操作系统运行在硬件系统之上了,但这样的操作系统并没有对新加入的控制器如网口和YT0-010有相应的驱动程序,所以剩下的工作就是对新硬件设备的驱动程序的编写。要编写的驱动程序包括网口驱动和YT0-010驱动。
网口驱动采用了uclinux的dev/文件夹下的网口驱动程序修改而成,YT0-010驱动是字符驱动程序,用于为上层应用提供统一的操作接口和对通信信息进行简单加工后送到uclinux系统上层软件,处理之后通过网络送到为信息控制器服务器或远程查询服务器提供设备端控制器的状态和运行信息。通过网口和YT0-010完成对家庭设备网络和家庭网络的控制,并通INTRERNET和网关来实现远程控制。这些都需要uclinux的网络协议栈提供对网络的支持才能完成。
有了这样的软硬件开发平台之后,就可以进行进行家庭网关的设计了。下一节介绍了一个基于家庭网关的应用——家电设备远程控制。
家庭网关应用
家电设备的远程控制是使用INTERNET来实现对家电设备的远程控制。简单的流程:
首先,家电是通过家电控制器与网关进行连接的。在初始化过程中网关与家电通过家体网络和握手协议上载家电的信息,包括控制和状态信息。这样做的目的也是为了提高队网络的动态性能和可扩展性,使得新增设备可以轻松的加入网络中去。
其次,使用一台连接在INTERNET上的电脑登陆家庭网关WEB系统,在WEB中提供了可以选择的设备及其当前设备的状态和可以提供的控制。当具有浏览器功能的远程用户访问网关时,网关将设备配置管理文件中的所有设备信息数据读出,并按超文本传输协议(HTTP)的要求转换成相应的网页数据,传送给远程用户形成一个可操作的页面提供给用户浏览器。操作页面显示的方式可以是表格、键盘、遥控器图形,或复杂的图像。操作页面上的相关部位都有明确的链接,指向相关的文件、文件特殊部分的目标地址,或者链接目录表中的地址标签。使操作页面成为一个虚拟的遥控器。
然后,用户通过更改和填写家电的控制信息来更改家电的状态。用户填写的控制信息从WEB页中提交到事务处理过程中,事务处理过程通过网关中的家庭网络控制单元来来控制信息分发到各个家电或子系统中去。
最后家电控制器从家庭网络中接收到这个控制或命令信息,解析控制命令,并实现相应的动作。
这样就完成了一次远程控制,由于INTERNET介入方式的多样化,远程的控制也呈现出多样化,例如可以无线上网、手机控制等等总而言之要登陆网关中的WEB服务器,通过提交事务来完成对系统的控制。将服务器放在网关也是考虑在以后考虑到安全和信息完整性,可以在接入网关节点加入安全验证和防火墙等安全设备来解析网络信息。这样安全性也可以得到保证。
图4.家庭网络控制界面截图
上图是在实验环境下登陆的网关的WEB界面,在界面中提供了对几种家电的控制选择。由于是在实验环境下,所以就只是简单的示意就可以了,所以比较简单。
实验环境1建立在两套局域网中,网关连接了两个网络。两个网络分别属于不同的网段,速度不同,分别是10M网络A和100M网络B,分别连接网关的网口1和网口2。B网中的计算机通过网关的网口1登陆网关中WEB服务器,选择电表,网关中的服务程序通过对数据的处理转发给设定为电表的网络B中的计算机。这样就验证的网关和WEB服务的基本工能。
在实验环境1中进行了大数据量的测试,10万级网络数据包转发的误码率很低,几乎没有错误。但在实验环境1中并没有用到YT0-010家庭网络控制器。所以搭建了试验环境2对家庭网络控制器进行验证。
实验环境2对于家庭网络控制器验证是通过家庭网络控制器+设备控制器级联,并在设备控制器中加入串口并转发会发送电脑,通过发送和接收数据的比较来完成的。通过大数据量的测试误码率很低,几乎是每百万条2条以下的误码率。
结束语
本文介绍了基于SPARC V8 SOC处理器的家庭网关的开发平台的设计和实现,并给出了一个网关实现的流程和实验数据。SPARC V8处理器作为自有知识产权的处理器,不但结构尤其特有的,并且针对特殊的定制需要更有着天然的优势,所以对SPARC V8处理器的研究和应用开发是很有实际意义的事情。
文章评论(0条评论)
登录后参与讨论