使用openocd调试Linux内核,openocd安装与调试

环境:

硬件:PC机ARM仿真器v8.00已下载好bit流的Xinlinx SoC开发板(其上有arm cortex-a9核)

软件:Redhat Linux6(或虚拟机) + openocd

使用openocd下载程序,调试arm cortex-a9核。

一、openocd安装

下载libusb库安装或直接yum install libusb*

下载openocd-0.10.0.zip:https://sourceforge.net/projects/openocd/解压,进入目录

$ ./configure --prefix=/home/benben/openocd --enable-jlink

$ make                                    #若编译有错根据提示信息修改

$ sudo make install

二、openocd使用

$ lsusb

能查到仿真器usb信息...

$ openocd -f em8302_jtag.cfg(其中引用了jlink.cfg与v7arm.cfg) #连接开发板

打印出一些无Error的信息...

$ telnet localhost 4444 #启动守护程序

> resume 0 #从0地址开始运行

> halt #暂停cpu

> mdw 0 12 #从0地址读12个数(32位)

>mww 地址 写的数 #向某地址写数(32位)

>reg #查看寄存器

em8302_jtag.cfg内容

# The 8301 Board use jlink to Debug

source [find interface/jlink.cfg]

transport select jtag

# THe 8301 Board use a single v7arm chip

source [find target/v7arm.cfg]

echo "8302 Board Loaded."

# Set reset type and may be changed in some particular cases

reset_config trst_only

#reset_config separate

#reset_config trst_open_drain srst_open_drain

adapter_khz 200

# Wait after deasserting nTRST before starting new JTAG operations

#jtag_ntrst_delay 200

jlink.cfg内容(指定类型为jlink)

#

# Segger J-Link

#

# http://www.segger.com/jlink.html

#

interface jlink

# The serial number can be used to select a specific interface in case more than one

# is connected to the host.

#

# Segger software omits leading zeros in serial number displays,

# OpenOCD requires them.

#

# Example: Select J-Link with serial 123456789

#

# jlink serial 000123456789

v7arm.cfg(指定cpu信息)

if { [info exists CHIPNAME] } {

set _CHIPNAME $CHIPNAME

} else {

set _CHIPNAME ecictv7

}

# CoreSight Debug Access Port

if { [info exists DAP_TAPID] } {

set _DAP_TAPID $DAP_TAPID

} else {

set _DAP_TAPID 0x4ba00477

}

jtag newtap $_CHIPNAME dap -irlen 4 -ircapture 0x01 -irmask 0x0f \

-expected-id $_DAP_TAPID

#

# Cortex A9 target

#

# GDB target: Cortex-A9, using DAP, configuring only one core

# Base addresses of cores:

# core 0  -  0x1fffc000

# core 1  -  0x2fffc000

set _TARGETNAME1 $_CHIPNAME.cpu.0

set _TARGETNAME2 $_CHIPNAME.cpu.1

# A9 core 0

target create $_TARGETNAME1 cortex_a -chain-position $_CHIPNAME.dap \

-coreid 0 -dbgbase 0x80090000

# -coreid 0 -dbgbase 0xc0000000

#$_TARGETNAME1 configure -work-area-phys 0x80000000 -work-area-size 8096

$_TARGETNAME1 configure -event reset-start { adapter_khz 50 }

#$_TARGETNAME1 configure -event reset-assert-post "cycv_dbginit $_TARGETNAME1"

$_TARGETNAME1 configure -event gdb-attach { halt }

#smp mode cannot halt only one cpu core, have no idea, by yzq

# A9 core 1

#target create $_TARGETNAME2 cortex_a -chain-position $_CHIPNAME.dap \

#        -coreid 1 -dbgbase 0xc0002000

#$_TARGETNAME2 configure -event reset-start { adapter_khz 1000 }

#$_TARGETNAME2 configure -event reset-assert-post "cycv_dbginit $_TARGETNAME2"

#$_TARGETNAME2 configure -event gdb-attach { halt }

#target smp $_CHIPNAME.cpu.1 $_CHIPNAME.cpu.0

proc cycv_dbginit {target} {

# General Cortex A8/A9 debug initialisation

cortex_a dbginit

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

execl中设置的格式无法实现

在一次项目中,需要导出execl表,并且要给表中的表格设置格式,因为每列的格式都不一样,需要单独设置设置这些格式,在后期使用中因为导入的数据过多,是的后面的单元格中设置的格式无法实现。 每次打开execl表格…

loadrunner监控linux性能指标,使用LoadRunner监控Linux系统性能.doc

使用LoadRunner监控Linux系统性能性能监控案例■秘密 □机密 □绝密PAGELinux系统性能监控案例(仅供内部使用)版 本 号:V0.1保 密 等 级:■秘密 □机密 □绝密编 制:XXX审 核:修订记录日期版本号描述作者2011-06-130.1初稿完成目录…

github gists_Eclipse中的Github Gists

github gists我想描述有关在Eclipse中集成GitHub Gists的简单步骤。 有几个来源促使我这样做: Eclipse的GitHub Mylyn连接器 EGit / GitHub /用户指南 http://eclipse.github.com 我一直在使用Eclipse Java EE发行版,其中已经安装了Mylyn插件&#…

分析.cpp文件编译生成的汇编文件里语句的作用

1234int main(int argc,char** argv){return 1;}1g -S test.cpp生成test.s汇编文件 .file"null-test.cpp".text.globl main.type main, functionmain:.LFB0:.cfi_startproc pushq %rbp.cfi_def_cfa_offset 16.cfi_offset 6, -16movq %rsp, %rbp.cfi_def_cfa…

vue-cli3.0使用及配置(部分)

好长一段时间没有关注vue脚手架了,昨天因为需要个后台模板,用脚手架 搞了一下,竟然发现指令不能用了,看官方文档已经升级3.0,也是试的玩了一下, 大致写写怎么玩的!12341.先全局安装vue-cli3.0 …

centos arm-linux-gcc,CentOS 6.4配置arm-linux-gcc交叉环境

首先解压arm-linux-gcc到制定文件夹[armacer ~]$ sudo tar xvf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 -C /opt/tool/配置环境变量:[armacer ~]$ sudo vi /etc/profile添加:PATH/opt/tool/gcc-3.4.5-glibc-2.3.6/bin:$PATHexport PATH保存退出。执行[armacer ~]$…

使用JavaSymbolSolver解决Java代码中的方法调用

为什么创建java-symbol-solver? 几年前,我开始使用JavaParser ,然后开始做出贡献。 不久之后,我意识到我们想对Java代码执行的许多操作不能仅通过使用解析器生成的抽象语法树来完成,我们还需要解析类型,符号…

kali2.0安装搜狗输入法

其实方法应该是是通用的 (一开始源要配置好: 修改软件源APT-sources.list [python] view plaincopy vim /etc/apt/sources.list 将原来的注释掉,加了个阿里的#阿里云kali源deb http://mirrors.aliyun.com/kali sana main non-free contrib…

linux+vim+动不了,linux的vim按了ctrl+s之后假死的解决办法

Aqua Data Studio中文乱码使用Aqua Data Studio 查询数据时,如果表中的数据有中文时,会显示乱码,如下图: 解决方法很简单,只能更改字体即可,步骤如下: 更改字体后,显示的结果如下:C#调用脚本语言(三)-- IronJS 与 IronLua 简单方法性能比较1. 测试环境 1.1. 硬件环境…

aix linux操作系统,AIX--操作系统安装(AIX 6.1)

前一段时间,胡哥我接到老板的任务,要在AIX系统上安装zabbix agent呀。可是胡哥只是玩过linux对于AIX这种需要硬件支持的才能玩的高端玩意可是从来没接触过呀,虽说linux是类unix,可是与unix系统还是有区别。有啥办法了,…

秋季学习总结

经过这个学期的学习让我对软件工程这个专业有了新的认识,从c语言的学习中,让我慢慢懂得了如何去编写一个程序,但是编写一个程序也并不是那么的容易。在这个学期的学期中我总是感觉容易忘记上一节课所讲的东西,这个是课后自己没花时…

permgen_打破PermGen神话

permgen在我的最新文章中,我解释了可能导致java.lang.OutOfMemoryError:PermGen空间崩溃的原因 。 现在该讨论该问题的可能解决方案了。 或更确切地说,是关于互联网对可能解决方案的建议。 不幸的是,我只能说,当我通过…

到底是32位系统运行快还是64位系统快

首先声明一下,这个标题“到底是32位系统运行快还是64位系统运行快”的提法本身就是存在问题的,主要是由于很多网友把这个问题提炼的层次太高,那就是“我现在的机子是装32位系统快还是64位系统更快?”,所以就拿这个问题…

linux系统证书存储,Linux系统下如何配置Nginx的SSL安全证书

刚刚介绍了ownCloud的安装,有朋友问我SSL是怎么配置的,哎,为什么不去官方找,却来找我要呢,好吧,我知道你懒得看那些英文,我就介绍一下我是怎么一步步在Nginx上配置SSL的吧。首先你要确保你安装了…

命令界面:使用Java中的动态API处理Redis

Redis是一个数据存储,支持190多个已记录命令和450多个命令排列。 社区积极支持Redis开发; 每个主要的Redis版本都附带新命令。 今年,Redis向第三方供应商开放,以开发可扩展Redis功能的模块。 对于客户端开发人员和Redis用户而言&a…

Python数据库连接池DBUtils

DBUtils是Python的一个用于实现数据库连接池的模块 此连接池有两种连接模式: DBUtils提供两种外部接口: PersistentDB :提供线程专用的数据库连接,并自动管理连接。 PooledDB :提供线程间可共享的数据库连接&…

够用的 Python 写日志的知识——标准日志模块logging简介

前一段工作的时候用到了python写后台系统,需要把一些系统的行为记录下来。本着不要去重复发明轮子的精神,就去搜索了一下python的系统库本身是否有写日志的模块。果然有。python语言作为一门接口简单,标准库强大的语言,果然没有令…

vivox7刷linux系统,Vivo 找来宋仲基帮你送 X7

虽说有极致的 Xplay5 用来打品牌,但真正跑起量来,Vivo 实际上靠得还是以明星代言、外型、自拍等特性为卖点的中端产品线。这不,他们刚刚又在北京发布了全新的 X7 系列,这次找来了大势韩星宋仲基,美其名曰「有了你就有了…

Gradle配置

配置远程仓库 在gradle目录下的init.d目录中创建名为init.gradle文件,内容如下: allprojects{repositories {def REPOSITORY_URL http://localhost:8081/nexus/content/groups/public/all { ArtifactRepository repo ->if(repo instanceof MavenArti…

UML类图实例

首先是复习一下UML中九种图的理解:http://xhf123456789plain.blog.163.com/blog/static/172880482201192222144421/ 画用例图:http://xhf123456789plain.blog.163.com/blog/static/172880482201192221826110/ 下面是类图的实例(好像大话设计中…