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

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


✨有人会有这样的疑惑,使用Keil平台开发,为什么不直接使用CMSIS-DAP直接烧录,还要使用串口方式来去单独烧录,不是我不想,目前使用合宙官方的Air103芯片版本的DAP-LINK v2烧录器对该Air001芯片烧录兼容性不如意,在使用DAP-LINK在烧录时,频繁出现烧录报错弹窗提示的情况。而使用airisp串口烧录不存在这个问题。

  • 🌿如果只有使用DAP-LINK作为调试器,那么尽量将调试器的时钟频率设置低一些,以确保烧录时报错。
    在这里插入图片描述

  • 📑AirISP 量产烧录工具下载和介绍:https://arduino.luatos.com/airisp/

    • 📋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 information

Commands:
  chip_id                           获取芯片ID
  get                               获取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开发环境下,如果使用DAP-LINK工具调试,下载Air001不顺利的情况下,该工具是一个折衷的选择,虽然不是那么的方便,起码能让单片机跑起来。

  • 👉🏻烧录AirISP命令可以参考:http://arduino.luatos.com/airisp/

  • 🌿HEX文件直接烧录指令参考:

AirISP.exe -c air001 -p COM7 -b 115200 write_flash -e 0x08000000 test.hex

🛠在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 这是要转换的原始目标文件名以及文件位置。
  • 👉或者配置下面这条简洁命令:
fromelf.exe --bin -o "$L@L.bin" "#L"
  • 🚩注意勾选对应的选项:
    在这里插入图片描述
  • 🔧添加好命令行后,程序编译即可生成所需的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.hex

hex2bin ..\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直接调用命令行:
    在这里插入图片描述
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值