当前位置: 首页 > wzjs >正文

网站文章关键字密度wordpress文章有模板

网站文章关键字密度,wordpress文章有模板,永康做网站的公司,怎么创建免费网页这次来分享一下IAP串口升级,想必这个是让大家很头疼且又很渴望学会的,这次详细的描述和丝滑的操作,来带大家走一遍这个流程! 本文参考这位大佬的内容:STM32---IAP升级 置顶!!!&…

这次来分享一下IAP串口升级,想必这个是让大家很头疼且又很渴望学会的,这次详细的描述和丝滑的操作,来带大家走一遍这个流程!
本文参考这位大佬的内容:STM32---IAP升级

置顶!!!!

代码放到百度网盘:自取    百度网盘代码链接,提取密码:1111

一.为什么要做IAP升级
1.不易拆卸的设备,可以使用IAP升级,方便用户升级固件
2.YMODEM协议是串口传输协议,传输速率较高,传输文件较大时,传输时间较短
3.不想给别人源代码,但是项目有bug,需要修复,总不能跑几千公里去升级对吧,所以使用IAP升级

总结下来就是实用,所以就做IAP升级

二.既然要做IAP升级,为什么要用YMODEM协议
1 开发板的原因
我用的是STM32F103C8T6,RAM空间只有20kB,Flash空间只有128kB,不能直接串口直接接收完bin文件,如果bin文件稍微大点,那不就GG了要是用的ZET6,那直接定义个55K的串口缓冲接收区,直接接收完bin文件。
 

三、必备知识储备
1.1 Code RO-data RW-data ZI-data
Code:代码区,存放程序代码,只读,程序运行时不能修改

RO-data:只读数据区,存放程序中需要用到的常量,只读,程序运行时不能修改

RW-data:可读写数据区,存放程序中需要用到的变量,可读写,程序运行时可以修改

ZI-data:零初始化数据区,存放程序中需要用到的变量,可读写,程序运行时可以修改,但是初始化为0,程序运行时可以修改,但是初始化为0
FLASH = Code + RO-data + RW-data
RAM = RW-data + ZI-data

1.2  ok  重点来了     重点来了    重点来了 

iap的核心思想就是划分flash空间,看我是如何划分且他们的用途是什么,FLASH总得大小是64K(实际上是128K)大家都这说,我也不知道为什么。

1.3 boot地址(需要修改中断偏移地址

ROM的地址修改为
START:0x8000000
SIZE:0X2FFF(size应小于于APP的起始地址)

1.4 app地址(这里也需要修改中断偏移地址

1.5 所以最后1K大小地址的 起始地址是0x0800FC00

四、一般执行流程

STM32 的内部闪存(FLASH)地址起始于 0x08000000,一般情况下,程序文 件就从此地址开始写入。此外 STM32 是基于 Cortex-M3 内核的微控制器,其内 部通过一张“中断向量表”来响应中断,程序启动后,将首先从“中断向量表” 取出复位中断向量执行复位中断程序完成启动,而这张“中断向量表”的起始地 址是 0x08000004,当中断来临,STM32 的内部硬件机制亦会自动将 PC 指针定 位到“中断向量表”处,并根据中断源取出对应的中断向量执行中断服务程序。 在上图中,STM32 在复位后,先从 0X08000004 地址取出复位中断向量的地 址,并跳转到复位中断服务程序,如图标号①所示;在复位中断服务程序执行完 之后,会跳转到我们的 main 函数,如图标号②所示;而我们的 main 函数一般 都是一个死循环,在 main 函数执行过程中,如果收到中断请求(发生重中断), 此时 STM32 强制将 PC 指针指回中断向量表处,如图标号③所示;然后,根据 中断源进入相应的中断服务程序,如图标号④所示;在执行完中断服务程序以后, 程序再次返回 main 函数执行,如图标号⑤所示。

五、当加入 IAP 程序之后,程序运行流程如下图所示:

在该流程图中,STM32 复位后,还是从 0X08000004 地址取出复位中断向量 的地址,并跳转到复位中断服务程序,在运行完复位中断服务程序之后跳转到 IAP 的 main 函数,如图标号①所示,此部分同前面 STM32 正常流程图一样;在 执行完 IAP 以后(即将新的 APP 代码写入 STM32 的 FLASH,灰底部分。新程 序的复位中断向量起始地址为 0X08000004+N+M),跳转至新写入程序的复位向 量表,取出新程序的复位中断向量的地址,并跳转执行新程序的复位中断服务程 序,随后跳转至新程序的 main 函数,如图标号②和③所示,同样 main 函数为 一个死循环,并且注意到此时 STM32 的 FLASH,在不同位置上,共有两个中断 向量表。 在 main 函数执行过程中,如果 CPU 得到一个中断请求,PC 指针仍强制跳 转到地址 0X08000004 中断向量表处,而不是新程序的中断向量表,如图标号④ 所示;程序再根据我们设置的中断向量表偏移量,跳转到对应中断源新的中断服务程序中,如图标号⑤所示;在执行完中断服务程序后,程序返回 main 函数继 续运行,如图标号⑥所示。 通过以上两个过程的分析,我们知道 IAP 程序必须满足两个要求: ①新程序必须在 IAP 程序之后的某个偏移量为 x 的地址开始; ②必须将新程序的中断向量表相应的移动,移动的偏移量为 x; 本章,我们有 2 个 APP 程序,一个为 FLASH 的 APP,程序在 FLASH 中运 行,另外一个位 SRAM 的 APP,程序运行在 SRAM 中,上图虽然是针对 FLASH APP 来说的,但是在 SRAM 里面运行的过程和 FLASH 基本一致,只是需要设置向量 表的地址为 SRAM 的地址

上面字有点多,但是一定得看!

上面字有点多,但是一定得看!

上面字有点多,但是一定得看!

六、APP程序生成bin文件

具体可以参考我的上一篇文章传送门:keil5生成bin文件

总结:ok  经过上面一顿操作,现在就来到实践环节了。

七、IAP升级应用操作步骤(详细步骤)

1.串口配置,项目中用到的是USART1,PA9(TX),PA10(RX)

2.设置参数

八、设置完成后,将boot程序烧录到开发板,这时候上位机会显示如下图

1.输入1,发送 1 给单片机

2.等待接收到"C"后,发送bin文件

3..发送bin文件,单片机接收完成后打印信息

这时候重新按复位,或者掉电 重新上电,程序还是会执行到app这个程序,主要是在boot和app做了升级标志位。这个很关键

主要代码看下图

boot判断是否要进入升级模式的关键

app代码,每次要更新,都先把boot上面那个地址的值修改,这样boot程序就不需要修改了,每次都用同一个,只需要修改app程序即可,因为boot会一直判断

如果全程跟着步骤到这里,恭喜你,你肯定学会了iap并且实践成功了,以上就是本次分享内容,若对你有帮助,那最好不过,共勉!

http://www.dtcms.com/wzjs/829713.html

相关文章:

  • 上海企业网站营销电话品牌vi标志设计公司
  • 与铁路建设相关的网站中国建设银行河北省分行官方网站
  • php网站开发软件语言个人博客响应式模板
  • 怎么做网站教程 用的工具上海网站建设平台
  • 网站平台搭建公共网站怎地做
  • 做网站3个月重庆网站排名提升
  • 采集站seo提高收录制作一个网站费用
  • 千岛湖建设集团网站如何做公众号微信
  • 国外网站建设素材做网站需要学什么软件
  • 网站域名购买后能修改吗wordpress媒体管理插件
  • 永州网站建设gwtcms微信公众号手机网站
  • 为公司设计一个网站做网站开发要装什么软件
  • 电商平台建站网络营销推广方式包括哪些
  • 站库设计网站官网北京建设公司有哪些
  • 自建网站迁移网站设计赏析
  • 教育网站建设收费有字库 wordpress 插件
  • 山西免费网站制作深圳电力建设公司网站
  • 开发外贸产品的网站软件项目管理的概念
  • 网站后台怎么做外部链接深圳外贸网站建设服务哪家好
  • 做网站建设分哪些类型怎么做像小刀网一样的网站
  • 做网站是怎么回事性男女做视频观看网站
  • wordpress怎么使用插件英文seo如何优化
  • 2018江苏省海门市建设局网站seo平台优化服务
  • 网站被封了怎么办wordpress主页加音乐
  • 搜集素材的网站吉林长春网络公司有哪些
  • 制作一个营销型网站wordpress付费主题分享
  • 如何在社交网站上做视频推广网站空间和服务器有什么区别
  • 合肥 定制网站开发湛江网站建设服务
  • 好网站建设公司服务查询企业联系方式的软件
  • 富阳做网站的专业建站网网站运营推广