原创-用Jlink原来也可以调试仿真U-boot源码

yumo6661个月前 (03-24)技术文章20

@ZHangZMo

原创不易,感谢一键三连,关注、点赞与收藏!

  • 准备工作
  • 编译at91bootstrap和U-boot源码下载并编译at91bootstrap源码下载并编译u-boot源码
  • 使用Eclipse导入U-boot源码并进行配置
  • cfg配置文件内容
  • 仿真调试
  • 视频教程

在嵌入式Linux开发中,免不了接触到U-boot,随着U-boot功能越来越强大,如何加快U-boot代码的调试变得越来越重要。作为一名优秀的嵌入式软件开发工程师,现在让我们来学习下U-boot源码的仿真调试。

准备工作

调试仿真需要借助第三方IDE、JLink工具和仿真器,另外在编译U-boot源码的时候需要用到交叉编译工具,在仿真的时候需要用到GDB Client,也需要借助第三方的工具,当然还要有Microchip SAMA5D27 MPU开发板。

现在将具体工具列出如下,部分工具给出了下载地址:

  • Eclipse for embedded C/C++:

https://www.eclipse.org/downloads/packages/release

  • JLink工具软件 - 建议用JLink V692:

https://www.segger.com/downloads/jlink/

  • Linaro 交叉编译工具:

个人用的是:
gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi.xz

  • SAMA5D2-XULT开发板和一个JLink仿真器
  • xpack工具,会用到它做GDB Client

https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/

编译at91bootstrap和U-boot源码

下载并编译at91bootstrap源码

  • 下载at91bootstrap源码 git clone https://github.com/linux4sam/at91bootstrap.git
  • 设置交叉编译工具 export CROSS_COMPILE=/home/xxxx/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-
  • 选择sama5d2_xplained_bkptnone_defconfig配置文件并编译 cd at91bootstrap make sama5d2_xplained_bkptnone_defconfig make -j10
  • 进入at91bootstrap/build/binaries 拷贝生成的at91bootstrap.bin文件并重命名为sama5d2boot.bin,后面将sama5d2boot.bin文件拷贝到U-boot文件目录下。

下载并编译u-boot源码

  • 下载u-boot源码 git clone https://github.com/linux4sam/u-boot-at91.git
  • 设置交叉编译工具 export CROSS_COMPILE=/home/xxxx/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-
  • 选择sama5d2_xplained_emmc_defconfig配置文件并编译 cd u-boot-at91 make sama5d2_xplained_emmc_defconfig make -j10 cp u-boot.dtb uboot-dtb.bin

将U-boot目录下生成的u-boot.dtb文件做一份拷贝并重命名为uboot-dtb.bin,JLink在加载文件到SAMA5D27的DDR或者内部SRAM时,只支持bin文件。

使用Eclipse导入U-boot源码并进行配置

打开Eclipse for embedded C/C++,在Eclipse下导入u-boot源码

在Eclipse下选择File -> Import -> C/C++ -> Existing Code as Makefile project -> Next -> Browse -> choose u-boot source code directory -> Finish

配置工程的仿真配置,操作过程如下: 右键点击新导入的工程 -> Debug As -> Debug Configurations -> GDB SEGGER J-Link Debugging -> 此时双击一下,创建一个新的仿真配置

在Main配置界面,选择Search Project,然后找到u-boot这个elf文件,然后选择OK。记得要勾选上Disable auto build选项。

在Debugger配置界面,参照上述配置做好设定,对于J-Link GDB Server的版本没有特别要求,选择推荐的V692版本也没问题。

Startup配置的话可以参考上述配置,两段配置命令如下:

shell /home/afan/Tools/JLink_Linux_V692_x86_64/JLinkExe -device ATSAMA5D27 -if JTAG -speed 2000 -jtagconf -1,-1 -autoconnect 1 -CommandFile sama5d2boot.cfg
monitor sleep 10
monitor halt

第二段如下:

shell /home/afan/Tools/JLink_Linux_V692_x86_64/JLinkExe -device ATSAMA5D27 -if JTAG -speed 2000 -jtagconf -1,-1 -autoconnect 1 -CommandFile sama5d2load.cfg

cfg配置文件内容

在U-boot工程目录下新建一个sama5d2boot.cfg文件,文件内容如下:

loadfile sama5d2boot.bin 0x200000
setpc 0x200000
g
sleep 10
q

另外再新建一个sama5d2load.cfg文件,文件内容如下:

loadfile uboot-dtb.bin 0x26f96370
sleep 10
q

需要注意的是0x26f96370这个文件的地址需要参考U-boot目录下编译生成的System.map文件来决定。 例如生成的System.map最后内容如下:

26f8e19c b tftp_windowsize
26f8e1a0 b time_start
26f8e1a4 b timeout_count
26f8e1a8 B __bss_end
26f8e1a8 B __bss_limit
26f96370 D __rel_dyn_end
26f96370 D _end
26f96370 D _image_binary_end

loadfile uboot-dtb.bin 所指定的地址必须与_end所在的地址保持一致。

仿真调试

完成上述配置后,确保J-Link仿真器已经连接到SAMA5D27开发板,而且SAMA5D27开发板BOOT DISABLE模式使能,也就是说SAMA5D27开发板不会上电自动运行,让其只能执行ROM BOOT CODE。

这样我们在Debug Configuration下,选择刚才新创建的Debug配置,进行仿真调试即可。## 标题

视频教程

视频教程点击这里。 记得一键三连,关注、点赞与收藏

相关文章

最详细的 maven 教程,可以收藏

链接 | cnblogs.com/hzg110/p/6936101.html正文 目前所有的项目都在使用maven,可是一直没有时间去整理学习,这两天正好有时间,好好的整理一下。一、为什么使用Mave...

2025源代码加密软件分享|经典不过时的5款源代码加密软件,收藏

代码即资产,就目前而言,源代码泄露的风险逐年攀高。一次Git仓库误设公开、一段未加密的API密钥,都可能让企业数年的技术积累瞬间蒸发。那么,怎么给源代码加密呢?本文精选5款源代码加密软件,帮你把代码锁...

如何恢复微信中已删除的收藏内容

如今,微信是我们常用的一款社交软件,给我们的生活带来了极大的便利和乐趣,深受用户欢迎,有的小伙伴们想知道怎么恢复微信中已删除的收藏内容,小编为小伙伴们解答这个问题。实操步骤如下:第一步:在手机中找到【...

10个主流源代码加密软件最新盘点,源代码加密软件推荐(2025收藏)

在信息化时代,源代码作为软件开发的核心资产,承载着企业的技术创新和竞争优势。如何有效地保护源代码,防止泄密和盗版,成为了越来越多企业关注的重点。源代码加密软件能够帮助开发者保护源代码的机密性,防止未经...

我的 VBA 理财工作簿项目 之 记账篇,效果图+详解+源码

软件效果图:我的VBA理财工作簿项目程序主界面 之 记账页面:日期控件辅助选择日期和时间,也可自定义输入:自动列出全世界主要货币供选择,也可自定义输入自动从历史记录中搜索出最常用的地点清单,排序后列出...

(17) 如何给两条或三条均线围成的区域涂颜色?

(大家好,我是稳健投资人。如果您对这里的话题感兴趣的话,请点击上方的“关注”,以方便下次快速找到我。)朋友好们!在第15讲,我们学习了M A C D指标顶、底背离的在主图上的显示,有朋友就提要求,能不...