AT32F415 MSC IAP SpiFlash As Disk

2023-11-02

SC0097—AT32F415 MSC IAP SpiFlash As Disk

示例目的

提供USB外挂SPI FLASH模拟U盘,在通过U盘存储固件进行升级。

注:本示例代码是基于雅特力提供的V2.x.x板级支持包(BSP)而开发,对于其他版本的BSP,需要注意使用上的区别。

支持型号列表:

AT32F415xx

主要使用外设列表:

USB_device

SPI1

设计简介

通过外部SPI FLASH模拟U盘,PC将设备固件拷贝到U盘,IAP程序启动之后会检查是否存在需要更新的固件,如果存在,则通过FATFS读取固件进行升级。另外IAP的FATFS只支持FAT文件格式读取。

目前仅支持bin文件升级。 

外设使用

Samp code SPI外设使用 SPI1 (SCK:PB3, MISO:PB4, MOSI: PB5, CS:PA15),使用者可根据需求修改。

外部SPI FLASH使用W25Q128FV,对应不同的SPI FLASH,使用者可以根据具体使用型号和大小进行修改配置(包括FLASH命令,flash size, sector size等)

程序地址空间

IAP使用地址空间: 0x08000000~0x08008000 总共 32K

APP使用地址空间: 0x08008000~ 

升级 bin文件名称

升级的bin文件名称固定为 app.bin.

固件名称不要超过11个字节(主要为了节省IAP使用空间)

 

升级状态

升级成功之后会将app.bin 改名为 success.bin

升级失败之后会将 app.bin 改名为 error.bin 

升级具体流程

1. 进入 IAP程序

如果没有使用IAP进行升级过,将自动进入 IAP

如果有进行升级过,需要重新升级,需要按住AT-START上的 USER按键,然后复位设备

2. 将 USB接入 PC会看到对应磁盘

3. 将新固件 app.bin拷贝到磁盘

4. 拷贝完成之后,复位设备

5. 复位设备后 IAP进行固件升级

6. IAP升级结束之后可通过两种方式判断是否升级成功:

方式1:如果 LED4亮表示,升级成功。如果 LED3亮,表示升级失败

方式2:升级完成之后,如果磁盘里是 success.bin,表示升级成功。如果是 error.bin,表示升级失败。 (注意在升级完成之后,默认会先删除上一次的升级状态 bin 然后才会将当前的 app.bin改

为对应的状态)。

7. 如果升级成功,重新复位设备,将跳转到 app执行

快速使用方法

硬件资源

1) AT-START-F415 V1.0开发 板 (其他 型号请使用对应的开发板

图1. AT-START-F415 V1.0开发 板

软件资源

1) SourceCode

MSC_IAP_SpiFlash_As_Disk 源程序

注: 所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考雅特力提供的BSP_V2.x.x\project\xxx\templates中各种编译环境(例如IAR6/7/8,keil 4/5)进行简单修改即可。 

示例使用

1) 打开 MSC_IAP_SpiFlash_As_Disk工程 ,并下载到开发板 (按住 USER按键,然后复位) 然后将开发板 usb接口 连接到 PC机 。 PC端 设备管理器会出 一个 U盘 设备 ;格式化 此优盘后 ,然后拷

贝固件到 U盘,拷贝完成之后,复位设备。 IAP会检查是否有固件更新,如果存在,则进行固件更新。

注: 本demo使用的外部SPI FLASH为华邦W25Q128FV系列,所以code所支持的命令是依照此FLASH编写的,若使用其他外部存储设备,需要修改底层驱动。

附件:

https://www.arterytek.com/download/Example%20Code/SC0097_AT32F415_MSC_IAP_SpiFlash_As_Disk_V2.0.0.pdf

https://www.arterytek.com/download/Example%20Code/SC0097_AT32F415_MSC_IAP_SpiFlash_As_Disk_V2.0.0.zip

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AT32F415 MSC IAP SpiFlash As Disk 的相关文章

  • 如何为java注释处理器编写自动化单元测试?

    我正在尝试使用 java 注释处理器 我可以使用 JavaCompiler 编写集成测试 事实上我现在正在使用 hickory 我可以运行编译过程并分析输出 问题 即使我的注释处理器中没有任何代码 单个测试也会运行大约半秒 对于以 TDD
  • EL 通过 Scriptlet

    在 JSP 中使用 EL 相对于 scriptlet 的优势是什么 EL 被认为是无脚本语言 EL 使 JSP 免受容易出错原始 Java 代码并强制您根据 MVC 思想编写 JSP EL 或像 JSTL 这样的标签库 不可能实现的任何事情
  • MediaPlayer.create() 始终返回 null

    我以前用过媒体播放器 从来没有遇到过这个问题 每当我尝试使用 MediaPlayer create 时 该方法都会给我 null 并且我无法播放声音 我有什么遗漏的吗 public class Game extends Activity p
  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 使用时间序列数据和scaleBand指定D3条形图上的刻度

    我尝试为具有时间序列数据的 d3 v4 条形图指定多个刻度和多个刻度标签 如下图所示 基于本教程 https bl ocks org zigahertz 1ee4965ff76514517bb7ce6af21e5d44我有一个处理时间序列数
  • 强制 Java 最低版本以“java -version:”运行在 Windows 上不起作用

    我想强制应用程序运行的 JVM 最低版本为 1 6 或更高版本 即 1 6 我的理解是 您可以使用 version 命令行参数来执行此操作 我尝试了一下 在Linux下似乎可以正常工作 但在Windows下却不行 LINUX 我在 Linu
  • 如何在Java中打印保留2位小数的浮点数?

    我可以用System out print 您可以使用printf http java sun com j2se 1 5 0 docs api java io PrintStream html printf 28java lang Strin
  • 为什么我要使用责任链而不是 switch 语句

    考虑一下您已经获得了多次验证 仅当要检查的对象属于某种类型时 这些验证才应生效 为什么我要使用责任链而不是 switch 语句 责任链示例 public class Executor Inject private ValidatorFact
  • JFrame Glasspane 也优于 JDialog,但不应该

    我有一个带有 Glasspane 的 JFrame 未装饰 该框架打开一个 JDialog 也未装饰 也有一个 glassPane 并隐藏自身 setVisible false Glasspanes 通过 setGlassPane 设置 对
  • Java 不可变对象 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习不变性的概念 据我了解 一旦创建对象 不可变对象就无法更改其值 但我不明白不可变对象的以下用途 They are 自动是线程
  • Java字符串查找和替换的最佳方法?

    我正在寻找 Java 中字符串查找和替换的最佳方法 这是一句话 我的名字叫米兰 人们都知道我叫米兰瓦西奇 我想用 Milan Vasic 替换 Milan 弦 但在我已经有 Milan Vasic 的地方 情况不应该是这样 搜索 替换后的结
  • Java LRU 缓存使用 LinkedList

    堆栈溢出的新手 所以请不要介意我以菜鸟的方式问这个问题 我正在尝试使用链表实现 LRU 缓存 我在这里看到了使用 linkedHashMap 和其他数据结构的其他实现 但对于这种情况 我正在尝试使用链表创建最佳优化版本 正如我在技术期间被问
  • 创建响应式眼睛焦点图标

    我一直在尝试制作响应式彩色眼睛焦点图标 但到目前为止我所尝试的一切均不成功 我试图在某种程度上复制真眼的颜色 我使用边框 框阴影来获取颜色 但该部分没有缩放 也尝试过轮廓 但也失败了 那个甚至不是圆的 div 的高度当前是静态的 但我希望它
  • SimpleDateFormat 无法解析的日期 如果语言环境为 ES,则会出现错误。推特“创建时间”

    我正在尝试将 Twitter created at 转换为阿根廷日期时间 如果我这样做 final String TWITTER EEE MMM dd HH mm ss SimpleDateFormat sf new SimpleDateF
  • Java 验证日期为 yyyyMMddHHmmss

    我想在java中验证给定的日期格式为yyyyMMddHHmmss 状况 应符合格式 yyyyMMddHHmmss 它应该验证当前日期 它应该验证与当前小时有 3 小时或 3 小时差异的小时数 如果满足所有三个条件 Java 方法应返回 tr
  • 更新分页。是否可以?

    他们是否存在一些方法来处理更新分页 例如我有 100 行类型 Id private Integer id Column private boolean flag Column private Date last 一开始它们看起来像 id f
  • while 之后无法访问的语句[重复]

    这个问题在这里已经有答案了 我只是修改代码 在以下代码中出现错误 int x 1 System out println x x while true x System out println x x 错误在最后一行 我可以知道错误 错误 无
  • Struts2中的变量声明

    Struts2中如何声明变量并为该变量赋值 使用设置标签
  • AndroidAnnotations 和 Dagger

    我正在尝试使用 Dagger 注入 Android 带注释的 Activity java lang IllegalArgumentException No inject registered for members com app serv
  • 获取Java中ResultSet返回的行数

    我用过一个ResultSet返回一定数量的行 我的代码是这样的 ResultSet res getData if res next System out println No Data Found while res next code t

随机推荐

  • NETCore入门系列(目录)

    文章目录 NETCore入门系列 目录 相关资源 NETCore入门系列 目录 1 NETCore入门系列 NETCore读取配置文件 cshtml中文乱码 2 NETCore入门系列 读取appsetting json配置文件内容 3 N
  • 【学习笔记】李宏毅2020ML&DL课程 1_8 - 8_8 Attack ML model

    Attack ML model 2 8 攻击网络 即找一张图片 使得loss cross entropy loss 越大越好 此时网络的参数训练完了 要被冻住 不能改变 而是只改变输入 使我们找到这样一张图片 能够让结果 越错越好 离正确答
  • element admin从入门到精通

    1 官方文档 https panjiachen gitee io vue element admin site zh guide 2 下载安装 集成版本 选择i8n分支 进入中文版 git clone https github com cn
  • 【javaSE】 枚举与枚举的使用

    文章目录 枚举的背景及定义 枚举特性总结 枚举的使用 switch语句 常用方法 示例一 示例二 枚举优点缺点 枚举和反射 枚举是否可以通过反射 拿到实例对象呢 枚举总结 总结 枚举的背景及定义 枚举是在JDK1 5以后引入的 主要用途是
  • Android 解决“Could not resolve all artifacts for configuration ‘:classpath‘”报错问题

    在开发的过程中 同步代码的时候 突然出现这个报错信息 Caused by org gradle api internal artifacts ivyservice DefaultLenientConfiguration ArtifactRe
  • GAMES101课程学习笔记—Lec 10~12:Geometry 几何、隐式与显式、曲线与曲面、网格

    1 几何的表达方式 几何表达分为显式和隐式 1 1 隐式几何 举个例子 用空间中一个点来表示面 隐式的几何不会告诉我们这些点在哪里 而会告诉我们这些点满足的函数关系隐式的表达很难直接看出它的形状是什么 但是判断点的位置关系 在内在外在表面
  • PyQt主窗口、对话框

    PyQt的各类窗口 一 主窗口 QMainWindow 1 窗口样式 2 窗口模态 二 对话窗口 QDialog 1 消息窗口 QMessageBox 2 输入窗口 QInputDialog 3 字体窗口 QFontDialog 4 文件窗
  • python编程题题库及答案

    1 Python编程题怎么写 2 python编程问题 3 Python编程题求助 Python编程题怎么写 1 根据题意 头的总数为35 用变量head来记录头的总数 head 35 而腿的总数为94 用变量foot来记录腿的总数 foo
  • 前端开发者快速入门安卓开发(安卓嵌入式开发课程经验总结)

    目录 1 安卓开发结构 2 xml 3 java 使用xml的标签 Bitmap 4 开发注意 1 安卓开发结构 安卓开发和前端有异曲同工之处 只是js换成了Java 它的界面层是xml格式的 布局全部放在layout下 2 xml 以la
  • 数据库课程设计------书店管理系统1后续

    数据库课程设计 书店管理系统 部分的展示图如下 具体请查看网址 https kisaaki github io 2021 12 11 E6 95 B0 E6 8D AE E5 BA 93 E8 AF BE E7 A8 8B E8 AE BE
  • NTC——热敏电阻的采集方法

    前言 最近在调试STM32ADC采集NTC热敏电阻的温度值 总结下NTC热敏电阻温度值的采集方法 硬件平台 STM32F205 软件平台 keil V5 函数库 标准库 NTC热敏电阻温度采集方法 热敏电阻的相关知识点见百度文库的介绍 传送
  • freetype描边和半透明实现

    可以参考官网的另外一个c 实现的版本 https www freetype org freetype2 docs tutorial example2 cpp 我把它转化为C代码如下 include
  • maven依赖找不到的解决:手动下载、多镜像导入。

    maven中央仓库 远在国外 没下载 因为网络原因迟迟下载不下来 所以我们就需要配置一些国内的镜像仓库 来进行jar包的下载 但是阿里的仓库并没有收录中央仓库的全部jar包 因此导致我们有些jar包下载不下来 爆红 整合网络上资料 可以考虑
  • Python入门基础知识总结

    目录 一 简介 二 Python基础语法 2 1 字面量 2 2 注释 2 3 数据类型转换 2 4 标识符 2 5 运算符 2 6 字符串 2 6 1 字符串的三种定义方式 2 6 2 字符串拼接 2 6 3 字符串格式化 2 6 4 格
  • 深度学习中Batch、Epoch、Iteration的理解

    Batch 每一次训练就是一次Batch Batch Size的大小表示一个Batch样本容量的大小 对于Batch Size的选择有多种策略 Batch Size越大 由于可以利用并行化的优势 处理速度就会越快 可以充分利用内存资源 但是
  • 基于 Mask R-CNN 的鸟类识别 app

    一个基于 Mask R CNN 的鸟类识别 APP 可以识别五种鸟类 mAP 83 前言 这是博主的毕设的课题 时间紧迫加上自身能力所限 最后的作品还有很多不足 还望各位不吝指正 代码已经上传到了 github 并附上了详细的使用说明 先放
  • 数据信息查询

    package com myjdbc import java sql Connection import java sql ResultSet import java sql SQLException import java sql Pre
  • TiDB 架构的演进和开发哲学

    本文来自 CSDN 程序员 2017 年 2 月的封面报道 对于一个从零开始的数据库来说 选择什么语言 整体架构怎么做 要不要开源 如何去测试 太多的问题需要去考量 在本篇文章中 PingCAP 联合创始人兼 CTO 黄东旭对 TiDB 的
  • 最小二乘的矩阵形式

    为m n的矩阵 b为m 1的矩阵 则Ax b表达了一个线性方程组 它的normal equation的形式为ATAx ATb 当Ax b有解时 即矩阵 A b 的秩与A的秩相同 Ax b与ATAx ATb的解集是一样 而当Ax b无解时 A
  • AT32F415 MSC IAP SpiFlash As Disk

    SC0097 AT32F415 MSC IAP SpiFlash As Disk 示例目的 提供USB外挂SPI FLASH模拟U盘 在通过U盘存储固件进行升级 注 本示例代码是基于雅特力提供的V2 x x板级支持包 BSP 而开发 对于其