折腾了些时间,总算解决了
芯片型号是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
暂无评论