前一篇博文介绍了altera的programmer的脚本命令,即quartus_pgm,和我们在虚拟JTAG里面使用quartus_stp命令类似,我们可以建立批处理来自动启动这个工具。不同的是,这个命令不像quartus_stp命令有一个-s参数,所以在使用的时候命令行模式下不太容易看到下载程序的中间过程和信息,这个笔者还在摸索当中,本文主要介绍下这个命令以及使用。
一、quartus_pgmw
在介绍quartus_pgm之前,我们先来看另外一个命令,即quartus_pgmw,这个命令可以在命令行下执行的命令用于启动programmer的GUI,所以如果Quartus II软件没有启动,而又只是进行程序下载的时候,可以简单地通过这个命令只启动programmer的GUI,有兴趣的朋友可以试试,我们也可以通过批处理建立一个快速打开下载器的快捷方式。
二、quartus_pgm
上篇博文列出了该命令的参数,这里我们再次详细列出如下:
-a ....................................................................
-b ....................................................................
-c= .........................................
-f=......................................
-h....................................................................
-i .....................................................................
-l .....................................................................
-m=........................
-o=..................
-v....................................................................
-z ....................................................................
--64bit ............................................................
--auto.............................................................
--bgp..............................................................
--cable=.................................
--haltcc ..........................................................
--help[=] ............................|topic>
--initcfg..........................................................
--list ...............................................................
--lower_priority ...........................................
--mode=................
--operation=..
--version........................................................
所有的脚本命令都有返回值,如下表所示:
返回值 |
描述 |
0 |
命令执行成功 |
2 |
由于内部错误执行失败 |
3 |
由于用户错误执行失败 |
4 |
被用户终止 |
我们返回到quartus_pgm命令的参数,主要前面列出的参数单个字母前只有一个中横杠“-”,后面也有对应字母的完整单词参数,但是需要带两个中横杠“--”,效果是一样的,比如参数“-a”就和“--auto”是一样的。下面对每个参数进行详细解释。
-a(--auto):用于探测并显示器件链的所有器件的选项
-b(--bgp):允许一个Max II器件在下载新的配置数据到CFM时继续在线运行当前程序。当该选项打开时,下载到器件CFM的配置数据不会立即配置器件。
-c(--cable=):用于指定使用哪个编程硬件或编程电缆的选项。完整的语法如下所示,
" []"
" on []"
上述语法在博文显示乱码,这里使用截图:
注意第二条是编程电缆位于远程机器上,这里不讨论。当机器上只有一根电缆的时候,并不需要指定端口号,直接指定电缆名称即可,比如usb-blaster,但是当有多根电缆的时候必须指定端口号,比如有两根usb电缆,那么分配的端口号一般是usb0和usb1,那么上述格式为:"USB-Blaster[usb0]",即指定使用第一根电缆。
-h(--haltcc):终止器件片内自动配置控制器以允许通过JTAG接口编程。
-i(--initcfg):指定当编程器完成对配置芯片编程以后,配置芯片将自动配置FPGA。
-l(--list):显示所有可能的编程电缆
-m(--mode=):指定使用的编程模式。编程模式指定值可以从下表中选择
值 |
模式 |
JTAG |
JTAG模式 |
PS |
PS模式 |
AS |
AS模式 |
SD |
可插拔模式 |
-o(--operation=):指定对器件执行何种编程操作。
为器件链上的每一个器件使用如下完整的语法格式:
-o ;@
上述语法显示乱码,这里用截图显示:
注:器件索引是从1开始,这和下载电缆端口号索引从0开始有所不同,这个问题,我们在虚拟JTAG相关博文中有所介绍。
另外,上述格式有下面两个例外情况,即
-o E;;@
-o S;@
上述语法显示乱码,截图显示如下:
最后必须从下列组合之一选取:
P, BP, PV, BPV,
PL, BPL, PVL, BPVL
CP, CBP, CPV, CBPV,
CPL, CBPL, CPVL, CBPVL
IP, IBP, IPV, IBPV,
V, CV, VL, CVL, IV
B, CB, IB
R, RB, CR, CRB, IR, IRB
E, CE, IE
L, CL
S
以上组合中,各个字母的解释如下表所示
选项 |
描述 |
P |
编程 |
R |
擦写 |
L |
锁定/加密位 |
I |
初始化桥芯片 |
V |
验证 |
B |
是否为空检查 |
C |
ISP Clamp |
E |
Examine |
S |
忽略/旁路 |
需要注意的是,指定器件索引号是一个可选项,但是如果使用为一个器件指定了一个索引号,那么就必须为所有的器件指定值。我们无法在PS链上为器件来指定索引号。在一个多器件链中,每一个器件都必须有一个对应的-o解释。
coyoo 2014-5-7 13:09
指定电缆的完整语法是:"<cable_name> [<port>]"
coyoo 2014-5-7 13:07
“完整语法”怎么会显示乱码啊?