使用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
}
使用openocd调试Linux内核,openocd安装与调试相关推荐
- Bochs调试Linux内核6 - 启动过程调试 - 跳到bootsect引导程序执行
接此,Bochs调试Linux内核5 - 启动过程调试 - 认识Bootsect.S_bcbobo21cn的专栏-CSDN博客 看一下,0x00007c11 这里是重复执行串传送:而后一条 ...
- Bochs调试Linux内核5 - 启动过程调试 - 认识Bootsect.S
先参阅 Bochs调试Linux内核 - 定位内核中的变量或数据结构_bcbobo21cn的专栏-CSDN博客 ,运行到<bochs:1>,输入vbreak 0x0000:0x ...
- openocd调试Linux内核,openocd安装与调试
环境: 硬件:PC机ARM仿真器v8.00已下载好bit流的Xinlinx SoC开发板(其上有arm cortex-a9核) 软件:Redhat Linux6(或虚拟机)+ openocd 使用op ...
- 使用openocd调试Linux内核,OpenOCD-JTAG调试
title: OpenOCD-JTAG调试 tags: ARM date: 2018-10-13 23:36:28 Todo [ ] JTAG 调试linux内核 [ ] linux下使用OpenOC ...
- 使用openocd调试Linux内核,OpenOCD-JTAG调试(示例代码)
目录 title: OpenOCD-JTAG调试 tags: ARM date: 2018-10-13 23:36:28 --- Todo [ ] JTAG 调试linux内核 [ ] linux下使 ...
- 使用 ftrace 调试 Linux 内核【转】
转自:http://blog.csdn.net/adaptiver/article/details/7930646 使用 ftrace 调试 Linux 内核,第 1 部分 http://blog.c ...
- 使用Bochs调试Linux内核初级入门
之所以能用Bochs调试Linux内核,还是因为Bochs做了一些工作: 安装完成以后如下:如果使用bochs.exe加载操作系统映像,就是在虚拟机中运行操作系统: 如果使用bochsdbg.exe加 ...
- qemu debug linux内核,在QEMU环境中使用GDB调试Linux内核
简介 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试.其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qem ...
- Linux 内核的测试和调试(1)
Linux 内核的测试和调试(1) Linux 内核测试哲学 不管是开源还是闭源,所有软件的开发流程中,测试是一个重要的.不可或缺的环节,Linux 内核也不例外.开发人员自测.系统测试.回归测试.压 ...
最新文章
- 《重新认识你自己》八:与真实的自我相处
- 部署xhprof监控php效率(linux版本)
- Dijkstra的理解和实现
- 山大计算机上机复试题目,2010年计算机复试上机 回忆
- 关掉微软Word的一些不必要的插件,提高启动速度
- 每当处于窘境时,想想当初坚持的理由
- niceyoo的2020年终总结-2021年Flag
- Hive MapJoin OOM
- springboot无法加载oracle驱动终极解决
- 10年年初写的述职报告
- Java中构造方法被别封装后的调用
- 大智慧行情服务器在哪个文件夹,【大智慧】大智慧公式在哪个文件夹?
- 计算机原理阅读,计算机原理与应用作业
- 微信小程序 input 事件
- 儿童计算机编程竞赛,一年获全国少儿编程比赛一等奖,他是怎么做到的?
- 为什么视频无法播放,视频无法播放的原因是什么
- 伊利诺伊香槟分校计算机排名,伊利诺伊大学香槟分校计算机工程排行业界内最整体分析...
- CSS3 animation动画 - 转风车、loding加载、人物走路等示例
- 袋鼠!沃尔沃的无人车就是搞不定这种动物
- 南师大计算机学院博雅课的要求,南师大博雅课程
热门文章
- python 发送邮件附件很慢_python下smtpsendmail发送特别慢
- t分布 u分布 卡方分布_中心极限定理|z分布|t分布|卡方分布
- 微型计算机技术怎么学,浅谈微型计算机技术课程的启发式教学
- ubuntu安装后需了解的基本操作
- [渝粤教育] 长沙民政职业技术学院 高职公共英语(一) 参考 资料
- 电源模块质量好不好,看看以下5点就知道了!
- php mysql ppt,7PHP访问数据库分析.ppt
- names文件和data文件_data.table让你的读取速度提升百倍
- python如何读取数据保存为新格式_python,初学者应用实例:读取文件中的数据,将将北京时间转换成世界时间,再保存成新的CSV格式文件...
- 远程声控系统(MATLAB代码见CSDN资源)