首页 > 其他分享 >7.8日BOOTLOAD总结(3)

7.8日BOOTLOAD总结(3)

时间:2024-07-08 20:09:58浏览次数:15  
标签:总结 BIN BOOTLOAD 文件 BOOT APP 程序 7.8 600H

今天突破性进展,成功实现了SC92系列的单区远程升级功能,之前厂家给的DEMO程序存在一些问题,或者说是KEIL5软件的问题,导致FLASH分区内的程序烧写出现了问题。
问题描述:用工具将BOOT和APP程序合并后,FLASH分区的01H-600H为BOOT程序,600H以后为APP程序,等同于先烧录APP程序,再烧录BOOT程序。若先烧录APP程序,再烧录BOOT程序会出现问题,APP程序的HEX文件转为BIN文件后查看发现在00H-600H处也有数据,不过多数为空(00H),将BOOT区程序破坏掉了;合并后的程序烧录后,用IAP去烧写APP程序,出现了类似上面的问题,APP区内数据被破坏,无法正常运行,不过真正的BOOT区没有被破坏,由于IAP写是在600H开始写入的,但是会把APP的BIN文件内的00H-600H的无效数据写入到600H-C00H区域内,正常APP程序应该是从600H处开始写入APP的数据,如图所示

解决方案:KEIL5软件生成的HEX文件转成BIN文件后无法编辑(本来想把前600H的数据删除的,发现只能清零,不能删除),后考虑从BOOT程序入手,对接收到的数据进行处理,IAP收到APP数据的前600H包数据不做处理只计数,对600H以后接收到的数据进行正常写入到芯片FLASH 600H区域及以后。这样处理后IAP写入正常的APP程序便可以正常运行了。此时的BOOT区和APP区与合并后的BOOT-APP一致。
由于SC92系列芯片没有硬件支持读取FLASH内容,导致很多问题只能一点点排除,最开始猜到了APP区程序出现了问题,但是不知道问题出现在哪里,对比合并后的BOOT-APP的BIN文件、BOOT的BIN文件、APP的BIN文件后发现了该问题。具体原因不知道是不是因为KEIL5软件生成的HEX文件出现了问题,还是厂家给的DEMO程序本来就有问题,不过好在最后终于是解决了问题。下一步要研究AB双区备份的问题了。
总结一下,单区的BOOTLOAD方法:
51单片机启动流程:当51单片机上电后,CPU会从CODE区的00H地址开始取得指令,通常00H地址存放的是一条跳转指令,将程序跳转至STARTUP程序中,在STARTUP程序中完成清RAM和一些变量的初始化。完成了以上动作之后程序才会跳转到main函数执行相关程序。为了保证Bootloader功能正常运行,程序需要首先进入Bootloader工程的STARTUP程序和main以完成一些Bootloader功能相关的设置,在完成了设置之后才允许跳转至用户工程的STARTUP文件和main中运行用户的应用代码。
首先分区,分为引导程序BOOT区和用户程序APP区
其次设置中断向量重映射,重映射到用户程序APP区地址开头,接下来的地址存储用户APP区的STARTUP数据(KEIL5工具详细配置见上一篇文章)

最后完善相关配置,如设置更新完成标志、出错标志、双方的串口通讯协议等。

标签:总结,BIN,BOOTLOAD,文件,BOOT,APP,程序,7.8,600H
From: https://www.cnblogs.com/xzaxs/p/18290598

相关文章

  • JavaScript总结2
    概述JavaScript是世界上最流行的脚本语言。JavaScript是一种轻量级的编程语言,可以插入HTML页面的编程代码。JavaScript插入HTML页面后,可由浏览器执行。特点语法简单,易学易用;解释性语言;跨平台,基于对象和事件驱动,可用于客户端。作用可以动态改变网页内容,网页外观;验证表......
  • 蓝桥杯单片机学习总结(Day1 实现LED闪烁)
    标题一:通过SM74HC138译码器打开控制8个LED灯的寄存器标题二:编程思路标题三:总结 打开LED寄存器: 由开发板的原理图可知其8个LED灯的寄存器开关为SM74HC138译码器(以下用38译码器称代)的Y4口,该38译码器的输入端P25~P27,其分别对应P25->SM74HC138_A、P26->SM74HC138_B、P27->S......
  • Studying-代码随想录训练营day31| 56.合并区间、738.单调递增的数字、968.监控二叉树
    第31天,贪心最后一节(ง•_•)ง......
  • 7.8
    今天学习时间1小时代码半小时主要在vm里克隆了三个虚拟机并且实现主机用户之间的SSH免密登录互通还有每个主机的IP设置映射等等配置主机名映射:首先,修改/etc/hosts文件,将服务器和主机名进行映射。这样可以在各自服务器下通过主机名访问对应的IP地址。这一步是为了方便管理......
  • SMU Summer 2024 Contest Round 1(7.8)
    A_DiceandCoin题目链接:abc126_c思路:分别求所有掷到的筛子数时赢得可能,进行求和voidsolve(){intn,k;cin>>n>>k;doubleans=0;for(inti=1;i<=n;++i){doublenow=1.0/n;if(i>=k)ans+=now;else{......
  • 信号与线性系统笔记总结
    使用说明前三章是ppt加个人注释,后面都是手写笔记总结。在这里我要狠狠安利西电郭宝龙教授,他讲信号这门课很有耐心,也很有思路。笔记可能有错误的地方,后期会不断更正。参考视频:【西安电子科技大学——信号与系统(郭宝龙)】https://www.bilibili.com/video/BV1PZ4y1t7DA/?p=3&......
  • 20240706总结(线段树应用)
    A-PhysicalEducationLessonsCF915EPhysicalEducationLessons题解:没什么好说的,动态开点模板题(好像普通线段树也可以做)B-GCDofanArrayCF1493DGCDofanArray题解:暴力分解质因数,修改的时候也把x分解,对每个质数开一个可重集合(multiset)记录一下每个质数出现的不同位......
  • vue3管理系统常用代码总结
    管理系统常用基本模块,可满足大部分管理系统的基础模块需求。技术选型vue3+typescript1.登录功能//登录construleFormRef=ref<FormInstance>();constrouter=useRouter()//-->$routerconstsubmitForm=(formEl:FormInstance|undefi......
  • C++异常处理算法总结
    一、背景        C++的异常处理机制是用来处理程序运行过程中出现的异常情况的。异常处理可以帮助程序应对错误,避免程序崩溃,并且可以提供有意义的错误信息。下面是C++异常处理的关键概念和常用模式的总结。二、异常处理1.异常处理的基本机制        C++......
  • 7.7每周总结
    小学期周总结姓名:董泽豪学号:20223775一、学习情况周一-Hadoop学习今天我学习了Hadoop的基本概念和架构。了解了Hadoop是如何通过分布式计算来处理大数据的。通过阅读教材和观看相关视频教程,我对Hadoop的工作原理有了初步的理解。周二-MapReduce学习我深入学习了MapRedu......