·外设可以对程序存储器和选项字节进行擦除和编程,不能对系统存储器进行操作,因为系统存储器是原厂写入的bootloader程序,不允许修改
·对于C8T6程序存储容量是64K,一般写一个程序只占前边很小一部分空间,剩下的大部分空间可以利用,比如存储一些自定义的数据,充分利用资源,但是需要注意不能覆盖原有程序,否则将程序破坏,无法运行。存储少量参数一般选最后几页就行了
·在程序中编程:首先需要自己写一个bootloader程序,存放在程序更新时不会覆盖的地方,比如放在存储区域靠后的部分,需要更新程序时,控制程序跳转到我们自己写的bootloader里,这里边可以接受任意通信接口传过来的数据,如串口、蓝牙转串口、USB、WIFi转串口等等,传过来的数据就是待更新的程序,然后控制FLASH读写,把收到的程序写入到存储器前边程序正常运行的地方,写完之后再控制程序跳转到正常运行的地方,或直接复位,完成程序的自我升级。
实现自我升级的过程和系统的bootloader一样,由于程序要实现自我升级,需要布置一个辅助的小机器人来临时干活,不过系统存储器的bootloader写死了,只能用串口下载到指定位置,启动方式也不方便,只能配置BOOT引脚触发启动,如果自己写bootloader的话就可以自定义收的方式和写的位置以及启动的方式,整个升级过程程序都可以自主完成,实现在程序中编程,更进一步可以实现远程升级