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

wordpress查询码做seo有什么好处

wordpress查询码,做seo有什么好处,国外网络推广,wordpress设置收费下载这次主要对STM32F103/Keil和LPC2478/IAR加了一个IAP在线升级功能, 主要记录一下自己的思路,无代码,实在是代码感觉没啥写的,都是一些网上很多流传的东西。 1、开发环境 Keilstm32f103JLINK 2、程序思路 在升级中,必…

        这次主要对STM32F103/Keil和LPC2478/IAR加了一个IAP在线升级功能,

        主要记录一下自己的思路,无代码,实在是代码感觉没啥写的,都是一些网上很多流传的东西。

1、开发环境

Keil+stm32f103+JLINK

2、程序思路

        在升级中,必须要考虑的问题就是:升级成功以及失败,然后失败的补救措施。所以我以前的写法是最简单粗暴的

2.1、IAP升级旧版本

bootloader有两个功能,由标志位控制,

        一个是跳转到app程序(一般升级后进入)

        一个是允许升级程序(一般升级失败或者初始状态)

bootloader根据标志位判断当前是升级还是跳转,如果程序处于app则先更新标记位表示进入升级,然后复位,进入bootloader

这个优点就是代码简单,空间利用率高,如果程序很大的话比较适合,但是如果空间使用不大那么可以使用双缓存,毕竟可以在出错之后回滚。

2.2、IAP升级双缓存版本

我使用的单片机内部flash大小为512kb,所以我按照128kb可以划分为5个区域

  1. bootloader大小为64kb,假设地址为0x80000000-0x80010000
  2. 运行区域大小为128kb,主要此地址固定代码中断向量表偏移量,假设地址为0x80010000-0x80030000
  3. 升级数据存储1大小为128kb,假设地址为0x80030000-0x80050000
  4. 升级数据存储2大小为128kb,假设地址为0x80050000-0x80070000
  5. flash数据存储大小为64kb,假设地址为0x80070000-0x80080000

bootloader有两个功能,由标志位控制,

        一个是跳转到app程序

        一个是允许升级程序(一般升级失败或者初始状态)

(1)、其中app程序中,例如当前数据存储1已经存在了运行成功的数据,说明此时运行区域和数据存储1的数据相同,那么这就相当于一个备份,此后升级数据将使用存储2地址。反之亦然。

(2)、然后bootloader的跳转前会判断是否是升级过的,如果升级过,那么将会比如升级数据存储1,那么需要将存储1的数据拷贝到运行区域,然后再跳转,就是将0x80030000-0x80050000的数据复制到0x80010000-0x80030000。反之存储2亦然

(3)、如果不需要复制数据的话就直接跳转,跳转前会将指定标志位设置为错误,跳转到app之后,由app端将标志位设置为正常。这样如果跳转失败,重启后就不会跳转,如果是初始情况将不做任何处理,如果是升级出现的异常,将会从备份数据复制到运行区域然后重新跳转运行。例如此前升级完成,但是此时新数据存储在数据存储1位置,老数据存储在数据存储2位置,复制存储1的数据到运行区域,结果启动失败,那么再次启动后将老数据复制到运行区域,重新运行

注意:已经复制过的就不用复制,只复制升级后的那次

2.3、IAP升级双缓存版本的优化

此前尽管这个是有备份,但是其实是属于空间浪费了,为什么需要如果,是因为代码写死了中断向量表便宜0x10000,所以运行区域必须从0x80010000开始,但是如果代码将中断向量表偏移改为动态的,那么则可以节省出一份空间。其中bootloader只是不需要复制内存到运行区域,其他步骤都一样

  1. bootloader大小为64kb,假设地址为0x80000000-0x80010000
  2. 运行区域1大小为192kb,假设地址为0x80010000-0x80040000
  3. 运行区域2大小为192kb,假设地址为0x80040000-0x80070000
  4. flash数据存储大小为64kb,假设地址为0x80070000-0x80080000

此时,运行区域1的中断向量偏移应该设置为0x80010000,运行区域2的中断向量偏移应该设置为0x80040000。

具体操作如下:

因为跳转前,是由bootloader决定跳转到那个区域的,所以我们只需要将app的开头改为读取当前启动是什么区域,然后根据区域直接更改中断向量偏移的地址即可。

    if(flag == block2){SCB->VTOR = FLASH_BASE | 0x40000;}else{SCB->VTOR = FLASH_BASE | 0x10000;}

注意:2.3未验证,但是逻辑上是不会错的

注意:我的bootloader所有行为都是由上位机控制,上位机发送跳转/准备升级/接收数据/升级完成/复位等一系列命令

http://www.yayakq.cn/news/600175/

相关文章:

  • 成都比较好的网站制作公司河北建设厅官方网站八大员考试
  • 重庆江北营销型网站建设价格网页游戏开服表怎么取消
  • 宁波seo站外优化推广广西南宁人才招聘网站
  • php网站开发前端网站关键词互点
  • 做gif动图的网站犯法吗重庆森林为什么不能看
  • 融资网站建设重点云盘搜
  • 做视频网站玩什么配置iis6.0新发布网站访问速度慢
  • 简单的网站设计模板下载宣传式网站
  • 湖州网站设计建设杭州app开发外包公司
  • 动易网站系统怎么样wordpress调用多个底部
  • 网站pc端和手机端分离怎么做沈阳专门做网站
  • 淄博营销网站建设公司网站平台搭建流程
  • 家具能在什么网站上做怎么做竞价托管
  • wordpress接入官方号廊坊关键词seo排名网站
  • 网站后台编码网站制作和维护费用
  • 网站备案没通过电商网站前端源码
  • 网站内容更新湖南门户网站建设
  • 国外网站入口网站是哪个公司做的
  • 重庆奉节网站建设公司哪家专业发布外链的步骤
  • 移动网站 案例网站整合建设是啥意思
  • 公司企业网站开发投资公司名字起名大全
  • 楼盘网站开发新手做网络销售难吗
  • 住房和城乡建设部的网站首页福田外贸网站建设
  • 企业网站新闻wp怎么做营销型的物流网站模板下载
  • 青岛做网站排名大同网站建设哪家好
  • 网站统计代码放哪里gif动图素材网站
  • 网站快速排名优化wordpress用什么空间
  • 在线做简单的网站wordpress安装包文件夹
  • 网站不备案写一个小程序多少钱
  • 织梦做的网站首页幻灯片怎么不能显示学网站设计和平面设计