-
2009-06-05
[Blackfin 笔记]使用GNU仿真器烧写Flash - [Blackfin]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://tigerwang202.blogbus.com/logs/40559072.html
JTAG工具测试:
在没有Bootloader的情况下,编程FLASH存储器的唯一途径是使用JTAG端口。笔者使用的IGLOO Parallel 并口JTAG 和 华恒BF531开发板。IGLOO Parallel仿真器可以按照以下资料自制:
IGLOO通过PC机并口连接至开发环境。一旦JTAG正确地连接至Blackfin,你就能将正确的U-boot文件下载自NOR Flash 存储器中。
开始前,请首先确认在你的系中安装了相应的flash烧写软件(安装方法参见《Blackfin-GNU交叉编译环境建立》一文)。如需要进行GDB调试,你还需安装gdbproxy调试代理。
(1) 以root权限启动jtag软件,为了获得root根用户的权限,输入命令
su root
(2) 接着运行以下命令(具体操作可能会因你使用和平台和具体需求而略有不同)
进入jtag调试状态前,请先确认已经将IGLOO并口下载线连接至开发环境计算机的并口。
同时还需要获得当前使用并口的地址,通过下列命令:
dmsg | grep parport
实际上通常第一个并口的地址为0x378,所以上面这一步是可以省略掉的。
输入bfin-jtag 命令进入jtag程序
使用下列命令设置IGLOO下载线,笔者电脑上并口地址是0x378。
jtag>cable IGLOO parallel 0x378
使用detect命令检测Blackfin芯片。
Jtag>detect
注意:在JTAG模式中,BF531、BF532显示为BF533,这没有关系。以下是华恒开发板上BF531的检测结果:
Device Id: 01000010011110100101000011001011 (0x00000000427A50CB)
Manufacturer: Analog Devices
Part(0): BF533
Stepping: 4
Filename: /opt/uClinux/bfin-uclinux/bin/../share/urjtag/analog/bf533/bf533
如果不能找到芯片,有可能是芯片的步进stepping比较新,还不能识别,可修改filename所在目录中的stepping文件。在文件的最后加入新的步进,重新进入jtag程序
芯片已经顺利找到,下一步该把U-boot写入Flash里了。
需要通过下列命令设置总线,由于华恒板子NOR Flash的设置与BF533 stamp板的设置相类似,直接使用stamp板设置文件。
jtag> initbus bf533_stamp
检测NOR FLASH芯片,华恒板上NOR FLASH的起始地址为0x20000000
jtag> detectflash 0x20000000
检测到器件AM29LV160DB-90的信息如下图所示:
由于AM29LV160采用 标准CFI接口,器件的配置信息可以直接读出。由图可见,这块NOR FLASH的容量是2M Byte,器件的设备描述符为0x0002。共有1+2+1+31=35个Sector。NOR FLASH擦除是以Sector为基本单位的,在进行读写操作中需要注意这点。通过比较器件的Datasheet,检测结果是正确。
使用小端模式little endian
jtag> endian little
如果在下载过程中出现“段错误提示”,请跳过这步。
烧写U-BOOT文件,起始地址为0x20000000
jtag> flashmem 0x20000000 /path/to/your/u-boot/file
如果执行上述命令发生效验错误(verify error),请使用以下命令代替:
jtag>flashmem 0 /path/to/your/u-boot/file
说明: 0 代表挂载在JTAG链上的一个设备,这里是BF531。下载时间依据编译后U-boot映像大小,从十几分钟到数十分钟不等。由此可见,使用并口下载的速度还是很慢的。
退出JTAG程序
jtag> instruction BYPASS
jtag> shift ir
jtag> quit
收藏到:Del.icio.us










评论