文章目錄
系列教程:Microsemi Libero系列教程
前言
在工程代碼編譯完成之後,如果需要給某個芯片下載程序時,或者是工廠量產燒錄程序時,我們不需要把整個工程文件給別人,而只需要把生成的下載文件給別人,然後使用FlashPro就可以單獨下載程序文件了。上一篇文章介紹瞭如何使用圖形化界面——FlashPro軟件,來進行pdb文件的下載,本文介紹如何通過命令行腳本來調用FlashPro軟件進行程序的下載。
關於FlashPro
關於FlashPro下載器及FlashPro軟件的介紹,可以查看上一篇文章:Microsemi Libero使用技巧——使用FlashPro單獨下載程序。
關於FlashPro執行TCL腳本文件
在FlashPro 用戶手冊中有一個章節專門介紹了Batch Mode(批處理模式)來使用FlashPro,詳細介紹了各種批處理命令,如new project
、set_programming_file
、set_programming_action
、run_selected_actions
、close_project
等命令,使用這些命令等同於使用圖形化界面來執行打開工程、加載程序文件、選擇編程選項、運行等步驟,即通過命令行執行這些操作。
例如使用FlashPro執行一個TCL腳本文件的命令行指令:
<location of Microsemi software>/bin/flashpro.exe script:batch.tc
即:[flashpro.exe的路徑] script:name.tcl
而這個TCL腳本文件的功能就可以根據需要來指定了,如只編程FPGA部分,只編程ARM部分,只擦除程序等等。所有的命令使用方法都在FlashPro 用戶手冊中有詳細的介紹。而如果只想進行程序下載,應該如何來編寫一個TCL文件呢?這個很簡單,不需要我們編寫,Microsemi Libero軟件在生成下載文件時,已經爲我們生成好了,在我們執行Program Device
,對FPGA進行編程時,Libero軟件就是在執行這個腳本文件。這個腳本文件位於:\LED_Blink\designer\impl1\led_driver_fp\led_driver.tcl
,腳本文件已經生成好了,就是將我們工程編譯生成的pdb文見燒寫到FPGA內。具體內容如下:
open_project -project {D:\FPGA_Study\Microsemi\Blog\LED_Blink\designer\impl1\led_driver_fp\led_driver.pro}
set_programming_file -no_file
set_device_type -type {A2F200M3F}
set_device_package -package {208 PQFP}
update_programming_file \
-feature {prog_fpga:on} \
-fdb_source {fdb} \
-fdb_file {D:\FPGA_Study\Microsemi\Blog\LED_Blink\designer\impl1\led_driver.fdb} \
-feature {prog_from:off} \
-feature {prog_nvm:off} \
-pdb_file {D:\FPGA_Study\Microsemi\Blog\LED_Blink\designer\impl1\led_driver_fp\led_driver.pdb}
set_programming_action -action {PROGRAM}
run_selected_actions
save_project
close_project
每個命令和參數的意義可以對照FlashPro 用戶手冊進行查看,不過從字面意思我們也可以大概瞭解整個TCL腳本執行的過程:
- 打開工程,指定模式爲單芯片模式
- 設置芯片型號和封裝
- 指定fdb文件和pdb文件絕對路徑
- 設置編程選項爲:全編程,包括FPGA和ARM
- 運行編程
- 保存關閉工程
使用命令行來燒寫程序
1.添加FlashPro.exe文件路徑到系統環境變量
使用Everything搜索軟件全局搜索FlashPro.exe
文件,可以看到FlashPro.exe文件位於安裝目錄下的F:\Microsemi\Designer\bin
文件夾下:
添加到系統變量->PATH->F:\Microsemi\Designer\bin
2.運行TCL腳本文件
在\LED_Blink\designer\impl1\led_driver_fp
目錄運行Git Bash工具,運行命令:
flashpro script:led_driver.tcl
輸出編程狀態信息:
Qt: Untested Windows version 6.2 detected!
FlashPro
Version: 11.8.2.4
Release: Libero SoC v11.8 SP2
Software Version: 11.8.2.4
PDB file 'D:\FPGA_Study\Microsemi\Blog\LED_Blink\designer\impl1\led_driver_fp\led_driver.pdb' has been loaded successfully.
DESIGN : led_driver; CHECKSUM : 23A8; PDB_VERSION : 1.9
Driver : 3.0.0 build 1
programmer '08152' : FlashPro4
Opened 'D:\FPGA_Study\Microsemi\Blog\LED_Blink\designer\impl1\led_driver_fp\led_driver.pro'
The 'open_project' command succeeded.
The 'set_programming_file' command succeeded.
The 'set_device_type' command succeeded.
The 'set_device_package' command succeeded.
Info: Adding FPGA Array data from file D:\FPGA_Study\Microsemi\Blog\LED_Blink\designer\impl1\led_driver.fdb.
PDB file 'D:\FPGA_Study\Microsemi\Blog\LED_Blink\designer\impl1\led_driver_fp\led_driver.pdb' has been loaded successfully.
DESIGN : led_driver; CHECKSUM : 23A8; PDB_VERSION : 1.9
The 'update_programming_file' command succeeded.
The 'set_programming_action' command succeeded.
programmer '08152' : Scan Chain...
programmer '08152' : Scan Chain PASSED.
programmer '08152' : Executing action PROGRAM
programmer '08152' : EXPORT FSN[48] = 01538a207858
programmer '08152' : Erase ...
programmer '08152' : Completed erase
programmer '08152' : EXPORT CHECKSUM[16] = 23a8
programmer '08152' : Programming FPGA Array
programmer '08152' : Verifying FPGA Array
programmer '08152' : Verifying FPGA Array -- pass
programmer '08152' : Finished: Wed Oct 09 19:21:27 2019 (Elapsed time 00:00:34)
programmer '08152' : Executing action PROGRAM PASSED.
o - o - o - o - o - o
The 'run_selected_actions' command succeeded.
Project saved.
The 'save_project' command succeeded.
Project closed.
The 'close_project' command succeeded.
The Execute Script command succeeded.
可以看到和在Libero中運行Program Device
時,輸出同樣的編程信息:
稍等幾十秒,就會看到程序執行成功的信息。
使用bat批處理文件簡化命令行操作
在工程目錄\LED_Blink\designer\impl1\led_driver_fp
下新建batch_mode.bat
文本文件,文件方式編輯,輸入以下內容:
flashpro script:led_driver.tcl
echo 燒寫完成
pause
如果想要下載程序,只需要直接雙擊這個批處理文件,稍等幾十秒,然後看到"燒寫完成",就說明燒寫成功了。
由於windows自帶的cmd命令行沒有後臺運行和交互的功能,所以這種方式不會顯示下載的狀態信息,我手動添加了"燒寫完成"的提示:
關於bat批處理文件的更多實用技巧可以參考:BAT批處理基本命令總結
FlashPro下載器的其他功能
- 配合Synopsys Identity Debug實現在線調試
- 支持多種編程選項:擦除、編程、驗證、復位M3、編程M3等
- 配合Microsemi SoftConsole實現ARM程序的調試和下載
- 支持導出或運行TCL腳本文件,或通過命令行下載程序
- 支持菊花鏈拓撲同時編程多個目標芯片
- 只更新ARM Cortex-M3的Hex程序
- 設置編程密鑰和AES密鑰,增強安全性
- 導出stp格式單程序文件
以上都是很實用的功能,具體的使用方法可以參考:FlashPro 用戶手冊,裏面介紹的很詳細。
總結
本篇文章主要介紹一個命令[flashpro.exe的路徑] script:name.tcl
,通過使用此命令,可以實現不用打開FlashPro軟件,而直接進行程序燒寫,其實調用的還是FlashPro軟件,只不過沒有了圖形化界面。使用這種方法可以簡化操作的過程,但是不能顯示下載的進度,如擦除、編程、完成等狀態,如果熟練掌握了FlashPro支持的TCL命令,可以根據需要寫出很實用的腳本文件。
資料下載
推薦閱讀
- Microsemi Libero使用技巧——使用FlashPro單獨下載程序
- Microsemi Libero使用技巧——使用第三方編輯器Notepad++
- Microsemi Libero使用技巧——查看芯片資源佔用情況
- Microsemi Libero系列教程(二)——新建點燈工程
- Microsemi Libero系列教程(一)——Libero開發環境介紹,下載,安裝與註冊
- 詳解串行通信協議及其FPGA實現
- 我的博客:www.wangchaochao.top
- 我的公衆號:mcu149