tag 标签: 程序下载

相关博文
  • 热度 5
    2018-6-12 21:35
    4309 次阅读|
    2 个评论
    1 、连接接口有区别 烧写多使用 JTAG 、 USB 、网络、串口连接(也有使用 SD 卡、 U 盘上的映像文件烧写的); 下载一般用的是网络连接(少数用串口)。 2 、文件有区别 烧写的文件一般为烧写软件可以识别的、有一定格式的映像文件(如 boot 、 kernel 映像文件); 下载的文件一般是操作系统可以识别的二进制文件、文本文件、其它数据文件等,映像文件只是其中一种。 3 、存储目标不同 烧写多是指烧写软件将映像文件一个字节一个字节地物理地写到 FLASH 上的一定位置上; 下载是操作系统将收到的文件保存到本地文件系统上(或映射到本地的文件系统上),不关心文件的物理存储位置。 内容来源:https://zhidao.baidu.com/question/475154430.html
  • 热度 25
    2014-8-20 14:15
    2549 次阅读|
    0 个评论
      当一个系统中含有多片(2片以上)Xilinx FPGA、CPLD或PROM(FLASH)时,可采用单一JTAG口以菊花链(Daisy Chain)形式将所有芯片串联起来实现下载编程,如下图所示。这样做有两个好处:(1)可以节省多个JTAG口所占用的PCB空间,特别适合空间有限的嵌入式系统,如小型工业摄像机等;(2)嵌入式系统处于封闭环境中,有时需要对系统中的FPGA程序进行在线或远程升级,必须将JTAG口引到机箱外,显然这种单JTAG口的菊花链结构是最佳选择。   1、关于链路中的芯片数量 Xilinx的UG380:“Spartan-6 FPGA Configuration User Guide”的第58页“JTAG Signal Routing”一节有如下描述: The TCK and TMS signals go to all devices in the chain; consequently, their signal quality is important. For example, TCK should transition monotonically at all receivers to ensure proper JTAG functionality and must be properly terminated. The quality of TCK can limit the maximum frequency for reliable JTAG configuration. Additionally, if the chain is large (three devices or more), TMS and TCK should be buffered to ensure that they have sufficient drive strength at all receivers, and the voltage at logic High must be compatible with all devices in the chain.   由于TCK和TMS两个信号是连接到菊花链中的所有芯片,因此这两个信号的质量(完整性)非常重要!特别是时钟信号TCK,任何毛刺干扰和边沿抖动都会导致下载失败。 当菊花链中的芯片(或设备)在3个以上时,TMS和TCK必须加缓冲器(如74LVC245),以增加其驱动能力,对于一些驱动能力差的国产下载器尤其重要。每个驱动门所在分支链路中的芯片(或设备)数量取决于缓冲器的驱动能力,一般74LVC245(8缓冲)的一个缓冲门可驱动3~4个负载(芯片)。在TCK的缓冲器输出端串接一个20~30Ω的电阻,设备端并接一个100~1000p的电容到地,可明显降低边沿抖动、减少毛刺干扰。 TMS是一个模式选择开关信号,TCK是时钟脉冲信号,缺省频率为6MHz,当负载较多时,不加缓冲适当降低TCK的频率也可提高信号完整性。        JTAG协议规定TCK下降沿输出TDI数据有效,并在TCK上升沿采集TDO数据,因此,在整个JTAG链中必须保证TDI至TDO的贯通延时(Propagation Delay)T CPD 必须小于TCK的1/2周期T CLK/2 ,即△T=T CLK/2 –T CPD 0。也就是说,在增加缓冲驱动的情况下,JTAG链路中的芯片总数与每个芯片的TDO延时T DOV (FPGA为T TCKTDO )和TCK频率有关。在芯片总数确定以后,为保证△T0,可以降低TCK的频率。        下面举一个实例:假设一个封闭嵌入式系统中有三个模块(或电路板):B1、B2、B3,其中B1、B2的JTAG分支都含1片XCF16P PROM、1片V5 FPGA;B3的JTAG分支含1片XCF16P PROM、1片V5 FPGA、1片S6 FPGA外挂1片8M SPI FPASH。 三个模块的TDI、TDO按B1→B2→B3顺序串接;外部接1个JTAG口,其TCK、TMS在母板上经3路缓冲驱动(74LVC1T45)分别至每个模块,TCK串接22Ω电阻。整个JTAG链上串联7个芯片(不算SPI),其中3个XCF16P、3个V5、1个S6,总的T CPD =3×22+3×6+6.5=85.5ns。考虑到缓冲器和线路延时,T CPD 100ns,因此TCK频率取3MHz最合适,其T CLK/2 =167ns。   2、如何设置JTAG的TCK频率 启动Xilinx FPGA/PEROM下载工具iMpact,点击“Output | Cable Setup…”,下拉“Tck Speed/Baud Rate:”设置频率,缺省值为6MHz,如下图所示:  
  • 热度 29
    2014-8-20 13:58
    4238 次阅读|
    1 个评论
        当一个系统中含有多片(2片以上)Xilinx FPGA、CPLD或PROM(FLASH)时,可采用单一JTAG口以菊花链(Daisy Chain)形式将所有芯片串联起来实现下载编程,如下图所示。这样做有两个好处:(1)可以节省多个JTAG口所占用的PCB空间,特别适合空间有限的嵌入式系统,如小型工业摄像机等;(2)嵌入式系统处于封闭环境中,有时需要对系统中的FPGA程序进行在线或远程升级,必须将JTAG口引到机箱外,显然这种单JTAG口的菊花链结构是最佳选择。   1、关于链路中的芯片数量 Xilinx的UG380:“Spartan-6 FPGA Configuration User Guide”的第58页“JTAG Signal Routing”一节有如下描述: The TCK and TMS signals go to all devices in the chain; consequently, their signal quality is important. For example, TCK should transition monotonically at all receivers to ensure proper JTAG functionality and must be properly terminated. The quality of TCK can limit the maximum frequency for reliable JTAG configuration. Additionally, if the chain is large (three devices or more), TMS and TCK should be buffered to ensure that they have sufficient drive strength at all receivers, and the voltage at logic High must be compatible with all devices in the chain.   由于TCK和TMS两个信号是连接到菊花链中的所有芯片,因此这两个信号的质量(完整性)非常重要!特别是时钟信号TCK,任何毛刺干扰和边沿抖动都会导致下载失败。 当菊花链中的芯片(或设备)在3个以上时,TMS和TCK必须加缓冲器(如74LVC245),以增加其驱动能力,对于一些驱动能力差的国产下载器尤其重要。每个驱动门所在分支链路中的芯片(或设备)数量取决于缓冲器的驱动能力,一般74LVC245(8缓冲)的一个缓冲门可驱动3~4个负载(芯片)。在TCK的缓冲器输出端串接一个20~30Ω的电阻,设备端并接一个100~1000p的电容到地,可明显降低边沿抖动、减少毛刺干扰。 TMS是一个模式选择开关信号,TCK是时钟脉冲信号,缺省频率为6MHz,当负载较多时,不加缓冲适当降低TCK的频率也可提高信号完整性。        JTAG协议规定TCK下降沿输出TDI数据有效,并在TCK上升沿采集TDO数据,因此,在整个JTAG链中必须保证TDI至TDO的贯通延时(Propagation Delay)T CPD 必须小于TCK的1/2周期T CLK/2 ,即△T=T CLK/2 –T CPD 0。也就是说,在增加缓冲驱动的情况下,JTAG链路中的芯片总数与每个芯片的TDO延时T DOV (FPGA为T TCKTDO )和TCK频率有关。在芯片总数确定以后,为保证△T0,可以降低TCK的频率。        下面举一个实例:假设一个封闭嵌入式系统中有三个模块(或电路板):B1、B2、B3,其中B1、B2的JTAG分支都含1片XCF16P PROM、1片V5 FPGA;B3的JTAG分支含1片XCF16P PROM、1片V5 FPGA、1片S6 FPGA外挂1片8M SPI FPASH。 三个模块的TDI、TDO按B1→B2→B3顺序串接;外部接1个JTAG口,其TCK、TMS在母板上经3路缓冲驱动(74LVC1T45)分别至每个模块,TCK串接22Ω电阻。整个JTAG链上串联7个芯片(不算SPI),其中3个XCF16P、3个V5、1个S6,总的T CPD =3×22+3×6+6.5=85.5ns。考虑到缓冲器和线路延时,T CPD 100ns,因此TCK频率取3MHz最合适,其T CLK/2 =167ns。   2、如何设置JTAG的TCK频率 启动Xilinx FPGA/PEROM下载工具iMpact,点击“Output | Cable Setup…”,下拉“Tck Speed/Baud Rate:”设置频率,缺省值为6MHz,如下图所示:  
  • 热度 20
    2014-8-7 14:39
    2321 次阅读|
    0 个评论
      1、对于Altera FPGA,含Nios II时需要下载的文件有4种:.sof 文件,.pof 文件,.jic 文件,.elf 文件。 下载文件 生成工具 下载方式 下载存储器 是否掉电丢失 .sof 文件 QuartusII编译生成 JTAG FPGA(SRAM ) 丢失 .pof 文件 QuartusII编译生成 AS(Active Slave) FLSAH(EPCS64) 不会丢失 .jic 文件 QuartusII “File|Convert Programming File” JTAG FLSAH(EPCS64) 不会丢失 .elf 文件 Nios II IDE JTAG(调式模式) FPGA(SRAM ) 丢失 .elf 文件 Nios II IDE JTAG(烧写模式) FLSAH(EPCS64) 不会丢失   2、通常称.sof 文件和.pof 文件为FPGA“硬件”或“固件”文件,在QuartusII中设计编译产生,源文件格式有VHDL、Verilog HDL、AHDL、Tcl(一般用于引脚定义)、原理图(一般用于顶层)等;.elf文件为“软件”文件,在Nios II IDE中(新版本为Nios II Software Builder Tools for Eclipse)设计编译产生,源文件为C语言。 3、.jic文件为JTAG间接配置文件(JTAG Indirect Configuration File),使用QuartusII File菜单下Convert Programming File命令将.sof文件转换生成,然后使用QuartusII的Tools菜单下Programmer命令下载到FLASH中(注意:.jic文件下载到FLASH后必须关机重新加电!)如下图所示:       4、 .elf文件不能单独下载,必须与“硬件”.sof文件一起下载才能运行(也可先在QuartusII中下载.sof,再在NiosII IDE或Nios II Software Builder Tools for Eclipse中下载.elf),以QuartusII 11.0版本为例,方法如下: (1) 使用Nios II 11.0 IDE 先点击“开始 | 程序 | Altera|Nios II EDS 11.0 | Legacy Nios II Tools | NiosII11.0 IDE”(注意: 11.0版本的“Legacy Nios II Tools”必须单独下载安装!)启动NiosII11.0 IDE,打开或导入工程,在Nios II IDE中点击Tools-Flash Programmer…,出现如下图所示的界面:   需要勾选的部分如图中红线框所标注,第一部分是将Nios II中的软件程序写到Flash中,注意还需要加载JDI文件,即点击“Load JDI File”,选择本系统中的JDI文件即可。第二部分是将FPGA的配置文件一起到Flash中,点击“Browse...”选择Quartus II生成的.sof文件,还需选择将配置文件下载到什么地方,此处还是Flash。最后一部分勾选的是Validata Nios II system ID before software download,即在下载软件程序之前要确认系统的ID号,这样每次在QuartusII中修改“硬件”(即.sof文件)或在Nios II IDE中修改“软件”(即.elf文件)后能报警提示,确保硬件与软件最新版本同步。 没有勾选的那一部分是将其它文件下载到Flash中,比如配置数据文件(Lince5M181 CMOS相机就有!)、汉字字库文件、波形文件等等,将这些文件直接存储到Flash中,只需要读取就可以了。 选择好之后,点击“Apply”,然后点击“Program Flash”,就可以进行Flash的烧写了。若Nios II IDE的Console中有如下提示信息: #!/bin/sh        …………. Programmed xxxKB +xxxKB in x.xs (xxxKB/s)                    Did not attempt to verify device contents Leaving target processor paused 则表示Flash烧写成功,关机后重新加电运行即可。          (2)使用Nios II Software Builder Tools for Eclipse(简称 Nios II SBT for Eclipse) 从Altera SOPC Builder的Nios II菜单中启动,或从“开始 | 程序 | Altera | Nios II EDS xx.x | …”启动。然后按下述方法下载程序: ●选择Nios II菜单项中的Flash Programmer(Ctrl+7),弹出Flash Programmer的设置窗口:   ●选择File菜单的New,弹出窗口:   ●指定setting.bsp文件,sopc information是自动加载的。   ●分别添加 .sof文件(在Quartus工程下)和.elf文件(在Nios工程下)   ●点击Start命令,进行转换,默认将在software目录下的bsp文件夹下生成flash和script两个文件夹,并完成烧写,断电重新加电或复位即可。 5、对于有些FPGA,有时用上述4中的两种方法下载程序到FLASH后,加电无法正常运行,这好像是Altera公司Nios II EDS的bugs,许多用户都遇到过,在Altera forum上有人给出解决方法: (1)     在硬盘根目录下新建一个文件夹。例如:D:\jic。 (2)     将Quartus II工程、Nios II工程编译生成的sof、elf都拷贝到此文件夹内; (3)     按如下格式,新建一个sh文件,此处命名为xxx.sh;(sh文件是bash的批处理文件;类似于DOS的bat文件)  echo "sofflash …"; sof2flash --epcs --input=demo.sof --output=sof.flash --quiet echo "elfflash …"; elf2flash --epcs --after=sof.flash --input=demo.elf --output=elf.flash echo "cat flash…"; cat elf.flash sof.flash echo "flashhex…"; nios2-elf-objcopy --input-target srec --output-target ihex sof.flash sof_elf.hex echo "del flash …"; rm -f *.flash (4)     运行“开始 | 程序 | Altera  | Nios II EDS 11.0 | Nios II 11.0 Command Shell,执行: cd d:\jic ./xxx.sh (5) 在Quartus II中使用Convert Programming Files把上述命令生成的sof_elf.hex转换成.jic文件即可,类似上述3,只是把SOF Data换成HEX Data(先Remove后Add),点Generate生成jic,再将jic写入Flash即可。    
  • 热度 32
    2014-8-7 14:34
    8766 次阅读|
    3 个评论
      1、对于Altera FPGA,含Nios II时需要下载的文件有4种:.sof 文件,.pof 文件,.jic 文件,.elf 文件。 下载文件 生成工具 下载方式 下载存储器 是否掉电丢失 .sof 文件 QuartusII编译生成 JTAG FPGA(SRAM ) 丢失 .pof 文件 QuartusII编译生成 AS(Active Slave) FLSAH(EPCS64) 不会丢失 .jic 文件 QuartusII “File|Convert Programming File” JTAG FLSAH(EPCS64) 不会丢失 .elf 文件 Nios II IDE JTAG(调式模式) FPGA(SRAM ) 丢失 .elf 文件 Nios II IDE JTAG(烧写模式) FLSAH(EPCS64) 不会丢失   2、通常称.sof 文件和.pof 文件为FPGA“硬件”或“固件”文件,在QuartusII中设计编译产生,源文件格式有VHDL、Verilog HDL、AHDL、Tcl(一般用于引脚定义)、原理图(一般用于顶层)等;.elf文件为“软件”文件,在Nios II IDE中(新版本为Nios II Software Builder Tools for Eclipse)设计编译产生,源文件为C语言。 3、.jic文件为JTAG间接配置文件(JTAG Indirect Configuration File),使用QuartusII File菜单下Convert Programming File命令将.sof文件转换生成,然后使用QuartusII的Tools菜单下Programmer命令下载到FLASH中(注意:.jic文件下载到FLASH后必须关机重新加电!)如下图所示:       4、 .elf文件不能单独下载,必须与“硬件”.sof文件一起下载才能运行(也可先在QuartusII中下载.sof,再在NiosII IDE或Nios II Software Builder Tools for Eclipse中下载.elf),以QuartusII 11.0版本为例,方法如下: (1) 使用Nios II 11.0 IDE 先点击“开始 | 程序 | Altera|Nios II EDS 11.0 | Legacy Nios II Tools | NiosII11.0 IDE”(注意: 11.0版本的“Legacy Nios II Tools”必须单独下载安装!)启动NiosII11.0 IDE,打开或导入工程,在Nios II IDE中点击Tools-Flash Programmer…,出现如下图所示的界面:   需要勾选的部分如图中红线框所标注,第一部分是将Nios II中的软件程序写到Flash中,注意还需要加载JDI文件,即点击“Load JDI File”,选择本系统中的JDI文件即可。第二部分是将FPGA的配置文件一起到Flash中,点击“Browse...”选择Quartus II生成的.sof文件,还需选择将配置文件下载到什么地方,此处还是Flash。最后一部分勾选的是Validata Nios II system ID before software download,即在下载软件程序之前要确认系统的ID号,这样每次在QuartusII中修改“硬件”(即.sof文件)或在Nios II IDE中修改“软件”(即.elf文件)后能报警提示,确保硬件与软件最新版本同步。 没有勾选的那一部分是将其它文件下载到Flash中,比如配置数据文件(Lince5M181 CMOS相机就有!)、汉字字库文件、波形文件等等,将这些文件直接存储到Flash中,只需要读取就可以了。 选择好之后,点击“Apply”,然后点击“Program Flash”,就可以进行Flash的烧写了。若Nios II IDE的Console中有如下提示信息: #!/bin/sh        …………. Programmed xxxKB +xxxKB in x.xs (xxxKB/s)                    Did not attempt to verify device contents Leaving target processor paused 则表示Flash烧写成功,关机后重新加电运行即可。        (2)使用Nios II Software Builder Tools for Eclipse(简称 Nios II SBT for Eclipse) 从Altera SOPC Builder的Nios II菜单中启动,或从“开始 | 程序 | Altera | Nios II EDS xx.x | …”启动。然后按下述方法下载程序: ●选择Nios II菜单项中的Flash Programmer(Ctrl+7),弹出Flash Programmer的设置窗口:   ●选择File菜单的New,弹出窗口:   ●指定setting.bsp文件,sopc information是自动加载的。   ●分别添加 .sof文件(在Quartus工程下)和.elf文件(在Nios工程下)   ●点击Start命令,进行转换,默认将在software目录下的bsp文件夹下生成flash和script两个文件夹,并完成烧写,断电重新加电或复位即可。 5、对于有些FPGA,有时用上述4中的两种方法下载程序到FLASH后,加电无法正常运行,这好像是Altera公司Nios II EDS的bugs,许多用户都遇到过,在Altera forum上有人给出解决方法: (1)     在硬盘根目录下新建一个文件夹。例如:D:\jic。 (2)     将Quartus II工程、Nios II工程编译生成的sof、elf都拷贝到此文件夹内; (3)     按如下格式,新建一个sh文件,此处命名为xxx.sh;(sh文件是bash的批处理文件;类似于DOS的bat文件)  echo "sofflash …"; sof2flash --epcs --input=demo.sof --output=sof.flash --quiet echo "elfflash …"; elf2flash --epcs --after=sof.flash --input=demo.elf --output=elf.flash echo "cat flash…"; cat elf.flash sof.flash echo "flashhex…"; nios2-elf-objcopy --input-target srec --output-target ihex sof.flash sof_elf.hex echo "del flash …"; rm -f *.flash (4)     运行“开始 | 程序 | Altera  | Nios II EDS 11.0 | Nios II 11.0 Command Shell”,执行: cd d:\jic ./xxx.sh (5) 在Quartus II中使用Convert Programming Files把上述命令生成的sof_elf.hex转换成.jic文件即可,类似上述3,只是把SOF Data换成HEX Data(先Remove后Add),点Generate生成jic,再将jic写入Flash即可。