手机端
or

欢迎您加入我爱方案网QQ群

1.智能产品外包服务群(311606115)
2.嵌入式项目开发群(491609563)

基于VxWoks的嵌入式家庭网关的设计

李加升; 叶慧聪| ARM,嵌入式,网关| 2010-11-29
1500 收藏
分享到: 
每日精选
热门文章
热门方案

【中心议题】

  • 设计了基于ARM的嵌入式家庭网关
  • 介绍了该系统的硬件平台及几个接口电路的设计
  • 研究了系统软件的移植和应用

【解决方案】

  • 微处理器采用以ARM为核心的Samsung S3C4510B
  • VxWork上进行软件的开发

1引言

随着嵌入式系统和信息家电的广泛应用,将个人家庭以及公司的各种网络设备接入Internet已经成为一种必然。而接入网络的最关键的部件之一是网关,其中家庭网关由于与新近崛起的信息家电关系密切,因而更加倍受关注。家庭网关是面向家庭用户的智能接入设备,以它为中心建立家庭网络,并在多个设备间共享Internet网络连接,同时为用户提供安全的通信、娱乐、存储一体化功能的设备。作为家庭网络的核心,家庭网关在家庭中起到总控、协调所有设备的作用,并对用户提供统一、方便的使用界面。本文主要介绍基于VxWorks的嵌入式家庭网关软、硬件的设计,从而阐述嵌入式系统设计的一般方法和设计过程。

2家庭网关综合设计

2.1系统硬件平台概述

家庭网关的硬件架构如图1所示,它包括微处理器、内存以及输入输出装置等。其中微处理器采用以ARM为核心的Samsung S3C4510B,内存使用DRAM,每片16M,一共32M;还有ROMflash,分别是1M4M;其他是各种接口:USB、串口、网口等。

 

2.2家庭网关硬件设计

(1)微处理器:在本文中,我们选用的是ARM架构Samsung公司生产的S3C4510B芯片.其内核是由ARM公司设计的通用32ARM7RDMI微处理器核。除了ARM7TDMI核以外,S3C4510B比较重要的片内外围功能模块包括:2个带缓冲描述符(BuferD escriptor)HDLC通道;2UART通道;2GDMA通道;232位定时器;18个可编程的I/O口。片内的逻辑控制电路包括:中断控制器;DRAM/SDRAM控制器;ROM/SRAMFLASH控制器;系统管理器;一个内部32位系统总线仲裁器;一个外部存储器控制器。

通用32ARM7TDMI微处理器核的结构框图见图2

ARM7TDMI处理器区别于其他ARM7处理器的一个重要特征是其独有的称之为Thumb的架构策略。该策略为基本ARM架构的扩展,由36种基于标准32ARM指令集、但重新采用16位宽度优化编码的指令格式构成。由于Thumb指令的宽度只为ARM指令的一半,因此能获得非常高的代码密度。

(2)Flash存储器:Flash在系统中通常用于存放程序代码、常量表以及一些在系统掉电后需要保存的用户数据等。系统启动时,将从Flash中运行Boot loader,解压缩操作系统并将搬移到SDRAM中。在本系统中,选用两片2MFlash存储器HY29LV160芯片并联构建32位的Flash存储系统。

 

(3)SDRAMHY57V64162016位数据宽度,单片容量为16MB选用两片HY57V641620并联构建32位的SDRAM存储器系统,共32MBSDRAM空间。

(4)总线驱动电路:因ARM微处理器的系统总线驱动能力相对较弱,并考虑到总线的电平转换问题,该系统采用74LVC4245作为总线驱动与电平转换。

(5)10Mbps/100Mbps以太网:S3C4510芯片内部包含以太网MAC控制,但未提供物理层接口.需外接一片物理层芯片以提供以太网的接入通道。本设计中选用的是RTL8201。由于S3C4510B片内已有带MII接口的MAC控制器,而RTL8201也提供了MII接口,因此连接很简单。

(6)串行接口:由于RS-232-C标准定义的高、低电平信号与S3C4510B系统的LVTTL电路定义的高、低电平信号不同,因此,两者间要进行通信必须经过信号电平的转换,本系统中选用两片MAX232芯片完成两个UART接口的数据及硬件流量控制信号的电平转换。

(7)通用I/OS3C4510B芯片支持18个通用I/O,用户可将每个端口配置为输入模式、输出模式或特殊功能模式,由片内的特殊功能寄存器控制。在该系统的设计中,P3-PO外接4LED显示器,用作程序运行状态的显示或其他输出功能,P7-P4外接跳线选择高、低电平用作状态输入,以控制程序流程或其他输入功能,

(8)S3c4510B所需的其它外围驱动电路:S3C4510B所需的外围电路,包括:电源电路、实时时钟接口电路(50MHz)、开关及复位电路、JATG接口电路和键盘接口电路。

3系统软件设计和应用

为增强系统的稳定性和功能的可扩充性,软件的设计将建立在嵌入式操作系统的基础上。在选定的操作系统VxWork上进行软件的开发。充分利用操作系统所提供的进程管理、文件管理、内存管理以及网络功能,大大提高开发的效率,方便软件的维护和升级。

3.1 VxWork在硬件系统的移植

VxWorks中与硬件相关的部分主要是BSP部分,所以要所做的工作就是生成符合自己硬件的BSPVxWorks板级支持包(BSP)是介于底层硬件环境和VxWork之间的一个软件接口,它的主要任务是系统加电后初始化目标机硬件、初始化操作系统及提供部分硬件的驱动程序。它的主要功能包括初始化;使VxWorks能够访问硬件驱动程序;在VxWorks系统中,集成了与硬件相关的软件和部分硬件无关的软件。

BSP开发过程基本步骤如下:1)首先设置系统环境(例如下载方式、调试策略等)2)编写预内核初始化代码;3)选择目标机调试代理WDB与开发环境下Tomado工具的连接方式(例如使用轮询串口或以太网接口)4)启动最小的VxWorks内核加载系统时钟支持,安装中断;5)完成BSP提供的所有必须的硬件环境支持(例如网络支持等)

 

以上是BSP通用开发方法,实际中有时选择相近的BSP,根据自己的目标机硬件环境进行相应修改。

开发BSP时,主要是以目标板CPUBSP文件为模板,在tornado\target\config目录下创建用户的BSP目录bspname,tornado\target\config\all下的文件和BSP模板文件拷贝到该目录下建立工程并修改相关的源文件,根据具体情况选择合适的vxWorks镜像类型。其中,config\all目录下的文件是独立于目标系统的用户可修改的公共执行模块,模板文件是与目标系统相关的模块。

(l)config.hconfigh文件是BSP软件包中比较重要的一个文件,也是要修改的最关键的基本配置文件。该文件使得用户可以根据需要配置bootrom程序中一些与实际目标主板硬件资源联系非常密切的参数,使得bootrom可以正常地在实际目标主板上运行。Config.h文件中配置的参数是在configAl1.h文件内容的基础上,根据实际目标主板的硬件资源设置的,其中包括系统启动方式、各种类型存储空间的范围、硬件接口的使用情况等。

具体修改的主要参数是ROM_BASE_ADRSROM_TEXT_ADRSR0M_SIZERAM_L0W_ADRSRAM_HIGH_ADRSunef掉不需要的部分。注意这些应该和makefile文件中设置的一致。

(2)romInit.S:这是系统上电后运行的第一个程序,根据具体目标板对寄存器和CPU进行设置:以CPUARM7TDMI为例,romInit.S需要进行的工作有:

保存启动方式:对于冷启动,如果CPU配置的是HIGHVECTORS,就设置入口地址为0xFFFF0000,否则设置入口地址为0x00000000

屏蔽中断:通过设置cpsrI_BITF_BIT都为l来实现,还要设置中断寄存器为关模式,同时设定运行模式为SVC32模式;

初始化堆栈指针pcsp:堆栈指针sp指向STACK_ADRS,这个宏的定义为当镜像为驻留ROM时,该宏值为_sdata,当镜像为非驻留ROM时,该宏值为_romInit,这两个地址经过地址映射后都指向被拷贝镜像在RAM的目标地址;

初始化cache,屏蔽cache

根据具体目标板的需要初始化其他寄存器;

指针跳转到romStart)函数并执行。

(3)makefile:在VxWoks系统中开发BSP时不必自行编写makefile,只要在现成的makefile上做一定的定制,主要工作集中在对宏定义的修改。具体修改的主要参数是:

ROM_TEXT_ADRS:BOOT ROM的入口地址。对大多数板来说这就是ROM地址区的首地址,然而也有的硬件配置使用ROM起始的一部分地址区作为复位向量,因此需要根据此设置偏移量作为它的地址,这个偏移量因CPU结构而定。ROM_WARM_ADRSBOOTROM热启动入口地址。它通常位于固定的ROM_TEXT_ADRS+4的地方。当需要热启动时,sysLib.C文件中sysToMonitor()函数代码明确的跳转到ROM_WARM_ADRS地址处开始执行。

 

ROM_SIZEROM实际大小。

RAM_L0W_ADRS:装载Vxworks的地址。

RAM_HIGH_ADRS:将Boot Rom Image拷贝到RAM的目的地址。

需要注意的是:在makefile文件中有一些参数已经在config.h文件中定义过了必须保证两处的定义一致否则会出现编译错误。

(4)其它与设备相关的文件

除此以外,如果系统硬件包括串口,还要根据具体情况修改sysSeria1.C文件;如果包含网络部分要修改configNet.h。总之,BSP的开发要根据具体目标板的硬件进行,BSP开发的正确性直接影响到VxWorks系统运行的稳定性。

3.2建立文件系统TrueFFS

TornadoTrueFFS是和VxWorks兼容的一种M-SystemsFlite实现方式,它为种类繁多的flash存储设备提供了统一的块设备接口,并且具有可重入、线程安全的特点,支持大多数流行的CPU构架。有了TornadTrueFFS,应用程序对flash存储设备的读写就好像它们对拥有MS-DOS文件系统的磁碟设备的操作一样。这样TrueFFS就屏蔽了下层存储介质的差异,为开发者提供了统一的接口方式。

TrueFFS可以分为三层,它们分别是:Translation layer(翻译层),这一层负责处理tffsdosFs之间的高层交互;Socket layer(套接字层),套接字层是提供TrueFFS和板卡硬件(flash)的接口服务;Memory Technology Drivers(MTDs),功能主要是实现对具体的flash进行读、写、擦、ID识别等驱动,并设置与flash密切相关的一些参数。

为了在一个VxWorks映像中包含TrueFFS,必须编辑config.h文件并定义INCLUDE_TFFS。这使得VxWorks的初始化代码调用tffsDTV()来创建管理TrueFFS所需的结构和全局变量,并为所有挂接了的flash设备注册socket组件驱动。在链接的时候,通过解析与tffsDrv()相关联的符号(symbols)可以将TrueFFS所必需的软件模块链接到VxWorks映像中。

为了支持TrueFFS,每一个BSP必须包含一个sysTffs.c文件。它将trueFFS所有的层(翻译层,socket层和MTD)链接到一起并和VxWorks绑定。因此,必须编辑这个文件并决定哪一种MTD和翻译层模块应该包含到TrueFFS中。

 

在重新编译VxWork:映像并重启目标系统后,你应该可以使用诸如格式化flash、创建TrueFFS块设备、绑定此块设备到dosFs所必要的功能。

配置和使用TrueFFS配置VxWorks使其包含TrueFFS需要编辑如下:1)Makefile中加入sysTffs.o2)config.h中包含TrueFFS3)sysLib.c中调整ROM区的描述;4)sysTffs.c中确定包含在TrueFFS中的功能特点。

当启动该映像后,它会自动运行tffsDrv()。这个函数自动为每一个flash设备注册一个socket组件。这时flash设备还没有挂上块设备驱动。但socket组件驱动已经为调用tffsDevFormat()函数提供了充足的条件。为了使用TrueFFS,必须用这个函数来格式化flash媒体。为了在socket组件的顶部创建一个TrueFFS块设备并mountdos文件系统到这个块设备上,还得调用usrTffsConfig()函数。

3.3 VxWorks的网络通信

VxWorks具有强大的网络功能(如图3)。标准的VxWorks采用了与4.4BSD TCP/IP兼容的实时网络协议栈,使得网络开发变得易于进行和方便移植。VxWorks网络通信使用的传输媒介包括松藕合的串行线路(使用SLIP,CSIP,PPP)、标准的以太网连接以及紧祸合的利用共享内存的背板总线。传输媒介的上层通TCP/IPUDP/IP协议进行数据通信。网络通信是VxWorks系统主机与目标机测试的主要连接,VxWorks也提供了FTP,Telnet,BOOTP等各种网络服务。

 

VxWorks支持两种形式的网络驱动,一种是BSD驱动支持通用的BSD4.4网络,API,结构等,另一种是END网络驱动,是VxWorks独有的,叫做增强型的网络模型。它主要特点就是加了一个MUX模块,管理所有END设备,使得协议与硬件无关,并且通过MUX支持数据包轮询发送和接收。网络驱动的调用主要在“\tarQet\src\confia\usrnetwork.c”文件中。

4结束语

为了满足目前日益发展的信息家电的需要,本文设计了基于ARM的嵌入式家庭网关,简单介绍了该系统的硬件平台及几个接口电路的设计,重点研究了系统软件的移植和应用。随着宽带接入的普及和家庭网络的兴起,以及中国电信家庭网关规范的即将推出,家庭网关将会有很好的市场前景。

本文作者的创新点:针对信息家电的发展要求,设计了一种基于VxWoks的家庭综合接入网关。微处理器采用以ARM为核心的Samsung S3C4510B。简单介绍了该系统的硬件平台及几个接口电路的设计,重点研究了系统软件的移植和应用。

点赞

深圳市中电网络技术有限公司 Copyright© www.52solution.com 粤ICP备10202284号