文档库 最新最全的文档下载
当前位置:文档库 › 嵌入式FAT文件系统

嵌入式FAT文件系统

嵌入式FAT文件系统
嵌入式FAT文件系统

嵌入式FAT文件系统

嵌入式FAT文件系统

1.总则

本文件是嵌入式FAT文件系统技术资料,嵌入式FA T文件系统开发,应用人员均可通过阅读本文件,以掌握文件系统的原理,和应用。

2.参考文件

1)Microsoft Hardware White Paper FAT: General Overview of On-Disk Format

2)Microsoft Hardware White Paper Long Filename Specification

3.命名规范

1)盘符命名规范

a)盘符以物理磁盘分区的先后次序分配,从C开始到Z结束

2)文件命名规范(支持长文件名)

a)文件名由文件名和扩展名两部分组成,其中1)短文件名长度不超过8个字符,长

文件名长度不超过255个字符2)文件扩展名不超过3个字符

b)文件名统一使用英文字母、数字和下划线的组合

c)文件名称必须由字母开始

d)文件名不区分大小写

4.文件寻址路径规范

1)文件寻址路径规范采用与Windows/DOS兼容的规范,其中

a)在路径的开始在“:\”前面用一个英文字母表示寻址盘符,盘符从C开

始到Z结束;路径以字符“\”开始,则表示从当前打开盘符根目录开始寻址;

路径以字符“A”“Z”开始,第二个字符不是“:”,为相对路径,表示从文件系

统的当前目录开始寻址;

b)父目录与子目录之间用“\”分符,“\”后面的目录是子目录,其父目录在“\”之前。

c)文件名应放在文件寻址路径之后,相对路径文件寻址路径默认为文件系统的当前

目录

d)使用进入目录函数char cd_folder(char * foldername,char mode)可改变文件系统

的当前目录

e)路径实例--“c:\dos\program files\arv.c”表示寻址c盘根目录,dos子目录,program

files子目录的文件avr.c

f)路径最大长度占用字节数不超过260,如路径”c:\program

files\system32\.....\Jsmart Memory Stick AVR”占用字节数不能超过260;

相对路径如” system32\.....\Jsmart Memory Stick A VR”加上当前目录之和占用字节数

不超过260

g)文件寻址路径不区分大小写

5.源程序文件规范

1)fat.c—file system 源代码

2)fat.h—file system include文件

3)Fat_cfg.h—file system 配置文件*.h

4)Types.h—数据类型重定义文件

5)Flash_management_sys.h—Sector读写include文件

6.其它

1)兼容FAT16文件系统,长文件名,最大路径长度260个字节,符合Microsoft Longfilename

specification。

2)可移植于各种平台,只需编写sector驱动驱动,共计两个函数:1)read_flash_sector() 2)

write_flash_sector()。

3)文件缓冲功能:1)读文件时,读位置在文件缓冲区内,则可直接读文件缓冲区,不需

要读物理磁盘;文件缓冲区大小可使用编译宏EnableFileBuf,TotalFileBUFsQTYeachFCB,FileBUFSize来控制。

4)可同时打开多个文件;最大打开文件数可使用编译宏MaximumFCB设定,

MaximumFCB最大值限定为254。

5)文件保护功能:文件可同时打开多个FCB,而只有其中一个FCB可以得到文件RD/WR

权限。该功能完全由文件系统代码来完成,上层应用无需编写额外代码

6)所有编译宏存放于文件fat_cfg.h

7.核心文件系统数据结构(仅供参考,实际定义于配置文件fat_cfg.h)

1)分区数据结构—支持FAT16

struct partition_BPB{

char partition_id; //从C开始到Z结束

char system_id; //分区类型0C-FAT32,06-FAT16 ect..

long relative_sector; //分区起始扇区号

long total_sector; //分区总扇区数

int bytes_per_sector;//每扇区字节数

char sector_per_cluster; //每簇扇区数

int reserved_sector; //保留扇区数

char numbers_of_FAT;//FAT副本数

int boot_entries;//根目录项数,供FAT12/16使用

int small_sector; //小扇区簇

char media_descriptor; //媒体描述符

int sectors_per_FAT; //每FAT扇区数,供FAT12/16使用

int sectors_per_track; //每道扇区数

int number_of_head; //磁头数

long hidden_sectors; //隐藏扇区数

long large_sector;//总扇区数,包含FAT32总扇区数

long sector_per_FAT32;//每FAT扇区数,供FAT32使用

int externded flag;// 扩展标志,供FAT32使用

int file_system_version; //文件系统版本

long root_cluster_number;//根目录簇号

int file_system_information_sectornumber; //文件系统信息扇区号

int copy_of_boot_sector;//备份引导扇区

char reserved[12];//保留,,供FAT32使用

};

2)文件数据结构—支持FAT16

struct file_{

char filename[256];//支持长文件名

char file_extention[3]; //文件扩展名

char file_attribute;//属性

char reserved;

char create_time_10ms;//创建时间的10毫秒位

int file_created_time;//文件创建时间

int file_created_date;//文件创建日期

int last_access_date;//文件最后访问日期

int first_cluster_number_high2bytes; //文件首簇号高16位

int recent_modified_time;//文件最近修改时间

int recent_modified_data;//文件最近修改日期

int first_cluster_number_low2bytes; //文件首簇号低16位

long file_length;//文件长度

3)Core数据结构

struct core_{

current_folder[256];//存放当前目录

char file_openned_flag;//标记struct file_已打开

}

8.文件读写类函数

1)自动格式化FAT16文件系统函数FAT16_filesystem_autoformat()—该函数在U盘启动

时运行,它首先会读取Flash 0扇区的MBR,判断MBR有效标记0x55aa,如果MBR 有效标记不是0x55aa,该函数将把Flash自动格式化成FAT16文件系统;可以看出,一旦起用了自动格式化处理,Flash上原有的数据将全部丢失,因此出于安全的考虑,建议慎用该函数。

2)FAT文件系统初始化函数char FAT_filesystem_initialiation()—该函数是在U盘启动时

运行的,完成的功能是将Flash中默认的第一个分区的信息读入struct partition_BPB中,和初始化struct CORE,为下面的文件类读写函数运行做准备,该函数的原型定义如下:

3)建立文件函数u8 create_file(u8 * filename)—该函数在文件系统中建立一个文件,文

件名及其路径通过形式参数char *filename传递;

4)建立目录函数u8 create_floder(u8 * foldername)—该函数功能在当前目录下建立一个

子目录,目录名通过形式参数char *foldername传递;

5)重命名文件函数u8 rename_file(u8 * oldfilename,u8 * newfilename)—该函数的功能是

将文件系统中的一个文件进行重命名,原文件名通过参数char * oldfilename传递,新文件名通过参数char * newfilename传递;

6)打开文件函数u8 open_file(u8 * filename)—该函数用于打开文件系统中的一个文件,文件名通过参考char * filename传递,文件打开成功,返回文件系统为当前文件分配的FCBsn(FCB sequential number),或0xff—文件打开错误,这种情况下,建议使用close_file关闭一个已打开的文件后再尝试打开文件。

7)关闭文件函数u8 close_file(u8 FCBsn)—该文件用于关闭一个已打开的文件,并释放文件当前占用的FCB,FCB的sequential number由FCBsn指定。

8)进入目录函数u8 cd_folder(u8 * foldername)—该函数用于改变文件系统的当前目录,同时它将修改Core数据结构current_folder[256];进入目录名由参数char * foldername 传递。函数有两种操作模式由参数char mode传递,其中:1)参数mode= 0:为进入子目录模式;2)参考mode=1返回上一层父目录模式;

9)设定文件当前位置函数u8 f_seek(u8 FCBsn, s32 offset, u8 origin)—该函数用于设定文件读写函数的当前位置;FCBsn -文件句柄由打开文件时即使用open_file函数得到;offset--相对于origin规定的偏移位置量;origin 指针移动的起始位置,可设置为以下三种情况:SEEK_SET(0) 文件开始位置SEEK_CUR(1) 文件当前位置SEEK_END(2) 文件结束位置;

10)读文件函数u16 read_file(u8 FCBsn,8* buffer, u16 length)—该函数可以完成从已打开文件(FCBsn --文件句柄由调用open_file函数得到)当前位置读取指定长度的数据,放入指定缓冲区buffer中,读取文件offset由函数fseek首先设置,读取长度由参数u16 length传递,缓冲区首地址由参数u8 * buffer传递,该函数的返回值是成功读取的字节数;

11)写文件函数u16 write_file(u8 FCBsn,u8* buffer, u16 length)- 该函数将指定缓冲区

buffer指定长度的数据写入已一个打开文件的当前位置,写文件的位置由函数fseek 首先设置,写长度由参数int length指定,缓冲区首地址由参数char* buffer指定,该函数的返回值为成功读取的字节数;

12)目录枚举函数u8 folder_enumeration(u8 *return_string,u8 mode,u8 *ATTR)—该函数可以枚举当前目录下所有的文件与目录,调用一次将返回一个文件项或目录项,同时定义有二种枚举模式,mode(0)-复位至第一个文件项或目录项开始枚举,mode(1)-继续上一枚举后的目录项,所有与模式相关的信息由文件系统的core来维护,对于基于文件系统的上层软件完全透明;枚举模式由参数char mode传递,缓冲区首地址由参数u8 *return_string指定,return_string返回的是文件或目录的绝对路径名,例如“c:\long file name\test.img”;返回文件目录的类型由u8 *ATTR传递,其值即为当前返回的文件或目录directory entry的attribute字段;另外目录枚举采用逐个枚举的原因是一般单片机的内存有限,如果一次性枚举目录下所有的文件的话,可能会造成RAM溢出的情况;

13)DISK枚举函数u8 disk_enumeration(u8 *return_string,u8 mode,u8* ATTR)—该函数可以枚举DISK下所有的文件与目录,调用一次将返回一个文件项或目录项,同时定义有二种枚举模式,mode(0)-复位至第一个文件项或目录项开始枚举,mode(1)-继续上一

枚举后的目录项,所有与模式相关的信息由文件系统的core来维护,对于基于文件系统的上层软件完全透明;枚举模式由参数char mode传递,缓冲区首地址由参数u8 *return_strin传递,,return_string返回的是文件或目录的绝对路径名与目录枚举函数folder_enumeration一致。返回文件目录的类型由u8 *ATTR传递,其值即为当前返回文件或目录directory entry的attribute字段;最后,DISK枚举的遍历使用深度优先算法,简单来说,即在当前目录下发现子目录,则立即进入子目录进行枚举,只有当子目录全枚举完成后,才可以返回其父目录继续到子目录之后,继续枚举,直至DISK 被枚举完成。

14)删除文件函数-- u8 delete_file(u8 *filename)—该函数用于删除文件系统中的一个文

件,删除文件名通过参数char *filename指定;

15)删除目录函数-- u8 delete_folder(u8 * foldername)—该函数用于删除文件系统中的一

个目录,删除目录名通过参数u8 *foldername指定,删除的目录必须是空目录;

16)文件查找函数—u8 find_file(u8 * filename,u8 mode, u8* folder_name )—文件查找

函数支持2种模式:1)mode = 0:在指定目录下查找;2)mode=1:在整个磁盘

中查找;查找文件名通过参数char * filename传递,查找模式通过参数u8 mode

传递,查找成功后文件加上其所在的目录完整路径名通过参数folder_name返回;

17)查询分区容量和剩余空间函数—u8 volume_inquiry(u8 partition_id,u8 * return_data)—

该函数用于查询指定分区的分区容量和剩余空间,指定分区通过参数char partition_id 传递,查询的结果将存入在参数char * return_data指定的缓冲区中,分区容量和剩余空间分别用5个字节表示,共10个字节,存放方式采用高字节放内存高位,低字节放内存低位的原则;

18)返回状态定义

1)返回状态定义

LINUX文件系统制作详细

Linux文件系统制作流程 关键词:ARM Linux yaffs文件系统移植 Linux文件系统简介 Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。 Linux下的文件系统结构如下: Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。 不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM,

SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2,yaffs,cramfs,romfs,ramdisk,ramfs/tmpfs等。 >基于FLASH的文件系统 Flash(闪存)作为嵌入式系统的主要存储媒介,有其自身的特性。Flash的写入操作只能把对应位置的1修改为0,而不能把0修改为1(擦除Flash就是把对应存储块的内容恢复为1),因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区间,这种擦除是以块(block)为单位进行的。 闪存主要有NOR和NAND两种技术(简单比较见附录)。Flash存储器的擦写次数是有限的,NAND闪存还有特殊的硬件接口和读写时序。因此,必须针对Flash 的硬件特性设计符合应用要求的文件系统;传统的文件系统如ext2等,用作Flash的文件系统会有诸多弊端。 在嵌入式Linux下,MTD(Memory Technology Device,存储技术设备)为底层硬件(闪存)和上层(文件系统)之间提供一个统一的抽象接口,即Flash的文件系统都是基于MTD驱动层的(参见上面的Linux下的文件系统结构图)。使用MTD 驱动程序的主要优点在于,它是专门针对各种非易失性存储器(以闪存为主)而设计的,因而它对Flash有更好的支持、管理和基于扇区的擦除、读/写操作接口。 顺便一提,一块Flash芯片可以被划分为多个分区,各分区可以采用不同的文件系统;两块Flash芯片也可以合并为一个分区使用,采用一个文件系统。即文件系统是针对于存储器分区而言的,而非存储芯片。 1.jffs2 JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux,uCLinux中。 Jffs2:日志闪存文件系统版本2(Journalling Flash FileSystem v2) 主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供“写平衡”支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。 目前jffs3正在开发中。关于jffs系列文件系统的使用详细文档,可参考MTD补丁包中mtd-jffs-HOWTO.txt。 jffsx不适合用于NAND闪存主要是因为NAND闪存的容量一般较大,这样导致jffs为维护日志节点所占用的内存空间迅速增大,另外,jffsx文件系统在

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

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

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

vxWorks文件系统详细介绍资料

VxWorks为块设备(磁盘)的实时使用提供了两种本地文件系统:一种与MS-DOS文件系统相兼容,另一种与RT-11文件系统相兼容。这些文件系统的支持库分别为dosFsLib和rt11FsLib。VxWorks还提供了一种简单的raw文件系统,这个文件系统把整个磁盘作为一个单独的大文件。这个文件系统的支持库是rawFsLib。 VxWorks还为不使用标准文件或目录结构的磁带设备提供了一个文件系统。磁带卷被看作一个raw设备,整个卷就是一个大文件。这个文件系统的支持库是tapeFsLib。另外,VxWorks提供了一个文件系统支持库cdromFsLib,它允许应用程序从依照ISO9660标准文件系统格式化的CD-ROMs中读取数据。 在VxWorks中,文件系统不受块设备种类型或它的驱动程序的约束。VxWorks块设备都使用一个标准接口,以便文件系统可以与设备驱动程序自由的混合。做为选择,你可以写自己的能被驱动程序以相同方式使用的文件系统,只要在文件系统、驱动程序和I/O系统间遵循同样的标准接口。VxWorks的I/O体系结构使得在一个VxWorks系统中可以有多样的文件系统,甚至其类型也可以不同。块设备界面在3.9.4块设备中讨论。 1 与MS-DOS兼容的文件系统:dosFs 使用dosFs文件系统格式化的磁盘与MS-DOS(直至6.2版本)磁盘是相兼容的。由两个文件系统初始化的硬盘之间在格式上有细微区别。然而,数据自身是兼容的,而且dosFs可被配置成使用MS-DOS格式化的磁盘。 DosFs文件系统向不同要求的实时应用程序提供了良好的适应性。主要特点包括: l 文件和目录分等级排序,允许有效地组织,在一卷上可以创建任意数量的文件。 l 每个文件可以是连续存储或非连续存储的。非连续存储的文件可使硬盘空间利用率更高,连续存储的文件可以增强系统性能。 l 具有与广泛可用的存储器和可恢复介质的兼容性。应用VxWorks(不使用dosFs文件扩展名)、MS-DOS PCs和其它系统创建的磁盘可以自由的交换。如果分区表被说明,那么硬盘也是兼容的。 l 具有从有dosFs文件系统的本地SCSI设备引导VxWorks的能力。 l 可以使用比通常MS-DOS允许的8个字符的文件名加3个字符的扩展名更长的文件名。 l NFS(网络文件系统)的支持。 1.1磁盘组织 MSDOS/ dosFs文件系统提供了一种以灵活方式组织磁盘数据的方法。它维护指定目录、每个包含文件或其它的目录的等级设置。文件可以被设置其搜索路径;文件扩展时,新的磁盘空间被自动分配。分配给一个文件的磁盘空间不必一定是连续的,这样可以使磁盘空间浪费最小。然而,为了提高它的实时性,dosFs文件系统允许连续空间被预先个别地分配给文件,从而使查找操作最块,行为更加确定。MS-DOS/dosFs文件系统的通常组织结构如图1,其中的多个单元在下面的部分论述。 图1 MS-DOS磁盘组织 ------------------------------- 引导扇区扇区0 ----------------------------- 文件分配表(FAT) ----------------------------- 根目录 ------------------------ 文件和子目录 ---------------------------- 簇 在MS-DOS/dosFs文件系统中,分配给文件的磁盘空间由一个或多个磁盘簇组成。一个簇为一组连续的磁盘扇区。软盘通常由两个扇区组成一簇;固定硬盘由更多的扇区组成一簇。文件系统可以一次分配的最小的磁盘空间为一簇。虽然每簇有巨大数量的扇区允许在固定大小的文件分配表(FAT;见文件分配表)中描述一个巨大的磁盘,但是这可能会导致磁盘空间的浪费。 引导扇区 MS-DOS/dosFs硬盘或磁盘的第一个扇区称为引导扇区。其中包含有多种配置数据。其中一些数据域描述硬盘的物理性质(例如总扇区数),另外一些域描述文件系统变量(例如根目录的大小)。 引导扇区信息在初始化时写入磁盘。dosFs文件系统可以使用在另一个系统上初始化过的磁盘(例如,在MS-DOS PC上使用FORMAT),或者VxWorks可以使用ioctl()调用中的FIODISKINIT函数初始化磁盘。 随着MS-DOS标准的发展,多样的域被加入到引导扇区的定义中。VxWorks 下的磁盘初始化使用MS-DOS 5.0版本定义

嵌入式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试题

一、单项选择题 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

《嵌入式系统》考试试卷及答案

《嵌入式系统》课程试卷 考试时间:__120___分钟开课学院___计算机___ 任课教师____________ 姓名______________ 学号_____________班级_______________ 一.单项选择题(2 × 20): 1下面不属于Xscale微架构处理器的主要特征有:( ) A.采用了7级超级流水线、动态跳转预测和转移目标缓冲器BTB技术(Branch Target Buffer)。 B.支持多媒体处理技术、新增乘/累加器MAC、40位累加器、兼容ARM V5TE 指令和特定DSP型协处理器CP0。 C.采用了32KB的指令Cache。 D.采用了64KB的数据Cache。 2以下不属于XScale超级流水线的流水级是( ) A.寄存器文件/移位级(FR) B.写回级(XWB) C.寄存器读取级 D.和执行级二(X2) 3 目前嵌入式系统领域中使用最广泛、市场占有率最高的实时系统是:() A. Symbian B. Windows CE C. VxWorks D. QNX 4 下面那句话的描述是不正确的?( ) A.在一个基于XScale内核的嵌入式系统中,系统在上电或复位时通常都从

地址0x00000000 处开始执行 B.引导装载程序通常是在硬件上执行的第一段代码,包括固化在固件中的 引导代码(可选)和Boot Loader两大部分。 C.在嵌入式系统中,Boot Loader不依赖于硬件实现。 D.Boot Loader就是在操作系统内核运行之前运行的一段小程序。 5 通常情况下,目标机上的Boot Loader通过串口与主机之间进行文件传输,下面不属于通常使用的传输协议的是:( ) A.modem协议 B.xmodem协议 C.ymodem协议 D.zmodem协议 6 Make预置了一些内部宏,其中$@表示:() A.没有扩展名的当前目标文件 B.当前目标文件 C.当前目标文件最近更新的文件名 D.当前目标文件最近更新的文件名 7 在Default kernel command string “root=1f03 rw console=ttyS0,115200 init=/linuxrc”中,代表根文件系统(“/”) 的设备文件主号码是什么?( ) A.1f B.03 C.ttyS0 D.115200 8 用命令dd if=/dev/zero of=ramdisk_img bs=1k count=8192创建的ramdisk_img 其空间大小为多少?( ) A.8M bit

文件系统介绍

文件系统简介: 理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的。文件系统简单的说就是一种目录结构,由于linux操作系统的设备在系统中 是以文件的形式存在,将这些文件进行分类管理以及提供和内核交互的接口,就形成一定的目录结构也就是文件系统。文件系统是为用户反映系统的一种形式,为用户提供一个检测控制系统的接口。 根文件系统,就是一种特殊的文件系统。那么根文件系统和普通的文件系统有什么区别呢?由于根文件系统是内核启动时挂在的第一个文件系统,那么根文件系统就要包括Linux 启动时所必须的目录和关键性的文件,例如Linux启动时都需要有用户进程init对应的文件,在Linux挂载分区时Linux一定会找/etc/fstab这个挂载文件等,根文件系统中还包括了许多的应用程序,如/bin目录下的命令等。任何包括这些Linux 系统启动所必须的文件的文件系统都可以称为根文件系统。 Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、ramfs和nfs 等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS,为各类文件系统提供一个统一的操作界面和应用编程接口。下图是linux文件系统层次关系图。 MTD MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。MTD的所有源代码在/drivers/mtd子目录下。

嵌入式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

嵌入式FAT文件系统

嵌入式FAT文件系统 嵌入式FAT文件系统

1.总则 本文件是嵌入式FAT文件系统技术资料,嵌入式FA T文件系统开发,应用人员均可通过阅读本文件,以掌握文件系统的原理,和应用。 2.参考文件 1)Microsoft Hardware White Paper FAT: General Overview of On-Disk Format 2)Microsoft Hardware White Paper Long Filename Specification 3.命名规范 1)盘符命名规范 a)盘符以物理磁盘分区的先后次序分配,从C开始到Z结束 2)文件命名规范(支持长文件名) a)文件名由文件名和扩展名两部分组成,其中1)短文件名长度不超过8个字符,长 文件名长度不超过255个字符2)文件扩展名不超过3个字符 b)文件名统一使用英文字母、数字和下划线的组合 c)文件名称必须由字母开始 d)文件名不区分大小写 4.文件寻址路径规范 1)文件寻址路径规范采用与Windows/DOS兼容的规范,其中 a)在路径的开始在“:\”前面用一个英文字母表示寻址盘符,盘符从C开 始到Z结束;路径以字符“\”开始,则表示从当前打开盘符根目录开始寻址; 路径以字符“A”“Z”开始,第二个字符不是“:”,为相对路径,表示从文件系 统的当前目录开始寻址; b)父目录与子目录之间用“\”分符,“\”后面的目录是子目录,其父目录在“\”之前。 c)文件名应放在文件寻址路径之后,相对路径文件寻址路径默认为文件系统的当前 目录 d)使用进入目录函数char cd_folder(char * foldername,char mode)可改变文件系统 的当前目录 e)路径实例--“c:\dos\program files\arv.c”表示寻址c盘根目录,dos子目录,program files子目录的文件avr.c f)路径最大长度占用字节数不超过260,如路径”c:\program files\system32\.....\Jsmart Memory Stick AVR”占用字节数不能超过260; 相对路径如” system32\.....\Jsmart Memory Stick A VR”加上当前目录之和占用字节数 不超过260 g)文件寻址路径不区分大小写 5.源程序文件规范 1)fat.c—file system 源代码 2)fat.h—file system include文件 3)Fat_cfg.h—file system 配置文件*.h 4)Types.h—数据类型重定义文件

对话UNI新型文件系统简介

对话U N I新型文件系统 简介 Lele was written in 2021

在 UNIX 中,所有东西都是文件,但是并非以相同的方式存储每个文件。文件系统决定在介质上如何分解并组织文件。在过去,介质意味着磁带或磁盘。但是,文件系统现在可以把任何源—远程服务器、存档文件甚至其他文件系统—“翻译” 为虚拟介质。本文介绍几种新式的文件系统。 简介 有句老话说:“在 UNIX 中,所有东西都是文件”,这种说法很准确。从概念上说,每个 UNIX 资源都是一个简单的文件,可以打开、读和/或写它。您的实验数据、shell 启动脚本、UNIX 内核、主目录、每个网络套接字和 /bin/ls 可执行程序等等都是文件。 常用缩略词 SFTP:安全传输协议 SSH:安全 Shell 但是,每个文件并不相同。实验数据可能是高度定制的数据库。shell 脚本是文本文件,但是有一个重要的特征:以?!#(常常称为?shebang)开头的行指出由哪个应用程序解释此文件。内核和所有可执行程序都是二进制文件,它们都采用可预知的系统工具可操纵的特定格式。目录是用于内容编目的特殊索引。 另外,每个文件并非以相同的方式存储。文件的结构和大小取决于底层文件系统?—即把文件数据存储到物理设备上的子系统。相同的数据—

比如同一文件的两个拷贝—在不同的文件系统上以不同的方式组织。每个文件系统规定自己的存储战略,可能是为满足特定的条件而设计的。例如,一种文件系统可能是以提高速度为目的而优化的,另一种文件系统偏重高效地使用空间,还有一种文件系统偏重于防止数据丢失或损坏。通常,对于部署哪种文件系统,并没有简单的答案:必须分析自己的存储需求,选择能够满足目标的文件系统或文件系统组合。UNIX (和许多软件商)提供很多种文件系统,所以一定能找到适合自己需要的文件系统。 列出适用于 UNIX(在许多情况下也适用于 Linux)的几种文件系统。 表 1. UNIX 文件系统 文件系统优点 Zettabyte 文件系统 (ZFS)实质上规模无限的文件系统(1?zettabyte等于 270字节),可以使用常见的现成的存储介质构造它。ZFS 还可以在写数据时压缩数据,从而进一步扩大介质容量。 网络文件系统(NFS)这是 UNIX 的出色特性之一,NFS 让远程文件系统看起来像是本地的。NFS 非常适合共享数据。 日志文件系统(JFS)JFS 和许多替代品保留对每个文件所做的更改的日志。当系统崩溃或损坏时,“重播” 日志以恢复文件。 B 树文件系统(Btrfs)Btrfs 是最新的文件系统之一,是未来的 Linux 版本的默认文件系统,它通过维护数据和元数据校验和来保证持久性。Btrfs 还提供快照并可以混合使用几乎任何大小的设备。 您自己的文件系统

嵌入式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 根文件系统 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)

嵌入式文件系统镜像制作及烧写

嵌入式文件系统镜像制作及烧写 一。cramfs 文件系统+ jffs2文件系统。 1. cramfs 文件系统:存放系统文件:只读。 jffs2文件系统:存放用户文件:读写。 修改文件系统的自启动脚本: vim /etc/init.d/rcS 在其中添加: mount -t jffs2 /dev/mtdblock3 /home/y (给用户) 2.通过虚拟机制作cramfs文件系统: sudo mkfs.cramfs ./rootfs ./rootfs.cramfs 在虚拟机中,将做好的文件系统拷贝到tftp目录下,以备下载用: cp rootfs.cramfs /tftpboot 开发板下载cramfs文件系统到内存中: tftp 20008000 rootfs.cramfs 擦写nand flash: nand erase 400000 6400000 (此为分区大小) 将下载的文件系统烧写到开发板的nand flash中: nand write 20008000 400000 文件系统实际大小 同时擦写/dev/mtdblock3所在的文件系统(用户) nand erase 6800000 9800000 (此为分区大小) 设置u-boot 环境变量: setenv bootargs root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200

二。jffs2文件系统 1.通过虚拟机制作jffs2文件系统: sudo mkfs.jffs2 -r ./rootfs -o ./rootfs.jffs2 -e 0x20000(块大小) --pad=0x6400000(分区大小) –n 将做好的文件系统拷贝到tftp目录下,以备下载用: cp rootfs.jffs2 /tftpboot 开发板下载jffs2文件系统到内存中: tftp 20008000 rootfs.jffs2 擦写nand flash: nand erase 400000 6400000(此为分区大小) 将下载的文件系统烧写到开发板的nand flash中: nand write 20008000 400000文件系统实际大小 或:nand write 20008000 400000 6400000 设置u-boot 环境变量: setenv bootargs root=/dev/mtdblock2 init=/linuxrc rootfstype=jffs2 rw console=ttySAC0,115200

文件系统简介

1、什么是文件系统? 文件系统是对一个存储设备上的数据和元数据进行组织的机制。 2、挂载(mount) 在 Linux 中将一个文件系统与一个存储设备关联起来的过程称为挂载(mount)。 使用 mount 命令将一个文件系统附着到当前文件系统层次结构中(根)。在执行挂载时,要提供文件系统类型、文件系统和一个挂载点。 3、Linux 文件系统层的功能(以及挂载的方法) ★步骤1. 创建一个经过初始化的文件 $ dd if=/dev/zero of=file.imgbs=1k count=10000 10000+0 records in 10000+0 records out $ 注:dd 拷贝 if=file 输入文件名 of=file 输出文件名 bs=bytes 设置读写块的大小为bytes ,可代替ibs 和obs count=blocks 拷贝blocks个块,块大小等于ibs指定的字节数 现在有了一个10MB的file.img文件。使用losetup命令将一个循环设备与这个文件关联起来,让它看起来像一个块设备,而不是文件系统中的常规文件: $ losetup /dev/loop0 file.img $ 注:losetup 设置循环设备。 循环设备可把文件虚拟成区块设备,以模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱或软驱等设备,并挂入当作目录来使用。 注:什么是块设备? 块设备就是以块(比如磁盘扇区)为单位收发数据的设备,它们支持缓冲和随机访问(不必顺序读取块,而是可以在任何时候访问任何块)等特性。块设备包括硬盘、CD-ROM 和 RAM 盘。与块设备相对的是字符设备,字符设备没有可以进行物理寻址的媒体。字符设备包括串行端口和磁带设备,只能逐字符地读取这些设备中的数据。 这个文件现在作为一个块设备出现(由 /dev/loop0 表示)。然后用 mke2fs 在这个设备上创建一个文件系统。这个命令创建一个指定大小的新的 ext2 文件系统,见步骤2。 ★步骤2. 用循环设备创建ext2文件系统 $ mke2fs -c /dev/loop0 10000 mke2fs 1.35 (28-Feb-2004) max_blocks 1024000, rsv_groups = 1250, rsv_gdb = 39 Filesystem label= OS type: Linux Block size=1024 (log=0)

如何在嵌入式系统中建立自己的根文件系统

如何在嵌入式系统中建立自己的根文件系统- - Tag:嵌入式linux 正如楼上所言《构建嵌入式LINUX系统》这本书,还行,可以参考。 刚开始的时候,这个地方,我比较晕,其实,根本就没有什么东西,只要你作过一遍,就理解了。最好请教一下跟前作过的人,有一个感观的认识: 如二楼所言,cramfs和romfs只是一个文件系统类型,ramdisk相当于一块硬盘空间,可以理解为在内存中虚拟出一块硬盘来,所以它上面就可以有你linux支持的各种文件系统什么的。所以你问的,它和romfs和cramfs确实不是一个层次的概念。^-^恭喜你,你答对了,加10分 cramfs是只读压缩的文件系统,文件系统类型可以是ext2,ext3,什么的, 制作方法:假如你的根文件系统的目录是rootfs (你将来要用到的所有的文件就在这里)like this :mkcramfs rootfs rootfs.cramfs 就搞定了。如名字所言,它是只读压缩,所以比较省空间,如果你的flash比较小,就用这个吧!系统启动后,kernel把他load到内存中,解压,所以比较占内存。看你的需要了。 而ramdisk呢?这个用的比较多,ramdisk相当于一块硬盘空间,可以理解为在内存中虚拟出一块硬盘来,所以它上面就可以有你linux支持的各种文件系统什么的。所以你问的,它和romfs和cramfs确实不是一个层次的概念。关键是以后,在ramdisk里面可以写,这是一个和cramfs重要的区别了。 具体制作方法: dd if=/dev/zero of=rootfs.img bs=1M count=一个整数(看你的实际的需要的空间了,一般也就10M) 把它格式化为你需要的文件系统,比如ext2 ,ext3 ,reiserfs 什么的, 比如ext3 : mkfs.ext3 root.img 然后把它mount到某个目录,比如tmp 吧: mount -t ext3 /tmp/ 然后,你的文件系统所在的目录的所有文件copy到tmp目录下:比如你的文件系统目录在/root/rootfs-test : cp -av /root/rootfs-test/* /tmp/ (这里注意一个细节:copy的时候,用参数a表示copy全部,v表示只copy链接本身,不copy它指向的内容,这点很关键哦!) ,另外,有的人常用:cp -pdR 这个你也可以试试,意思就是原来什么样,copy过去就什么样。 然后卸载/tmp/ 目录就好了。 umount /tmp 一般的情况下,ramdisk是要压缩的,对于上面的生成好的img,rootfs.img ,你可以这样压缩: gzip -v9 rootfs.img 会自动生成rootfs.img.gz ,一般压缩率,30%吧! romfs ,我没有用过,也不敢瞎说。 个人经验:你自己要创建文件系统,一般是先建一个目录在里面建一些常用的目录,比如

操作系统和文件系统简介

操作系统和文件系统简介 展讯通信主讲人:Nick.Zhao

S p r e a d t r u m C o n f i d e n t i a l ThreadX 操作系统 1.线程服务 2. 内存管理 3. 资源保护 4. Timer 服务 5. Server/Client 服务

S p r e a d t r u m C o n f i d e n t i a l 线程服务 ?线程的创建和删除 静态线程在os_cfg.c 中被创建,客户用的动态线程通过调用SCI_CreateAppThread()来创建。通过SCI_TerminateThread()和SCI_DeleteThread()将动态线程删除。?线程的优先级 线程的优先级范围从高到低是0-31 ?线程间的通信 通过Message Queue 和Event 机制来实现线程间的通信和同步。 ?线程的调度 线程调度策略是抢占式,基于优先级的调度方式。线程之间的状态切换如下图所示:

t r u m C o n f i d e n t i a l Thread 状态切换图 S p r e a d

t r u m C o n f i d e n t i a l 内存管理 S p r e a d

e a d t r u m C o n f i d e n t i a l 内存管理常用的接口?SCI_ALLOC_APP() ?SCI_ALLOC_CONST()?SCI_CreateMemPool()?SCI_MPALLOC() ?SCI_MPFREE() ?SCI_FREE() S p r

相关文档
相关文档 最新文档