在线编程目前有两种实现方法:在系统编程(ISP)和在应用编程(IAP)。ISP一般是通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程,而IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。ISP的实现一般需要很少的外部电路辅助实现,而IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器。
因为STM32的ISP协议不支持Ymodem协议,它只支持它自已的ISP通信协议,该协议在坛子上有,你可以找到,如果你要实现使用Ymodem协议来下载程序这个功能,可以自行写个支持Ymodem协议的IAP应用即可。
不同板子的程序移植,重要的一点就是HSE 值得修改,这是要跟板子实际外部晶振频率对应的。 有的板子是8M,有的板子25M,等等 如果这个频率设置不对,串口通讯就会受到影响,而乱码是串口通讯波特率不匹配的最常见问题。
你说的这种方式风险很大。原本IAP就是个高风险的过程,代码从SRAM刷入Flash的过程要谨防断电、动作越快完成越好;你可倒好,一边低速接收一边慢慢改写Flash的内容,将这个高风险的刷机时间人为延长了N倍。
更可怕的是你对Flash完全没有认知,还想不缓冲直接写Flash?连扇区缓冲都不用?整个扇区你不问青红皂白先一股脑擦掉、再慢悠悠地一个字节一个字节接收写入?
这个思路,做做论文、搞搞研究还行,真用到产品里面会坑死一家厂的。
以上就是关于IAP的与ISP区别全部的内容,包括:IAP的与ISP区别、stm32的iap升级一定要用ymodem协议吗、STM32F107 使用IAP方式更新程序时,怎么更改Bootloader的波特率等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)