# a-loader
**Repository Path**: jujubo2020/a-loader
## Basic Information
- **Project Name**: a-loader
- **Description**: JLink一键烧录和备份工具
- **Primary Language**: 其他
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-05-27
- **Last Updated**: 2025-05-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
A-Loader
基于JLink实现的单片机配置、boot、app读取写入工具,集成连续地址的hex文件转bin文件功能

### 简单介绍
默认配置仅适合``R7FA6M4AD``芯片,其他jlink支持的芯片型号需要针对settings.json文件做适当改动。正常使用需要依赖正确配置jlink安装的所在路径。首次运行软件时,会生成``settings.json``文件。需要填写jlink软件所在路径(**jlink_path**),完成后重启软件才能正常使用软件。
### 升级版本注意事项
- 直接下载新版本的exe可执行文件,替换掉旧版本。
- 软件在启动时会检测,所在目录是否存在settings.json,如果存在则直接读取其中的配置,如果不存在则会新建settings.json文件。所以在升级时不需要额外的去备份或者删除旧版本软件所在目录下的settings.json。
### 使用说明
1. boot模式
拖放构建生成的**boot**的hex或bin类型文件。
- hex文件应使用IDE构建后生成的hex文件。拖放后点击写入。
- 对于bin文件烧录,会从地址0x00000000开始烧录,如有需要,bin文件写入地址可在settings.json中修改,详情请看下文配置说明。
2. app模式
拖放构建生成的**app**的hex或bin类型文件。
- hex文件应使用IDE构建后生成的hex文件。出于对app文件信息的校验需要,在boot和app之间会做预留(0x00010000-0x00010400),IDE生成的app hex文件地址是从``0x00010400``开始。为了让boot顺利跳转app, **当检测到hex文件起始地址为0x00010400** ,将会在原hex文件基础上往前填充0x400长度的数据{0x00}。最终写入的hex文件起始地址是0x00010000。
- 对于bin文件烧录,默认从地址0x00010000开始烧录,会**对传入的bin文件进行检测并视情况处理**,如果前1k数据非``0x00``,则会填充``0x00``,并写入。如果前1k数据都是``0x00``,则直接写入,目的是为了让boot顺利跳转app。 如有需要,bin文件写入地址可在settings.json中修改,详情请看下文配置说明。
3. cfg模式
仅支持attri类型文件,会自动按照内存中存储规则转换成bin,在点击写入后直接写入单片机中
4. hex2bin模式
将地址连续的hex文件转bin文件,并在桌面生成。可选择是否填充1k 0x00(在**v1.0.7**版本上已经支持app模式下检测符合条件则自动填充1k数据,此功能暂保留,后续可移除),以便将写入bin到单片机。
### 配置说明
在软件所在目录,在首次运行时会创建一个``logs文件夹``和``settings.json``,前者是程序运行记录的日志信息,后者为必要的参数设置。这里针对``settings.json``稍作介绍。
```json
{
"jlink_path": "C:\\Program Files\\SEGGER\\JLink_V796h\\JLink.exe",
"speed": 400,
"device": "R7FA6M4AD",
"write_cfg": {
"write_addr": "0x08000040"
},
"read_cfg": {
"read_addr": "0x08000040",
"read_length": "0x01C0",
"output_bin_name": "mid_cfg.bin"
},
"write_app": {
"write_addr": "0x00010000"
},
"read_app": {
"read_addr": "0x00010000",
"read_length": "0x50000",
"output_bin_name": "mid_app.bin"
},
"write_boot": {
"write_addr": "0x00000000"
},
"read_boot": {
"read_addr": "0x00000000",
"read_length": "0x10000",
"output_bin_name": "mid_boot.bin"
},
"debug_level": "INFO"
}
```
#### jlink_path
``jlink.exe``所在路径,首次启动本软件时需要按jlink在电脑中的实际路径配置,否则软件无法正常使用,并提示报错信息。
#### speed
jlink SWD Speed,默认400,可以调整到芯片适合的更高的速率。
#### device
设备芯片类型。默认``R7FA6M4AD``,若修改其他类型芯片,意味着``read_boot``,``read_app``等字典内容可能需要做调整。
#### write_cfg
写配置文件的起始地址(仅烧录bin有效)
#### read_cfg
从``read_cfg.read_addr``开始读取``read_cfg.read_length``长度的内容,
并以``read_cfg.output_bin_name``为输出bin文件名,生成在桌面。
其他操作app或boot的类似,此处略。
#### debug_level
运行日志日志等级,默认INFO, 软件闪退或存在异常时,可以设置为DEBUG等级,以输出更多信息排查问题。
### 致谢
感谢[QFluentWidgets](https://github.com/zhiyiYo/PyQt-Fluent-Widgets)开源的组件库。
### ⚡ Visitor count
