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

51单片机可以做网站汕尾建设局网站首页

51单片机可以做网站,汕尾建设局网站首页,职业生涯规划大赛成长赛道,电脑一窍不通从哪学起一、OTA#xff08;Over-The-Air#xff09; OTA#xff08;Over-The-Air#xff09;是一种通过无线通信方式#xff0c;为设备分发新软件、配置甚至更新加密密钥的技术。它允许中心位置向所有用户发送更新#xff0c;确保每个接收者都无法拒绝、破坏或改变这些更新…一、OTAOver-The-Air OTAOver-The-Air是一种通过无线通信方式为设备分发新软件、配置甚至更新加密密钥的技术。它允许中心位置向所有用户发送更新确保每个接收者都无法拒绝、破坏或改变这些更新并且能够即时将更新应用到所有设备上。OTA升级适用于通过网络或蓝牙等无线通信方式进行使得设备管理更加便捷和灵活同时提升了系统的安全性和可维护性 在OTA固件升级中单区模式和双区模式是两种常见的策略各自有着特定的优缺点。 1单区模式 单区模式整个升级过程仅使用一个存储区通常是Bank0。升级流程包括先擦除当前运行的老固件然后直接将新固件下载到同一存储区并对其进行有效性校验。这种模式优点在于节省Flash空间实现简单直接适用于资源有限的设备。然而其缺点是风险较高一旦升级失败或新固件不可用设备可能会无法正常运行需要外部干预才能恢复。 2双区模式 双区模式老固件和新固件分别存储在不同的存储区通常是Bank0和Bank1。升级过程先将新固件下载到预留的下载区Bank1然后进行校验。校验通过后系统进入Bootloader模式将新固件从下载区复制到主运行区Bank0替换老固件。这种模式的优势在于安全可靠即使升级失败系统仍能回滚到之前的稳定版本避免系统故障。它也提供了更高的灵活性允许设备在升级过程中同时运行两个固件版本确保平稳过渡。不过双区模式需要额外的Flash空间来支持两个固件版本的存储因此对资源的需求较高。 二、IAPIn Application Programming IAPIn Application Programming即在应用中编程旨在实现用户应用程序的动态更新而无需使用专门的编程工具或硬件。一般情况下STM32芯片的代码区域只存放一个用户程序。通过使用IAP方案可以将代码区域划分为两部分一个是固定的引导加载程序bootloader另一个是用户应用程序user application。如图所示 在单片机上电时系统首先进入引导加载程序bootloader。引导加载程序会检测预设的条件例如检测按键是否按下、是否接收到特定的串口数据、或者U盘是否插入等。如果条件未被触发引导加载程序将直接跳转到用户应用程序user application执行用户的应用逻辑。如果条件被触发引导加载程序将执行以下步骤 擦除用户应用程序引导加载程序会擦除当前存储的用户应用程序代码区域确保该区域是空的以便接受新的用户代码。 重新写入用户代码引导加载程序从外部源如串口通信、USB设备等接收新的用户应用程序数据并将其写入到之前擦除的用户代码区域中。 三、FLASH地址分配 1普通程序的内部FLASH分配 此时普通的应用程序占据内部Flash的大部分空间包括主要的应用逻辑和功能代码。整个应用程序共享一个中断向量表用于存储每个中断的入口地址供所有的中断服务例程使用。 2IAP方案的内部FLASH分配 IAP方案在内置Flash的特定地址范围内增加了一个Bootloader程序。Bootloader的主要功能是通过串口或其他通信接口来更新或烧录用户应用程序。Bootloader程序有自己独立的中断向量表专门处理引导过程中的中断和异常情况。用户应用程序仍然占据内部Flash的一部分空间但更新和烧录可以通过Bootloader完成而非传统的编程器。用户应用程序也有自己的中断向量表确保在运行时正确处理中断事件。 3示例 设置两个工程Bootloader程序、UserApplication程序。以下是详细的设置说明 1BootLoader程序 Bootloader程序被安排在内部FLASH的第一页起始地址为 0x0800 0000占用20KB空间地址范围从0x0800 0000到0x0800 4C00页号0至19。在执行跳转到UserApplication之前需确保Bootloader关闭所有打开的中断或外设以避免影响UserApplication的运行。 2UserApplication程序 UserApplication程序从内部FLASH的第二页开始起始地址为0x0800 5000占用43KB空间地址范围从0x0800 5000到0x0800 F800页号20至62。 3UserData 内部FLASH的最后一页被保留用于UserData占用1KB空间起始地址为0x0800 FC00页号为63。 如图所示 第一页 最后一页 分区 容量 地址 页号 地址 页号 BootLoader 20KB 0800 0000 0 0800 4C00 19 UserApplication 43KB 0800 5000 20 0800 F800 62 UserData 1KB 0800 FC00 63 4生成UserApplication的bin文件 D:\Keill_v5\ARM\ARMCLANG\bin\fromelf.exe --bin Objects\Project.axf -o Project.bin D:\Keill_v5\ARM\ARMCLANG\bin\fromelf.exe 是 fromelf.exe 工具的完整路径根据实际情况需要修改成本地的路径。Objects\Project.axf 是工程生成的 .axf 文件的路径和文件名确保路径是正确的可以根据实际情况进行调整。-o Project.bin 指定生成的输出文件名为 Project.bin可以根据需要修改输出文件名和路径 四、STM32启动流程概述 1普通程序启动流程 1. 内核初始化  1内核复位和NVIC寄存器部分清零 在复位时内核和NVIC相关寄存器被清零确保系统处于可控状态。 2设置堆栈 内核从向量表的起始地址读取堆栈指针SP_main设置主堆栈指针SP。 3设置PC和LR寄存器 PC寄存器被设置为复位中断向量的地址LR寄存器通常设置为0xFFFFFFFF复位值。 2. 执行复位中断处理函数Reset_Handler 1强制PC指针指向中断向量表的复位中断向量 单片机的硬件会将PC指针自动定位到复位中断向量表的复位中断向量处开始执行Reset_Handler函数。 2Reset_Handler中的初始化步骤 在Reset_Handler函数中会调用SystemInit函数进行系统的初始化包括时钟设置和中断向量表配置等。 3. 初始化全局/静态变量和重定位 1调用 __main 函数 __main 函数由编译器生成负责初始化全局/静态变量、执行重定位工作并最终跳转到用户定义的main函数。 4. 跳转到main函数执行用户代码 在所有初始化工作完成后控制权被传递给用户编写的main函数开始执行用户程序的主体逻辑。 2引导加载程序启动流程: 1)内核初始化 复位时内核和NVIC寄存器被清零。设置堆栈和初始化PC、LR寄存器。 2)执行引导加载程序的复位中断处理函数Bootloader Reset_Handler 硬件将PC指针定位到引导加载程序的复位中断向量处开始执行引导加载程序的Reset_Handler函数。引导加载程序的初始化步骤可能包括初始化引导加载程序自身的硬件资源和配置。 3)初始化全局/静态变量和重定位 引导加载程序调用 __main 函数进行全局变量的初始化和重定位工作。 4等待指令或判断是否需要进行IAP 引导加载程序可能等待外部触发条件如特定按键组合、串口指令等来决定是否启动IAP流程。 5启动固件更新IAP过程 如果需要进行固件更新引导加载程序会初始化相关硬件接口如串口、USB等以及存储器如Flash接口。下载新固件数据对数据进行校验CRC校验等确保完整性。 6擦除原有固件区域 引导加载程序可能需要先擦除原有固件存储区域以便存储新的固件数据。 7写入新固件 将通过IAP方式下载的新固件数据写入到目标Flash存储器中的指定位置。 8校验和完成 写入完成后引导加载程序进行最终的校验确保固件写入的正确性和完整性。 9系统重启 如果固件更新成功引导加载程序可能会进行系统的最后配置和清理工作。然后重启系统跳转到新固件的起始地址执行。 10跳转到新固件执行 控制权转移给新固件的Reset_Handler函数开始执行新固件的初始化和主逻辑。 五、注意事项 在下载bin文件的过程中确保数据帧的完整性至关重要。一般情况下串口使用空闲中断来判断数据帧是否传输结束。但在大量数据传输时可能会出现空闲中断误判的情况。为了解决这个问题可以考虑使用类似RS485通信的方式通过定时器定时触发来确定数据传输的结束标志例如设定一个100ms的空闲周期作为传输结束的标志。
http://www.w-s-a.com/news/96753/

相关文章:

  • 网站建设贵阳东莞网站建设策划
  • 网站5建设需要学什么桃城网站建设公司
  • 杭州外贸网站企业门户网站的安全性
  • 建设论坛网站需要做什么水果电商网站建设相关文献
  • 群晖 nas 做网站建设网站的报价
  • 白山做网站网站建设 app 优化
  • 畜牧业网站建设官方网站下载拼多多app
  • 网站规划和布局备案网站地址
  • 站长工具流量统计招工信息发布平台
  • 上海网站建设公司排行建设无障碍网站
  • phpcms网站打不开网页制作网站设计稿
  • 博客网站开发环境wordpress 中英文双语
  • 做网站报价表群辉装wordpress
  • 请人做游戏的网站视觉设计师的工作内容
  • 昆明网站建设知名企业博客网站开发
  • 如何做网站网页免费thinkphp网站后台模板
  • 怎么自己做优惠券网站济南小程序开发
  • 南昌网站专业制作做仿站如何获取网站源码
  • qq钓鱼网站wordpress 企业站模板
  • 推进文明网站建设免费设计公司logo设计
  • 做电脑租赁网站server 2008 网站部署
  • 做网站的公司一年能赚多少钱wordpress作者增加分类插件
  • 苏州尚云网站建设专业摄影网站推荐
  • 020网站开发微信公众号直接链接网站怎么做
  • 学做烘焙的网站某网站注册需要邮箱是怎么弄
  • 网站的特效代码公司网站开发的工作内容
  • 网站制作哪家好商城网站建设预算要多少钱
  • 怎么做律所的官方网站微网站可以做商城吗
  • 通用网站后台管理系统(php版)网站备案ip查询网站查询
  • 制作网站代码吗江阴网站建设推广