必看! 必看! 必看!
下面概述了以下几个烧录软件下载安装,写程器接线,批处理操作内容较多耐心看完。
J-Falsh :可以称得上目前主流(能烧录目前80%主流芯片)。
STM32 ST-LINK Utility: ST系列芯片烧录超方便(ST系列,ST全系列)。
Renesas Flash Programmer : 瑞萨系列芯片烧录(瑞萨系列 ,RF5100LG,R5F104BD....)。
nRf :蓝牙nrf系列芯片烧录(烧录蓝牙芯片 像什么nrf52832,nrf52830....)。
(本篇章介绍J-Flsh)
J-Falsh
官网链接去自己下载把
下载步骤:
选择要下载的版本,下载完成后自己慢慢安装
新建工程文件并载入程序
开始菜单,找到SEGGER文件夹下面的J-Flash并打开
选择合适的芯片型号
加载程序(HEX,Bin...等等)
刷写程序和校验
最后一定记得保存工程文件后边会用到
写程器接线(VCC接1脚,GND接4脚,SWDIO接7脚,CLK接9脚)
对应写程口接线就行了,这个就不用上图了把!!!!
如何手动往"JLinkDevices.xml"添加芯片
//下面列举两个例子 HC32F460 为例 从芯片手册不难看出
SRAM1的地址是 0x2000_0000 到 0x2000_FFFF 刚好是 64KB (0x10000)= 0x2000_FFFF+1
Flash的地址是 0x0000_0000 到 0x0007_FFFF 刚好是 512kb (0X80000)= 0x0007_FFFF+1
内核是M4的(M内核系列统称呼为ARM单片机)
ChipInfo是描述芯片的信息,必须在 <Device>和</Device>内。
Vendor="HDSC" 芯片厂家 "HDSC"
Name="HC32F46x" 填芯片名称"HC32F46x"
WorkRAMAddr="0x20000000" SARM起始地址"0x20000000"
WorkRAMSize="0x10000" SARM的大小"0x10000"
Core="JLINK_CORE_CORTEX_M4" 芯片内核"JLINK_CORE_CORTEX_M4"
FlashBankInfo描述芯片的Flash信息,有多块flash的话,每块对应一个FlashBankInfo。
Name="Flash_512K" flash的名字,名字可以随便起
BaseAddr="0x0" flash的起始地址,可以在芯片手册里找到
MaxSize="0x80000" flash的大小,可以在芯片手册里找到
Loader="算法文件路径" 烧录的算法,segger官方的是.elf格式,.flm是ARM的格式,
LoaderType="FLASH_ALGO_TYPE_OPEN" 目前只有FLASH_ALGO_TYPE_OPEN一个类型固定不变
AlwaysPresent="1" 指示这个块flash是不是一直存在,本文是内部flash,当然一直存在
<Device>
<ChipInfo Vendor="HDSC" Name="HC32F46x" WorkRAMAddr="0x20000000" WorkRAMSize="0x10000" Core="JLINK_CORE_CORTEX_M4"/>
<FlashBankInfo Name="Flash_512K" BaseAddr="0x0" MaxSize="0x80000" Loader="Devices\HDSC\HC32F460\1.0.8\FlashARM/HC32F460_512K.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
//第二个例子 STM32F103VET6
STM32F10xxx内置64K字节的静态SRAM。它可以,以字节、半字(16位)或全字(32位)访问。
SRAM的起始地址是 0x2000_0000 到 0x2000_FFFF 刚好是 64KB (0x10000)= 0x2000_FFFF+1
Flash的起始地址是 0x0800 0000 到 0x0807_FFFF 刚好是 512kb (0X80000)= 0x0807_FFFF+1
内核M3
Loader="Devices\ST\STM32F1\STM32F10x_512.FLM" 算法文件是从KEIL5拷贝出来的
<Device>
<ChipInfo Vendor="STM32F103ZET6XXX" Name="STM32F103ZET6XXX" WorkRAMAddr="0x20000000" WorkRAMSize="0x10000" Core="JLINK_CORE_CORTEX_M3"/>
<FlashBankInfo Name="Flash_512K" BaseAddr="0x08000000" MaxSize="0x80000" Loader="Devices\ST\STM32F1\STM32F10x_512.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
批处理操作
烧录并校验
_JFlash_log:是log文件保存位置
_JFlash_exe:是J-Falsh.exe的路径
_JFlash_prj:是工程文件路径
_JFlash_file_:要烧录的"程序文件"路径
-usb 59425868:表示写程器的SN
"-connect -auto -verify -disconnect -exit":表示先连接,再选用自动模式写入,然后再次执行校验,断开写程器,退出。(更多命令请参考官方文档里面的说明)
pause:自己体会
使用者稍微修改几个路径就可以了其他不用动!
@ECHO OFF
chcp 65001
SET _JFlash_log_=D:\\11111111111\Result\J-program1.log
SET _JFlash_exe_=D:\App1\App1\bin\Debug\J-Link\JFlash.exe
SET _JFlash_prj_=D:\\11111111111\J-jflash\111111111111111.jflash
SET _JFlash_file_=D:\\11111111111\HEX\Template.hex
start /min /wait "J-Flash" "%_JFlash_exe_%" -usb59425868 -jflashlog%_JFlash_log_% -jlinklogjlink.log -openprj"%_JFlash_prj_%" -open"%_JFlash_file_%" -connect -auto -verify -disconnect -exit
IF ERRORLEVEL 1 goto ERROR
ECHO J-Flash Program : OK!
goto END
:ERROR
ECHO J-Flash Program : Error!
:END
pause
切记执行路径和文件名称不要含中文和其他字符
最后补充一下如何通过批处理获取写程器SN
建立一个"download.jlink"的".jlin"文件
建立一个"GetSn.Bat"的批处理文件
往"GetSn.Bat"批处理文件文件写入下面内容
下面参数和路径按照自己实际路径修改一下就可以了
例:我的J-Link在“D\J-Link\JLink.exe"
则下面例子中"SET _JFlash_exe_=J-Link\JLink.exe"这段修改为
SET _JFlash_exe_=D\J-Link\JLink.exe
@ECHO OFF
chcp 65001
SET _JFlash_log_=SN1.log
SET _JFlash_exe_=J-Link\JLink.exe
%_JFlash_exe_% USB 123334 -Log %_JFlash_log_% -commandfile download.jlink
IF ERRORLEVEL 1 goto ERROR
ECHO J-Flash Program : OK!
goto END
:ERROR
ECHO J-Flash Program : Error!
:END
pause
执行结果
Usb Serial number 就是SN咯!
完毕!!!!点赞手残加关注👍👍👍👍👍👍👍👍