首页 > 其他分享 >USB_IAP例程讲解及移植步骤

USB_IAP例程讲解及移植步骤

时间:2024-07-22 15:07:28浏览次数:9  
标签:USB 工程 例程 APP 跳转 IAP

IAP是In Application Programming的缩写,‌含义为应用编程技术,此方式允许用户在自己的程序运行过程中对Flash存储器的部分区域进行烧写,‌方便地通过预留的通信口对产品中的固件程序进行更新升级。‌

此外,USB_IAPDemo中的两个工程可通过预留的jumpApp接口和jumpToIap接口进行地址指针的跳转进行工程切换;

IAP完整工程简略图如下:


 

按照Code地址的顺序,首先上电后我们会从0地址运行IAP工程,

一上来我们会去Dataflash中去读取IAP Flag,看是否需要进行IAP升级,如果不需要,则会跳转至APP程序,如果检测到标志置位,则会加载USB驱动;

USB驱动加载:


 

IAP部分一般不需要改动,按需改动进入APP的方式,然后拷贝到自己的工程下即可,

而该例程下的APP程序则只用来演示如何跳转往IAP工程以及如果升级失败如何保证重新升级,因此只有三处需要注意:

①在IAP工程中可以看到上电后会进行判断IAP标志,决定是否跳转至APP,而如果APP升级失败(也就不可能跑到APP工程中),则flag不可能会被置为APP_Flag,重新上电后跑到IAP工程呢个中判断标志不成立依旧会跑IAP工程,直到升级成功顺利运行到APP后才会将flag置为APP_Flag;

②例程中给出的进入IAP的方式为连续两次将PB4拉低,该方式随意更改,主体函数为jumpToIap();

③记得修改APP工程的Link.ld文件的CODE起始地址为0x1000,另外启动文件Startup.s文件li t0, 0x88修改为li t0, 0x1888(机器模式);


 

移植步骤:

①将IAP工程拷贝到自己的应用APP工程目录下

②修改自己的APP工程Link.ld起始地址为0x1000,startup启动文件li to,0x1888

③自行添加标志管理(按需)

④添加void jumpToIap(void),void SwitchImageFlag(uint8_t new_flag)函数定义

⑤完善标志管理的逻辑,添加工程跳转的处理逻辑,何时调用jumpToIapI();

 

 

标签:USB,工程,例程,APP,跳转,IAP
From: https://www.cnblogs.com/azou/p/18315951

相关文章

  • Python:定期检测断开故障的USB设备并重新初始化实例
    我有一个USB设备,有时会通过USB端口发送串行数据。问题是设备出现故障,有时会无缘无故地断开连接并再次连接到电脑。问题不大,但在这些情况下我需要重新初始化serial.Serial(port)实例,这有点烦人。该设备没有可以从我那里收到的任何命令,我可以验证它是否已连接。我可以......
  • uniapp中使用echarts关系图
    首先看一下页面效果:<template><viewclass="page"><!--导航栏--><b-nav-barclass="b-nav-bar"><templateslot="left"><view@click="goBack"class="iconfonticon-zuofanhuinBackml15&quo......
  • 如何判断USB设备与主机断开连接还是设备被主机挂起
    以CH592的CompoundDev例程为例,一、如果是在主机休眠/关机时被挂起,主机首先会下发USB_SET_FEATURE指令设置设备远程唤醒,紧接着发送USB_SUSPEND指令给从机设备。因此从机设备可根据先后顺序来判断是否被主机挂起,    二、设备如果意外掉线(USB线拔掉),则不会有USB_SET_FEATU......
  • 基于深度学习网络的USB摄像头实时视频采集与手势检测识别matlab仿真
    1.算法运行效果图预览(完整程序运行后无水印) 训练过程如下:   将摄像头对准手势,然后进行识别,识别结果如下:   本课题中,使用的USB摄像头为:   2.算法运行软件版本MATLAB2022a 3.部分核心程序程序中包括MATLAB读取摄像头的配置方法,摄像头配置工具......
  • RV1126中AI例程解析
    本次以基于rockx组件的ssd目标检测为例官方提供的例程中有2个C++文件及2个头文件其中:atk_ssd_object_recognize.cpp是一个使用Rockchip嵌入式平台进行图像处理的示例程序。整体功能是初始化视频输入、进行图像处理(RGA),然后将结果输出到显示终端。以下是代码的详细解释:引入......
  • 12 V USB 4 通道继电器控制
    我正在尝试使用Python控制继电器,但遇到了障碍。不幸的是,我找不到该特定继电器的数据表,这意味着我没有要发送的正确命令。|||这是我到目前为止所尝试过的:计算机将该设备识别为HID(人机接口设备)。我尝试了各种命令,但似乎都不起作用。我尝试了这段代码,但出现错误,因......
  • 基于SpringBoot+Vue+uniapp的新闻资讯系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的公考客观题复习系统的详细设计和实现(源码+lw+部署文档+
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • uniapp中uni.navigateBack返回后刷新页面数据的实现
    一、前言在移动端中,数据列表中某项数据点击编辑,进入下一个页面编辑数据,保存后回退到数据列表页,此时需要刷新列表数据,否则显示的列表数据还是旧的。这种场景感觉很多地方都有出现,是需要详细说说方法,也就是uniapp中uni.navigateBack返回后刷新页面数据。1.1、uni.navigateBack ......
  • uniapp [全端兼容] - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海
    前言如果需要Vue版本,请访问这篇文章。在uni-app全平台兼容(H5网页网站、支付宝/微信小程序、安卓App、苹果App、nvue)项目开发中,详解免费安装使用“海康威视监控摄像头”在网页中对接设备并进行实时显示监控画面及各种功能操作控制教程,对接海康视频监控播放及回放......