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 ...
随机推荐
- springboot+logback日志输出企业实践(上)
目录 1.引言 2.logback简介 3. springboot默认日志框架-logback 3.1 springboot示例工程搭建 3.2 日志输出与基本配置 3.2.1 日志默认输出 3.2. ...
- wincap linux部署
1.4.1 linux下安装Winpcap a) 下载Winpcap的源码:https://www.winpcap.org/devel.htm b) 上传源码包“WpcapSrc_4_1_3.zip” ...
- IdentityServer4 保护.net framework webapi
一.IS4服务器配置 1.新建一个Asp.net Core MVC程序,模板选择 Empty 2.Nuget添加 IdentityServer4,我这里添加的是2.5.3 3.添加Config文件, ...
- 【Android - 进阶】之RemoteViews简介
RemoteViews,顾名思义,就是远程的View,也就是可以运行在其他进程中的View.RemoteViews常用在通知和桌面小组件中. 一.RemoteViews应用到通知 首先来介绍一下系统自 ...
- RocketMQ 多副本前置篇:初探raft协议
目录 1.Leader选举 1.1 一轮投票中,只有一个节点发起投票的情况 1.2 一轮投票中,超过一个节点发起投票的情况 1.3 思考如何实现Raft选主 2.日志复制 Raft协议是分布式领域解决 ...
- php弹出确认框
下面的代码只需要放在同一个文件中就可以运行了~~ html<a href="__URL__/shanchu/id/{$vo.id}" onclick='return del( ...
- Flask使用bootstrap为HttpServer添加上传文件功能
关于模态框 使用bootstrap实现点击按钮弹出窗口,简直不要太简单.我们只需要将写好的窗口内容隐藏,然后调用bootstrap的框架即可,简单几行就能完成相关功能实现.... 前提条件是,我们需要 ...
- STM32F4 阿波罗寄存器 进阶版LED灯
上一节通过使用操作地址的方式进行了寄存器的操作,接下来通过两个部分,实现进阶版的操作寄存器(将寄存器的地址进行命名,然后使用名字进行调用 比如商场的A座5楼345号为卖玩具的,我们可以定义地址为sh ...
- js-编程练习题-输出年月日以及练习字符串分割,检索,转换整数(int)
这是在慕课网上看到的编程题-如有侵权,请联系本人删除. 当然:题是他们的,做题是我的...嘿嘿嘿 某班的成绩出来了,现在老师要把班级的成绩打印出来. 效果图: XXXX年XX月X日 星期X--班级总分 ...
- 时至今日,我们应该承认.Net目前的状况实在堪忧
一: .Net之前 .Net 经历了多年的锤炼,语言特性本身非常优雅和完善,也是非常甜品的一种语言 二: .Net现状 但是与此同时,.Net的生态日益糟糕,困扰着广大.Neter 三: .N ...