“在MCU的升级过程中,需要将Hex文件传递给Bootloader,该工作可由Python Script完成,本文介绍其环境搭建及使用情况。”
1. Python软件下载安装
1.1 在Python官网下载最新安装包“Python3.10.0”
图1 - 软件下载界面
1.2 打开exe文件,先勾选添加路径,然后点击install
图2 - 软件安装界面
1.3 安装中
图3 - 软件安装中
1.4 点击close安装完成
图4 - 完成安装
1.5 安装完成后打开cmd窗口,输入python弹出如下信息代表安装成功
图5 - 安装验证
2. 其他组件安装
2.1 pip安装
按ctrl+z先退出python模式,接着输入python -m pip install --upgrade pip
图6 - pip安装
2.2 pySerial安装 输入python -m pip install --upgrade pyserial
图7 - pySerial安装
2.3 IntelHex安装输入python -m pip install --upgrade numpy
图8 - IntelHex安装
2.4 组件安装版本确定输入python -m pip freeze
图9 - 版本确定
3. Python Scipt使用
这里以PIC16F15223的Bootloader开发工程为例,工程文件夹下面有一个readme.hml,内有详细的工程建立及验证说明,本文不做特殊介绍。
图10 - 例程下载界面
3.1 Hex文件合并
Hex文件合并依赖于例程工程scripts文件夹下的hex_merge.py和hex_merge_app_boot.bat。其中hex_merge.py为实现Hex文件合并的Python脚本,hex_merge_app_boot.bat为批处理文件,用户仅需编辑该批处理文件即可。如图11,前两行分别为应用程序和Bootloader程序的Hex文件,第三行为合并后的hex文件名。第四行代表Bootloader程序占用0x0~0x3FF空间,而0x800是整个器件Flash空间大小。
图11 - Hex文件合并设置
运行批处理文件后比对三个hex文件的结果如图12所示,可以看到合并后Bin文件的0x0~0x7ff区间为Bootloader程序,0x800~0x1000区间为应用程序。(注意:这里合并Bin的地址乘以2是因为PIC16为按字对齐,而图12中的Bin是按字节对齐。)
图12 - Hex文件合并结果
3.2 串口升级
串口升级依赖于例程工程scripts文件夹下的pic16_uploader.py和serial_upload.bat。其中pic16_uploader.py为实现串口升级的Python脚本,serial_upload.bat为批处理文件,用户仅需编辑该批处理文件即可。主要参数为待升级的应用程序Hex文件,应用程序起始地址,Flash空间大小和串口波特率。
图13 - 串口升级设置
最后运行批处理文件后可见升级过程如图14,升级过程信息被打印,如获取版本,擦除Flash,写Flash,校验和复位MCU等。
图14 - 串口升级过程