使用破解版的JLink实现对开发板上的外部Nor Flash的烧写
1.拿到JLink 硬件。这个是不到100 RMB的破解版的,无需license。
2.下载并安装JLink的软件:
Software and documentation pack V4.08k [7623 kb]
http://www.segger.com/cms/admin/uploads/userfiles/file/J-Link/Setup_JLinkARM_V408k.zip
3.装完后,桌面出现:J-Flash ARM V4.08k 和J-Link ARM V4.08k。
4.连上Jlink的USB到PC上。连接JTAG到开发板上。
5.板子上电后,双击J-Flash ARM V4.08k 运行。
File -> New Project新建一个工程,然后去配置
Options-> Project Settings->Target Interface中,为了提升速度,把
Jtag Speed After Init设置为第三项,自己选择固定的 2000KHz
在Flash选项中,要正确输入Base Address,此处我的是10000000
默认已经选择好了的:Organizations:X16,和1chip,和我的板子上的正好匹配,就不用改了。
CPU选择中,如果不去设置,Use Target RAM(Fast),就是默认是,在Nor Flash编程时候,速度极慢,是按照一个字节一个字节的速度去烧写的。
所以,此处启动这个,设置为我的板子的内部的320KB的SRAM的的起始地址81000000,选择大小最大就96KB。
6.File ->Open 去打开你要烧写的文件。此处我的是uboot.bin,如果不把后缀改为.bin(或者其他的其所支持的格式)好像还不能加载。。。在跳出的对话框中,写入要加载到的地址,之后,就可以先去
Target中,先Connect,JFlash会自动去探测出的你的Nor Flash。Connect之后,你可以点击:
Show CFI Info查看信息是否和你的板子上的Nor一致。
正确的话,然后就用Erase chip或者erase sector,然后再Program了。
此处我烧了170KB的uboot.bin 到0x10000000,烧写了1.4MB的uImage到0x10080000.烧写的速度可以达到60多KB/s。
附上前面已经说过的,具体设置为:
JTAG频率:2000KHz
RAM大小:96KB
最后赞一句:山寨很强大~~~
毕竟,之前一个原版的JLink要卖200~300呢,而且单位是美金。。。。
【后记 2011-04-03】
最近在折腾TQ2440的开发板,想要把编译生成的u-boot.bin,一共220多KB,烧到TQ2440上的2MB的NorFlash里面去。
用Jlink硬件加上对应的烧写Norflash的JFlash工具去烧写,先按照上面的步骤配置:
Options -> Project Settings.
其中Use Target RAM(Fast)一项要说明一下,去查S3C2440的手册得知,从NorFlash启动板子的时候,地址空间0x40000000对应的是内部的片上的4KB的SDRAM,可以用来加速烧写操作。
下面是配置好后图示:
配置好后,去烧写时,但却一直出错,一种是在erase chip的时候出错,一种是Program的时候出错,始终无法成功烧写。
而且我注意到,program的时候,始终是在60KB左右的位置就出错了,所以后来尝试单独将原先220多KB的u-boot.bin用ultraedit裁剪成60KB的,再去烧写,结果就可以成功烧写,所以看来我的推测是正确的,那就是Norfalsh中60KB左右的位置物理上有坏块,但是即使知道这个问题,发现JFlash中也没有这类设置坏块的选项,所以还是没办法。
之后,经过N长时间的继续折腾,搞得郁闷和崩溃,还是无法解决,后来无意中,试了试自动烧写:
Target -> Auto,但是也还是出错,后来又随便乱试,结果某次的Target -> Auto,却成功烧写进去了:
所以最后的感觉是,貌似我的tq2400的板子,用jlink不太稳定,不知道是板子问题,还是JTAG转USB那个小板子有问题,又或是连接线质量不是足够好,当然也许Jlink硬件不稳定等等,总之,不清楚啥原因啊。。。
注:
【关于JFlash的几个烧写相关选项】
经过折腾,基本知道了JFlash中关于烧写的那几个选项,即Target下面的那些选项的意思了:
Erase Sectors:擦除整个NorFlash,但是是按照一个sector一个sector的模式进行擦除的。
Erase Chip:擦除整个NorFlash(这个chip),内部实现应该是发送一个erase chip的命令的。一次性擦除整个norflash芯片。
Program:直接烧写。
Program & Verify:烧写同时做校验,以防止烧写中出现错误(虽然这个几率很小,但是校验的话,可以保证烧写的万无一失)
Auto:自动检测你已经打开的要烧写的文件的大小,然后决定要用到多少的NorFlash的sector,然后自动去erase那些sector,然后再Program那些sector。整个过程不需要你关心,全部自动搞定,所以称作Auto,很是方便用户啊。
烧写一个打开的文件到norflash里面的一般步骤为:
1.先去执行Erase Chip或者Erase Sectors,去擦除整个norflash芯片
2.再去执行Program或Program & Verify烧写文件到Norflash中去。
以上两个步骤其实可以合二为一,只需要执行Auto,就可以实现先Erase后Program再Verify的全部操作,很方便。
我的意思是,如果你不太清楚怎么操作,那只需要配置好相应的参数,然后打开文件,执行Target -> Auto,就可以实现烧写Norflash了。
本帖转自:http://hi.baidu.com/serial_story/blog/item/e84d11ddbacf9ad08d10298b.html
posted on 2011-05-12 13:54 zong_blogs 阅读(3341) 评论(0) 编辑 收藏 举报