TI中文支持网
TI专业的中文技术问题搜集分享网站

AM335x Flash Tool — UniFlash 烧写工具使用简介及问题解决方案汇总(已更新SPI烧写部分…)

大家好,目前很多人都在关注AM335x flash tool(UniFlash)的进展情况,这篇帖子会对当前的进展情况进行汇总,并就客户使用过程中遇到的问题,给出了相应的解决方案。欢迎大家加入讨论,给出宝贵意见。

使用Uniflash tool前,请大家先确认自己使用的AM335x的芯片版本,如果想使用USB的方式进行烧录,芯片版本必须为PG2.1.

目前的UniFlash官方发布的版本中,支持NAND FLASH、SPI FLASH的烧录,近期版本中将会更新对eMMC烧录功能的支持。

UniFlash的下载地址:

http://processors.wiki.ti.com/index.php/NowFlash%E2%84%A2_Programming_Tool

UniFlash的主机端安装用户指南:

http://processors.wiki.ti.com/index.php/Sitara_Uniflash_Quick_Start_Guide

UniFlash的image编译,脚本编译使用指南(Linux环境下):

http://processors.wiki.ti.com/index.php/Sitara_Linux_AM335x_Flash_Programming_Linux_Development

使用注意事项及问答:

  1. 使用该Uniflash进行NAND FLASH烧写时,Uniflash会先将u-boot-spl-restore.bin和u-boot-restore.img下载到开发板中,启动开发板进入到UBOOT阶段,从而调用脚本文件进行FLASH的烧写,所以需要先对SDK6.0开发包进行UBOOT的移植。移植时,一定要加入UBOOT 的patch:http://processors.wiki.ti.com/index.php/Sitara_Linux_AM335x_Flash_Programming_Linux_Development#Build_SPL_.28MLO.29_and_U-Boot_for_Flashing
  2. 请注意,制作用于Uniflash烧写的启动image时(u-boot-spl-restore.bin, u-boot-restore.img),使用的编译选项根据烧录方式不同进行选择:USB进行烧写请使用:am335x_evm_restore_flash_usbspl;网口烧写请使用:am335x_evm_restore_flash
  3. 在Uniflash进行u-boot-spl-restore.bin的下载时,如果出现usb网络反应超时,请确认是否已经安装我们的usb patch:0001-u-boot-Change-default-cdc_connect_timeout-to-15s.patch。另外,一定要确认网络防火墙和杀毒软件是否已经关闭。
  4. 在u-boot-spl-restore.bin下载运行成功后,下载u-boot-restore.img时,网络一直在发IP请求,却没有得到回应,请参考以下解决方案:在操作过程中,插上USB时能在主机上找到USB RNDIS网络,默认时配置该网络IP为192.168.2.1。在烧写的不同阶段,部分主机会将该网络会识别成另外的USB RNDIS网络,因此,与之前的网络不同且没有IP配置,此时只需要再配置该网络的IP为192.168.2.1,即可正常使用(可能会弹出提示:该IP被未使用的网络占用,是否要清除未使用的网络?此时选择否)。
  5. 鉴于部分用户,对于SPI FLASH的烧写有强烈的需求,如果对Uniflash的烧录进度条显示并无严格需求时,可以参考SDK6.0开发包下的/board-support/u-boot-2013.01.01-psp06.00.00.00/doc/am335x.net-spl/debrick-spi.txt文件,进行SPI烧写脚本的编写,其使用方式与NAND flash烧写的使用方式类似,使用以下mkimage命令即可完成脚本的制作:./mkimage -A arm -O U-Boot -C none -T script -d debrick-nand.txt debrick.scr

经实例验证,该方式可以正常的进行SPI flash的烧写,但Uniflash中的进度条显示无法正常同步,该方式仅可作为进行功能验证的draft版。(烧写成功的显示可参考该链接中的文本:http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/51935.aspx)

官方支持的SPI FLASH Tool脚本,可以在楼下的2014.4.15更新内容中找到,同时更新了自定义烧写脚本的修改方法。

以上,如有任何疑问或者建议,欢迎大家随时发表、讨论!谢谢!

tony ma:

请问,这个工具可以用于烧写android固件吗?移植uboot工作量会不会很大?

Steven Liu1:

回复 tony ma:

你是要烧写到NAND Flash里吗?初始化烧写环境时是需要用到Linux uboot的;烧写到FLASH里面的内容,是可以自定义的。Android,Linux等都可以。

tony ma:

回复 Steven Liu1:

是烧写到NAND Flash里,首先是不是要将linux uboot部分的改动移植到android uboot上来,这部分改动大吗?

Steven Liu1:

回复 tony ma:

不是这个意思。Linux的uboot是flash tool用于初始化烧写环境的,和你要烧写的android部分是两个独立的部分。你要烧写的Android,只是个image(应该是已经能够在你板子上面跑的),不需要改动。

Linux的uboot和移植工作可以参考我们的培训资料:http://processors.wiki.ti.com/index.php/Sitara_Linux_Training:_UBoot_Board_Port

tony ma:

回复 Steven Liu1:

你好,我下了linux sdk6.0,在编译uboot的时候发现交叉编译工具链有问题,我用的android sdk里面的工具链,出现:cc1: error: unrecognized command line option "-mno-unaligned-access"的错误。

请问,编译linux的gcc是什么版本,能否给个你们用的版本的下载链接?非常感谢!

Steven Liu1:

回复 tony ma:

最新版本的Linux 开发包中,使用的是Linaro的Tool chain,这里有说明:http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide#Updated_Toolchain

在最新版本的Linux SDK开发包中,linux-devkit目录下面已经有了该工具链,具体的使用方法,在上面的链接中也能找到。

Steven Liu1:

2014.2.18更新内容:

由于该Uniflash工具也可以烧写Android,RTOS等非Linux操作系统的image,这里有一些简单的tips,方便那些使用非Linux的客户,更快速的将Uniflash的烧写环境搭建起来,下文以NAND flash作为示例:

1. 首先由于Uniflash必须要使用Linux的Uboot作为烧写固件的一部分,所以请先下载AM335x Linux SDK 6.0开发包:http://software-dl.ti.com/sitara_linux/esd/AM335xSDK/latest/index_FDS.html

2. 下载完成后在Linux主机上进行安装,安装完成后,根目录下的board-support/u-boot-2013.01.01-psp06.00.00.00文件夹即为Linux uboot的源码,需做部分修改后编译。编译方法可参考:http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide

3. Linux uboot需要修改的部分:这部分工作就是对Linux uboot进行移植的工作,主要修改的有三处地方:EEPROM, DDR2/3, NAND FLASH(包括pinmux)

3.1 对于EEPROM操作的修改:由于在官方的开发板上,都会有EEPROM来进行板子的型号辨识,不同板子资源不同,配置也就不同,因此该处的配置会影响到DDR的配置以及NAND flash的配置;一般来说客户自己的开发板上没有eeprom,所以要对此处进行修改。文件位置:uboot的根目录/board/ti/am335x/board.c文件中搜索"eeprom“既可找到配置的地方。

3.2 对于DDR的配置的修改:因为板子上可能使用DDR2或者DDR3,要根据实际情况对UBOOT进行修改。在uboot的根目录/board/ti/am335x/board.c文件中搜索"config_ddr“既可找到配置的地方。

3.3 对于NAND FLASH的修改:这里最常遇到的问题是,选择的板卡并没有对NAND flash进行Pinmux的设置,简单的解决方法是:在uboot/board/ti/am335x/mux.c文件中,在 void enable_board_pin_mux (struct am335x_baseboard_id *header)这个函数实现的第一句中加入

configure_module_pin_mux(nand_pin_mux); 确保nand的Pinmux配置成功。对于NAND Flash的位宽配置,时序参数配置,可参考TRM中的7.1 GPMC章节。其中,常用的NAND位宽配置(8bit和16bit)在GPMC_CONFIG1的13-12bit位上。

Steven Liu1:

2014.4.15更新内容:

Uniflash 烧写脚本的修改和SPI 烧写的支持

在前面的章节中,我们介绍了如何使用Uniflash进行NAND的烧写,主要列举了如何烧写Linux相关image的过程,收到了不少朋友的反馈。根据大家的反馈,我在这次的更新中,会对如何修改烧写脚本源文件debrick.txt进行介绍,并对SPI烧写的支持进行介绍。

SPI的烧写方法,和之前NAND烧写流程基本一致,主要的工作是在于Uniflash的烧写脚本源文件debrick.txt的修改。所以附件中的文章,会以debrick-spi.txt脚本源文件作为参考,讲解一下如何修改烧写脚本源文件。(NAND flash源文件debrick-nand.txt的修改,与此也相差无几,请重点参考文章的第4 节。)

PS: 支持spil flash烧录的源文件debrick-spi.txt在下一个帖子的附件中。

Steven Liu1:

回复 Steven Liu1:

2014.4.15更新:

SPI烧写脚本的源文件:debrick-spi.txt

aojiang xie:

采用USB烧写方式,target board需要选择boot bin为USB启动吗?如果设置为USB为第二个启动模式,如启动顺序设置为:

11000b SPI0 MMC0 USB0 UART0 是否可行?我设置成该模式,启动Uniflash进行烧写时,没有动静。

 

赞(0)
未经允许不得转载:TI中文支持网 » AM335x Flash Tool — UniFlash 烧写工具使用简介及问题解决方案汇总(已更新SPI烧写部分…)
分享到: 更多 (0)