![](http://img4.cpooo.com/files/201905/20/p/88/1207632_1558343269.jpg)
EPRO PR9268/301-000
EPROPR9268/301-100、PR9268/301-000RS232接口电路用于与上位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-83HAC3865-965661539-F3R0430993687498803HNM00104-13R04314099783123HNM05050-13HNM05067-150035600121220519-493HXD1000-5869964752399160279110093699611679967014997236899807349110253491102535997620799783239981192997059799806772326055-7399176209928253993065099307009930800993080199308029930803993080499308059930806993080799308089930810993081199308149930815993081699308189930819993082199308229930823993082499308259930826993082799308289930834993083599308363HAC025314-0013HAC025314-0023HAC025314-0033HAB8268-199635073HNM12127-1911007283HAA7601-5068960011-RP91201869996174568960011-NG3HAC0966-823HAC5707-13HAC7704-13HAC7705-13HAC7706-13HAC7708-13HAC7709-13HAC5089-13HAC5127-13HNA011053-0093HAC14257-13HAC16062-130459663049125304190891207685912017913HEA802988-0013HAC028940-0033HAC028939-0033HEA801900-0013HEA801901-001E5038188803HAC030211-0043HNA011620-0013HNE00019-13HXH1000-4313HXH1000-4333HAA2246-13HNA001670-0013HAA0001-UA6932109-163550006-4124185238804185278804185918904185928804185938804185948804185958805007008805007028805018258805059528805059558803HAC028954-004E418521880E418522880E418524880E418525880E418590880E418591880E501820880E501821880E501822880E501823880E5018248805059518804181298803HNE09395-13HNE04993-13HNE08712-1304308130430823HAC028485-0015511670011SFA616102R11033HAC17734-15397025-117435050037435050043HNM02995-13HAC023841-0011SFA616503R10011SFA616510R10011SFA611102R11051SFA616102R42253HAC026079-0013HAC17151-14186210023HAC026549-0063HAC15434-13681460015003550015003550025033751805562080012171205-2282521594-12529168-102529168-563HAB7393-13HAC027569-0013HAC12880-13HEA801723-0013HXB1000-423HXC1000-1303HXD1000-4013HXG1000-4952171078-152171078-252171078-463550006-2853HNM02730-13HNM02732-13HNM04598-13HNM04730-13HNM06219-13HNM06728-13HNP01237-13HNP01997-13HNP02352-13HNP03185-13HNP03254-13R0433863HNA006540-0013HNA009250-001912076149926155992615799375509937551993755399375549937555399192293HAC7434-13HAC7434-23HAA2194-23HAC031721-0013HXD0100-993HAB3206-12173195-1183I0043963I0043953HNA009472-0015008598803HNM01753-13HNM02523-16369901-4434425870013HEA802183-0015009048803HNM01740-13HXH0100-3713HNA006581-0013HNA006569-0013HAB4036-13HNA006570-0013HNA006585-001E3HAB4506-23HNM14194-13HNM09957-13HNM10597-13HNM09963-13HNM09960-13HNP02777-15372395-33HXD1115-440246-0000-70163550006-120CS-00293HNA006586-0013HNA006572-0013HXD1635-703HXD1139-1503HXD1139-1803HXD1139-2003HXD1139-2103HXD1139-3603HXD1139-503HXD1139-703HXD1139-753HXD1139-803HXD1139-95XP345450-AOB3HXD1252-1103HXD1252-1303HXD1252-1403HXD1252-1503HXD1252-2603HXD1252-803HXD1249-503HXD1249-703HXD1253-1503HXD1253-3003HXD1253-703HXD1277-703HXD1252-1003HXD1252-1203HXD1252-603HXD1139-1003HXD1139-2203HXD1253-2403HXD1602-1103HXD1602-2403HXD1602-1503HXD1602-1003HXD1602-1203HXD1601-1503HXD1601-1703HXD1601-703HXD1602-703HXD1602-803HAC020109-0013HAC023278-0013HAC026414-0013HAC023441-0013HAC17204-140246-0000-4573HXD1139-230)