OPENOCD在线调试uboot2010.06, utu2440 (扬创2440v4.5)

主机环境为ubuntu20.04,硬件环境为utu2440+jlinkv9。 安装openocd:

 sudo apt-get install openocd

openocd 需要配置自己的openocd.cfg,配置文件可以放在当前执行openocd的目录,也可以是用参数-f指定。创建自己的openocd.cfg, 文件内容如下:

 source [find interface/jlink.cfg]
 source [find board/utu2440.cfg]

其中utu2440.cfg 拷贝 /usr/share/openocd/scripts/board/mini2440.cfg,略做修改gp即可。

注释掉第124行

 #jtag interface

注释掉第141行,添加如下2行,能够自动识别nand flash型号。

 #nand device s3c2440 0
 set _NANDNAME $_CHIPNAME.nand
 nand device $_NANDNAME s3c2440 $_TARGETNAMEa) 

打开终端 openocd -f /YOUR_PATH/openocd.cfg, 提示能够正确识别s3c2440

打开另一终端:telnet localhost 4444,出现如下信息:

  tgni@B460:~$ telnet localhost 4444
  Trying 127.0.0.1...
  Connected to localhost.
  Escape character is '^]'.
  Open On-Chip Debugger
  \>

执行 > init_2440 ,该命令用来初始化S3C2440的时钟,SDRAM,以及GPIO配置等等,具体配置参考utu2440.cfg中init_2440函数。

执行> load_image /YOUR_PATH/u-boot.bin 0x33f80000 bin

执行> resume 0x33f80000,u-boot.bin就可以在SDRAM中直接运行。不需要烧写nandflash。 这里0x33f8000是u-boot中TEXT_BASE的地址,如要更改,TEXT_BASE也需要同步修改。

u-boot.bin 的制作:在u-boot的my2440.h中216行,打开宏

 #define CONFIG_SKIP_LOWLEVEL_INIT   1

注释宏:

 //#define CONFIG_S3C2440_NAND_BOOT    1

这两个宏,分别控制是否进行SDRAM配置,以及是否从NAND FLASH启动。

在调试过程中,会出现各种奇怪的现象,供大家参考:

a) 串口无任何输出,这个时候,点灯调试是最方便的,看看代码运行到了哪里,也可以用jlink进行单步测试。经过一系列折腾,发现是在board.c中只要一执行env_init就挂了。另外初始化波特率也不成功。非常怪异。经常跑飞。我一开始用的编译器是网上找的arm-linux-gcc 4.7.3, 后来换成友善官网的arm-linux-gcc4.4.3就没有这些问题了。

b) 有关时钟配置,init_2440脚本已经初始化了时钟,SDRAM, GPIO等等,在u-boot中再次进行时钟的配置是没有任何问题的,主要是不能跑从nandflash搬代码的那段代码。

c) ping挂死。在SDRAM中调试DM9000的时候,发现在SDRAM能够运行DM9000,并且能够ping通主机,但是如果放入nand flash中就不行,只要运行ping程序就直接挂死。

一开始怀疑nand flash中代码有问题,于是利用openocd中nand命令,把nandflash中代码读出来和烧进去的bin进行比较,发现一模一样。然后start.S中的搬代码,也会检查前4K的代码是否和local sram中的代码是否一致,一般情况下,不会出现该问题。那就只剩lowlevel init的差异了。在SDRAM中运行的uboot是不执行这段代码的。经过自己检查,发现DM9000的bank3的访问地址时序和init_2440的访问时序并不一致。修改board/samsung/my2440/lowlevel_init.S与init_2440一致,即可。

Enjoy!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: openocd-20211118.7z是一个用于嵌入式系统开发的工具包。openocd是一个开源的(Open On-Chip Debugger)开发和调试工具,可以用于连接和调试各种嵌入式系统。这个包中的.7z文件是对openocd软件的最新版本20211118进行压缩的文件。 通过使用openocd,开发者可以通过调试接口(例如JTAG或SWD)与嵌入式芯片通信,对其进行调试和编程。它支持多种芯片架构,例如ARM、MIPS、RISC-V等,并且可以运行在多个操作系统上,如Windows、Linux和macOS。 这个.7z压缩文件包含了openocd软件的所有必要文件和资源,以方便用户进行安装和使用。用户可以通过解压这个文件,获取openocd软件的执行文件以及相关的配置文件、工具和示例代码。 通过openocd,开发者可以进行单步调试、断点设置、内存读写、寄存器查看等操作,还可以对芯片进行编程、烧录和擦除等操作。它提供了强大的调试功能,可以帮助开发者快速定位和解决嵌入式系统中的问题。 总而言之,openocd-20211118.7z是一个用于嵌入式系统开发和调试的工具包,通过解压这个文件,开发者可以获取最新版本的openocd软件及相关资源,方便进行嵌入式系统的调试和开发工作。 ### 回答2: openocd-20211118.7z是一个压缩文件,用于存储OpenOCD软件的安装包。OpenOCD是一款开源的调试和编程工具,主要用于与嵌入式系统中的调试器和处理器进行通信。它可以通过调试接口(如JTAG、SWD)与目标设备相连,并提供命令行工具和图形界面来进行调试操作。 openocd-20211118.7z文件包含了OpenOCD软件在2021年11月18日的版本。.7z是一种压缩文件格式,常用于压缩大型文件和文件夹。通过解压缩该文件,可以得到OpenOCD安装包的内容。 使用openocd-20211118.7z进行OpenOCD的安装可以通过以下步骤进行: 1. 首先,下载openocd-20211118.7z文件,并将其保存到本地计算机中。 2. 然后,使用压缩软件(如7-Zip、WinRAR等)将该文件解压缩到指定的目录。 3. 解压缩后,您将得到包含OpenOCD安装包的文件夹。 4. 进入该文件夹,根据您的操作系统选择正确的安装文件(如Windows、Linux等)。 5. 运行安装文件,并按照提示完成OpenOCD的安装过程。 6. 安装完成后,您可以在命令行终端或图形界面中运行OpenOCD,并与目标设备进行调试和编程操作。 总之,openocd-20211118.7z是OpenOCD软件2021年11月18日版本的安装包,通过解压缩和安装该文件,您可以使用OpenOCD进行嵌入式系统的调试和编程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值