例如以单片机的ROM是有10万次擦写的FLASH,现在该如何能像电脑软件一样能自动升级里面的程序而不用拆下来重新烧
1.假设需要更新的程序是放在一个外接的E2PROM里,
2.怎样让单片机执行RAM里的指令,以便更新ROM区
3.通过执行RAM里的指令读出E2PROM的数据,怎样写入ROM区,一般都是用烧写器从外面烧写,还不知道该怎么从里面写
------解决方案--------------------
这个不是很难,前提是片内Flash/ROM支持自编程,也就是说支持软件指令对Flash/ROM的读、擦除和编程。
------解决方案--------------------
IAP
------解决方案--------------------
自己实现一个BOOTLOADER
以前一些神人说不难
不过我还是没能太好地搞清楚
------解决方案--------------------
可以的啊。只要芯片支持。做一个简单的类型bootloader的程序就可以了。
------解决方案--------------------
51的似乎不支持,需要AVR系列的。
思路可以这样:在bootloader区里是一段单独的程序,专门用来升级用。
升级时,应用程序跳转到bootloader的程序,升级后,再跳转到新的应用程序。
当然,这种方法需要各程序在FLASH中绝对定位。
另外,对于自升级的功能,新程序放在E2PROM里没什么意义,因为往里面写还是需要消耗资源,不如直接借助COM,用USART进行升级。
------解决方案--------------------
有些MCU支持的
自己不支持的就比较麻烦
------解决方案--------------------
看芯片支不支持啊。
------解决方案--------------------
只要你的芯片支持串口,支持Flash多次重写,就可以实现自己的BootLoader
------解决方案--------------------
------解决方案--------------------
学习
------解决方案--------------------
关注中。。。
我刚发了一个关于ARM下自动升级的问题,也正期待解决。这个可以借鉴下
------解决方案--------------------
ISP在线编程啊
好象winbond 的w78e516b有这样功能
------解决方案--------------------
如果你MCU有ISP功能是很容易实现的。我在SM5964,MSP430FXXX等一些MCU上实现过。
但是如果是ROM类型,程序又要在RAM运行,那估计就没戏了。
------解决方案--------------------