环境:

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

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

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

一、openocd安装

  1. 下载libusb库安装或直接yum install libusb*
  2. 下载openocd-0.10.0.zip:https://sourceforge.net/projects/openocd/解压,进入目录
  3. $ ./configure --prefix=/home/benben/openocd --enable-jlink
  4. $ make                                    #若编译有错根据提示信息修改
  5. $ 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

}

openocd安装与调试的更多相关文章

  1. OpenOCD安装与使用(JTAG调试)

    本文介绍openocd开源软件的安装以及搭配JTAG对Xilinx u500VC707devkit的调试 PC OS: Ubuntu20.04 LTS Target ARCH: riscv64 JTA ...

  2. 安装ARM调试器

    一.概述 1.调试ARM应用程序的软硬件组成 硬件JTAG/SWD仿真器 Eclipse调试插件 GDB调试客户端 GDB服务器端 JTAG/SWD需要的硬件驱动 2.GNU ARM Eclipse推 ...

  3. Windows Service 开发,安装与调试

    Visual Studio.net 2010 Windows Service 开发,安装与调试 本示例完成一个每隔一分钟向C:\log.txt文件写入一条记录为例,讲述一个Windows Servic ...

  4. ubuntu14.04下nodejs + npm + bower的安装、调试和部署

      1. 简介 本文介绍ubuntu14.04下nodejs+npm+bower的安装.调试和部署 参考文档 https://docs.npmjs.com/getting-started https: ...

  5. postgresql编译安装与调试(二)

    接前文postgresql编译安装与调试(一),继续说说postgresql的编译安装与调试. 上一篇已经详细说明了如何在Linux系统上编译安装postgresql,这次我们在此基础上简单讲讲如何在 ...

  6. Redis安装与调试

    Redis安装与调试 Redis安装与调试linux版本:64位CentOS 6.5 Redis版本:2.8.17  (更新到2014年10月31日) Redis官网:http://redis.io/ ...

  7. ubuntu安装带调试功能的bochs

    ①进入bochs官网下载源码包 说明 用安装包直接安装没有调试功能 下载源码包步骤 a.输入网址:http://bochs.sourceforge.net/ b.单击图中红色标注图标 c.单击图中红色 ...

  8. APM的3DR无线数传的安装和调试

    APM飞控修改数传模块方法 http://www.cnblogs.com/wsine/p/4909903.html APM的3DR无线数传的安装和调试 http://tieba.baidu.com/p ...

  9. docker n2n安装与调试

    docker n2n安装与调试 yum install -y docker docker pull pahud/n2n-docker cd / 10 mkdir data 11 cd data 12 ...

随机推荐

  1. python学习笔记(5)

    第七章   模式匹配和正则表达式 1.不用正则表达式来查找文本模式 #对于这样的一个文本查找:3个数字,一个短横线,3个数字,4个端横线,然后再是4个数字,如:415-555-4242def isPh ...

  2. 如何让form2中的数据源,显示在form1的dataGridView控件中呢????

    定义一个static的静态变量,即可全局访问

  3. 使用pdfjs插件在线预览PDF文件

    前言 本文介绍在html中使用 pdfjs插件在线预览PDF文件的方法. 实现步骤 下载 pdfjs 并引入项目中 到PDFJS官网 http://mozilla.github.io/pdf.js/g ...

  4. python中的Tkinter模块

    Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macinto ...

  5. 使用Medusa美杜莎暴力破解SSH密码

    使用Medusa美杜莎暴力破解SSH密码 1.Medusa简介 Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的爆力破解工具.可以同时对多个主机,用户或密码执行强力测试.Medusa和hy ...

  6. Django开发环境配置(win10)

    开发工具 pycharm专业版 安装Django pip install Django==2.0 如果不带版本号,默认安装最新版本查看Django 查看版本: python -m django --v ...

  7. python面向对象--元类

    一个类没有声明自己的元类,默认他的元类就是type,除了使用内置元类type,我们也可以通过继承type来自定义元类,然后使用metaclass关键字参数为一个类指定元类 class Foo: def ...

  8. DDD领域驱动设计初探(五):AutoMapper使用

    前言:前篇搭建了下WCF的代码,就提到了DTO的概念,对于为什么要有这么一个DTO的对象,上章可能对于这点不太详尽,在此不厌其烦再来提提它的作用: 从安全上面考虑,领域Model都带有领域业务,让Cl ...

  9. Flutter SDK安装(windows)

    Flutter集成了Dart,因此不需要单独安装dart-sdk.Flutter的SDK可以从官网下载:https://flutter.io/sdk-archive/#windows 在Flutter ...

  10. web页面调用app的方法

    use_app_goto_page: (skip_type, skip_target) => { // Android App if (/android/i.test(navigator.use ...