当前位置:文档之家› 在嵌入式Linux上实现JFFS文件系统

在嵌入式Linux上实现JFFS文件系统

在嵌入式Linux上实现JFFS文件系统
在嵌入式Linux上实现JFFS文件系统

在嵌入式Linux上实现JFFS文件系统

刘伟平,毛玉良,张东卫,沈 庆

(东南大学机械工程系,江苏南京 210096)

摘 要:通过在嵌入式操作系统uClinux上实现可读写JFFS文件系统的实例,介绍了在嵌入式系统中使用Flash芯片的方法。

关键词:嵌入式系统;uClinux;Flash;JFFS文件系统

中图分类号:TP316.81 文献标识码:B 文章编号:1008 5300(2003)05 0051 03

Realizating JFFS File System in Embeded L inux

LIU Wei ping,MAO Yu liang,ZH AN G Dong wei,SH EN Qing

(Dep artment o f Mechanical E ngineering,Southeast University,N anj ing210096,China) Abstract:This article introduces a method of using Flash in embeded systems through an ex ample of realiz ing JFFS file system in embeded Linux.

Key Words:Embeded system;uClinux;Flash;JFFS file system

1 引 言

近年来,随着电子技术的不断进步,嵌入式系统开发已成为热点,而Linux作为一个自由软件,也得到了极大的发展,嵌入式系统与Linux的结合,正日益被人们看好。Linux具有内核小,效率高,源代码开放等优点,还内含了完整的TCP/IP网络协议,很适合在嵌入式系统中使用。作为专门为嵌入式微处理器定制的小型化Linux,uClinux正是嵌入式Linux的优秀代表。在嵌入式系统开发中,Flash芯片以相对低廉的价格提供了高可靠性和高密度的存储,已成为嵌入式系统的重要组成部分。在很多嵌入式系统中,操作系统及应用程序直接固化在Flash上,系统启动时,代码直接在Flash上开始运行。

2 在嵌入式系统中使用Flash

当前的嵌入式系统开发,需要方便灵活地使用Flash,以嵌入式的Web Server为例,在运行过程中,要求能够动态地保存一些数据,并且当系统重新上电时,保存的数据依然存在。又比如将嵌入式处理器应用于工控领域,可能整个系统都集成在一小块电路板上,一些重要的工艺参数在控制过程中需要动态地改变并保存,而使用硬盘等存储介质又不太现实,在这种场合下,仅仅将Flash作为保存系统代码的ROM使用是 大材小用了。需要充分发挥Flash可擦写的优势,在系统运行过程中,动态地擦写Flash来保存数据。针对嵌入式系统多样、灵活、专用性强等特点,可以发挥嵌入式操作系统软件复用的优点,找到一种方便、快捷地使用Flash的方法来缩短开发时间,提升系统性能,嵌入式Linux就提供了这样一条捷径。由遍布全世界的自由软件开发者为Linux提供支持,使得在嵌入式Linux上使用Flash变的十分容易。

3 JFFS文件系统简介

我们使用的uClinux系统采用ROM FS作为根文件系统,它相对于一般的EXT2文件系统,具有节约空间的优势。但是ROMFS是一种只读的文件系统,不支持动态擦写保存,对于系统需要动态保存的数据只能采用虚拟ram盘的方法(ram盘使用EXT2文件系统)。

针对ROMFS文件系统存在的问题,我们可以使用JFFS文件系统(Journaling FlashFile System)。JFFS 文件系统是瑞典的Ax isCommunications公司(w w w. ax https://www.doczj.com/doc/ef17551440.html,)在GNU GeneralPublic License下发布的自

51

2003年第19卷第5期2003.Vol.19No.5

电子机械工程

Electro-Mechanical Engineering

收稿日期:2002 07 14

由软件,主要用于嵌入式Linux。只需要在自己的嵌入式Linux中加入JFFS文件系统并做少量的改动,就可以使用JFFS文件系统。通过JFFS文件系统,可以用Flash来保存数据,即将Flash作为系统的硬盘来使用。可以像操作硬盘上的文件一样操作Flash芯片上的文件和数据。系统运行的参数可以实时保存到Flash芯片中,在系统断电后数据仍然存储在Flash芯片中。

作为一种EEPROM,Flash可分为两种主要类型: NOR Flash和NAND Flash。一片没有使用过的Flash,每一位的值都是逻辑1,对Flash的写操作就是将特定位的逻辑1改变为逻辑0。而擦除就是将逻辑1改变为逻辑0。Flash的数据存储是以块(Block)为单位来组织的,Flash只能整块擦除,而Flash的寿命是以擦除次数来计算的,一般是每块100,000次。为了保证某块不早于其他块到达其寿命,就有必要在所有块中尽可能地平均分配擦除次数,这就是 损耗平衡。JFFS文件系统是一种 追加式的文件系统,新的数据总是被追加到上次写入数据的后面。这种 追加式的结构就自然实现了 损耗平衡。

要加入JFFS文件系统,需实现Linux下对Flash 芯片的驱动,Axis Communications公司提供了实现代码。在这个系统中,代码包括uClinux/linux/drivers/ block/flash.c和uClinux/linux/include/linux/flash.h。

在flash.c中的设备初始化函数flash init()里,将Flash作为块设备向系统注册:

#ifdef CONFIG BLK DEV FLASH/*向内核注册,主设备号MAJOR NR=60*/

if(register blkdev(MAJOR NR,DEV ICE NAME,&flash block fops)){

printk(KERN ERR DEVICE NAME: U nable to get major%d\n,

MAJOR NR);

return EBUSY;

}

/*注册实际的块I/O操作及设备大小和块大小*/ blk dev!MAJOR NR?.request fn=DE V ICE REQU EST;

blk size!MAJOR NR?=flash sizes;

blksize size!MAJOR NR?=flash blk sizes;

read ahead!MAJOR NR?=1;

printk(Flash/ROM block device v2.1,(c)

1999Ax is Communications AB\n);#endif

4 开发环境简介

这里采用的是宿主机+目标板的开发模式,宿主机为PC+redhat7.2,目标板为Motorola Coldfire5272 +uClinux,uClinux版本为2.0.38,在宿主机上将u Clinux和应用程序编译后,下载到目标板的Flash中运行。我们使用的Flash是2片AMD AM29LV160BT,大小为2M字节,工作在16bit双字节模式。对于Motorola Coldfire5272,其RAM、Flash、外设I/O参与统一平坦编码,也没有地址变换。2片Flash的地址范围设置为:0x ffb00000-0xffcfffff和0xffd00000-0x ffefffff。每片Flash共有35个扇区,除前四个扇区不规则,大小分别为:16K,8K,8K,32K 外,剩余31个扇区均为64K字节大小。

5 实现JFFS文件系统的实例

为实现Flash上的JFFS文件系统,需要在内核中加入对JFFS文件系统和Flash设备的支持;针对具体的Flash芯片修改设备驱动程序;生成设备节点并将JFFS文件系统挂接到Flash设备上。

5.1 在内核中加入对JFFS文件系统和Flash设备的

支持

标准Linux可以模块的形式加载各种类型的设备驱动,要求在设备驱动中编制两个入口点:init mod ule()和cleanup module();uClinux2.0内核不支持内核模块LKM(loadable kernel modules),设备驱动及文件系统要静态地编译进内核。我们需要:

(1)修改uClinux/linux/.config文件

将#CONFIG DEV FLASH is not set改为CONFIG DEV FLASH=y;将#CONFIG JFFS FS is not set改为CONFIG JFFS FS=y 。

(2)修改uClinux/linux/include/linux/autoconf.h

将#undef CONFIG DEV FLASH改为# define CONFIG DEV FLASH1;将#undef CON FIG JFFS FS改为#define CONFIG JFFS FS1。

完成上述修改并编译后,JFFS文件系统和Flash 设备就被编译入内核,同时在系统引导时加入了对JFFS文件系统和Flash设备的初始化函数的调用。5.2 针对具体设备修改Flash设备驱动程序

Axis Communications在发布JFFS的同时,也给

52电子机械工程第19卷

出了Flash设备的驱动程序。此驱动程序支持AMD, T oshiba等公司的主流系列Flash芯片,需要根据自己系统中具体Flash芯片的型号及配置,修改驱动程序,使Flash设备能够在嵌入式系统中正常工作。如果读者使用的是此驱动尚未支持的Flash芯片,只需仿照其他型号,将Flash型号加入此驱动程序即可。

下面,以系统中的Flash为例,给出uClinux/lin ux/drivers/block/flash.c中需要的修改:

(1)在文件的开头处,加入#define CONFIG BLK DEV FLASH。

(2)在flash probe(),chips!0?.start=(un signed char*)(0x f0200000),这个值取决于系统中实现JFFS的Flash芯片的起始地址,在第2片Flash上实现JFFS,其起始地址为0xffd00000,所以将其改为chips!0?.start=(unsig ned char*)(0x ffd00000),随后,需要根据芯片型号设置4个起始扇区的大小,系统中Flash的型号是AM29LV160BT。以下代码定义了起始4个扇区的大小:chip#bootsectorsize!0?= 0x8000;chip#bootsectorsize!3?=0x2000;chip# bootsectorsize!0?=0x2000;chip#bootsectorsize!3?=0x4000。

我们使用的Flash起始4个扇区的大小前文已经给出,所以需要将这4个值依次改为0x4000,0x2000, 0x2000,0x8000即可。

(3)在uClinux/linux/drivers/block/ll rw blk.c中的blk dev init()函数中,在flash init()前加入flash probe()调用执行对flash的检测。

5.3 将JFFS文件系统挂接到Flash设备上

首先在宿主机的uClinux/romfs/dev目录下新增设备节点:m knod flash0b6016;mknod flash1b6017;mknod flash2b6018。

在Flash芯片上建立起分区。这样,当重新编译内核并将内核下载到Flash中后,就可以在目标板的/dev目录下新增Flash设备文件供我们使用,目标板的uClinux系统启动之后,在目标板上执行mount t jffs/dev/flash1/mnt,就在flash1分区上建立起了JFFS文件系统,JFFS文件系统挂接在目标板/mnt目录下,可在此挂接目录上执行建立、删除目录,文件等操作。

6 结束语

开发的实例表明,开放源代码的Linux在嵌入式系统开发中有极大的优势,借助于Linux的开放性,我们能够灵活快捷地开发嵌入式系统应用。

参考文献:

[1] Alessandro Rubini.Linux设备驱动程序[M].北京:中国

电力出版社,2000.

[2] Daniel P.Bo vet&M arco Cesati.深入理解Linux内核

[M].北京:中国电力出版社,2001.

[3] David W oo dhouse.JF FS:T he Journalling Flash File Sys

tem[EB/O L].https://www.doczj.com/doc/ef17551440.html,,2002.

[4] Advanced M icr o Devices,I nc.Am29L V160B Datasheet

[EB/OL].ht tp://w https://www.doczj.com/doc/ef17551440.html,,1999.

作者简介:刘伟平(1978-),男,东南大学机械工程系硕士研究生;

毛玉良(1961-),男,东南大学机械工程系副教授。

(上接第24页)

式还很少,许多雷达电源一旦损坏,经常很难找到合适的电源来更换,甚至还要将原先的产品重新投产,延误了雷达整机的正常工作,费时费力。而实现标准化设计后,就可以生产出一定数量的标准电源备份件,不仅不会造成浪费,而且可以避免大量的重复劳动,大大增强了雷达电源的通用性、互换性、和维修性,提高了整个雷达系统生产的效率。

4 结束语

雷达电源的小型化、模块化、标准化是当今电源发展的总体趋势。电源结构的优化设计水平越高,则在雷达中采用的标准电源就会越来越多,这有利于缩短电源产品及雷达整机的研发周期,节约大量的原材料,提高雷达电源系统的工作性能,为整个雷达系统更安全、可靠的工作提供了保障。

参考文献:

[1] 赵殳.电子设备结构设计原理[M].南京:江苏科学

技术出版社,1986.

[2] 庚雷.新一代电源模块[J].电源世界,2000(11).

[3] 戴锅生.传热学[M].北京:高等教育出版社,1999.

[4] 赵殳.散热器的优化设计[J].电子机械工程,1993

(5).

[5] 谢少英.型材散热器的优化设计[J].电子机械工程,

2001(3).

作者简介:夏爱清(1969-),男,江苏盐城人,工程师,主要从事雷达电源系统的研制设计工作。

53

第5期 刘伟平等:在嵌入式Linux上实现JFFS文件系统

什么是嵌入式linux系统

什么是嵌入式linux系统? 一、什么是嵌入式linux? Linux从1991年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一,不仅可以与各种传统的商业操作系统分庭抗争,在新兴的嵌入式操作系统领域内也获得了飞速发展。嵌入式Linux(Embedded Linux)是指对标准Linux经过小型化裁剪处理之后,能够固化在容量只有几K或者几M字节的存储器芯片或者单片机中,适合于特定嵌入式应用场合的专用Linux操作系统。嵌入式Linux既继承了intelnet上无限的开放原代码资源,又具有嵌入式操作系统的特性。 二、嵌入式Linux的特点版权费:免费; 购买费用:媒介成本; 技术支持:全世界的自由软件开发者提供支持; 网络特性:免费而且性能优异; 软件移植:容易,代码开放,有许多应用软件支持; 应用产品开发周期:短,新产品上市迅速,因为有许多公开的代码可以参考和移植; 实时性能:RT_Linux,hardhat Linux 等嵌入式Linux支持实时性能; 稳定性:好; 安全性:好。 三、嵌入式Linux的市场前景和商业机会 嵌入式Linux有巨大的市场前景和商业机会,出现了大量的专业公司和产品,如Montavista、Lineo、Emi等。有行业协会,如Embedded Linux Consortum等。得到世界著名计算机公司和oem板级厂商的支持,例如IBM、Motorola、Intel等。传统的嵌入式系统厂商也采用了Linux策略如Lynxworks 、Windriver、QNX等。还有intelnet上的大量嵌入式Linux 爱好者的支持。嵌入式Linux支持几乎所有的嵌入式cpu和被移植到几乎所有的嵌入式oem板。 四、嵌入式Linux的应用领域嵌入式Linux的应用领域非常广泛,主要的应用领域有,信息家电:PDA,STB-Set-stopbox,Digital Telephone,Answering Machine,Screen Phone、数据网络:Ethernet switches,Router,Bridge,Hub,Remote access servers,ATM,Frame relay、远程通信、医疗电子、交通运输、计算机外设、工业控制、航空领域等。 五、嵌入式linux的优势嵌入式Linux的开发和研究是操作系统领域中的一个热点,目前已经开发成功的嵌入式系统中,大约有一半使用的是Linux。Linux之所以能在嵌入式系统市场上取得如此辉煌的成果,与其

嵌入式Linux系统的搭建与配置过程

1.摘要 (2) 2.UBOOT,LINUX内核,文件系统的介绍及相互关系..3 2.1嵌入式系统简介 (3) 2.2嵌入式Linux概述 (3) 2.3UBOOT简介 (4) 3.UBOOT的启动过程 (6) 4.内核的主要功能和裁剪 (7) 4.1Linux的编译 (7) 4.2嵌入式Linux的配置和剪裁 (8) 5.文件系统的制作过程 (8) 6.交叉编译器的搭建和环境变量的设置 (9) 7.驱动程序的编写过程与关键点 (11) 7.1Linux网络驱动程序的结构 (11) 7.2网络驱动程序的基本方法 (12) 7.3网络驱动程序中用到的数据结构 (12) 7.4常用的系统支持 (14) 7.5编写Linux网络驱动程序中需要注意的问题 (18) 8.参考文献 (20)

嵌入式系统是以应用为中心,以计算机为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序4部分组成,用于实现对其它设备的控制、监视或管理等功能。其广泛应用于控制领域、消费电子产品等行业,已成为现代电子领域的重要研究方向之一。嵌入式Linux的研究已经成为当前信息技术研究的热点,它的应用蕴含着巨大的商业价值,并且己经广泛的应用于各种信息家电、通讯产品、工业控制中。论文首先介绍了ARM和嵌入式Linux操作系统的特点和当前的发展概况。然后阐述了嵌入式Linux 开发流程以及移植到具体硬件平台需要完成的工作,如U-Boot的移植、Linux内核的编译与裁剪、文件系统的制作、驱动程序的编写等。 关键字:嵌入式;ARM;嵌入式Linux;Linux内核;驱动程序

嵌入式Linux应用软件开发流程

从软件工程的角度来说,嵌入式应用软件也有一定的生命周期,如要进行需求分析、系统设计、代码编写、调试和维护等工作,软件工程的许多理论对它也是适用的。 但和其他通用软件相比,它的开发有许多独特之处: ·在需求分析时,必须考虑硬件性能的影响,具体功能必须考虑由何种硬件实现。 ·在系统设计阶段,重点考虑的是任务的划分及其接口,而不是模块的划分。模块划分则放在了任务的设计阶段。 ·在调试时采用交叉调试方式。 ·软件调试完毕固化到嵌入式系统中后,它的后期维护工作较少。 下面主要介绍分析和设计阶段的步骤与原则: 1、需求分析 对需求加以分析产生需求说明,需求说明过程给出系统功能需求,它包括:·系统所有实现的功能 ·系统的输入、输出 ·系统的外部接口需求(如用户界面) ·它的性能以及诸如文件/数据库安全等其他要求 在实时系统中,常用状态变迁图来描述系统。在设计状态图时,应对系统运行过程进行详细考虑,尽量在状态图中列出所有系统状态,包括许多用户无需知道的内部状态,对许多异常也应有相应处理。 此外,应清楚地说明人机接口,即操作员与系统间地相互作用。对于比较复杂地系统,形成一本操作手册是必要的,为用户提供使用该系统的操作步骤。为使系统说明更清楚,可以将状态变迁图与操作手册脚本结合起来。

在对需求进行分析,了解系统所要实现的功能的基础上,系统开发选用何种硬件、软件平台就可以确定了。 对于硬件平台,要考虑的是微处理器的处理速度、内存空间的大小、外部扩展设备是否满足功能要求等。如微处理器对外部事件的响应速度是否满足系统的实时性要求,它的稳定性如何,内存空间是否满足操作系统及应用软件的运行要求,对于要求网络功能的系统,是否扩展有以太网接口等。 对于软件平台而言,操作系统是否支持实时性及支持的程度、对多任务的管理能力是否支持前面选中的微处理器、网络功能是否满足系统要求以及开发环境是否完善等都是必须考虑的。 当然,不管选用何种软硬件平台,成本因素都是要考虑的,嵌入式Linux 正是在这方面具有突出的优势。 2、任务和模块划分 在进行需求分析和明确系统功能后,就可以对系统进行任务划分。任务是代码运行的一个映象,是无限循环的一段代码。从系统的角度来看,任务是嵌入式系统中竞争系统资源的最小运行单元,任务可以使用或等待CPU、I/O设备和内存空间等系统资源。 在设计一个较为复杂的多任务应用系统时,进行合理的任务划分对系统的运行效率、实时性和吞吐量影响都极大。任务分解过细会不断地在各任务之间切换,而任务之间的通信量也会很大,这样将会大大地增加系统的开销,影响系统的效率。而任务分解过粗、不够彻底又会造成原本可以并行的操作只能按顺序串行执行,从而影响系统的吞吐量。为了达到系统效率和吞吐量之间的平衡折中,在划分任务时应在数据流图的基础上,遵循下列步骤和原则:

嵌入式Linux系统期末考试简答题、运用题

简答题与应用题 什么是嵌入式系统?主要有什么特点? 以应用为中心,以计算机技术为基础的, 并且软件硬件是可剪裁的, 能满足应用系统对功能、 可靠性、成本、 体积、功耗等指标的严格要求的专用计算机系统。他可以实现对其他设备的控制、监视或者管理等功能。 与通用的 计算机系统相比,特点为: (1) (2) (5) 嵌入式系统通常由嵌入式处理机、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件等几大部分组成。 4、什么是Linux ?什么是嵌入式 Linux ? 答:严格来讲,Linux 是指由Linux 本人维护并不断更新的内核 。 一个嵌入式Linux 系统指的是一个基于 Linux 内核的,但不包含有关这个内核的任何专业的库或是用户工具 的嵌入式系统。 Linux 内核构建嵌入式操作系统有什么优势(优良特性)? 程度代码是可以获取的,可靠度高; 有完整的源码,软件丰富并且免费; 得到众多硬件生产家的广泛支持;包括 cpu 、计算机外 围设备 完善的通信协议、软件标准和文件管理机制; 提供完全免费且优秀的开发工具; 广泛的社群支持 无需购买lice nee ,是免费的; 不依赖特定厂商、供应商; 成本相对低廉。 6、 RTOS (嵌入式操作系统)强调的实时是什么概念?与中断的关系? 答:实时指的是特定操作所消耗的时间(以及空间)的上限是可预知的。操作系统能够在规定响应时间内完成客 户服务程序。中断程序响应中断并完成 是在固定时间内。 7、什么是实时LinUX ?涉及到哪些软硬件内容? 答:实时LinUX ( RT-Linux )通过在Linux 内核与硬件中断之间增加一个精巧的可抢先的实时内核 ,把标准的Linux 内核作为实时内核的一个进程与用户进程一起调度 ,标准的Linux 内核的优先级最低,可以被实时进程抢断。 正 常的Linux 进程仍可以在Linux 内核上运行,这样既可以使用标准分时操作系统即 Linux 的各种服务,又能提 供低延时的实时环境。它在硬件上涉及到硬件中断,软件上涉及到对高优先级的实时硬件中断的快速响应。 能在规定的时间内完成对突发事件的处理的 Linux 系统; 软件:中断服务程序、进程调度程序,硬件:嵌入式系统所采用的中断管理硬件。 8、试简要说明Linux 内核构成,并简要说明各部分的功能? 答: MMU :内存管理单元,完成地址映射(应用虚拟地址方式) VFS :虚拟文件管理系统,提供了统一管理计算机资源的途径。使统一规范计算机资源的使用格式成为可能,方 1、 答: 面向特定应用,一般都有实时要求; 集先进性的计算机技术、半导体工艺、电子技术和通信网络技术于一体的并且在不断创新的知识集 成系统; 嵌入式系统是和具体应用对象有机结合在一起,因而其升级换代也是和具体的产品同步进行的。 嵌入式系统的软 硬件设计着重于高效率性。在最大限度满足应用需求的前提下,降低成本是必须要 考虑的主要问题。 嵌入式系统软件一般都固化在存储器芯片中。 (3) (4) 5、 用 答:( 1) (2) (3) (4) (5) (6) (7) (8) () 2、 答: 3、嵌入式操作系统的作用是什么?

嵌入式Linux根文件系统制作

实训项目四-嵌入四Linux系统根文件系统制作一. 项目实施目的 了解 UP-CUP2440 型实验平台Linux 系统下根文件系统结构 掌握根文件系统的搭建过程 掌握busybox、mkcramfs等工具的使用方法 二. 项目主要任务 使用busybox生成文件系统中的命令部分,使用mkcramfs工具制作CRAMFS 格式的根文件系统。 分析根文件系统etc目录下重要配置文件的格式及语法,熟悉根文件系统的启动过程 三. 基本概念 1.文件系统基本概念 Linux的一个最重要特点就是它支持许多不同的文件系统。这使Linux非常灵活,能够与许多其他的操作系统共存。Linux支持的常见的文件系统有:JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。随着时间的推移, Linux支持的文件系统数还会增加。Linux是通过把系统支持的各种文件系统链接到一个单独的树形层次结构中,来实现对多文件系统的支持的。该树形层次结构把文件系统表示成一个整个的独立实体。无论什么类型的文件系统,都被装配到某个目录上,由被装配的文件系统的文件覆盖该目录原有的内容。该个目录被称为装配目录或装配点。在文件系统卸载时,装配目录中原有的文件才会显露出来。在Linux 文件系统中,文件用i节点来表示、目录只是包含有一组目录条目列表的简单文件,而设备可以通过特殊文件上的I/O 请求被访问。 2.常见的嵌入式文件系统 嵌入式Linux系统一般没有大容量的磁盘,多使用flash存储器,所以多采用基于Flash(NOR和NAND)的文件系统或者RAM内存的文件系统。 (1)Flash根据结构不同分为 NOR Flash和NAND Flash。基于flash的文件系统主要有: jffs2:RedHat基于jffs开发的文件系统。

嵌入式Linux系统

10-1 嵌入式Linux系统概述 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统。 Linux在所有的操作系统中,Linux 是一个发展最快、应用最为广泛的操作系统。 所谓嵌入式Linux,是指Linux 在嵌入式系统中应用,而不是什么嵌入式功能。实际上,嵌入式Linux 和Linux 是同一件事。 10-2 Linux启动过程综述 一. Bootloader 二.Kernel引导入口 三.核心数据结构初始化--内核引导第一部分 四.外设初始化--内核引导第二部分 五.init进程和inittab引导指令 六.rc启动脚本 七.getty和login 八.bash 附:XDM方式登录 Bootloader 简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。 在Alpha/AXP平台上引导Linux通常有两种方法,一种是由MILO及其他类似的引导程序引导,另一种是由Firmware直接引导。MILO功能与i386平台的LILO相近,但内置有基本的磁盘驱动程序(如IDE、SCSI等),以及常见的文件系统驱动程序(如ext2,iso9660等),firmware有ARC、SRM两种形式,ARC具有类BIOS界面,甚至还有多重引导的设置;而SRM

嵌入式LINUX试题

一、单项选择题 1.在宿主机上开启tftp服务时,所要修改的配置文件为()A./etc/exports B./etc/xinetd.d C.以上都不对 D./etc/xinetd.d/tftp 答案:D 2.内核在配置结束后,会将用户的选择结果保存在文件()中A.defconfig B.config C.default D..config 答案:D 3.u-boot指令中,下载文件的命令是() A.setenv B.reset C.tftp D.ping 答案:C 4.Kconfig文件中生成新的配置菜单使用() A.menu B.help C.default D.config 答案:A 5.在内核解压缩目录的Makefile文件中修改的ARCH变量实际是在指定()A.优化参数 B.目标系统架构 C.交叉编译器 D.编译参数 答案:B 6.在构建嵌入式linux平台过程中,具备开发能力的计算机我们称之为()A.计算机 B.宿主机 C.服务器 D.目标系统 答案:B 7.内核在编译时所依赖的编译规则文件是() A..config B.Makefile C.Make D.File 答案:B 8.linux下所使用的串口调试工具是()

B.nfs C.minicom D.tftp 答案:C 9.内核配置菜单生成时所依赖的文件是() A.config B.Kconfig C.Makefile D.kconfig 答案:B 10.U-Boot下tftp下载文件到目标系统的内存当中,在内存当中默认的地址是()A.0x30000000 B.0x30008000 C.0x30000100 D.0x30080000 答案:B 11.在操作过程中,内核编译所生成的内核压缩可执行文件是()A.s3c2440 B.linux-2.6.32.2 C.zImage D.选项均不真确 答案:C 12.系统环境变量中用来作为可执行文件搜索路径的变量是(); A.PWD B.HISTORY_SIZE C.LD_LIBRARY_PATH D.PATH 答案:D 13.创建设备文件有手动创建与自动创建之分,那么手动创建时标示设备所属种类时是用()来区分的。 A.次设备号 B.num C.-m D.主设备号 答案:D 14.嵌入式系统是面向()、实现特定功能的、软硬件可裁剪的计算机控制系统; A.家庭 B.特定领域 C.工厂 D.学校 答案:B 15.在Linux下,打补丁时所使用的命令是() A.patch

嵌入式LINUX系统的实现

嵌入式LI N UX系统的实现 检修厂 王小康 摘 要 嵌入式系统正变得越来越流行。被广泛地应用在各种网络设备、控制设备以及个人的数字工具如PDA中。文章论述了作者在嵌入式操作系统领域里所做的研究和实践工作,主要的工作围绕着将L i nux改造成嵌入式操作系统所进行的具体工作展开,包括单板配置代码,系统的引导与修改,核心映象定制与修改和调试工作。 1 引言 在当今数字信息技术、网络技术高速发展与发达的后PC时代,嵌入式系统无处不在,并将不断涌现出新的嵌入式应用系统。传统的操作系统软件[1][2]很难有效地支持嵌入式应用系统的快速开发,因而研究与开发嵌入式操作系统,对有效的支持广大的嵌入式应用系统开发具有重大意义,是十分必要的。L i n ux正在向嵌入式领域的各个方面进军,在不久的将来,我们可以发现嵌入式L i n ux的广泛的应用:各种车载嵌入式设备(GPS,电子地图)、消费电子设备、手持电脑(H PC,PDA)、蜂窝电话、Internet接入设备、工控设备以及各种网络的基础设施(网管设备,路由,网关,交换器,HUB等)[3]。 本文是围绕着嵌入式L i n ux系统的实现展开的。首先介绍嵌入式L i n ux系统的硬件结构和软件结构;然后对基于L i n ux的嵌入式实时操作系统的实现过程进行详细的阐述;最后是简短的总结。 2 嵌入式L inux系统的硬件结构 嵌入式L i n ux系统硬件系统是个微形化的专用PC,它包括系统主机扳、通讯接口板、图象处理和显示板、输入控制板以及存储板等。主机板可采用嵌入式X86CPU系列,图象处理和显示板能支持MPEG数字解压缩和电视终端显示,输入控制包括遥控键盘、遥控器和其他一些输入设备接口,存储板主要 要求。 7 设计报警和连锁保护系统 报警系统的作用在于及时提醒操作人员密切注意监视生产状况,以便采取措施减少事故的发生,连锁保护系统是指当生产出现严重事故时,为保证设备和人身的安全,使各个设备按一定次序紧急停下来。在焙烧炉的炉顶温度控制中,根据工艺要求,一个高限报警温度为480度;三个连锁保护温度设定,一个超高限报警温度自动连锁烧嘴,引起烧嘴自动熄火,从而立即引起调节阀的自动关闭,防止煤气流入焙烧炉,一个低限位报警温度用来连锁模式的切换,使模式从酸模式自动切换到水模式,另一个超低限位报警温度用来连锁三个喷枪,使得三个喷枪自动从焙烧炉提升出来,从而保护喷枪。 8 控制系统的调试和运行状况 控制系统安装完成后,应随生产过程进行试运行,按控制要求检查和调整各控制仪表和设备的工作状况,包括调节器的P、I等参数整定,依次将全部控制系统投入运行,在从投入运行到现在有半年多的时间了,发现焙烧炉的炉顶温度控制效果好,系统运行比较稳定。 20

嵌入式linux下的文件系统

嵌入式linux下常见的文件系统RomFS:只读文件系统,可以放在ROM空间,也 可以在系统的RAM中,嵌入式linux中常用来作 根文件系统 ?RamFS:利用VFS自身结构而形成的内存文件系 统,使用系统的RAM空间 ?JFFS/JFFS2:为Flash设计的日志文件系统?Yaffs:专门为Nand Flash设计 ?proc:为内核和内核模块将信息发送给进程提 供一种机制,可以查看系统模块装载的信息?devFS:设备文件系统 Linux上的Ext2fs ?支持4 TB 存储、文件名称最长1012 字符 ?可选择逻辑块 ?快速符号链接 ?Ext2不适合flash设备 ?是为象IDE 设备那样的块设备设计的,逻辑块大小必 须是512 byte、1 KB、2KB等 ?没有提供对基于扇区的擦除/写操作的良好管理 ?如果在一个扇区中擦除单个字节,必须将整个扇区复制到RAM,然后擦除,再重写入

?在出现电源故障时,Ext2fs 是不能防止崩溃的 ?文件系统不支持损耗平衡,缩短了flash的寿命 jffs/jffs2文件系统的优缺点 ?日志文件系统 ?提供了更好的崩溃、掉电安全保护 ?jffs2支持对flash的均匀磨损 ?在扇区级别上执行闪存擦除/写/读操作要 比Ext2文件系统好 ?文件系统接近满时,JFFS2 会大大放慢运行 速度——垃圾收集 Nand上yaffs文件系统的优势 ?专门为Nand flash设计的日志文件系统 ?jffs/jffs2不适合大容量的Nand flash ?jffs的日志通过jffs_node建立在RAM中,占用RAM空间:对于128MB的Nand大概需要4MB的空间来维护节点 ?启动的时候需要扫描日志节点,不适合大容量 的Nand flash ?FAT系统没有日志 编译yaffs文件系统 ?mtd的最新补丁升级? ?接口更新,适合与yaffs

嵌入式Linux系统开发教程很完整的习题答案

嵌入式Linux系统开发教程很完整的习题答案

参考答案 第一章 一、填空题。 1、嵌入式系统主要融合了计算机软硬件技术、通信技术和微电子技术,它是将计算机直接嵌入到应用系统中,利用计算机的高速处理能力以实现某些特定的功能。 2、目前国内对嵌入式系统普遍认同的定义是:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 3、嵌入式系统一般由嵌入式计算机和执行部件组成,其中嵌入式计算机主要由四个部分组成,它们分别是:硬件层、中间层、系统软件层以及应用软件层。 4、嵌入式处理器目前主要有ARM、MIPS、Power PC、68K等,其中arm处理器有三大特点:体积小、低功耗、的成本和高性能,16/32位双指令集,全球合作伙伴众多。 5、常见的嵌入式操作系统有:Linux、Vxworks、WinCE、Palm、uc/OS-II和eCOS。 6、嵌入式系统开发的一般流程主要包括系统需求分析、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最后得到最终产品。 二、选择题 1、嵌入式系统中硬件层主要包含了嵌入式系统重要的硬件设备:、存储器(SDRAM、ROM等)、设备I/O接口等。(A) A、嵌入式处理器 B、嵌入式控制器 C、单片机 D、集成芯片 2、20世纪90年代以后,随着系统应用对实时性要求的提高,系统软件规模不断上升,实时核逐渐发展为,并作为一种软件平台逐步成为目前国际嵌入式系统的主流。(D) A、分时多任务操作系统 B、多任务操作系统 C、实时操作系统 D、实时多任务操作系统 3、由于其高可靠性,在美国的火星表面登陆的火星探测器上也使用的嵌入式操作系统是。(B) A、Palm B、VxWorks C、Linux D、WinCE [在此处键入]

嵌入式Linux系统期末考试简答题运用题

简答题与应用题: 1、什么是嵌入式系统?主要有什么特点? 答:以应用为中心,以计算机技术为基础的,并且软件硬件是可剪裁的,能满足应用系统对功能、可靠性、成本、体积、功耗等指标的严格要求的专用计算机系统。他可以实现对其他设备的控制、监视或者管理等功能。 与通用的计算机系统相比,特点为: (1)面向特定应用,一般都有实时要求; (2)集先进性的计算机技术、半导体工艺、电子技术和通信网络技术于一体的并且在不断创新的知识集成系统; (3)嵌入式系统是和具体应用对象有机结合在一起,因而其升级换代也是和具体的产品同步进行的。 (4)嵌入式系统的软硬件设计着重于高效率性。在最大限度满足应用需求的前提下,降低成本是必须要考虑的主要问题。 (5)嵌入式系统软件一般都固化在存储器芯片中。 2、嵌入式系统有哪几个部分? 答:嵌入式系统通常由嵌入式处理机、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件等几大部分组成。3、嵌入式操作系统的作用是什么? *实际是一组软件模块集合 满足多任务处理、稳定运行、安全可靠、占用系统资源少、特有的实时事件处理、便于维护和管理、简洁良好的用户界面 4、什么是Linux?什么是嵌入式Linux? 答:严格来讲,Linux是指由Linux本人维护并不断更新的内核。 一个嵌入式Linux系统指的是一个基于Linux内核的,但不包含有关这个内核的任何专业的库或是用户工具的嵌入式系统。 5、用Linux内核构建嵌入式操作系统有什么优势(优良特性)? 答:(1)程度代码是可以获取的,可靠度高; (2)有完整的源码,软件丰富并且免费; (3)得到众多硬件生产家的广泛支持;包括cpu、计算机外围设备 (4)完善的通信协议、软件标准和文件管理机制; (5)提供完全免费且优秀的开发工具; (6)广泛的社群支持 (7)无需购买licence,是免费的; (8)不依赖特定厂商、供应商; (9)成本相对低廉。 6、RTOS(嵌入式操作系统)强调的实时是什么概念?与中断的关系? 答:实时指的是特定操作所消耗的时间(以及空间)的上限是可预知的。操作系统能够在规定响应时间内完成客户服务程序。中断程序响应中断并完成是在固定时间内。 7、什么是实时Linux?涉及到哪些软硬件内容? 答:实时Linux(RT-Linux)通过在Linux内核与硬件中断之间增加一个精巧的可抢先的实时内核,把标准的Linux 内核作为实时内核的一个进程与用户进程一起调度,标准的Linux内核的优先级最低,可以被实时进程抢断。正常的Linux进程仍可以在Linux内核上运行,这样既可以使用标准分时操作系统即Linux的各种服务, 又能提供低延时的实时环境。它在硬件上涉及到硬件中断,软件上涉及到对高优先级的实时硬件中断的快速响应。能在规定的时间内完成对突发事件的处理的Linux系统; 软件:中断服务程序、进程调度程序,硬件:嵌入式系统所采用的中断管理硬件。 8、试简要说明Linux内核构成,并简要说明各部分的功能? 答: MMU:内存管理单元,完成地址映射(应用虚拟地址方式) VFS:虚拟文件管理系统,提供了统一管理计算机资源的途径。使统一规范计算机资源的使用格式成为可能,方

嵌入式Linux系统开发教程答案

1、嵌入式系统主要融合了计算机软硬件技术、通信技术和微电子技术,它是将计算机直接嵌入到应用系统中,利用计算机的高速处理能力 、目前国内对嵌入式系统普遍认同的定义是:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用 、嵌入式系统一般由嵌入式计算机和执行部件组成,其中嵌入式计算机主要由四个部分组成,它们分别是:硬件层、中间层、系统软件层以及应用软件层。4、嵌入式处理器目前主要有 PC、68K等,其中arm处理器有三大特点:体积小、低功耗、的成本和高性能,16/32 操作系统有:Linux、Vxworks、WinCE、Palm、uc/OS-II和eCOS。6、嵌入式系统开发的一般流程主要包括系统需求分析、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最后得到最终产品。1、嵌入式系统中硬件层主要包含了嵌入式系统重要的硬件设备:嵌入式处理器、存储器(SDRAM、ROM等)、设备I/O接口等。2、20世纪90年代以后,随着系统应用对实时性要求的提高,系统软件规模不断上升,实时核逐渐发展为实时多任务操作系统,并作为一种软件平台逐步成为目前国际嵌入式系统的主流。3、由于其高可靠性,在美国的火星表面登陆的火星探测器上也使用的嵌入式操作系统是VxWorks 。4、嵌入式系统设计过程中一般需要考虑的因素不包括:(大小)5、在嵌入式系统中比较流行的主流程序有:(Angel、Blob、Red Boot )1、Linux具有UNIX的所有特性并且具有自己独特的魅力,主要表现在:开放性、多用户、多任务、友好的用户界面、设备独立性、丰富的网络功能、文件传输、远程访问、可靠的安全性、良好的可移植性、X Window系统、内存保护模式。2、Linux 作环境)、文件结构(File Structure)和实用工具。3、目前几乎所有的Linux ;查看当前路径应使用命令:pwd;的作用是:使linux.tar.gz文件 Linux内核主要由:进程调度,内存管理,虚拟文件系统,网络接口,进程间 (Red Flag)2、启动shell环境时,屏幕上显示“[arm@www home]$”,其中的arm 命令时,如果想对文件名中的不可显示字符用八进制逃逸字符显示,则应该选用的参数是(-b)。4、解 Linux用的文件系统是(ntfs)。1、ARM9系列微处理器在高性能和 5级整数流水线,指令执行效率更高;提供1.1MIPS/MHz的哈佛总线结构;支持32位ARM指令集和16位Thumb指令集;支持32位的高速AMBA总线接口。2、ARM芯片的内核一般包括以下几个单元:ARM9TDMI32RISC处理器、数据 本质上是内存中一段连续的地址,对其最常见的操作为“压栈”( 出)。1、在arm/thumb汇编语言程序中,程序是以程序段的形式呈现的。程序段是具有特有名称的相对独立的指令或数据序号。程序段有两大类型代码段、数据段。2、基于linux下GCC汇编语言,代码表号必须在一行的顶端,后面要加上:,注视的内容可以在前面加上@。 3、符号定义伪指令()、数据定义伪指令(Data Definition 4、linux下的嵌入式程序开发,主要需要的代码编辑器,如vi和gedit,另外还需要编译器gcc、调试器Vi编辑器基本上有三种基本状态,分别是:命令模式(command mode)、插入模式(insert mode)和底行模式(gcc编译文件生成可执行文件要经历四个相互关联的步骤:预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。1.假如使用伪指令定义一个局部的数据量,变量名为temp,然后给其赋值为8,汇编代码为(GBLA temp;temp SET A 0x08;)2、在vi处于命令行模式时,如果需要对文本进行修改,欲在光标所在位置的下一个位置开始输入文字,则(按下字母“a”进入插入模式)3、当前vi 处于插入模式,先放弃对文本的修改,即不保存退出vi,则(先按下“ESC”后,再使用“:q!”命令)。4、经过汇编之后,生成的目标文件的后缀名为(.o)。 5、对代码文件code.c进行调试的命令为($gcc –g code.c –o code)。1、SMDK2440平台的开发板采用的处理器是S3C2440,其主频一般为400M。2、windows软件环境的设置一般包括以下几部分:超级终端的设置、DNW设置、GIVEIO驱动的设置和USB驱动3、在windows系统上建立基于linux嵌入式开发环境一般有三种方案可以选择分别是Windows系统下安装虚拟机Vmware、Windows+Linux双系统安装、基于Windows操作系统下的Cygwin4、UBUNTU的网络设置可以采用命令行方式、也可以采用图形界面操作方式来配置。5、开发板硬件平台是基于三星S3C2440的SMDK2440平台的目标板,使用的刻录软件为SJF2440。1、为了通过PC的串口和开发板进行交互,需要使用(超级终端)。2、在嵌入式linux的开发中,能实现上传下载文件、刻录文件、运行映像等功能工具是(DNW)。 3、由普通用户账户转为管理员账户登录,使用的命令为($su root)。 4、安装FTP服务器时,在终端输入的命令为($sudo apt-get install vsftpd)。 5、安装Telnet服务时,在终端输入的命令为($sudo apt-get install telnetd)1、交叉开发工具链就是为了编译、链接、处理和调试跨平台体系结构的程序代码执行工具链软件,通过带有不同的参数,可以实现编译、链接、处理、调试等不同的功能。2、linux经常使用的工具链软件有Binutils、Gcc、Glibc和Gdb。3、分布构建交叉编译工具链的制作过程需要以下几步编译binutils、编译辅助gcc编译器、编译glibc库、重新编译完整的gcc。4、使用crosstool构建交叉编译工具链的制作过程需要以下几步:准备工作、建立脚本文件、建立配置文件、执行脚本文件和编译gdb调试器。5、使用crosstool构建交叉编译工具链的制作过程中需要的配置文件,其主要作用是定义配置文件、定义生成编译工具链的名称、定义编译选项等。1.(binutils)十二进制程序处理工具,包括连接器,汇编器等目标程序处理的工具。2.构建交叉编译器的第一个步骤是(下载工具)。3、分析以下代码#export PRJROOT=/home/arm/armlinux #export TARGET=arm-linux #export PREFIX=$PRJROOT/$TARGET其中,变量PREFIX代表的路径为(/home/arm/armlinux)。4. Binutils是gnu工具之一,他包括连接器、汇编器和其他用于目标文件和档案的工具,特使二进制代码的处理维护工具。其中包括(ld)命令,他是把一些目标和归档文件结合在一起,重定位数据,并连接符号引用。5.分布构建交叉编译链的过程有两次变异gcc,其中第二次进行编译的作用是(获得glibc库的支持) 。1、Bootloader,亦称引导加载程序,是系统加电后运行的第一段软件代码。2、一般Bootloader包含两种不同的操作模式:启动加载模式 的主要功能是引导操作系统启动,它的启动方式有网络启动、磁盘启动和Flash 运行的第一阶段主要完成以下工作:屏蔽所有中断、设置CPU的速度和时钟频率、RAM初始化、初始化LED和关闭 cache。1、在Bootloader的启动方式中,Flash启动方式通常有两种,一种是可以直接从Flash启动,另一种时可以将压缩的内存映像文件从Flash中复制、解压到RAM ,再从中启动。2、在各种Bootloader中,U-boot 是以PPCBoot和ARMBoot为基础的通用加载程序,并且在ARM、PowerPC以及MIPS等多种平台上运行。3、在编译Vivi之前将Vivi里所有的“*.o”和“*.o.flag”文件删除,以确保文件编译时没有错误或者警告发生,使用的命令格式为(make distclean)。4、编译Vivi时,如果编译成功,在/vivi里面会生成三个vivi文件,其中不包括文件(vivi.exe)。5、把二进制文件载入Flash或RAM使用的命令是(load)。1、ARM-Linux内核的配置系统由三个部分组成,它们分别是Makefile、配置文件和配置工具。2、配置工具一般包括配置命令解释器和配置用户界面,前者主要作用是对配置脚本中使用的配置命令进行解释;而后者则是提供基于字符界面、基于Ncurses图形界面以及基于X Window图形界面的用户配置界面。3、Makefile文件主要包含注释、编译目标定义和适配段。4、Linux内核常用的配置命令有make oldconfig、make config、make menuconfig 和make xconfig。其中以字符界面配置的命令是make config。5、内核编译结束后,会在“/arch/arm/boot/”目录下面和根目录下面生成一个名为zImage的内核镜像文件。1.linux内核中的makefile以及与makefile直接相关的文件不包括(后缀名为.in)。2.用户通过make config 配置后,产生了后缀名为(in.config)。3.rules.make文件定义了许多变量,最重要的是那些编译、连接列表变量,但不包括(O-OBJS)。4.在内核配置过程中,如果需要设置networking support这个选项,进入的菜单项是(General setup)。5.在linux系统中,我们既需要标记变量的符号,有需要变量的物理地址,两者同时需要的时候可以采用符号表的方式,其对应的文件为(System.map)。1、Linux下的文件系统主要分为三个层次:上层用户的应用程序对文件系统的系统调用、虚拟文件系统和挂载到VFS中的各种实际文件系统。2、三种常用的块驱动程序分别是Blkmem驱动层、RAMdisk驱动层、MTD驱动层JFFS2、Yaffs、Romfs和Cramfs。 4、基于RAM的文件系统常见的有Ramdisk和Ramfs/Tmp fs。 5、System V init、Busybox init1、(MTD驱动层)也支持在一块Flash上建立多个Flash分区,没一个分区作为一个MTD block设备,可以把系统软件数据等分配到不同的

如何构建嵌入式LINUX的NFS

如何构建嵌入式LINUX的NFS 准备工作:一台装有REDHAT9.0的PC机,一套LJD2410-I开发板,PC机上装有LJD2410的软件包,假如我们通过NFS要加载的文件系统为/LJD2410/root_dir/root_china,Ifconfig eth0 192.168.1.100 //设置PC机linux的IP:192.168.1.100,Ifconfig eth0 192.168.1.10 //开发板IP:192.168.1.10 我们需要重新配置编译内核,开启开发板NFS文件系统功能,具体步骤如下:1、修改kernel/arch/arm/def-configs/smdk2410配置文件把CONFIG_CMDLINE="root=/dev/mtdblock2 noinitrd init=/linuxrc console=ttyS0"这一行改为CONFIG_CMDLINE="root=/dev/nfs rw nfsroot=192.168.1.100:/LJD2410/root_dir/root_china noinitrd init=linuxrc console=ttys0 ip=192.168.1.10"运行make menuconfig进入配置菜单,装载配置文件SMDK2410 选择Load an Alternate Configuration File输入配置文件的路径和文件名添加内核对NFS的支持:选中networking opTIons-》IP:kernel level auloconfiguralion项选中file systems-》network file systems-》下的root file system on nfs和nfs file system support 重新编译内核下载bootloader和kernel到开发板上,至此,开发板设置已经完成。PC 机设置:我们必须开启PC机的NFS服务,具体设置如下:1、在LINUX命令符下运行setup,在system services里面选中nfs服务,然后保存退出。2、设置PC机上的共享目录执行vi /etc/exports,在里面添加一行:/LJD2410/root_dir/root_china (rw),然后保存退出,/和rw要有空格(/LJD2410/root_dir/root_china为共享目录,rw为读写权限)。3、执行/etc/rc.d/init.d/nfs restart重启nfs服务。4、为了不必每次开机都要启动nfs服务,我们把/etc/rc.d/init.d/nfs restart 添加到/etc/rc.d/rc.local中,以后PC启动的时候就会执行此文件开启nfs服务。5、测试NFS服务:设置完成后可以在本机上进行测试,如果本机IP为192.168.1.100,则可以用mount 192.168.1.100:/LJD2410/root_dir/root_china /mnt,如果mount成功,则在/mnt的目录就可以看到root_china下面的东西了。6、修改root_china/usr/etc/rc.local文件,设置开发板IP地址为192.168.1.10 至此,开发板和PC

嵌入式 linux 根文件系统 rootfs

一、什么是文件系统(Filesystem) 文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。 二、主要嵌入式采用的文件系统 * Linux 中,rootfs是必不可少的。PC 上主要实现有ramdisk和直接挂载HD(Harddisk,硬盘) 上的根文件系统;嵌入式中一般不从HD 启动,而是从Flash 启动,最简单的方法是将rootfs load 到RAM 的RAMDisk,稍复杂的就是直接从Flash 读取的Cramfs,更复杂的是在Flash 上分区,并构建JFFS2 等文件系统。 * RAMDisk将制作好的rootfs压缩后写入Flash,启动的时候由Bootloader load 到RAM,解压缩,然后挂载到/。这种方法操作简单,但是在RAM 中的文件系统不是压缩的,因此需要占用许多嵌入式系统中稀有资源RAM。 ramdisk就是用内存空间来模拟出硬盘分区,ramdisk通常使用磁盘文件系统的压缩存放在flash中,在系统初始化时,解压缩到SDRAM并挂载根文件系统, 在linux系统中,ramdisk有二种,一种就是可以格式化并加载,在linux内核2.0/2.2就已经支持,其不足之处是大小固定;另一种是2.4的内核才支持,通过,ramfs来实现,他不能被格式化,但用起来方便,其大小随所需要的空间增加或减少,是目前linux常用的ramdisk技术. * initrd是RAMDisk的格式,kernel 2.4 之前都是image-initrd,Kernel 2.5 引入了cpio-initrd,大大简化了Linux 的启动过程,附合Linux 的基本哲学:Keep it simple, stupid(KISS). 不过cpio-initrd作为新的格式,还没有经过广泛测试,嵌入式Linux 中主要采用的还是image-initrd。 * Cramfs是Linus 写的很简单的文件系统,有很好的压缩绿,也可以直接从Flash 上运行,不须load 到RAM 中,因此节约了RAM。但是Cramfs是只读的,对于需要运行时修改的目录(如:/etc, /var, /tmp)多有不便,因此,一般将这些目录做成ramfs等可写的fs。 * SquashFS是对Cramfs的增强。突破了Cramfs的一些限制,在Flash 和RAM 的使用量方面也具有优势。不过,据开发者介绍,在性能上可能不如Cramfs。这也是一种新方法,在嵌入式系统采用之前,需要经过更多的测试 三、建一个包含所有文件的目录 1。建一个目录rootfs用来装文件系统 2。mkdir bin devetc lib procsbintmpusrvar 3. ln -fs bin/busyboxlinuxrc(使用busybox)

相关主题
文本预览
相关文档 最新文档