由于项目硬件资源有限,norflash被当成主控扩展Flash供应用程序使用,而主控本身Flash只有128K,项目需要用存放定制音乐文件。无奈之下,笔者只能将norflash制作成可读文件系统,写操作均为boot中实现。 项目使用的norflash为W25QXX系列,容量最大为16M,特定如下:
- 页:256字节;
- 扇区:4K字节;
- 块:64K字节;
因此,其要作为文件系统,则只能使用FAT16格式,FAT16分区和簇关系如下:
分区大小 | FAT16簇大小 |
---|---|
16MB-127MB | 2KB |
128MB-255MB | 4KB |
256MB-511MB | 8KB |
512MB-1023MB | 16KB |
1024MB-2047MB | 32KB |
问题
笔者将底层IO读写操作定为4K,则norflash格式能成功,挂载也能成功,但是只能写无法读,写入几次后也无法写入。
遇到这种问题,可以使用简单的方法验证小容量以4K作为扇区是否可行,利用主控片上RAM来实现文件系统,笔者利用64K RAM作为测试,很显然最后无法格式化成功。
因此,笔者将IO读写操作定位512字节后,读写都能正常了。
注意:底层IO读写扇区为512,在格式化时,簇大小不能为4K,否则会格式化失败,笔者使用512字节作为簇。可能需要参照上述表格,笔者没验证过2K是否可行。