EPRO PR9268/301-100、PR9268/301-000
RS232接口电路用于与上位PC机的串口通信,通过串口实现对操作系统的开发、调试。在系统的初始状态,EEPROM和Flash存储器均为空,此时需要设置系统启动配置模式为16位串行启动,以把初始化代码写到Flash中。
JTAG调试接口可对芯片内部的所有部件进行访问,通过该接口对系统进行软、硬件调试和编程,进行应用程序的开发、调试。
Flash存储器用于存放用户应用程序、嵌入式Linux操作系统以及其他在系统掉电后需要保存的用户数据等。
SDRAM存储器为系统程序的运行空间,系统及用户数据、堆栈均位于SDRAM存储器中。
EIDE接口用于实现IDE硬盘的接入。
1/10/100Mbps以太网物理层接口为系统提供以太网接入的物理通道。本系统通过该接口接上以太网物理层接口芯片KS8721BL,来实现高速的以太网接入,大大简化了系统的硬件电路设计。
3NAS系统的软件设计
当完成系统的硬件设计与调试以后,接下来的就是嵌入式Linux操作系统的移植以及NAS应用程序的开发。NAS系统的软件主要包括嵌入式Linux操作系统,设备驱动程序、文件共享协议及应用程序。NAS系统软件的体系结构如图4所示。
NAS系统软件的体系结构
作为一个NAS系统,整个系统中必须有一个核心操作系统,作为对硬件的管理,软件的协调执行,并对外部调用提供API。在核心操作系统之上是外部硬件设备驱动程序,使硬件能正常工作,为系统的正常运行提供基本条件。因为NAS主要是实现网络存储,所以要更多地考虑对网络和存储两方面功能的支持,在设备驱动之上是对一些基本网络协议的支持和对专用网络存储服务器进行网络数据访问的文件共享协议(SMB)的支持,使Windows、Linux用户都能对NAS设备进行访问。最上层是应用程序模块,提供UI(UserInterface),实现对NAS的配置和管理。
3.1嵌入式Linux操作系统
3.1.1嵌入式系统的Bootloader
上面的软件体系结构图没有单独列出初始化代码Bootloader,但它是嵌入式系统重要的一部分。对任何计算机系统来说,系统的启动都有一个初始化的过程,嵌入式系统也不例外。本嵌入式系统采用Redboot作为系统的Bootloader。Redboot是一个采用eCos开发的程序,是目前比较流行的一个功能强大、可移植性强的Bootloader[4]。

移植到本系统的Redboot除了具有一般Bootloader的硬件初始化和引导内核功能外,还具有以下功能:引导脚本以方便启动Linux操作系统,命令行接口,串行和网络通信协议,内嵌GDBstub以支持GDB调试,支持Flash映像文件系统,通过BOOTP协议支持网络引导,也可配置静态IP。Redboot是建立在eCos系统上的一个独立的最小系统,可通过eCos系统提供的配置工具(比如图形化的Configtool)对Redboot进行源代码级别的裁剪配置。
3.1.2嵌入式Linux的移植
由于嵌入式设备没有足够的内存和存储资源来完成编译过程,通常的方法是在主机上完成针对目标机的代码编译。这样的工具就是交叉编译工具,交叉编译工具集有专门的网站可以下载,并下载针对不同ARM处理器的Linux内核移植补丁。本系统采用Linux2.4.21的内核,采用的交叉编译工具集合为cross2.95.3。
嵌入式Linux是在标准的Linux基础上,经过适当的简化、裁剪,加入一些特定的功能,形成一个精巧、高效、满足特定应用需求的专用(定制)操作系统。它具有用户可裁剪、可配置的特点。NAS系统最重要的是存储,通过对Linux的裁剪,去掉许多通用的功能,使其成为一个专用于存储、精简、高
效的操作系统。
CirrusLogic公司已为内核写好了针对EP9315微处理器的补丁,加上这个补丁的内核就是一个能运行在基于EP9315微处理器系统上的版本,接下来就可以在此基础上进行内核的配置与编译。通过不断的配置、编译,产生合适的嵌入式Linux内核,使之在功能和大小之间取得优化的结果,以满足本系统的需要。
3.2Linux设备驱动程序开发
嵌入式系统的差异性决定了系统开发者不但需要进行特定硬件的设计,同时需要编写相关的设备驱动程序,它是内核用于完成对物理设备的控制操作的功能模块。除了CPU、内存以及其他很少的几个部分之外,所有的设备控制操作都必须由被控设备相关的代码,也就是驱动程序来完成[5]。
在Linux中,将各种设备大致分为3种基本类型:字符设备、块设备及网络设备。其中,字符设备是指采用字符流方式访问的设备,如字符终端、串口。对应的字符设备驱动的接口是标准的文件系统调用接口。
块设备是采用数据块方式访问的设备,如IDE硬盘等。由于块设备通常都提供文件系统支持,因此常用的设备访问方式是通过文件来进行的。字符设备和块设备在Linux中都被看成是一种特殊的文件,称为“设备文件”。由于每个设备都至少由文件系统中的一个文件来代表,这样的设备文件在系统中就唯一确定了对应的设备。网络设备是采用数据包传输方式访问的设备。与前两者不同,Linux采用的方法是给它们分配一个唯一的名字(比如eth0);同时,内核和网络设备驱动间的通信采用了一套与数据包传输相关的函数,如最常见的套接字(socket)接口。网络设备通过ifconfig系统调用来创建和配置。
其他的还有一些驱动程序不属于以上3类,比如USB等总线驱动。它们一般是作为内核提供的公共服务,和其他驱动联合起来使用。
3.3文件共享协议
由于NAS服务器采用Linux操作系统,客户机PC一般都是Windows系统,而Windows和Linux平台之间的文件格式是完全不同的,因此Linux不能对Windows用户直接提供基本服务。本系统通过应用SMB协议实现这种功能[6]。Samba是一套使用SMB(ServerMessageBlock)协议的应用程序,通过支持这个协议,Samba允许Linux服务器与WindowsPC机之间进行通信。本系统采用的Samba的版本为samba3.0.20b。
在开发过程中,需要在Linux服务器上进行所有的软件开发。本系统通过建立网络文件系统(NetworkFileSystem,NFS),把Linux服务器上的特定分区共享到目标系统上,实现在目标系统上操作Linux服务器和在线对程序进行调试和修改。
3HXA1000-8
3HAC3865-96
5661539-F
3R 043099
368749880
3HNM 00104-1
3R 043140
9978312
3HNM 05050-1
3HNM 05067-1
500356001
21220519-49
3HXD1000-586
9964752
39916027
91100936
9961167
9967014
9972368
9980734
91102534
91102535
9976207
9978323
9981192
9970597
9980677
2326055-73
9917620
9928253
9930650
9930700
9930800
9930801
9930802
9930803
9930804
9930805
9930806
9930807
9930808
9930810
9930811
9930814
9930815
9930816
9930818
9930819
9930821
9930822
9930823
9930824
9930825
9930826
9930827
9930828
9930834
9930835
9930836
3HAC025314-001
3HAC025314-002
3HAC025314-003
3HAB8268-1
9963507
3HNM 12127-1
91100728
3HAA7601-50
68960011-RP
91201869
9961745
68960011-NG
3HAC0966-82
3HAC5707-1
3HAC7704-1
3HAC7705-1
3HAC7706-1
3HAC7708-1
3HAC7709-1
3HAC5089-1
3HAC5127-1
3HNA011053-009
3HAC14257-1
3HAC16062-1
3045966
3049125
3041908
91207685
91201791
3HEA802988-001
3HAC028940-003
3HAC028939-003
3HEA801900-001
3HEA801901-001
E503818880
3HAC030211-004
3HNA011620-001
3HNE 00019-1
3HXH1000-431
3HXH1000-433
3HAA2246-1
3HNA001670-001
3HAA0001-UA
6932109-1
63550006-412
418523880
418527880
418591890
418592880
418593880
418594880
418595880
500700880
500702880
501825880
505952880
505955880
3HAC028954-004
E418521880
E418522880
E418524880
E418525880
E418590880
E418591880
E501820880
E501821880
E501822880
E501823880
E501824880
505951880
418129880
3HNE 09395-1
3HNE 04993-1
3HNE 08712-1
3043081
3043082
3HAC028485-001
551167001
1SFA616102R1103
3HAC17734-1
5397025-11
743505003
743505004
3HNM 02995-1
3HAC023841-001
1SFA616503R1001
1SFA616510R1001
1SFA611102R1105
1SFA616102R4225
3HAC026079-001
3HAC17151-1
418621002
3HAC026549-006
3HAC15434-1
368146001
500355001
500355002
503375180
556208001
2171205-228
2521594-1
2529168-10
2529168-56
3HAB7393-1
3HAC027569-001
3HAC12880-1
3HEA801723-001
3HXB1000-42
3HXC1000-130
3HXD1000-401
3HXG1000-49
52171078-1
52171078-2
52171078-4
63550006-285
3HNM 02730-1
3HNM 02732-1
3HNM 04598-1
3HNM 04730-1
3HNM 06219-1
3HNM 06728-1
3HNP 01237-1
3HNP 01997-1
3HNP 02352-1
3HNP 03185-1
3HNP 03254-1
3R 043386
3HNA006540-001
3HNA009250-001
91207614
9926155
9926157
9937550
9937551
9937553
9937554
9937555
39919229
3HAC7434-1
3HAC7434-2
3HAA2194-2
3HAC031721-001
3HXD0100-99
3HAB3206-1
2173195-118
3I 004396
3I 004395
3HNA009472-001
500859880
3HNM 01753-1
3HNM 02523-1
6369901-443
442587001
3HEA802183-001
500904880
3HNM 01740-1
3HXH0100-371
3HNA006581-001
3HNA006569-001
3HAB4036-1
3HNA006570-001
3HNA006585-001
E3HAB4506-2
3HNM 14194-1
3HNM 09957-1
3HNM 10597-1
3HNM 09963-1
3HNM 09960-1
3HNP 02777-1
5372395-3
3HXD1115-4
40246-0000-701
63550006-120
CS-0029
3HNA006586-001
3HNA006572-001
3HXD1635-70
3HXD1139-150
3HXD1139-180
3HXD1139-200
3HXD1139-210
3HXD1139-360
3HXD1139-50
3HXD1139-70
3HXD1139-75
3HXD1139-80
3HXD1139-95
XP345450-AOB
3HXD1252-110
3HXD1252-130
3HXD1252-140
3HXD1252-150
3HXD1252-260
3HXD1252-80
3HXD1249-50
3HXD1249-70
3HXD1253-150
3HXD1253-300
3HXD1253-70
3HXD1277-70
3HXD1252-100
3HXD1252-120
3HXD1252-60
3HXD1139-100
3HXD1139-220
3HXD1253-240
3HXD1602-110
3HXD1602-240
3HXD1602-150
3HXD1602-100
3HXD1602-120
3HXD1601-150
3HXD1601-170
3HXD1601-70
3HXD1602-70
3HXD1602-80
3HAC020109-001
3HAC023278-001
3HAC026414-001
3HAC023441-001
3HAC17204-1
40246-0000-457
3HXD1139-230
