前言

在工程代码编译完成之后,如果需要给某个芯片下载程序时,或者是工厂量产烧录程序时,我们不需要把整个工程文件给别人,而只需要把生成的下载文件给别人,然后使用FlashPro就可以单独下载程序文件了。上一篇文章介绍了如何使用图形化界面——FlashPro软件,来进行pdb文件的下载,本文介绍如何通过命令行脚本来调用FlashPro软件进行程序的下载。

关于FlashPro

关于FlashPro下载器及FlashPro软件的介绍,可以查看上一篇文章:Microsemi Libero使用技巧——使用FlashPro单独下载程序

关于FlashPro执行TCL脚本文件

FlashPro 用户手册中有一个章节专门介绍了Batch Mode(批处理模式)来使用FlashPro,详细介绍了各种批处理命令,如new projectset_programming_fileset_programming_actionrun_selected_actionsclose_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命令,可以根据需要写出很实用的脚本文件。

资料下载

推荐阅读


  • 我的个人博客:www.wangchaochao.top
  • 我的公众号:mcu149

Microsemi Libero使用技巧——使用命令行模式下载程序的更多相关文章

  1. Microsemi Libero使用技巧——FPGA全局网络的设置

    前言 刚开始做Microsemi FPGA+SoC开发时,会用到几个ARM专用的IP Core,功能一复杂起来,就会遇到某些信号如rst_n不能分配到指定的引脚上的情况,IO类型为CLKBUF,并不是 ...

  2. Microsemi Libero使用技巧——使用FlashPro生成stp程序文件

    前言 在工程代码编译完成之后,如果需要给某个芯片下载程序时,或者是工厂量产烧录程序时,我们不需要把整个工程文件给别人,而只需要把生成的下载文件给别人,然后使用FlashPro就可以单独下载程序文件了. ...

  3. Microsemi Libero使用技巧——使用FlashPro单独下载程序

    前言 在工程代码编译完成之后,如果需要给某个芯片下载程序时,或者是工厂量产烧录程序时,我们不需要把整个工程文件给别人,而只需要把生成的下载文件给别人,然后使用FlashPro就可以单独下载程序文件了. ...

  4. 《Practical Vim》第五章:命令行模式

    前言 出于历史原因,命令行模式又叫 Ex 模式,它具有的功能有: 读写文件:比如 :edit, :write 等等 创建标签页或者窗口:比如 :tabnew :split 操作缓存区,比如: bnex ...

  5. VIM命令行模式下的相关知识

    当按下:键时, Vim会切换到命令行模式: 重复上次执行的EX命令,只需按@:就可以: 在一行或多个连续行执行命令 很多的EX全天候可以指定操作范围,如行号,位置标记等: 以:print命令作为演示, ...

  6. PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)

    源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...

  7. Unity命令行模式,也能「日志实时输出」

    转自自己的简书:http://www.jianshu.com/p/bd97cb8042a9 如果你使用过Unity命令行模式(batchmode),来实现Unity自动化编译构建,你肯定会遇到过这样的 ...

  8. vim第五章 命令行模式

    vim第五章命令行模式 技巧 27 结识vim的命令行模式 在命令行模式中执行的命令有被称作ex命令    在按/调出查找提示符或者<C-r>=访问表示寄存器时 命令行模式也被激活     ...

  9. mplayer命令行模式下的使用方法【转】

    mplayer命令行模式下的使用方法http://hi.baidu.com/lovehack2006/blog/item/162ef9778214111eb051b9d4.htmlMPlayerMPl ...

随机推荐

  1. Android状态栏兼容4.4.4与5.0,Android5.0状态栏由半透明设置为全透明

    //判断android 版本然后设置Systembar颜色 public void initSystemBar() { Window window = getWindow(); //4.4版本及以上 ...

  2. css居中布局的几种方式

    一.水平居中 若是行内元素,则直接给其父元素设置text-align: center即可 若是块级元素,则直接给该元素设置margin: 0 auto即可 若子元素包含浮动元素,则给父元素设置widt ...

  3. Promise.all()

    Promise.all(iterable) 方法返回一个 Promise 实例,此实例在 iterable 参数内所有的 promise 都“完成(resolved)”或参数中不包含 promise  ...

  4. 【Flink】Flink基础之WordCount实例(Java与Scala版本)

    简述 WordCount(单词计数)作为大数据体系的标准示例,一直是入门的经典案例,下面用java和scala实现Flink的WordCount代码: 采用IDEA + Maven + Flink 环 ...

  5. Protues7.8仿真软件有中文路径无法正常运行怎么办?

    Protues7.8是一款功能强大的单片机仿真软件,在我们的学习生活中经常会用的到,在装软件时明明已经装好了,却不能报错跳出两行红字,让人心痛. 一般都是因为账户名字是中文的问题,这个软件对中文不兼容 ...

  6. linux-PAM

    PAM(Pluggable Authentication Modules)即可插拔式认证模块,一种用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式. PAM认证原理:参考资料来自htt ...

  7. scikit-learn网格搜索来进行高效的参数调优

    内容概要¶ 如何使用K折交叉验证来搜索最优调节参数 如何让搜索参数的流程更加高效 如何一次性的搜索多个调节参数 在进行真正的预测之前,如何对调节参数进行处理 如何削减该过程的计算代价 1. K折交叉验 ...

  8. SpringBoot第一次案例

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  9. JSONPath入门之Snack3篇

    Snack3 for java 一个微型JSON框架 基于jdk8,60kb.有序列化反序列化.解析和转换.支持 Json path 查询. <dependency> <groupI ...

  10. SpringMVC请求参数接收总结(一)

    前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...