本帖最后由 nightseas 于 2013-1-21 17:30 编辑
除了JTAG Probe以外,TopJTAG公司还有一款JTAG Flash Programmer 软件,该软件同样利用JTAG接口和现有的各种仿真器来控制芯片,通过改变一组I/O状态,模拟总线时序来烧写Nor Flash。这种方法在产品设计和调试过程中十分常见,由于采用通用的JTAG接口,软件不用理会与Nor Flash连接的是何种设备(ARM、MIPS、CPLD、FPGA都无所谓),并且不会改变设备中的代码。
比如兔子使用的设备就是这样的结构,CPU通过CPLD进行总线复用,下挂多个存储器。此时可以通过USB-Blaster连接CPLD对Nor Flash进行编程。
TopJTAG官网下载地址: http://www.topjtag.com/files/TopFlash-Setup-1.3.3.exe
Flash Programme与Probe售价相同,某位外国友人也为该软件制作了和谐工具,和Probe的集成在一起,需要童鞋的请见前一篇文章。
安装并运行软件,对于新的目标设备需要点Setup进行配置。
首先将仿真器和目标设备连好上电,选择检测JTAG链:
选择仿真器类型。
软件会检测JTAG链上的设备。
和Probe一样,这里也需要加载设备的BSDL文件,可以从生产商的官网上下载。只需要加载和Flash相连设备的BSDL文件就可以了。
选定文件位置。
配置Flash信息,该软件支持大多数的Nor Flash组合形式,如两片8-Bit组成16-Bit,一片16-Bit工作在Byte(8-Bit)模式等。这里兔子使用的是单片16-BitFlash,支持CFI(Common Flash Interface),编程方式自动即可。如果Flash不支持CFI,则需要手动指定Flash中的Sector数量和每个Sector的字节数。
关于Flash是否支持CFI,可以从数据手册中获知。
之后需要手动的把Flash的地址、数据总线和控制信号线所连接的芯片引脚一一进行分配,这部分比较麻烦,用不到的信号不用管。这里很特别的一点就是,可以用JTAG链上的多个不同设备共同对Flash进行编程,比如地址线挂在CPLD上,而数据线挂在CPU上(貌似一般没人这么干)。
分配完接口信号,还有一步重要操作,就是对Flash的其他控制信号进行配置,比如总线上挂载的其他设备片选要保持Disabled状态,同时Nor Flash的复位引脚需要给出确定的状态。由于不进行配置的芯片引脚默认为高阻,考虑不周会造成一些意想不到的奇怪错误。
设置完成后,选择Info即可查看Flash信息(记得要保存设置,不然下一次还要重新选引脚)。
软件也会告诉你Flash是否支持CFI。
下面就就可以打开要烧写的文件了。
烧写步骤一般是:擦除→编程→校验。可在Erase Option选择擦除范围。
另外针对Intel的Flash有锁定Sector功能的,编程前还要手动进行解锁。
开始编程……搞定!设备成功启动。
当然了在此之间经历了漫长的等待过程,这是由JTAG的结构决定的。倒不是说其传输数据的速率低,而是因为每当要通过JTAG的Boundry-scan改变I/O状态——哪怕只有一个引脚——也需要对所有引脚都设定一次状态。这样一来除了TCK时钟,目标芯片的引脚数也会影响编程速度。
因此这种方法多用在研发调试、测试过程中,先烧一个百K字节的Bootloader,然后通过Bootloader烧写更大的文件。不过因为其接口通用性、设备任意性以及软件的智能化,还是非常方便的,哈哈~~
|