arm 嵌入式linux flash分区 概念

MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。MTD的所有源代码在/drivers/mtd子目录下。我将CFI接口的MTD设备分为四层(从设备节点直到底层硬件驱动),这四层从上到下依次是:设备节点、MTD设备层、MTD原始设备层和硬件驱动层。 

  一、Flash硬件驱动层:硬件驱动层负责在init时驱动Flash硬件,Linux MTD设备的NOR Flash芯片驱动遵循CFI接口标准,其驱动程序位于drivers/mtd/chips子目录下。NAND型Flash的驱动程序则位于/drivers/mtd/nand子目录下。

  二、MTD原始设备:原始设备层有两部分组成,一部分是MTD原始设备的通用代码,另一部分是各个特定的Flash的数据,例如分区。 用于描述MTD原始设备的数据结构是mtd_info,这其中定义了大量的关于MTD的数据和操作函数。mtd_table(mtdcore.c)则是所有MTD原始设备的列表,mtd_part(mtd_part.c)是用于表示MTD原始设备分区的结构,其中包含了mtd_info,因为每一个分区都是被看成一个MTD原始设备加在mtd_table中的,mtd_part.mtd_info中的大部分数据都从该分区的主分区mtd_part->master中获得。 在drivers/mtd/maps/子目录下存放的是特定的flash的数据,每一个文件都描述了一块板子上的flash。其中调用add_mtd_device()、del_mtd_device()建立/删除mtd_info结构并将其加入/删除mtd_table(或者调用add_mtd_partition()、del_mtd_partition()(mtdpart.c)建立/删除mtd_part结构并将mtd_part.mtd_info加入/删除mtd_table 中)。 

  三、MTD设备层:基于MTD原始设备,linux系统可以定义出MTD的块设备(主设备号31)和字符设备(设备号90)。MTD字符设备的定义在mtdchar.c中实现,通过注册一系列file operation函数(lseek、open、close、read、write)。MTD块设备则是定义了一个描述MTD块设备的结构mtdblk_dev,并声明了一个名为mtdblks的指针数组,这数组中的每一个mtdblk_dev和mtd_table中的每一个mtd_info一一对应。 

  四、设备节点:通过mknod在/dev子目录下建立MTD字符设备节点(主设备号为90)和MTD块设备节点(主设备号为31),通过访问此设备节点即可访问MTD字符设备和块设备。 

  五、根文件系统:在Bootloader中将JFFS(或JFFS2)的文件系统映像jffs.image(或jffs2.img)烧到flash的某一个分区中,在/arch/arm/mach-your/arch.c文件的your_fixup函数中将该分区作为根文件系统挂载。 

  六、文件系统:内核启动后,通过mount 命令可以将flash中的其余分区作为文件系统挂载到mountpoint上。 

摘自Jim Zeus的《Linux MTD源代码分析》
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ARM嵌入式Linux系统开发详解》是一本介绍ARM架构嵌入式Linux系统开发的详细指南。该PDF提供了从入门到进阶的内容,适合初学者和有一定经验的开发者阅读。 首先,该PDF首先介绍了ARM架构的基础知识,包括ARM处理器、指令集和寄存器等。接下来,通过分析ARM嵌入式系统硬件架构,包括外设接口、存储器和总线等,帮助读者理解嵌入式系统的硬件和软件结构。 然后,该PDF详细介绍了Linux操作系统的基础知识。包括Linux内核的组成和结构、系统调用接口、进程管理、内存管理和文件系统等。这些知识对于理解嵌入式系统的运行和开发非常重要。 在掌握了基础知识后,该PDF进一步介绍了嵌入式Linux系统的开发工具和环境。包括交叉编译工具链的配置和使用、调试工具的使用,以及开发板的选择和连接等。 接下来,该PDF讲解了嵌入式Linux系统的驱动程序开发。包括字符设备驱动、块设备驱动和网络设备驱动等。通过实例的讲解和代码示例,读者可以学会如何开发和调试驱动程序。 最后,该PDF介绍了嵌入式Linux系统的应用开发。包括应用程序的编写与调试、图形界面的开发、网络编程和嵌入式Web服务器等。这些内容帮助读者了解如何开发实际应用,并将其部署到嵌入式Linux系统中。 总的来说,《ARM嵌入式Linux系统开发详解》是一本全面介绍ARM嵌入式Linux系统开发的指南。通过学习该PDF,读者可以了解到嵌入式系统的硬件和软件结构,掌握开发工具和环境的使用,以及开发和调试驱动程序和应用程序的技巧。这对于想要深入学习ARM嵌入式Linux系统开发的人来说是一本非常有价值的参考书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值