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

Air001基于Keil环境开发,使用airisp串口命令行烧录

Air001基于Keil环境开发,使用airisp串口命令行烧录


  • 有人会有这样的疑惑,使用Keil平台开发,为什么不直接使用CMSIS-DAP直接烧录,还要使用串口方式来去单独烧录,不是我不想,目前使用合宙官方的Air103芯片版本的DAP-LINK v2烧录器对该Air001芯片烧录兼容性不如意,在使用DAP-LINK在烧录时,频繁出现烧录报错弹窗提示的情况。而使用airisp串口烧录不存在这个问题。
  • 📑AirISP 烧录工具下载和介绍:https://arduino.luatos.com/airisp/
.\AirISP -h
Description:AirISP 是一个flash烧录工具Usage:AirISP [command] [options]Options:-c, --chip <chip>                      目标芯片型号,auto/air001-p, --port <port>                      串口名称-b, --baud <baud>                      串口波特率-t, --trace                            启用trace日志输出 [default: False]--connect-attempts <connect-attempts>  最大重试次数,小于等于0表示无限次,默认为10[default: 10]--before <before>                      下载前要执行的操作 [default: default_reset]--after <after>                        下载后要执行的操作 [default: hard_reset]--version                              Show version information-?, -h, --help                         Show help and usage informationCommands:chip_id                           获取芯片IDget                               获取ISP版本和支持的命令列表get_version                       获取ISP版本和芯片读保护状态write_flash <address> <filename>  向flash刷入固件read_unprotect                    关闭读保护read_protect                      开启读保护
  • 📌具体的下载地址:https://github.com/Air-duino/AirISP/releases/tag/1.2.6.0

📋DAP-LINK烧录报错信息

在这里插入图片描述

Programming Failed!
Cannot access Memory (@ 0xe000edf0, Read, Acc Size: 4 Byte)
Error: Flash Download failed - "Cortex-M0+"

🔖具体的原因,不知道是芯片自身的问题还是烧录器固件的问题。

🛠在Keil中ASF转BIN文件实现方法

  • 🌿在Keil软件界面-target设置-User选项
    在这里插入图片描述
  • 🍁根据个人安装Keil软件路径,调整下面的命令行:
C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe  --bin -o  ./Objects/Serial_printf.bin  ./Objects/Serial_printf.axf
    • C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe这是要调用的程序位置
    • --bin -o ./Objects/Serial_printf.bin 这是需要生成的目标文件名以及文件位置。
    • ./Objects/Serial_printf.axf 这是要转换的原始目标文件名以及文件位置。
  • 🚩注意勾选对应的选项:
    在这里插入图片描述
  • 🔧添加好命令行后,程序编译即可生成所需的BIN文件。
    在这里插入图片描述
    在这里插入图片描述

📐HEX转BIN方法实现以及工具

  • 🌿HEX转BIN工具使用的是 安富莱电子开源项目中所提供的转换工具:https://gitee.com/armfly/H7-TOOL_STM32H7_App/tree/master/Project/MDK-ARM(uV5)
    在这里插入图片描述
  • 🌿下载下来就是这个工具:
    在这里插入图片描述
  • 🔨修改一下CopyHex_h7_tool.bat后缀的批处理文件内容就可以直接使用了
copy Objects\Serial_printf.hex ..\app0.hexhex2bin ..\app0.hex
    • 🎋copy Objects\Serial_printf.hex拷贝相对路径下的.hex到hex2bin软件的上一层目录下并重新命名为app0.hex
    • 🎋 hex2bin ..\app0.hex 执行该文件转BIN文件。
  • 🌿双击执行.bat批处理即可生成。生成的为止在上一层目录,这个具体位置可以自己修改批处理内容来定。
    在这里插入图片描述

🏳‍🌈使用airisp串口命令行烧录

  • 📍工具下载地址:https://github.com/Air-duino/AirISP/releases/latest

  • 🌿个人调用的是Arduino安装的Air001固件自带的airisp进行烧录。

  • ⚡使用此方法,需要提前让Air001进入ISP模式。(https://wiki.luatos.com/chips/air001/mcu.html#id4
    在这里插入图片描述

  • 🌿新建一个批处理来执行对应的烧录命令。

cmd /k "C:\Users\Administrator\AppData\Local\Arduino15\packages\AirM2M\tools\AirISP\1.2.5.0/AirISP.exe --chip "auto" --port COM5 --baud 115200 --before default_reset --after hard_reset write_flash -e -p 0x08000000 "D:\HEZHOU\luatos-soc-air001-master\luatos-soc-air001-master\ModuleDemo\USARTx/app0.bin"
    • C:\Users\Administrator\AppData\Local\Arduino15\packages\AirM2M\tools\AirISP\1.2.5.0/AirISP.exe 所调用的程序位置。
  • --chip "auto" 自动识别目标芯片。
  • --port COM5 连接电脑的串口工具端口号。
  • --baud 115200 烧录时选择的波特率。
  • --after hard_reset write_flash -e -p 0x08000000 烧录地址。
  • D:\HEZHOU\luatos-soc-air001-master\luatos-soc-air001-master\ModuleDemo\USARTx/app0.bin 烧录目标文件位置
  • 🔖具体的命令行参考上面的源码文档相关信息。

在这里插入图片描述

  • 🌿执行批处理或者使用CMD直接调用命令行:
    在这里插入图片描述
http://www.lryc.cn/news/119280.html

相关文章:

  • kubernetes 中的事件(event)简介以及如何收集event和基于event告警
  • C++小游戏贪吃蛇源码
  • 【密码学】穴居人密码
  • neo4j的CQL命令实例演示
  • vue3+ts使用antv/x6
  • wsl1 ubuntu通过宿主机代理连接外网
  • ubuntu20.04 opencv4.2 安装笔记
  • ubuntu安装nginx以及php的部署
  • IntelliJ IDEA 2021/2022关闭双击shift全局搜索
  • HTML 元素中的name 属性
  • 快速上手React:从概述到组件与事件处理
  • K8S系列文章之 离线安装自动化工具Ansible
  • mysql8.0.3集群搭建
  • vue中router路由的原理?两种路由模式如何实现?(vue2) -(上)
  • 消息队列(3) -封装数据库的操作
  • PostgreSQL中根据时间段范围查询数据,如19:29:10到20:29:10范围内的数据,排除年月日
  • 【二分+贪心】CF1665 C
  • 【Wamp】安装 | 局域网内设备访问
  • 【golang】类型推断和变量重声明
  • “算法详解”系列第3卷贪心算法和动态规划出版
  • CSS前端开发指南:创造精美的用户界面
  • 代数学与理论物理中常见的群
  • 解析xml文件,获取需要的数据并写入txt文件中
  • JavaScript基础 第三天
  • 2.Redis部署到Windows服务器
  • 【修正-高斯拉普拉斯滤波器-用于平滑和去噪】基于修正高斯滤波拉普拉斯地震到达时间自动检测研究(Matlab代码实现)
  • Go语言基础: 有参函数Func、Map、Strings详细案例教程
  • JDBC连接数据库如何实现你会吗???
  • C#与C++交互(2)——ANSI、UTF8、Unicode文本编码
  • SQLSTATE[42000]: this is incompatible with sql_mode=only_full_group_by in