导入器的代码是系统重置之后CPU最先运行的代码,所以它起到对装置进行初始化的作用。它也能够将flash只读存储器的其他部分进行重新设置,包括在flash只读存储器发生损坏情况下的主程序的代码。
因为这些关键的作用,导入器通常会占据flash只读存储器中的特定导入块,这些特定导入块一般是突发擦除或损坏的硬件保护。
现在让我们看看flash只读存储器导入器运行的特定行为。
系统重新设置之后,导入器立即运行基本的硬件初始化。这一过程包括访问RAM,建立块,PLLs,以及配置其他关键的外围设备。
从起动块来运行初始化设置是一个好办法,你也可以使用其他的初始化方法来加强程序代码的完整性。
硬件设置之后,你可以运行程序代码。在导入过程中,你不能单纯地相信flash只读存储器中的内容,因为存储器中可能受得一些来自外界的损坏。所以,导入器应该计算程序的校验和或者CRC,然后利用代码中存放的校验和进行比较。
你可以使用(或编写)一个程序来计算或者存储一个校验和到flash只读存储器的图解文件。当然一定确保校验和存储在一个固定的偏移量,这样导入器才可以查找到它。
如果校验和测试表明的是一个受损坏的ROM,导入器就进行flash可重新编程的块。这一过程中可以通过装置的接口来获取一个新的flash的ROM二进制图象。一般常常选择的是RS232系列,USB接口,或者以太网接口,这正如拥有一台标准PC机的用户可以将新的ROM图象传递到你的装置上。
许多嵌入装置都支持一些复杂的接口,如USB 或者 Ethernet+TCP/IP的协议。但这些都不是导入器中最容易的执行方式。最简单的执行方式是:使用UDP协议而不是TCP协议。
下一章,我们将继续讲述flash只读存储器,我们将讨论如何从RAM执行flash程序,返回一个新的flash ROM图象,从导入器过滤到程序,从ROM复制程序到RAM。