Altera下载脚本二

首先,我们来看一个demo,这个demo实现自动下载SOFELF文件。其目录结构如图1所示。这是一个在DE2上实现从SD卡中读取文档的工程。SOFELF文件分别是FPGA硬件配置程序和NiosII 软件程序。

(图1

         需要准备一张SD卡,格式化成FAT16格式,卡中的内容如图2所示。

(图2

         SD卡插入DE2SD卡插槽,将DE2与电脑连接,上电。双击test.bat批处理文件。此时会弹出DOS窗口,实验现象如图3,图4所示。可见,这个批处理文件实现了自动下载SOF配置文件和下载运行Nios程序。

(图3

(图4

我们来看看test.bat中到底是什么内容。用文本编辑器打开test.bat,其内容如图5所示。

(图5

第一行:%QUARTUS_ROOTDIR%\\bin\\quartus_pgm.exe -m jtag -c USB-Blaster[USB-0] -o "p;DE2_SDCARD.sof"

这个批处理首先调用了quartus_pgm.exe这个程序实现下载DE2_SDCARD.SOF quartus_pgm.exeQuartusII的安装目录下的bin目录下,我们进入C:\altera\90\quartus\bin目录(路径因机器而异),可以看到以下文件,如图6所示。由图标可以看出,quartus_pgm.exe是一个dos程序,双击它是无法运行的,只能在DOS窗口下使用。名字与它相近的quartus_pgmw.exe正是quartus_pgm.exe的图形化界面,也正是我们在QuartusII中进行下载时调用的程序,如图7所示。

(图6

(图7

         至于那些参数“-m jtag -c USB-Blaster[USB-0] -o "p;DE2_SDCARD.sof" ”,都表示什么含义呢,我们进入DOS窗口,进入C:\altera\90\quartus\bin目录,运行“quartus_pgm/?”帮助命令,如图8所示。由显示的结果得知,-m 参数表示下载模式,这里是jtag模式,-c 表示下载电缆,这里是用USB-Blaster下载,-o 表示下载操作(?不理解),但还有“p;”这个参数怎么解释呢。看来我们需要更详细的解释。图中最后一行提示我们,如果需要更详细的说明,可以输入“ –help=<option|topic>”命令。于是,运行“c:\altera\90\quartus\bin\quartus_pgm --help=o”,出现了更加详细的说明,如图9所示。

        

(图8

(图9

         2-6行:

@ set SOPC_BUILDER_PATH_71=%SOPC_KIT_NIOS2%+%SOPC_BUILDER_PATH_71%

@ set SOPC_BUILDER_PATH_72=%SOPC_KIT_NIOS2%+%SOPC_BUILDER_PATH_72%

@ set SOPC_BUILDER_PATH_80=%SOPC_KIT_NIOS2%+%SOPC_BUILDER_PATH_80%

@ set SOPC_BUILDER_PATH_81=%SOPC_KIT_NIOS2%+%SOPC_BUILDER_PATH_81%

@ set SOPC_BUILDER_PATH_90=%SOPC_KIT_NIOS2%+%SOPC_BUILDER_PATH_90%

5行的作用是设置环境变量,这取决于你机器装的QuartusII的版本,如果你装的是9.0,那么只保留最后一行内容就行了。

8-9行:

@ "%QUARTUS_ROOTDIR%\bin\cygwin\bin\bash.exe" --rcfile ".\test_bashrc"

pause

接着,调用C:\altera\90\quartus\bin\cygwin\bin目录下的bash.exe去解释执行当前目录下(即test.bat所在目录)下的test_bashrc脚本文件。(稍微懂linux的人应该知道,bashlinux常见的shell)。

到目前为止,我们光看到了DE2_SDCARD.sof的踪影,DE2_SDCARD.elf还没有现身,是不是藏在了 test_bashrc 这个脚本中呢。我们用文本编辑器打开test_bashrc 继续探索。如图10所示(为了能截在一张图中,删除了一些注释信息和空白行)。

(图10

        

         看第27行画红线处,DE2_SDCARD.elf果然隐藏在这里。

         nios2-download DE2_SDCARD.elf -c USB-Blaster[USB-0] -r -g

nios2-terminal -c USB-Blaster[USB-0]

很明显,脚本首先调用nios2-download这个程序实现下载DE2_SDCARD.elf-c –r –g 是这个程序的参数(或是选项),-c 应该就是选择下载电缆的选项,所以后面的值是USB-Blaster,那么 –r –g 分别又表示什么含义呢。同理,我们使用帮助。因为nios2-download是一个linux程序,所以要先进入模拟linux环境,即先运行bash.exe。(不知这样表述是否正确),然后运行 ./nios2-download –help 命令,如图11所示。

(图11

         只可惜这不是真正的linux环境,所以连最简单的显示命令 cat 都没有,使用帮助失败。只能作罢,再想其它办法。

         一种方法是找一台在linux环境中装好NiosII IDE的计算机,使用 ./nios2-download –help命令,如图12所示。

(图12

         另一种方法是仍然在Windows下,进入C:\altera\90\nios2eds\bin目录,如图13所示。双击,使用文本编辑器打开(我其实没想到这竟然也是一个脚本文件,还以为是编译后的二进制代码呢),在脚本的中间部分,向我们描述了这些选项的作用。如图14所示。

         -r/--reset-target     Reset the target SOPC system before use. (使用前复位)

         -g/--go            Run processor from entry point after downloading. (?不明白)

(图13

(图14

        

         最后,调用nios2-terminal,这相当于NiosII IDE中的控制台,可以和在硬件上运行的程序进行交互,接收从jtag-uart返回的信息,也可能通过jtag-uart给硬件发信息(取决定NiosII程序的功能),本例中,Nios程序通过jtag-uart返回了SD卡中的内容。

         总结:

         所以,只要对这个模版稍做修改,我们就能下载自己所需要的工程。首先,把SOF文件和ELF文件替换成要自己工程的文件,然后,修改test.bat中的这句话:“

%QUARTUS_ROOTDIR%\\bin\\quartus_pgm.exe -m jtag -c USB-Blaster[USB-0] -o "p;DE2_SDCARD.sof"”,把DE2_SDCARD.sof改成自己需要下载的文件名,然后,修改test_bashrc中的这句话:“nios2-download DE2_SDCARD.elf -c USB-Blaster[USB-0] -r -g”,同样把DE2_SDCARD.elf改成自己需要下载的文件名。

         ELF文件从哪找呢,NiosII 工程生成的ELF文件会存放在当前工程目录下的Debug目录下。如图15所示。

(图15)


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值