- 论坛徽章:
- 0
|
1. 嵌入式开发中说的,烧写文件系统,到底都烧写了什么内容,烧写后对nand flash或者nor flash都做了哪些修改呢? 烧写了所谓的根文件系统rootfs
rootfs中,包含了,(嵌入式Linux)操作系统运行所需的必备的文件:各种文件夹和文件(/,/root,/usr,/lib等等)
所谓的烧写,其实就是:
把对应的文件系统中的文件和文件夹,拷贝,到目标存储设备(nand flash/nor flash等)中而已。
形象的说,就像:
印刷术(或手写),把文字,印刷(写入)到(书的)空白页中
烧写,就是用工具(硬件连线,加上对应软件),将rootfs(就是一堆数据),写入到,存储设备(nand/nor)上。
更细节的话,还涉及到,写入的rootfs,即这堆数据,以何种形式,写入到存储设备中
对应的不同格式,就是不同的文件系统,常见的如jffs2,yaffs2,ubi等等。
比如:
yaffs2的话,就会用到nand flash的oob去存储对应的,和yaffs2文件系统本身相关的数据
详见:
oob / Redundant Area / Spare Area
2. nand flash或者nor flash在烧写之前,是不是也需要文件系统,这个文件系统,由谁烧写呢?
简单说,烧写之前,可以有文件系统,也可以没有。
烧写前有文件系统的话:那就可以直接利用一些工具,比如正在运行的linux中的cp等工具,直接拷贝文件即可。
其内部,底层在实现数据拷贝的时候,还是会调用到对应的,nand flash的驱动方面的代码,去实现对应的数据的读写的。
烧写前没有文件系统的话:那就是需要你有对应的,直接操作nand flash的工具了。
比如uboot框架中的nand.read/write或linux系统中的mtd方面的工具nanddump,nandwrite,flash_erase,flash_eraseall等等,然后用这些工具,实现将数据写入或读出到nand flash中。
这些工具,本身内部就是包含了nand flash的驱动,才得以实现能够操作nand,实现数据读写的。
相关供参考的资料:
开发前期或者开发过程中,固件的烧写方式
已经准备好了mtd工具
3. bootloader、内核、文件系统的烧写顺序是什么你? 简单说就是:
烧写的先后顺序没区别,但是每个部分烧录到的位置,有区别。
一般这三部分,放到nand flash中的位置,从前到后依次是:
uboot(最常见的bootloader),内核(kernel),rootfs(根文件系统),用户数据(user data)
详见:
Linux系统中的Nand MTD分区
4.其他与此话题有关的一些内容:
Linux MTD下获取Nand flash各个参数的过程的详细解析
Linux系统中/dev/mtd与/dev/mtdblock的区别,即MTD字符设备和块设备的区别
|
|