华大MCU的IAP升级

 折腾了些时间,总算解决了

芯片型号是HC32F460,用串口实现IAP升级,从21IC论坛中找到了同样的IAP升级源码,下载后,在自己的开发板上测试也没问题,阅读源码发现,作者的源码中串口通信部分没有用中断。

不过像这样的IAP程序也没有太多事情可做,主要就串口通信和FLASH更新,不用DMA传输也没多大影响。

但我想将它改为串口通信用中断实现,结果是怎么都不行,头大了...,想啊想,怎么会不行呢,然后仔细阅读《HC32F460系列用户手册》发现以下描述:

我恍然大悟了,哦,原来如此。

那么我的串口通信要用中断实现,就需要将串口通信部分代码放到RAM中,怎么实现呢?刚好前期对分散加载有了解,大家可以参考我的专栏《armLink》中关于分散加载的内容。这里就不赘述了。

因此我的代码用了2个技术,DMA传输和分散加载。

串口通信改为用DMA实现,这样我认为效率会更高。

看代码,IAP程序主要分2个部分,一个是和上位机通过串口通信,另一个是分散加载文件的编写。

一、串口通信部分代码

版权声明:本文为CSDN博主「David123_liu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_15548761/article/details/121938693

David123_liu

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

华大MCU的IAP升级

折腾了些时间,总算解决了 芯片型号是HC32F460,用串口实现IAP升级,从21IC论坛中找到了同样的IAP升级源码,下载后,在自己的开发板上测试也没问题,阅读源码发现,作者的源码中串口通信部分没有用中断。 不过像这样的IAP程序也没有

ESP8266 无限重启踩坑

最近做了一个电子墨水屏万年历,在移植屏幕代码时遇到了esp8266无限软复位的问题,如果你的串口打印是以下图片所示,那么恭喜你问题解决了。 造成软复位的原因是因为,程序里有死循环&#xf