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系列教程(一)——Libero开发环境介绍、下载、安装与注册
- Microsemi Libero系列教程(二)——新建点灯工程
- 详解串行通信协议及其FPGA实现
- 我的个人博客:www.wangchaochao.top
- 我的公众号:mcu149
Microsemi Libero使用技巧——使用命令行模式下载程序的更多相关文章
- Microsemi Libero使用技巧——FPGA全局网络的设置
前言 刚开始做Microsemi FPGA+SoC开发时,会用到几个ARM专用的IP Core,功能一复杂起来,就会遇到某些信号如rst_n不能分配到指定的引脚上的情况,IO类型为CLKBUF,并不是 ...
- Microsemi Libero使用技巧——使用FlashPro生成stp程序文件
前言 在工程代码编译完成之后,如果需要给某个芯片下载程序时,或者是工厂量产烧录程序时,我们不需要把整个工程文件给别人,而只需要把生成的下载文件给别人,然后使用FlashPro就可以单独下载程序文件了. ...
- Microsemi Libero使用技巧——使用FlashPro单独下载程序
前言 在工程代码编译完成之后,如果需要给某个芯片下载程序时,或者是工厂量产烧录程序时,我们不需要把整个工程文件给别人,而只需要把生成的下载文件给别人,然后使用FlashPro就可以单独下载程序文件了. ...
- 《Practical Vim》第五章:命令行模式
前言 出于历史原因,命令行模式又叫 Ex 模式,它具有的功能有: 读写文件:比如 :edit, :write 等等 创建标签页或者窗口:比如 :tabnew :split 操作缓存区,比如: bnex ...
- VIM命令行模式下的相关知识
当按下:键时, Vim会切换到命令行模式: 重复上次执行的EX命令,只需按@:就可以: 在一行或多个连续行执行命令 很多的EX全天候可以指定操作范围,如行号,位置标记等: 以:print命令作为演示, ...
- PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)
源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...
- Unity命令行模式,也能「日志实时输出」
转自自己的简书:http://www.jianshu.com/p/bd97cb8042a9 如果你使用过Unity命令行模式(batchmode),来实现Unity自动化编译构建,你肯定会遇到过这样的 ...
- vim第五章 命令行模式
vim第五章命令行模式 技巧 27 结识vim的命令行模式 在命令行模式中执行的命令有被称作ex命令 在按/调出查找提示符或者<C-r>=访问表示寄存器时 命令行模式也被激活 ...
- mplayer命令行模式下的使用方法【转】
mplayer命令行模式下的使用方法http://hi.baidu.com/lovehack2006/blog/item/162ef9778214111eb051b9d4.htmlMPlayerMPl ...
随机推荐
- IDM下载工具使用
平时网上找资料,找视频,难免都需要下载到本地,奈何下载速度都一般,最近发现一款多线程下载工具,堪称无敌!!
- Java 类、接口的API
本章节收集的类/接口API有: Object类,枚举,包装类,接口Comparable,类Arrays,Thread类,System类,Math,BigInteger,Random,日期时间,异常 O ...
- 数据降维-LDA线性降维
1.什么是LDA? LDA线性判别分析也是一种经典的降维方法,LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的.这点和PCA不同.PCA是不考虑样本类别输出的无监督降维技术. ...
- 英语口语考试资料Friendships
Friendships Remember Friendships can be complicated. When you want to get to know someone, it helps ...
- webpack4.0安装及使用(一)
前言 1.什么是webpack 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建 ...
- 更适合Pythoner的标记语言Yaml学习总结
pythonic的标记语言 之前总结过一篇关于小数据存储文件大比拼,当时着重介绍了json,因为它在各类编程语言的通用性较强.但今天,我想给大家介绍一款更加适合pythoner使用的语言Yaml. Y ...
- 一条数据的HBase之旅,简明HBase入门教程2:数据模型
[摘要] 上一篇文章讲了HBase项目与应用概况信息,这篇文章讲述HBase的数据模型以及一些基础概念,数据模型可以说决定了HBase适合于什么应用场景. 华为云上的NoSQL数据库服务CloudTa ...
- springcloud+kafka集群
上节说了kafka在linux环境下怎么搭建集群.这节写一下怎么在springcloud中以stream流方式去做kafka集群对接. 1.yml配置 #spring Cloud kafka -- s ...
- SpringBoot-运行原理(四)
1.自动配置 (1).pom.xml 在pom文件中 <parent> <groupId>org.springframework.boot</groupId> &l ...
- Python的Requests库基本方法函数
一.Requests 库的七个常用函数: 1. requests.request(method,url,**kwargs) :method:请求方式,对应get/put/post等七种 :拟获取页面的 ...