NDS烧录卡工作原理有哪些?

NDS烧录卡工作原理有哪些?

最近开发一个ARM上的项目。突然发现,我用的嵌入式操作系统没有文件系统,得通过直接寻址的方式调用应用程序。我联想到nds,我觉得nds的操作系统应该也是没有文件系统的,slot1和slot2在系统中会各有一个地址,nds系统在用户选择完slot1或slot2后根据地址将游戏卡中的程序调入内存并执行。
我认为烧录卡本身就是一个NDS软件,只是这个软件是一个建立在nds操作系统上的文件系统。根据用户的选择,将程序调入内存,为了可以实现文件系统,我们必须将nds的操作系统加入可动态修改slot1或slot2地址的功能,这也就是朋友们经常说的刷机。
我们在向烧录卡中烧录游戏的时候,表面上看是对rom的转换和拷贝,其实还有更重要的一步是在对存储卡中的文件表进行修改,如果没有这一步,即使拷贝进去游戏,也不会运行。
nds操作系统读取烧录卡中的软件并启动,这就是我们所看到的烧录卡的界面了。不同的烧录卡在启动时的方式是不同的,但大体上可分两种,一种是在slot1上使用的如:dslink,这种烧录卡在运行时如同运行z版游戏一样,当用户选择了某个游戏后,烧录卡软件首先查找文件表取得所选游戏在存储卡中的地址,然后加上slot1的系统地址,得出一个带偏移量的游戏地址,最后将这个地址传到游戏启动函数并运行这个函数,系统将游戏数据从连接slot1的总线上读出,这样游戏就运行了。另一种是在slot2上使用的如:supercard。说到slot2接口,就不得不先说一下nds操作系统如何识别GBA游戏和NDS游戏的,不论是GBA游戏还是nds游戏,其文件头都会记录该游戏的类型,操作系统读取了该文件头后,根据游戏的类别,调用不同的处理部分对该游戏进行处理,如GBA兼容GB的游戏,nds兼容GBA游戏。在slot2上使用的烧录卡与在slot1上使用的烧录卡有两处不同的地方。第一:slot2烧录卡使用的是GBA卡带的载体,但本身是NDS程序,操作系统读取完烧录卡上的程序后,调用NDS处理部分运行这个程序,而不是用GBA处理部分运行这个程序。第二:游戏数据都是用连接slot2接口的总线读龋