由于目前带并口的PC机越来越少,且三星提供的SJF工具所提供的NAND型号比较少,自己编写一个NAND烧录Bootloader的工具是很有用的,有些开发板会自带一ADS下的Bootloader使用它估计比较方便,但是我没有这样的代码,所以就在对Bootloader比较熟悉的情况下拿三星提供的BSP、WINCE的源文件编写了一个自己ADS下使用的烧录Bootloader程序。
程序的编写基本上是一个移植的过程,需要的文件是WINCE自带的blcommon.c、EBOOT的部分源文件和BSP中NAND的源文件,另外针对使用的仿真器或者是AXD写一个CPU的初始化脚本,负责下载程序到RAM时初始化RAM。
烧录工具通常不要求使用MMU,所以移植时涉及到地址映射的都改成使用物理地址,按照EBOOT的工作流程修改blcommon.c中的一些代码,以及EBOOT中OEM系列的代码。
假如烧录时像EBOOT一样使用USB的方法下载文件,就需要实现USB的功能,所要注意的是处理好中断异常的代码,关于ADS调试下使用中断的方法在之前的文章中有详细描述。
这种方法开发出来后使用十分方便,且下载速度很快,但是由于对EBOOT的原理的理解要求较高,所以初学者建议不要采取此种方法。