本文主要是介绍Arm DS/DS-5调试u-boot,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
使用软件:Arm DS 2018.0、u-boot-marvell-u-boot-2017.03-armada-17.06
开发板:Espress.bin V5(双核A53)
编译系统:Ubuntu TLS16.04
编译器版本:gcc-linaro-5.2-2015.11-2-x86_64_aarch64-linux-gnu
配置编译器
编译器下载链接:https://releases.linaro.org/components/toolchain/binaries/5.2-2015.11-2/aarch64-linux-gnu/gcc-linaro-5.2-2015.11-2-x86_64_aarch64-linux-gnu.tar.xz
设置编译器环境变量
export PATH=$PATH:/home/espressobin/toolchain/gcc-linaro-5.2-2015.11-2-x86_64_aarch64-linux-gnu/bin
注意:请将编译器解压至环境变量中设置的路径下,这里可以确保在编译u-boot时不需要修改编译脚本从而减少工作量
U-boot配置
编译Uboot
- 下载Uboot源代码
https://github.com/MarvellEmbeddedProcessors/u-boot-marvell/tree/u-boot-2017.03-armada-17.06
注意:2013.10以前版本的uboot源码与2013.10后版本的uboot源码配置方式不同了!
不要在windows与linux共享的目录中解压文件。请将它移动到完全的Linux路径中再解压
2. 使用unzip指令解压下载的uboot压缩包
3. 切换到configs目录,将mvebu_espressobin-88f3720_defconfig文件移动到uboot顶目录中
执行make mvebu_espressobin-88f3720_defconfig命令生成.config文件
4. 在uboot顶层目录中输入make DEVICE_TREE=armada-3720-espressobin指令编译uboot
5. 如果编译后出现以下问题:
“start=$(aarch64-linux-gnu-nm u-boot | grep __rel_dyn_start | cut -f 1 -d ' '); end=$(aarch64-linux-gnu-nm u-boot | grep __rel_dyn_end | cut -f 1 -d ' '); tools/relocate-rela u-boot-nodtb.bin 0x00000000 $start $end
./scripts/dtc-version.sh: 行 17: dtc: 未找到命令
./scripts/dtc-version.sh: 行 18: dtc: 未找到命令
*** Your dtc is too old, please upgrade to dtc 1.4 or newer
Makefile:1383: recipe for target 'checkdtc' failed
make: *** [checkdtc] Error 1”
表示该Linux系统上的dtc版本过低,在命令行中执行sudo apt-get install device-tree-compiler
6. 如果在ubuntu系统上执行上述指令出现
执行以下指令来强制解除apt-get软件的占用情况
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
7. 再执行make DEVICE_TREE=armada-3720-espressobin生成uboot.bin文件
8. 生成uboot.bin等相关文件
其中u-boot绿色名称表示elf格式的文件,即u-boot.elf这个是一个可调试的文件格式。
调试U-boot
1. 在DS-5中创建一个C Project工程,将u-boot源码和u-boot.elf镜像复制到该工程目录下中。如下创建了一个名为EspressBin_uboot的工程,并复制了相应文件
此时刷新Arm DS工程浏览器,即可看到我们刚才复制文件已经在工程目录下了
如果您的芯片在DS-5中的芯片数据库中没有出现,请先通过PCE工具扫描并自动生成芯片数据库。
硬件连接
开发板上需要有JTAG接口才能完成芯片数据库的创建
调试操作
点击File >> New >> Other…
选择Configuration Database >> Platform Configuration
选择Automatic/Simple platform detection(Recommended)
点击下一步,然后软件会自动通过JTAG接口扫描。Console窗口中会打印Log信息:
点击Create Database生成芯片数据库
接下来创建Platform
最后编译选择刚才创建的Marvell芯片数据库目录下的文件夹,再点击Build Platform
查看调试信息
打开Arm DS中的串口工具,点击Window >> Show View >> Terminal
点击打开一个新的窗口,设置下端口
重启开发板,按任意键阻止开发板进入Linux系统停止到uboot阶段
在工程目录中选中上面创建的EspressBin工程,选择Debug As >> Debug Configurations。然后在打开的窗口中左边,Generic Arm C/C++ Application右键选择New创建一个新调试配置。输入调试配置名称并选择我们刚才生成的Marvell芯片的芯片数据库。
然后点击File标签,在Target Configuration栏处点击Workspaces选择工程中的uboot镜像(u-boot_espressbin)
接下来再选择Debugger标签,在Run Control栏处选择Debug from entry point, 在Paths栏处选择下工程中的源代码路径。
最后直接点击Debug按钮开始调试,然后就可以看到调试窗口软件已经停止在uboot处
点击Window >> Show Others… >> Funtions
在Funtions窗口中按Ctrl + F打开查找窗口并输入relocate
双击添加断点
这篇关于Arm DS/DS-5调试u-boot的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!