C语言
文章平均质量分 78
c语言基础
鹏hoho
一个刚开始学编程的菜鸟,用博客做一个笔记整理
展开
-
一主多从下的IAP升级(三)
原因是:在实际工作中发现,当boot跳转到APP的时候,例如某个引脚默认是低,但是在主程序中,此引脚连接了某些器件,默认是高的时候才会是关闭,低是运行,此时从boot跳转主程序,引脚就会从默认是低跳变成默认是高,连接的器件有可能会有一瞬间的上电情况。当开始升级的时候,上层下发升级请求,上层按照一定的顺序分发子mcu固件,首先会在主mcu上判断是否满足升级条件,如果各项指标都满足,此时向子mcu发送升级请求,此时子mcu的APP程序中应该可以收到升级指令,此时子mcu应重启进入boot。原创 2024-03-26 17:11:42 · 203 阅读 · 0 评论 -
一主多从下的IAP升级(四)
主mcu端发送过来的是相同的宏定义,知识宏定义名字会去掉ACK,也就是主MCU发送给子MCU,SUBMCU_OTA_STAR这条命令时,子MCU通过解析后得到,处理完成会给主MCU回复SUBMCU_OTA_START_ACK。当主MCU将包发完后会通知子MCU,包发送完了,可以做整个代码的检查了,此时子mcu会对已经更新了的flash部分做crc计算,看看是不是与发过来的crc一致,看看是否能够通过。当发给主mcu ACK后,主MCU会开始给子MCU发送升级包,指令SUBMCU_OTA_PROCESS。原创 2024-03-27 17:42:49 · 401 阅读 · 0 评论 -
一主多从下的IAP升级(二)
如上,可以定义bootload的起始地址,大小为18k,bootflag大小为2k,APP大小为100k,这样一次排列,当然也可以拓展,比如说多定义一些地址,去存特定的东西,这里只定义这三个分区。建议可以在flash相关的.h文件中定义下flash分区,这样方便写flash相关函数,也方便后续维护,例如要改各个分区的大小时,如果用宏去做定义,就会相对方便。:flash的擦除只能是整页擦除,我们的擦除一页的单位是2k,说明擦除一次至少擦2k。并且在读写flash之前,应该增加一些地址限制的判断。原创 2024-03-23 18:25:54 · 157 阅读 · 0 评论 -
一主多从下的IAP升级(一)
当一个主mcu与多个mcu相连的时候,主mcu进行控制各个子mcu运行,此时想要对所有的mcu做升级操作,上位机仅按照一定顺序进行分发各mcu升级程序,但主mcu的flash无法存下各个子mcu的程序,:从上位机上下发升级通知,此时主mcu接到升级请求,文件存在上位机上,此时升级,先升级子mcu,主mcu做分发功能,将收到的包使用串口DMA分发给各个子mcu,当子mcu升级成功后,在对主mcu进行升级。//指定了RAM的起始地址。FLASH操作 ,MCU启动过程与中断响应方式 ,串口,DMA。原创 2024-03-22 16:45:10 · 686 阅读 · 0 评论 -
C语言多文件编译与文件操作(linux)
多文件编程,编译过程,makefile的使用,条件编译,文件操作,标准IO原创 2022-07-14 09:42:21 · 5448 阅读 · 0 评论 -
C语言中函数与数据传递
C语言,递归函数,函数间传递 string族函数等原创 2022-07-08 15:50:57 · 2902 阅读 · 0 评论 -
C语言词法符号(续)
C语言词法符号,运算符、标识符、原创 2022-07-06 14:17:17 · 300 阅读 · 1 评论 -
C语言指针、数组与函数
C语言 函数,指针,数组原创 2022-07-07 15:33:52 · 466 阅读 · 0 评论 -
C语言输入输出
c中常量、输入输出原创 2022-07-07 09:22:22 · 8302 阅读 · 1 评论 -
C语言笔记(关键字篇)
C语言32个关键字原创 2022-07-06 09:17:52 · 349 阅读 · 3 评论