文章目录
- 准备工作
- 编译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。记得要勾选上Diable 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配置,进行仿真调试即可。## 标题
视频教程
视频教程点击这里。
记得一键三连,关注、点赞与收藏