掌叔
2009-02-22 08:59:10
摘自:[url]www.fw211.com[/url]
作者:火精灵
在自制程序中如果想要使用文件系统有两种办法:第一,用DLDI的方式直接访问TF卡的FAT;第二,使用ROM中的文件系统。这里我们只介绍第二种方法。
我们知道NDS的文件系统不同于我们熟知的MS FAT,有自己的格式。它使用了两个表,第一个是FNT,文件名表;第二个是FAT,文件分配表。使用ndstool中的-d命令就可以将要使用的文件及目录添加到nds文件之中。在程序中可以根据文件名的索引对应FAT的索引找到该文件的地址及大小。知道了这个原理我们就可以虚拟一个MS FAT盘的bin文件,将它作为NDS文件系统中的一个文件插入到NDS文件之中。程序中只要获得了该文件的起始地址,就可以用MS FAT的程序来访问这个虚拟盘了。那么程序中如何获得这个文件的起始地址呢?首先我们要知道NDS HEADER的位置,因为FNT和FAT的信息就保存在那里。在加载NDS程序的时候HEADER会被加载到0x2000000+0x007ffa80这个位置处,根据HEADER的结构,在HEADER+0x48处就是FAT的偏移。因为FAT中就一个虚拟盘文件,所以在该偏移处读出的第一个32bit 就是虚拟盘的起始地址了。