bootload 是为了更新程序和下载程序使用的。为了尽量不占用太多的flash,所以在bootload里只有基本通信协议和基本驱动。
当需要更新程序时,启动bootload程序,把基本读写函数等copy到ram中,完成后在RAM中运行。在RAM中运行有一个好处:有些
器件不支持在flash中运行并擦除flash。在RAM的运行的第一步就是擦除flash的程序块(不包括bootload部分,否则以后就不能更新程序了)。
第二步就是与通过串口(SPI、无线等)上位机通信,把程序image下载到MCU当中并写到flash中,下载完成后。进行软件复位,启动程序。
note:假如无线更新程序的话,还可以先下载更新程序imag到MCU的RAM中并运行它。通过这个程序实现更加复杂的程序更新。就像eZ430 运动手表的
程序更新一样。 |