嵌入式Linux中常见的文件系统及特点

1、Linux可支持的文件系统有多种,但是这么多种的文件系统都是基于Linux内核所提供的文件系统VFS的接口API。因此对于Linux内核级别实现的文件系统只有VFS虚拟文件系统;

  其余实现的文件系统都是调用VFS文件系统的API更上一层实现的;

2、Linux文件系统的组成结构:

  1、  用户层:用户层向外提供Linux内核所支持文件系统的VFS的API接口

    内核层:内核实现了所说的各种文件系统

    驱动层:驱动层是块设备的驱动程序

    硬件层:硬件层是不同文件系统支持的存储器;

3、Linux启动时的文件系统:

  硬件上电启动,各项硬件初始化后,第一个启动的文件系统时RootFS根文件系统,如果说根文件系统没有起来,系统出现异常、将重启;

4、常用的文件系统运行、存储设备有:

  DRAM、SDRAM以及ROM其中常使用flash;

5、根据不同的存储介质,常见的文件系统有:

  基于Flash(Nor、Nand)的文件系统有:

    jffs2:可读写,数据压缩、支持哈希表的文件系统,掉电保护;缺点:不适合使用在大容量的Nand Flash中,内存使用量太大极大降低数据操作速度;

    yaffs:读写速度快,占用内存小,实现内存访问异常处理;混合的垃圾回收算法;特别适合嵌入式设备使用;跨平台、自带Nand芯片驱动

    cramfs:只读的文件系统,执行速度快,内容无法扩充;文件系统健壮;

    romfs:简单紧凑、只读、不支持动态擦写;较多使用在uclinux系统上;

  基于RAM存储介质的文件系统:

    ramdisk:将一部分固定大小的内存当做分区使用,不能真正算的上实际的文件系统,更像是一种机制,将实际的文件系统加载到内存中;将一些经常被访问的而又不会更改的文件放入到内存中,达到提高系统效率的目的;同时还负责将内核镜像与文件系统一块加载到内存中;

      ramfs/tmpfs :基于内存的文件系统,工作于虚拟文件系统层,可以创建多个文件系统,可以指定每个文件系统最大使用内存;这种文件系统将所有的文件都放在RAM中,既可以提高读写速度,也可以避免对flash大量的读写操作;文件系统不可以格式化,占用内存大小可以指定;

  网络文件系统:

    NFS:是一种基于网络共享技术,可以在不同平台、不同机器、不同操作系统上实现文件共享、文件传输;在嵌入式Linux系统初始开发阶段可以非常方便文件传输、文件修改;

 

地址            异常         进入模式                 描述
0x0000,0000    复位            管理模式         电平复位
0x0000,0004   未定义指令异常     未定义模式   遇到不能处理的指令,无法识别的指令
0x0000,000c   软件中断      管理模式            

异常发生时CPU处理的步骤:R13(sp),R15(PC)
1、保存当前执行位置:LR寄存器(R14)
2、保存当前执行状态:CPSR
3、寻找中断入口,中断向量表:PC寄存器找向量地址
4、执行中断处理完成:
5、中断返回,继续执行:
R14 <exception_mode> = return link
SPSR<exception_mode>=CPSR
CPSR[4:0] =exception mode number;/* 处理器工作模式控制位 */
CPSR[5]=0;  /* 使用ARM指令集 */
If<exception_mode> == reset or FIQ then
CPSR[6]= 1;/* 屏蔽快速中断FIQ */
CPSR[7]=1; /* 屏蔽外部中断IRQ */
PC=exception vector address;

复位异常中断处理程序的主要功能:
    1、设置异常中断向量表:
2、初始化数据栈和寄存器:
3、初始化存储系统MMU:
4、初始化关键IO设备:
5、使能中断:
6、处理器切换到合适的模式:
7、初始化C变量跳转到应用程序执行:
R14<SVC> = 设置相应的值;
SPSR<SVC> = 设置相应的值;
CPSR[4:0]=0b10011;/* 进入特权模式 */
CPSR[5]=0;  /* 使用ARM指令集 */
CPSR[6] =1;  /* 禁止相关 关闭FIQ */
CPSR[7] =1;  /* 禁止IRQ */
If high vectors configured then
PC=0xffff,0000;
Else 
PC= 0x0000,0000;
其余的异常以此类推;

异常的优先级:
1、Reset: 优先级1(最高)
2、Data abort:2
3、FIQ:3
4、IRQ:4
5、Prefetch abort:5
6、SWI或者undefined instruction:6(最低),软件中断异常或者未定义指令异常

ARM硬件接口:
1、程序的链接地址和程序地址:ld程序链接地址
程序链接地址:是程序运行的起始地址;程序地址:是程序保存在硬盘中的地址;
2、呵呵呵

 

 

 

  

 

posted @ 2021-05-11 17:03  笑不出花的旦旦  阅读(1070)  评论(0)    收藏  举报