使用jlink+gdbserver+insight调试ARM程序--配置insight

发布者:快乐行者最新更新时间:2024-09-19 来源: cnblogs关键字:jlink  gdbserver  insight  ARM程序 手机看文章 扫描二维码
随时随地手机看文章

1. 下载insight-6.8a.tar.bz2
编译:  ./configure --target=arm-linux --prefix=/opt/insight_arm --disable-werror
(1) 其中--target=arm-linux会影响安装生成的可执行文件的名字,例如安装之后可执行文件的名字为:
caodan@caodan-Ubuntu:/opt/insight_arm/bin$ ls
arm-linux-gdb  arm-linux-insight  arm-linux-run  tclsh8.4  wish8.4
(2) --prefix=/opt/insight_arm 的作用, 指定安装路径
(3) --disable-werror 禁止-Werror这个编译选项,因为它会打所有的Warning当作error,导致编译不能通过。

2. 编译 make
3. 安装 make install
安装之后的目录结构为:
caodan@caodan-Ubuntu:/opt/insight_arm$ ls
bin  include  info  lib  man  share

4. 在终端下面运行arm-linux-insight
可能会遇到下面的问题:
caodan@caodan-Ubuntu:/opt/insight_arm/bin$ ./arm-linux-insight
Tk_Init failed: Can't find a usable tk.tcl in the following directories:
    /opt/insight_arm/share/tk8.4 /opt/insight_arm/lib/tk8.4 /opt/lib/tk8.4 /opt/insight_arm/library /opt/library /opt/tk8.4.1/library /tk8.4.1/library

/opt/insight_arm/share/tk8.4/tk.tcl: no event type or button # or keysym
no event type or button # or keysym
    while executing
'bind Listbox {
    %W yview scroll [expr {- (%D / 120) * 4}] units
}'
    (file '/opt/insight_arm/share/tk8.4/listbox.tcl' line 183)
    invoked from within
'source /opt/insight_arm/share/tk8.4/listbox.tcl'
    (in namespace eval '::' script line 1)
    invoked from within
'namespace eval :: [list source [file join $::tk_library $file.tcl]]'
    (procedure 'SourceLibFile' line 2)
    invoked from within
'SourceLibFile listbox'
    (in namespace eval '::tk' script line 4)
    invoked from within
'namespace eval ::tk {
SourceLibFile button
SourceLibFile entry
SourceLibFile listbox
SourceLibFile menu
SourceLibFile panedwindow
SourceLibFile ...'
    invoked from within
'if {$::tk_library ne ''} {
    if {[string equal $tcl_platform(platform) 'macintosh']} {
proc ::tk::SourceLibFile {file} {
   if {[catch {
namesp...'
    (file '/opt/insight_arm/share/tk8.4/tk.tcl' line 393)
    invoked from within
'source /opt/insight_arm/share/tk8.4/tk.tcl'
    ('uplevel' body line 1)
    invoked from within
'uplevel #0 [list source $file]'


This probably means that tk wasn't installed properly.

提示信息是说tl没有安装好,
什么是tcl? 什么是tk?
tcl 是Tool Command Language 的缩写,而 tk 是一个 X window 的 Tool Kit,是 tcl在 X Window System 的应用。
tcl 是一种解译语言,也是一套 C 的函式库。为什么这样说呢?因为 tcl 的解译器被设计成一个 C 的函式库,提供基本的命令与控制结构,并且使用 tcl 的任何程序皆可以根据 tcl 的规格撰写 C 程序与之链接增加新的命令,以提高关键程序的效率、或增加新的特色。
  tk 的解译器叫 wish,是 WIndowing SHell 的简称。只要在提示号下 (xterm 下)输入 wish 就可以了。接下来你可以看到一个空白的窗口出现,xterm 下的提示号也变成了 wish 的提示号。此时,在提示号输入以下两行指令,就可以见最简单,最让人惊奇的t k程序了:

暂时不知道怎样解决上面遇到的这个问题,不过最快的方式就是把出错的行屏蔽掉。
将share/tk8.4/listbox.tcl第181行附近的内容注释掉
#annotation by caodan
#bind Listbox {
#    %W yview scroll [expr {- (%D / 120) * 4}] units
#}
将share/tk8.4/text.tcl文件第461行附近的内容注释掉
#annotation by caodan
#bind Text {
#    %W yview scroll [expr {- (%D / 120) * 4}] units
#}

再次执行,就会发现没有问题了,界面如下:

 

5. 可以在Dash菜单中建立一个快捷方式(针对Ubuntu用户)
caodan@caodan-Ubuntu:/usr/local$ cat /usr/share/applications/insight.desktop
[Desktop Entry]
Name=insight
GenericName=insight-6.8
Comment=graphic interface for debug with gdbserver
Exec=/opt/insight_arm/bin/arm-linux-insight
Terminal=false
Type=Application
StartupNotify=true
Icon=
Categories=Utility;Gnome;tcl;tk;redhat

6. 运行jlinkgdbserver, 并使用insight连接到gdbserver
运行jlinklgdbserver的界面如下,正在TCP/IP的2331端口等待连接:

caodan@caodan-Ubuntu:~/code/asm/S3C6410$ sudo jlinkgdbserver
[sudo] password for caodan:
SEGGER J-Link GDB Server V4.22

JLinkARM.dll V4.22 (DLL compiled Dec 17 2010 17:41:06)

Listening on TCP/IP port 2331

J-Link connected
Firmware: J-Link ARM V8 compiled Dec 16 2010 20:21:29
Hardware: V8.00
S/N: 20100213
Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFULL

J-Link found 2 JTAG devices, Total IRLen = 5
JTAG ID: 0x07B76F0F (ARM11)
J-Link: ARM11 CP15 Settings changed: 0x00450078 from 0x00001002, MMU Off, ICache Off, DCache Off
Info: CP15.0.0: 0x410FB766: ARM, Architecture Unknown architecture
Info: CP15.0.1: 0x1D152152: ICache: 16kB (4*128*32), DCache: 16kB (4*128*32)
DIDR: 6 Breakpoints available and 2 Watchpoints available.

注意: 这里的jlinkgdbserver是我自己创建的一个符号链接,JLinkGDBserver如何使用,请参考其他文档

运行insight, 并设置连接到jlinkgdbserver

 

注意到,在Port的地方,上图为1000, 是因为无法修改这个参数,临时的解决办法是将Hostname设置为127.0.0.1:2331
连接成功之后如下图:

 

7. 如何解决无法设置端口号的问题:
(1)可以设置jlinkgdbserver启动时候监听的端口为1000
例如:

caodan@caodan-Ubuntu:~/code/asm/S3C6410$ sudo jlinkgdbserver -port 1000
SEGGER J-Link GDB Server V4.22

JLinkARM.dll V4.22 (DLL compiled Dec 17 2010 17:41:06)

Listening on TCP/IP port 1000

J-Link connected
.............................................

(2)另外一种方式是编译前修改源码,修改默认的端口。
gdb/gdbtk/library/targetselection.itb中的默认端口为2331
修改第345行为:  pref define gdb/load/$target-portname 2331
修改第809行为:  pref define gdb/load/$target-portname 2331

重新编译 安装
但是我没有成功,可能是因为make clean的时候有什么地方没有清除干净, 暂时就这样吧,使用第一种方式替代。


关键字:jlink  gdbserver  insight  ARM程序 引用地址:使用jlink+gdbserver+insight调试ARM程序--配置insight

上一篇:S3C6410裸机程序,LED灯闪烁
下一篇:第五章 搭建S3C6410开发板的测试环境

推荐阅读最新更新时间:2024-11-17 12:08

[ARM裸机程序][2]TQ2440、ADS1.2、JLINK建立集成开发环境
简介 基本原理 通过JLINK将程序下载到SDRAM(0x30000000)中运行。 硬件环境 TQ2440通过JLINK链接到计算机上; NOR FLASH/NAND FLASH启动模式随意。 软件环境 建议使用WIN XP系统,可以使用vmware安装虚拟机; 安装ADS1.2集成开发环境; 安装JINK驱动; 需要将TQ2440所带的Flash.csv文件拷贝到JLINK安装目录下。 C:Program Files (x86)SEGGERJLinkARM_V408iETCJFlash 汇编程序模板 先使用一个HELLO WROLD程序,测试该环境的有效性: AREA ARM,COD
[单片机]
[<font color='red'>ARM</font>裸机<font color='red'>程序</font>][2]TQ2440、ADS1.2、<font color='red'>JLINK</font>建立集成开发环境
ARM裸机程序开发(十):C语言环境初始化
Part1 栈初始化 一、满/空栈 1.1 满栈:当堆栈指针SP总是指向最后压入堆栈的数据(ARM采用) 1.2 空栈:当堆栈指针SP总是指向下一个将要放入数据的空位置 二、升/降 栈 根据入栈时,SP指针的移动方向分:若从低——》高 为升栈,从高到低为降栈(ARM使用) 三、栈帧 定义:一个函数所使用的那一部分栈,称为栈帧 栈帧的两个边界 :fp(r11) 、 sp(r13) 三、栈作用 3.1 保存局部变量 3.2 传递参数 :当传递的参数大于4个时,使用栈来传递,否则,用通用寄存器来传递 3.3 传递寄存器的值 Part2 BSS段1初始化 Part3 从汇编跳
[单片机]
TQ2440之uboot---5.jlink 在线调试 u-boot
1. 首先修改u-boot源码的两个文件 1.1 将u-boot根目录下的config.mk, #DBGFLAGS= -g 改成:DBGFLAGS= -gdwarf-2 1.2 将 u-boot/cpu/arm920t/config.mk 中的 PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) 改成: PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,$(call cc-option,-mabi=apcs-gnu),) 附录中有解释。 改好后 make Embed
[单片机]
ARM中的看门狗程序
在ARM中,有一个硬件部分叫WATCH DOG。这个硬件,一直在做一件事情:就是,从某一数值,一直数,各一段时间减一,隔一段时间减一,直到减到0的时候将会触发重启或者中断。而有时候,为了预防死机,我们在操作系统跑起来的时候会有一个特定的程序来做一件事情:减到特定是值的时候数值将会重新置到100.这样,看门狗将会循环往复做一件事情:一直数数,而不会死机。 这个程序叫做守护程序:又叫做喂狗程序。 看门狗的逻辑运算图如下: 今天,有看门狗来写了一个程序:隔一段时间来触发一个中断,每次中断来的时候,将会让板子上面的灯和蜂鸣器做出相应的反映: 首先:在头文件中将具体的寄存器声明: 1 2 #define gpiobas
[单片机]
ARM裸机程序——跑马灯
最近看了一些启动代码的分析,还有很多不懂的地方,打算后面再写关于启动代码的分析。先跑了一些无操作系统裸机程序,来熟悉硬件。开发板用的是FL2440。 先看这样一段C代码 #define GPBCON (*(volatile unsigned long *)0x56000010) //这是寄存器的定义,由于GPB引脚在硬件上连接到了LED上,所以 用到GPB引脚,那么就要定义相关寄存器,该寄存器定义了GPB相关引脚的工作方式。 #define GPBDAT (*(volatile unsigned long *)0x56000014) //该寄存器用来给引脚上的数据。 int main() { GPBCON=0x0000
[单片机]
Proteus仿真ARM7 LPC2101 AD转换器源程序
调试时首先观察待测电阻是否工作正常。在电阻的变化端插入电压探针,具体方式在 左边工具探针中选取电压探针(Voltage)运行仿真,点击电阻,观察探针电压是否在不断 变化。 调试流程 绘制 ADC 接口电路 1.在器件库中找到 ADC 转换芯片(ADC0801),如图连接 ADC0801 和总线信号。其中 ADC0801数据线连接数据总线最低字节(D0-D7),读写信号接总线读写信号(NRD,NWR)。其他信 号请按照下图进行连接。 2.片选信号 AD_CS 接译码电路输出(采用部分译码,对应地址为 0x03XXXXXX)。 3.连接模拟输入,在器件库找到可变电阻(POT-HG)。 完成 ADC0801 工作流程
[单片机]
Proteus仿真<font color='red'>ARM</font>7 LPC2101 AD转换器源<font color='red'>程序</font>
ADS1.2+TX2440+Jlink测试
一、目的 学习ARM调试裸机程序方法。目前ARM支持JTAG、Angel、 ARMulator 三种调试方式(详见见下面),而支持裸机程序调试只有JTAG,而本人使用笔记本无并口,无法使用H-JTAG,只能使用Jlink调试。 1、使用JTAG 完全信赖ARM内部资源 2、使用Angel 目标板上必须包含调试监控程序 3、ARMulator 无需目标板,纯软件仿真. 二、硬件环境 开发板:TX2440A cpu:S3C2440 nand flash:K9F2G08U0B (256M+8M)x8bit norflash:EN29LV160AB (2M) x8bit SDRAM:
[单片机]
ADS1.2+TX2440+<font color='red'>Jlink</font>测试
Jlink OB仿真Cortex-M7的问题
使用淘宝便宜的jlink-ob给stm32f767进行 烧录 程序的时候,出现了如下提示: 回到淘宝链接查看了下商品详情: 确实人家不支持M7,博主想的是如果想支持M7,那一定要使用更高版本的Jlink固件才能支持。
[单片机]
<font color='red'>Jlink</font> OB仿真Cortex-M7的问题
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved