openOCD+jlink调试uboot
在搭建调试uboot的环境中,参考了网上很多资料,调试uboot比较廉价的方案。大概有 *硬件使用jlink 在linux虚拟机下编译,调试使用gdb 通过TCP 同Windows下的jlink gdbserver*硬件使用openJTAG 在Linux下 使用openOCD和gdb*硬件使用jlink 在linux下 使用openOCD和gdb。本人也是使用了这种方法,因为手里只有jlink。其实这个方案和使用openJTAG的方案差不多一样。在搭建时参考了
《Eclipse_OpenOCD_OpenJTAG嵌入式开发教程》。这是介绍的比较好的一份资料。
本人用的环境如下: 操作系统:fedora 9 (vmware中运行) 软件:
openOCDinsight硬件:
jlink V8 开发板是mini2440
前提条件:安装好了交叉编译环境。我这里是arm-linux-gcc,当然环境变量配好。
安装openOCD下载openOCD源码包 解压后 进入目录,在安装前先看下README是个好习惯,看到需先安装libftdi和libusb. 先安装这两个 然后在openOCD源码包中 执行
- ./bootstrap//这个会生成configure文件
- ./configure --prefix=/xx/ --enable-maintainer-mode --enable-jlink //--prefix=/xx/是你想安装到的目录
- make
- make install
安装insight 下载insigh安装包 insight只是gdb的一个图形界面前端,安装时会也会有交叉调试器。
- ./configure --prefix=/xx/ --target=arm-linux-gcc//target是你的交叉编译器,这将编译出交叉调试器
- make
- make install
安装完毕后配置openOCD,这个可以参考openOCD的手册。 主要就是写一个openocd.cfg 在执行openOCD时会使用,其搜索路径参考手册 其实在安装目录中的script目录中有许多已经写好的配置可以调用 主要配置有以下几个方面 Daemon (守护);interface(接口);target(目标);board(主板) 如果你是mini2440开发板 在script/board目录下有mini2440.cfg配置文件。可以直接引用。再引用interface中的
jlink.cfg。你的配置文件就两行引用差不多就可以了
此时我们将openocd.cfg文件写在uboot目录下 进入uboot目录(uboot已经编译好)。 开发板链接好上电 启动openOCD 直接输入 $:openocd这个要在root用户下执行,脚本因为就在当前目录下所以不用指定 将出现如下信息
- Info : J-Link JTAG Interface ready
- Info : clock speed 12000 kHz
- Info : JTAG tap: s3c2440.cpu tap/device found: 0x0032409d (mfg: 0x04e, part: 0x0324, ver: 0x0)
- Info : Embedded ICE version 2
- Info : s3c2440.cpu: hardware has 2 breakpoint/watchpoint units
然后启动insight 之间在uboot目录下输入 $:arm-linux-insight 可看到insight打开了 然后打开console窗口 gdb的命令可以在此窗口输入。也可以写成脚本自动依次执行
- file /xx/xx/u-boot//加载你的uboot /xx/xx/是你的路径
- target remote localhost:xxxx//xxxx是你在opencfg中定义的gdb端口号。此命令使高蛋白链接到openOCD
- monitor halt//停止目标板运行
- monitor arm920t cp15 2 0 //关闭MMU,I/D CACHE
- monitor arm7_9 sw_bkpts enable //打开调试断点
- monitor halt
- load//将uboot写入目标板内存
- break start_code //插入一个断点
- continue//将运行到断点处
文章图片
+发现
推荐阅读
- 移动端h5调试方法
- 那些年bug总结出来的调试代码技巧
- 汇编实验(格雷码转二进制(ASCII码)的实现和调试)
- TODO(小程序手机预览调试)
- 【Camera专题】Qcom-高通OTP编程调试指南-上
- Flutter应用如何调试--DevTools介绍(下)
- linux采用core的调试方法
- Injection|Injection For Xcode11 macOS 10.15 Catalina 亲测可用iOS模拟器UI界面调试实时刷新工具
- 驱动调试小结
- xcode|xcode 真机调试无法识别手机解决方法