cco网站素材网站制作公司 云南

web/2025/10/4 15:26:47/文章来源:
cco网站素材,网站制作公司 云南,如何用电子邮箱做网站,辽宁营商环境建设局网站STM32 OTA-IAP设计方案 OTA是Over-the-Air的简写#xff0c;即空中下载技术#xff0c;通过网络远程给用户进行系统更新和升级。IAP是In Application Programming的简写#xff0c;IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写#xff0c;目的是为了在…STM32 OTA-IAP设计方案 OTA是Over-the-Air的简写即空中下载技术通过网络远程给用户进行系统更新和升级。IAP是In Application Programming的简写IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。IAP主要包括BootLoader和应用程序两部分基于IAP的OTA设计思路是先通过OTA接收升级固件再利用IAP进行固件搬移、校验和程序跳转实现空中升级的目的。 BootLoader程序根据判断是否需要升级固件并进行运行代码跳转。APP工程中需要编写OTA数据包交互协议将接收到的升级固件保存至FLASH校验一致性然后设置升级标志位并重启。 一、STM32启动模式分析 Cortex-M3 内核启动有3种情况 通过boot引脚设置可以将中断向量表定位于SRAM区即起始地址为0x2000000同时复位后 PC 指针位于0x2000000处。通过boot引脚设置可以将中断向量表定位于FLASH区即起始地址为0x8000000同时复位后PC指针位于0x8000000处。通过boot引脚设置可以将中断向量表定位于内置Bootloader区。 Cortex-M3内核规定起始地址必须存放栈顶指针而第二个地址则必须存放复位中断入口向量地址在Cortex-M3内核复位后会自动从起始地址的下一个32位空间取出复位中断入口向量跳转执行复位中断服务程序。Boot引脚设置见下表。 BOOT0BOOT1启动模式0无关FLASH10系统存储器ISP模式11SRAM调试 STM32的启动文件startup_stm32f103xb.s和启动过程。 1首先对栈和堆的大小进行定义并在代码区的起始处建立中断向量表其第一个表项是栈顶地址32位第二个表项是复位中断服务入口地址2然后执行复位中断在复位中断服务程序中跳转 C/C标准实时库的main函数(__main)完成用户堆栈等的初始化后跳转.c 文件中的main函数(真正的用户main函数)开始执行程序。假设STM32被设置为从内部FLASH启动中断向量表起始地位为0x8000000则栈顶地址存放于0x8000000处复位中断服务入口地址存放于0x8000004处。当STM32遇到复位信号后则从0x80000004处取出复位中断服务入口地址继而执行复位中断服务程序然后跳转__main函数最后进入main函数。 二、FLASH分区 设置STM32为从FLASH启动即硬件设置管脚BOOT0低电平。本方案单片机型号采用STM32F103RBT6FLASH:128KB, SRAM:20KB。FLASH分为Bootloader、APPA、APPB、Parameter4个部分分别占用20kB、50kB、50kB和8kB内存空间。APPA是应用程序区运行用户设计的应用程序APPB是应用程序备份升级区存放接收到的固件升级包Parameter是参数区保存程序运行的关键参数、升级标志和密钥。FLASH分区示意图如下图所示。 三、OTA流程 单片机上电后首选运行BootLoader该段代码读取Parameter参数区的升级标志量判断是否有升级需求。若有升级需求则根据记录的相应固件大小将APPB区升级文件拷贝至APPA区并改写升级标志量然后重启若无升级请求则程序跳转至APPA代码区运行。OTA程序流程如下所示。 具体流程描述如下 Step1上电启动单片机首先执行BootLoader程序。 Step2BootLoader读取Parameter区参数查看升级标志是否有升级任务若没有升级任务则进入 Step3否则进入 Step4。 Step3 BootLoader程序跳转至APPA执行用户代码并判断是否收到升级任务请求若有升级任务请求则进入 Step7。 Step4根据Parameter区升级参数校验APPB固件数据并将APPB升级固件拷贝到APPA区执行 Step5 和 Step6。 Step5将升级标志位清除。 Step6重启再次执行BootLoader。 Step7将接受到的升级数据包存入APPB区并将相关升级参数存入Parameter区若接收数据完成固件检验通过则写入Parameter区升级标志并进入 Step8 。 Step8重启再次执行BootLoader。 四、工程设置 4.1 BootLoader工程设置 由于BootLoader需要在上电复位后首先执行因此设置BootLoader存放在FLASH起始位置0x08000000在MDK中打开options for target设置IROM1 Start 0x08000000Size 0x5000(0x5000 20kB)在Flash Download中设置下载Flash位置参数与IROM1中设置Start和Size相同。BootLoader代码大小不超过20kB越小越好。 4.2 APP工程设置 根据FLASH分区APP代码存放在紧挨着BootLoader之后因此APP的起始位置应该为0x080000000x5000 0x08005000占用内存大小为0xC800(50kB)在MDK中打开options for target设置IROM1 Start 0x08005000Size 0xC800在Flash Download中设置下载Flash位置参数与IROM1中设置的Start和Size相同如图5和图6所示。由于APP代码运行的起始位置不在0x08000000其栈顶地址发生偏移对应的中断向量表地址也整体发生偏移因此在代码中需要对APP代码的中断向量表偏移进行设置具体的在system_stm32f1xxx.c中启动代码中可以看到定义的中断向量表偏移量宏定义 #ifdef VECT_TAB_SRAMSCB-VTOR SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ #elseSCB-VTOR FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ #endif /* #define VECT_TAB_SRAM */ #define VECT_TAB_OFFSET 0x5000 /*! Vector Table base offset field. This value must be a multiple of 0x200. */升级界面如下 设备启动界面如下 下一篇准备写个具体实现包括本文提到的整包升级和朋友提到的差分升级并且附带配套的QT开发的升级软件开发教程考虑收费栏目。 有需求的朋友请私信我统计一下情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主题网站设计欣赏dw做的网站怎么上传图片

随着网络技术的不断发展,网络安全威胁也在不断增加,勒索病毒攻击企业计算机服务器的事件时有发生,并且勒索病毒的加密形式也越来越复杂。近期,云天数据恢复中心陆续接到很多企业的求助,企业的计算机服务器遭到了mallox…

自己建设网站难不难哪个网站做不锈钢好

一、获得命令帮助 1.1、内部命令与外部命令 简单来说,在linux系统中有存储位置的命令为外部命令; 没有存储位置的为内部命令,可以理解为内部命令嵌入在linux的shell中,所以看不到。 type来判断到底为内部命令还是内部命令 [ro…

北京住房与城乡建设网站怎么查看网页源代码

在sbin文件夹下是start-all.sh可以运行的,但是到了别的文件夹下就不行了,于是想到了是文件路径问题,因为hadoop环境是和java环境一起配置的导致sbin写成了bin 解决办法: 打开.bashrc配置hadoop的环境变量 sudo vim ~/.bashrc …

古镇免费网站建设最好看免费观看高清大全猪蜜蜜剧本

适用于什么场景? 检索比较多的场景,例如学生成绩管理系统,老师对学生的成绩进行排名或查询操作 ArrayList有哪些特点? 1、ArrayList集合底层采用了数组数据结构,是Object类型 2、动态数组。ArrayList的默认初始容量…

传奇高端网站设计制作大庆网站建设优化

查看WEB服务器的连接数 https://technet.microsoft.com/en-us/sysinternals/bb897437 tcpView转载于:https://www.cnblogs.com/daishuguang/p/4973342.html

h5网站建设模板html5 网站源码

文章目录后端有关说明前端有关说明接口设计小程序注册/登录接口APP 注册/登录接口PC Web 端的注册/登录接口小程序注册/登录序列图校验 token后端有关说明 登录和注册的逻辑要独立抽取写成2个接口:注册接口、登录接口 小程序、APP、PC端的登录接口和注册接口要分开…

移动网站建设服务商重庆必去的十大景点

Android开发要点说明 商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。 应用包名:是在APP项目配置文件And…

做拆分盘网站南充做网站略奥网络

第一道题:求有删除情况的最长回文子串 题目: 解题思路: 这个题严格意义上来说,删除了字符就谈不上回文串了,既然有删除,那估计考察的不是回文串,而是其他的,但是这个东西又有回文串的…

好网站建设公司服务子网站建设方案

分布式并发架构 微服务、Docker容器的基本原理、架构设计,以及应用场景。 缓存:Redis、Memcached、CDN、本地缓存 搜索引擎的选型:Lucene、Solr等选型与比较 应用服务器雪崩:长事务、SQL超时、同步接口引起的雪崩场景&#xff…

免费在线观看电影电视剧网站wordpress菜单对齐修改

探寻SQL的背后机制 前言 在数据领域,SQL(Structured Query Language)是一门广泛使用的语言,用于查询和处理数据。你可能已经使用过诸如MySQL、Hive、ClickHouse、Doris、Spark和Flink等工具来编写SQL查询。 每一种框架都提供了…

合肥工程建设交易中心网站国美在线网站建设费用

if语句是条件判断语句 格式为: if 条件:执行语句 elif 再一个条件:执行语句 else:执行语句注意: if 与elif后不要忘记冒号 例子: #Autor:Decade value156 value2int(input(number:)) #提示用户输入一个整数型的数字 if value1>value2: …

购物类型网站建设wordpress购物车表单

1.什么是单例模式 在一个项目中,全局范围内,某个类的实例有且仅有一个,通过这个唯一实例向其他模块提供数据的全局访问,这种模式就叫单例模式。 类中多对象的操作函数有如下几个: 构造函数 : 能够创建出一…

北京网站优化方法中山建网站多少钱

boss直聘翻页这里有个坑 问题: 无限循环中,点击下一页按钮,直到不可点击为止。 发现,在点到第5页的时候,再次点击下一页,直接就点击了页码10,导致流程直接就结束了。 在第5页进行校验&#xff0…

厦门高端网站建设关于网站开发的

总言 主要内容:传输层UDP、TCP协议基本介绍。UDP报文格式、TCP报文格式、三次握手四次挥手、TCP可靠性策略说明。 文章目录 总言8、UDP协议(传输层一)8.1、传输层预备知识8.1.1、端口号8.1.2、一些指令(netstat、pidof、xargs&am…

网站的建设和维护的钱接广告的平台

订阅一个CSDN的RSS为例。 1、打开RSS阅读器。 2、设置->新增订阅->手动新增 订阅URL:输入http://articles.csdn.net/api/rss.php?tid1000 (可以先在PC上打开下该网页,发现他是一个xml网页。) 订阅名称:自己起一个名字&…

彩票网站开发的物流网站和数据库建设

一个服务器上跑多个程序是非常常见的现象。 但是这样做后会有一个问题&#xff0c;那就是容易造成 Host 头攻击。host 头(host header或称主机头)攻击&#xff0c;非常常见。比如&#xff0c;在 jsp 中&#xff0c;我们通常可能存在类似下面的代码。 <script type"te…

网站宣传的手段有哪些wordpress网站主修改密码

git如何远程创建分支我不知道有什么办法可以直接在远程创建分支而不需要clone到本地。背景需求我的需求是直接在远程服务器上创建一个分支直接在远程服务器上删除一个分支这期间都不需要clone到本地来。原因是当项目有多个repository的时候其中的部分创建了一个分支&#xff0c…

电子商务网站开发技术解决方案网站建设自查情况

从0配置JAVA项目相关环境 写在最前面一、安装Java的jdk环境1. 下载jdk2. 配置jdk3. 配置环境变量 二、在vscode中配置java运行环境1. 下载VSCode2. 下载并运行「Java Extension Pack」 三、安装mysql1.官网下载MySQL2.开始安装如果没有跳过安装成功 3.配置MySQL Server4.环境变…

网站开发工作图解网页视频下载用什么软件最好

Android应用界面开发第一章学习第三部分####1.导入其它人创建的Android Studio项目(重点在第二部分)首先将下载的Project压缩包解压到自己的AS工程目录比如&#xff1a;工程目录然后打开AS软件&#xff0c;关闭其它工程(close project)&#xff0c;然后准备导入刚才解压的文件夹…

网站开发合作协议合同范本微信小程序是干什么用的

进程管理方式首先我们了解一下php的三种不同的进程管理方式&#xff1a;static&#xff1a;静态管理进程。在启动时&#xff0c;master按照pm.max_children配置fork出对应数量的work进程&#xff0c;即work的进程是固定不变的。dynamic&#xff1a;动态管理进程。在fpm启动时先…