文档章节

使用eclipse与jLink V8调试exynos 4412 u-boot

Jr小王子
 Jr小王子
发布于 2015/12/16 17:12
字数 1138
阅读 141
收藏 0

/**

******************************************************************************

* @author     Maoxiao Hu

* @version    V1.0.1

* @date        Dec-2014

******************************************************************************

* < COPYRIGHT 2014 ISE of SHANDONG UNIVERSITY >

*******************************************************************************

**/

 

首先说一下我实验室的网络环境:一台搭载ubuntu系统的公用Linux服务器,数台客户机使用ssh连接到服务器。

我个人的开发环境:使用Mac OS X系统,ssh远程连接Linux服务器。USB转串连接4412开发板,USB经jLink连接开发板,暂时别无其它线缆连接。

 

这里我就以Mac系统为例,说一下软硬件环境搭建,windows与Linux下搭建方法基本相同。

 

首先准备软件包:

1、eclipse CDT:http://www.eclipse.org/downloads/

根据自己的平台选择其中一个:

NewImage

在大约页面中间位置有CDT的下载链接:

NewImage

下载完成之后,自行安装即可。

如果你的系统是Mac那么你可能不需要安装jre jdk等环境,因为系统已经给你默认安装好了,

如果你的系统是linux,可能会提示eclipse无法打开,需要安装jre jdk,终端执行命令:

sudo apt-get install openjdk-7-jre openjdk-7-jdk

2、eclipse CDT zylincdt插件

打开eclipse CDT,选择help->Install New Software

在弹出的对话框,点击Add...按钮。

NewImage

名称填写:  zylincdt

URL填写:  http://opensource.zylin.com/zylincdt

NewImage

然后选中软件包,一直下一步,直到安装完成。根据网络环境的不同,这一步大约需要5-10分钟。

NewImage

3、jLink驱动:https://www.segger.com/jlink-software.html

我的jLink是jLink V8,这里需要确定您的jLink可以联网升级固件,固件过低可能无法调试Cortex-A9内核。

根据自己平台选择驱动下载。

NewImage

安装过程不再赘述。

安装完成之后,会有以下几个程序,

NewImage

好像windows平台上的工具要比Mac的多。

4、gdb:https://launchpad.net/gcc-arm-embedded/+download

注意:以eclipse的安装平台为标准,如果你的eclipse是直接安装在Linux下的,那么你可以直接使用开发板光盘里交叉编译工具底下的这个程序:

NewImage

而无需重复下载。

其它情况:在windows、Mac上安装eclipse,均需要打开 https://launchpad.net/gcc-arm-embedded/+download 下载交叉gdb。

NewImage

下载完成之后,解压到任意位置均可。

-----------------------准备阶段完成-----------------------

下面介绍eclipse怎么通过gdb调试u-boot。

1、从服务器拉取u-boot源码

假设你已经在服务器上完成了uboot的编译产生了elf文件。在这里我使用transmit(FTP工具)从服务器拉取源码目录到本地任意位置。

NewImage

2、在eclipse里新建工程

NewImage

 

NewImage

 

然后左侧导航栏会出现源码树:

NewImage

3、设置调试参数

右击项目文件夹,找到调试参数设置:

NewImage

 

new一个本地Zylin调试:

NewImage

找到elf文件:

NewImage

 

NewImage

设置初始化命令,这里可能需要进一步讨论,在这里我们先使用这一段吧,随后我会进行其他命令的测试。

# connect to the J-Link gdb server
target remote localhost:2331
# Reset the target
monitor reset
monitor sleep 10
# Setup GDB for faster downloads
#set remote memory-write-packet-size 1024
set remote memory-write-packet-size 4096
set remote memory-write-packet-size fixed
monitor speed 12000
load
break _start

NewImage

还需要设置一下源码目录,否则调试时候会提示找不到源码文件:

NewImage

4、启动gdb-server

注意:每次调试之前需要保证4412的CPU处于halt状态。

方法:板子启动后,uboot读秒结束之前按任意键使4412进入uboot界面,而不是启动内核,启动内核后jlink可能无法使4412暂停住。

NewImage

打开JLinkExe,CPU会被成功识别,这一步至关重要,不能识别CPU的话可能是由于jlink固件版本过低,或者硬件连接有问题。

NewImage

我们使用halt命令停止CPU:

NewImage

退出JLinkExe。

打开JLinkGDBServer,成功的话,会显示等待gdb连接:

NewImage

5、回到eclipse执行调试

直接点击小虫子开始Debug

NewImage

寄存器的值被成功读出,可以进行单步调试了,enjoy。

NewImage

 

需要解决的问题:

1、在这里我没有认真研究gdb的初始化命令,现在只是可以运行,还需要进行进一步修改。

2、代码的运行地址好像有问题,gdb-server总是提示无法读取某些位置,等检查一下源码,重定位代码后再试。

3、可能需要在调试阶段对CPU进行降频处理,否则jlink很可能会停不住CPU(经验判断)。

4、最担心的问题还是jlink v8能否完美支持A9的调试,但至今还未发现问题。


本文转载自:http://www.cnblogs.com/humaoxiao/p/4166230.html

Jr小王子
粉丝 11
博文 119
码字总数 18368
作品 0
深圳
程序员
私信 提问
【4412开发板教程】Uboot教程之uboot基础概念和框架

正在学习uboot,迅为教程讲解的很详细,先上个笔记,视频上传到网盘后再补上...... 知识点: 1.操作系统分层的概念 Windows:bios→内核模式→用户模式→用户程序 linux:bootloader→内核→文...

歌之王子殿下
2017/02/07
438
0
简单介绍一下 Exynos 4 Quad 四核处理器

虽然从去年9月我们就知道了会有四核处理器,但一直到前三星才总算是正式发布了四核产品——三星叫它Exynos 4 Quad,实际上就是我们知道的Exynos 4412。Galaxy S III会用这颗处理器,MX 32/6...

虫虫
2012/04/28
2.8K
26
FS4412开发板使用Linux IIO驱动框架实现ADC驱动

1.概述 FS4412开发板有一个4通道(0/1/2)、10/12比特精度的 ADC ,其中: 1)ADCIN0: 在核心板中引出 2)ADCIN1: 在核心板中引出 3)ADCIN2: 在核心板中引出 4)ADCIN3: 连接开发板的VR1电位器 ...

LvSin
2018/03/02
926
0
【经验分享】迅为iTOP4412开发板上移植SDIO接口WIFI方法

近期需要把WiFi无线网络功能移植到在iTOP4412 开发平台,查阅了相关资料,经过一段时间的研究、调试,终于成功,将WiFi功能移植到了开发板上面,这里笔者记录移植过程及注意事项,方便以后工作...

歌之王子殿下
2015/05/21
3.6K
0
迅为4412开发板 WIFI模块和CAN/RFID模块同时使用的方法

本文转自迅为论坛:htpp://www.topeetboard.com 硬件平台:iTOP-4412精英版 ; iTOP-4412全能版 软件版本: Android4.4.4源码 iTOP-4412精英版 iTOP-4412全能版 硬件修改: ①精英版,将R27去...

歌之王子殿下
2017/04/21
272
0

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL 11.3 locking

rudi
52分钟前
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
10
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
8
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
80
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部