1.操作系统在NAND FLASH上的顺序排布: uboot, kernel image, filesystem image;是否存在其它的顺序:如:将nand flash 格式化成一个ext3文件系统,kernel镜像作为一个普通文件放入ext3文件系统中。
2. MTD给上层文件系统提供的接口是什么
这个是嵌入式的吧,嵌入式系统启动之前,跑的是uboot,就像windows的bios一样,初始化一下硬件,然后会跳转到你的系统程序的第一条代码,加载log,然后就是跑系统的程序。kernel imahe 是包含在 操作系统程序里面的。系统的程序文件格式,这个我不是很清楚,我记得到时要做成镜像文件。mtd给上层提供的也是虚拟的接口,应该类似一个中间层的存在,对于做应用层的,这部分应该可以不关心吧,毕竟这个太底层了。你说的顺序,最基本的,UBOOT肯定在地址的0x00000000这个地方,那系统文件在哪里呢,在你写uboot的时候,会有一个地方让你指定,uboot执行完了之后,程序寄存器的指针赋值为多少,也就是汇编领域的跳转。这个跳转的地址就是你烧写系统文件的地址,只有正确的把系统文件烧写在这个地址上,你的系统才可以跑起来。所以操作系统在NAND FLASH上的排列问题就清楚了。
本着小白参观的态度进来了,看到楼上的回答我笑了,握爪握爪。。。
给上层文件系统提供的接口:
Mtd 给上层文件系统提供的接口是 Raw block device,也就是传说中的mtdblock:
挂载yaffs文件系统的时候呢,就会通过设备节点找到block层中对应的block_device结构体,最后在填充超级块的时候
直接通过主次设备号在mtd_table[]中找到对应的mtd_info结构体。而且在yaffs文件系统层封装的读写等函数中,也是将
找到的mtd_info结构体传入,直接利用了mtd_info结构体中的相关读写函数指针来进行底层的读写。