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

相关文章

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

RabbitMQ使用及与spring boot整合

1.MQ   消息队列(Message Queue,简称MQ)——应用程序和应用程序之间的通信方法   应用:不同进程Process/线程Thread之间通信   比较流行的中间件:     ActiveMQ     RabbitMQ(非常重量级,更适合于企业级的开发)     Kafka(高吞吐量的分布式发布订阅消息系统)     RocketMQ   在高并发、可靠性、成熟度等

Spring Boot 入门篇

一、简介 Spring Boot是一款开源的Java Web应用框架,旨在简化Spring应用的初始搭建以及开发过程。它整合了Spring技术栈中的诸多关键组件,为开发者提供了一种快速、简便的Spring应用开发方式。Spring Boot遵循“约定优于配置”的原则,通过自动配置、起步依赖和内置的Servlet容器,极大地简化了传统Spring应用的配置和部署过程。 二、Spring Boot

Spring Boot集成Tess4J实现OCR

1.什么是Tess4j? Tesseract是一个开源的光学字符识别(OCR)引擎,它可以将图像中的文字转换为计算机可读的文本。支持多种语言和书面语言,并且可以在命令行中执行。它是一个流行的开源OCR工具,可以在许多不同的操作系统上运行。Tess4J是一个基于Tesseract OCR引擎的Java接口,可以用来识别图像中的文本,说白了,就是封装了它的API,让Java可以直接调用。 Tess

部署若依Spring boot项目

nohup和& nohup命令解释 nohup命令:nohup 是 no hang up 的缩写,就是不挂断的意思,但没有后台运行,终端不能标准输入。nohup :不挂断的运行,注意并没有后台运行的功能,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,注意了nohup没有后台运行的意思;&才是后台运行在缺省情况下该作业的所有输出都被重定向到一个名为nohup.o

使用Spring Boot集成Spring Data JPA和单例模式构建库存管理系统

引言 在企业级应用开发中,数据库操作是非常重要的一环。Spring Data JPA提供了一种简化的方式来进行数据库交互,它使得开发者无需编写复杂的JPA代码就可以完成常见的CRUD操作。此外,设计模式如单例模式可以帮助我们更好地管理和控制对象的创建过程,从而提高系统的性能和可维护性。本文将展示如何结合Spring Boot、Spring Data JPA以及单例模式来构建一个基本的库存管理系统