分享

ARM9 2410移植之在Linux下,用OpenJTAG+OpenOCD烧写NAND Flash

 askjc 2013-11-21
ARM9 2410移植之在Linux下,用OpenJTAG+OpenOCD烧写NAND Flash

--------------------------------------------------------------------------------

一直以来,众多的开发工具都是基于windows的,nand flash的烧写工具也一样。

     我手头有数块s3c2410\s3c2440\at91sam9263\pxa310等开发板,除了在windows下,好像也找不到合适的烧写工具。对 于s3c2410仅仅只有jflash,通过并口和wiggler来烧写。大多数笔记本根本没有并口,连台式机有并口的都在慢慢消失,幸好我的笔记本有。 但是公司的笔记本全是无并口的linux。

     ARM的仿真器种类很多,比较常见的jlink, 也只能用于windows环境。偶然机会,发现OpenOCD这个好东西.接着又发现了OpenJTAG, 一个和jtagkey 是同一种layout的仿真器,而且一般配合OpenOCD使用。并且OpenJTAG用的是FT2232, 内部含两个uart通道, 再加了一个max的uart --> rs232电平信号转换芯片,这样就可以为我们的笔记本节省了一个usb转串的线了。在USB口比较稀少的本本上,甚至为你节省了一个USB hub. 但是网上一般都卖到180一个,个人觉得太离谱了,90块钱顶了天.

      没办法,在taobao拍了一个, 拿过来里面有张光盘,里面讲的烧写flash的方法居然是先init sdram, 再将u-boot放到sdram,通过u-boot来烧写nand. 这和我要求相差很远,因为我是要烧自已开发的bootloader,不是要烧别的,这样虽然可以做到,但是也太麻烦。没办法,我就下了个最新版的 OpenOCD,查看里面的代码,居然有烧写nand的部分,而且支持好几种nand.
      好了,废话少说,先说怎么实现直接烧写吧,下面以s3c2440为例:

      这里省略OpenOCD 编译,可以到csdn的下载中心搜索我上传的openjtag.tar.bz2的打包文件,里面openocd的代码我做了小更改,并且在README有编译和使用的详细步骤.

      首先在你的openocd.cfg中的最后加入:

              nand device s3c2440 0

      然后启动openocd:

              openocd

      再用telnet连上openocd:

              telnet   127.0.0.1 4444

      然后在执行nand的命令的前,都要先用nand probe探测:

              nand probe 0

       看是否找到你的nand flash, 记得给开发板上电哟.

       有的平台可能会出现   Address translation failure, 那是因为Openocd有bug, 本来D cache没有开,它认为了开了,并且认为MMU也开了,访问的每个地址都会进行转换,而又找不到页表,所以就出现转换错误。解决办法就是用:

              reset; halt

       将开发重启,注意, 将reset;halt输在一行,中间用分号隔开,这样arm刚重启就暂停了,这个时候d cache肯定是关着的。这个时候再用:

               nand probe 0

       就不会出现地址转换失败了.

      接下来就可以进行读、擦除、写了:

       从第0个nand上第10字节开始读512个字节到dump.bin文件中:

              nand dump 0   /dump.bin   10   512

       从第0个nand上第9块擦除到第15块(共擦除了7 * block_size个字节):

              nand erase 0 9 15

       将/u-boot.bin写到第0个nand上的4K开始的地方:

              nand write 0 /u-boot.bin   4096

       注意,写之前都要先擦除。写的时候是根据你文件大小来写的。

      很多时候会出现写不成功的情况,你可以在写完用nand dump看一下写成功没有,没有的话再写一遍就OK了。

作者介绍:本文由尚观科技老师和同学生(刘勇,孙贺,聂强,聂大鹏 ,牛须乐,孙磊)共同创作

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多