zoukankan      html  css  js  c++  java
  • openocd+jlink为mini2440调试u-boot

    需要安装openocd,如果已经安装了系统默认的openocd(默认是0.5.0,版本太低),需要先卸载掉。

    在安装前需要安装必需的一些库文件:

     sudo apt-get install libusb-1.0-0-dev libusb-1.0-0 automake autconf libtool pkg-config

    然后执行安装:

        git clone git://git.code.sf.net/p/openocd/code openocd
        cd openocd
        ./bootstrap
        ./configure --prefix=/usr/local 
            --enable-stlink --enable-jlink
        echo -e "all:
    install:" > doc/Makefile
        make
        sudo make install

    默认情况下openocd会安装到/usr/local/bin文件夹下,有可能会无法执行openocd命令,如果无法执行,可以将/usr/local/bin加入到PATH变量即可。

    将mini2440和jlink以及pc连接起来,然后执行下面的命令:

    sudo openocd -f interface/jlink.cfg  -f board/mini2440.cfg

    但是会提示下面的错误:

    Runtime Error: /usr/local/share/openocd/scripts/board/mini2440.cfg:124: jtag interface: command requires more arguments

    将/usr/local/share/openocd/scripts/board/mini2440.cfg的124行注释掉(此行最前面添加一个‘#’符号,类似于bash注释)

    然后在执行openocd:

    sudo openocd -f interface/jlink.cfg  -f board/mini2440.cfg

    另开一个控制台,查看串口信息:

    sudo minicom

    还需要打开一个控制台,在该控制台下执行下面的命令:

    telnet localhost 4444
    halt
    init_2440
    load_image /home/host/soft/mini2440/u-boot/u-boot.bin 0x33f80000 bin

    resume 0x33f80000
    /home/host/soft/mini2440/u-boot/u-boot.bin是我的u-boot.bin文件路径,可以将其修改成自己的文件路径即可。

    这几条命令是从/usr/local/share/openocd/scripts/board/mini2440.cfg中几个预定义的命令代码中提取出来的,可以执行help_2440显示当前所支持的自定义命令列表。

    可惜的是,openocd没有检测到mini2440上的nand flash,所以无法烧写,后来经过调查,voltcraft_dso-3062c.cfg中采用了相同的nand flash。
    貌似是openocd代码修改了,但是mini2440.cfg中配置却没有改掉,将/usr/local/share/openocd/scripts/board/mini2440.cfg文件中的nand device s3c2440 0
    这一行修改成voltcraft_dso-3062c.cfg中的对应行:
       nand device $_CHIPNAME.nand s3c2440 $_TARGETNAME

    重新启动openocd:

    sudo openocd -f interface/jlink.cfg  -f board/mini2440.cfg

    然后在另外一个控制台烧写uboot:

    telnet localhost 4444
    halt
    init_2440
    nand erase 0 0x0 0x100000
    nand write 0 /home/host/soft/mini2440/u-boot/u-boot.bin 0 reset

    刚开始遇到好几次烧写不成功,后来执行了一次nand erase 0将整个nand flash擦除后才能成功执行烧写,

    这个问题有可能是nand flash坏块多引起的(我的mini2440是二手开发板)。

  • 相关阅读:
    7种思维
    微服务架构
    最近面试被问到一个问题,AtomicInteger如何保证线程安全?
    Socket netty ...
    Spring-Boot配置文件web性能(服务器)配置项
    P2P互联网金融企业的四大转型方向
    分布式,微服务 区别联系 理解.
    几个好问题
    netty
    结构化思维
  • 原文地址:https://www.cnblogs.com/qiaoqiao2003/p/3765380.html
Copyright © 2011-2022 走看看