“在MCU的升級過程中,需要將Hex文件傳遞給Bootloader,該工作可由Python Script完成,本文介紹其環(huán)境搭建及使用情況。”
1. Python軟件下載安裝
1.1 在Python官網(wǎng)下載最新安裝包“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開發(fā)工程為例,工程文件夾下面有一個readme.hml,內(nèi)有詳細的工程建立及驗證說明,本文不做特殊介紹。
圖10 - 例程下載界面
3.1 Hex文件合并
Hex文件合并依賴于例程工程scripts文件夾下的hex_merge.py和hex_merge_app_boot.bat。其中hex_merge.py為實現(xiàn)Hex文件合并的Python腳本,hex_merge_app_boot.bat為批處理文件,用戶僅需編輯該批處理文件即可。如圖11,前兩行分別為應用程序和Bootloader程序的Hex文件,第三行為合并后的hex文件名。第四行代表Bootloader程序占用0x0~0x3FF空間,而0x800是整個器件Flash空間大小。
圖11 - Hex文件合并設置
運行批處理文件后比對三個hex文件的結果如圖12所示,可以看到合并后Bin文件的0x0~0x7ff區(qū)間為Bootloader程序,0x800~0x1000區(qū)間為應用程序。(注意:這里合并Bin的地址乘以2是因為PIC16為按字對齊,而圖12中的Bin是按字節(jié)對齊。)
圖12 - Hex文件合并結果
3.2 串口升級
串口升級依賴于例程工程scripts文件夾下的pic16_uploader.py和serial_upload.bat。其中pic16_uploader.py為實現(xiàn)串口升級的Python腳本,serial_upload.bat為批處理文件,用戶僅需編輯該批處理文件即可。主要參數(shù)為待升級的應用程序Hex文件,應用程序起始地址,F(xiàn)lash空間大小和串口波特率。
圖13 - 串口升級設置
最后運行批處理文件后可見升級過程如圖14,升級過程信息被打印,如獲取版本,擦除Flash,寫Flash,校驗和復位MCU等。
圖14 - 串口升級過程