Arm DS/DS-5调试u-boot

2024-04-29 08:32
文章标签 调试 boot arm ds

本文主要是介绍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

  1. 下载Uboot源代码

https://github.com/MarvellEmbeddedProcessors/u-boot-marvell/tree/u-boot-2017.03-armada-17.06

注意:2013.10以前版本的uboot源码与2013.10后版本的uboot源码配置方式不同了!

不要在windowslinux共享的目录中解压文件。请将它移动到完全的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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945599

相关文章

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Spring Boot 整合 Apache Flink 的详细过程

《SpringBoot整合ApacheFlink的详细过程》ApacheFlink是一个高性能的分布式流处理框架,而SpringBoot提供了快速构建企业级应用的能力,下面给大家介绍Spri... 目录Spring Boot 整合 Apache Flink 教程一、背景与目标二、环境准备三、创建项目 & 添

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获