linux上使用J-Link调试S3C2440裸机代码

工具:

  1. segger的jlink仿真器
  2. segger的jlink for linux
  3. 交叉编译工具链里面的arm-xx-linux-xx-gdb
  4. 初始化脚本

工具安装

segger的jlink for linux

进入Segger官网--->Download--->J-Link/J-Trace--->J-Link Software and Documentation Pack。有deb、rpm、tgz三种包可供选择,随便选一个,我选的是tgz。由于我的仿真器是和谐版,所以我不敢选择高版本的J-Link,选择Older versions。下载一个比较老的,我下的是最老的。

解压至你要安装的目录。里面有个README.txt,安装说明操作。安装完了为方便起见,记得export一下PATH。

交叉编译工具链里面的arm-xx-linux-xx-gdb

这个不多介绍,你想自己编译就编译,想用别人制作好的也行。

初始化脚本

此初始化脚本是给arm-xx-linux-xx-gdb用的,gdb可以通过-x file.cmd从文件里面指定命令序列。具体如下:
#初始化 S3C2440 CPU.

#定义一个函数(功能块)
define reset_s3c2440
    ##设置小端模式,要和你跑的裸机程序一致.
    monitor endian little

    ##copied from JLinkGDBServer Document.
    monitor reset                   #复位 S3C2440
    monitor reg cpsr = 0xd3         #设置 cpsr 寄存器.
    monitor speed auto              #Link Speed.
end

##main function defined for connect to the TARGET.
##arg0 = IP地址.
##arg1 = JLinkGDBServer端口号.
define connect_s3c2440
    if $argc == 2
    target remote $arg0:$arg1
    reset_s3c2440
    end
end

大概就是通过IP:PORT连接上JLinkGDBServer,然后下发一系列的指令初始化s3c2440。这些指令也可以手动逐个敲进去。

工作原理介绍

参考gdb工作原理

本地调试搞linux都熟悉。有时候由于资源限制、或者目标机不在现场,就需要借助gdbserver做远程调试。可以这样理解,gdb是由gdb前端和gdb后台组成,gdb前端负责和用户交互,gdb后台负责和操作ptrace,在远程调试时gdbserver提供一个后台和一个通讯接口与本地的gdb前端交互。gdb和gdbserver之间可以通过串口,usb,tcp/ip来通讯。一般来说gdbserver远远小于gdb,所以资源限制情况下直接放一个gdbserver到目标机里面,然后远程调试。

JLinkGDBServer

JLinkGDBServer又相当于把gdbserver---->ptrace---->target替换成了gdbserver---->jlink--->jlink调试器---->target。JLink还有好多好玩的工具J-Link Remote Server、J-Link Commander、J-Link RTT Viewer、J-Link SWO Viewer等等。

调试步骤

1.代码

https://github.com/tanghammer/mini2440_peripherals.git

2.硬件连线

按照jlink仿真器接线方式,启动方式选择NorFlash。

3.烧录程序

Windows下操作:

  • 启动J-Flash
  • file--->open project--->打开s3c2440.jflash
  • file--->open data file--->选择要烧录的bin文件
  • F7(Auto)

这样程序就烧录到了Norflash,下面是s3c2440.jflash分享链接。
链接:https://pan.baidu.com/s/17QSzRdSOImYv3LM1UROqiw
提取码:vazg

4.启动JLinkGDBServer

直接执行命令JLinkGDBServer

5.启动GDB

arm-none-linux-gnueabi-gdb -x s3c2440_init -ex "connect_s3c2440 192.168.20.156 2331" ./sdram_elf

6.开始调试

load
b main
c

原文地址:https://www.cnblogs.com/thammer/p/10543328.html

时间: 2024-08-29 04:27:16

linux上使用J-Link调试S3C2440裸机代码的相关文章

Windows下fabric sdk连接Linux上fabric网络的调试过程

上个月刚入职一家公司从事区块链研发工作,选型采用Hyperledger Fabric作为开发平台.团队的小组成员全部采用的是在VirtualBox上面安装桌面版的Ubuntu 16.04虚拟机,开发工具JetBrains GoLand也就直接在桌面版的虚拟机里面安装.而我因为之前比较习惯使用Vagrant + VirtualBox的方式快速加载我定制版的Ubuntu镜像从而创建Linux开发环境,这样一来的弊端就是我只能通过命令行来进行一切操作而没有桌面可操作,所以我的整个开发IDE就在本机的w

Linux上进程追踪与调试(strace和gdb)

引言: 我们某些服务出现故障的时候,我们都是根据屏幕的输出以及打印的日志来查找出出现了什么样的错误,但是有时候我们的很多守护进程启动正常却访问不到,比如我们使用Nginx服务,登陆web的时候,却迟迟不发生页面跳转或者访问页面迟迟没反应,这个时候我们就需要对nginx这个服务做一次进程追踪,我们使用strace/gdb这样的命令对进程做一次追踪, strace: 1,strace命令说明 strace是能够显示用户空间发出的任何系统调用,在命令的执行过程中,strace会记录和解析命令进程的所有

Zeta Linux上进行WiFi Direct调试

1)叫醒p2p网卡 ifconfig p2p0 up 2)启动wpa_supplicant服务 wpa_supplicant -Dnl80211 -ip2p0 -c /etc/wpa_supplicant_p2p.conf -B -d -f wpa.txt 其中/etc/wpa_supplicant_p2p.conf的内容是 ctrl_interface=/var/run/wpa_supplicant ap_scan=1 device_name=Terminal-1 device_type=1-

s3c2440裸机-代码重定位(2.编程实现代码重定位)

代码重定位(2.编程实现代码重定位) 1.引入链接脚本 我们上一节讲述了为什么要重定位代码,那么怎么去重定位代码呢? 上一节我们发现"arm-linux-ld -Ttext 0 -Tdata 0x30000000"这种方式编译出来的bin文件有800多M,这肯定是不行的,那么需要怎么把.data段重定位到sdram呢? 可以通过AT参数指定.data段在编译时的存放位置,我们发现这样指定太不方便了,而且不好确定要放在bin文件的哪个位置.这里就要引入链接脚本,它可以帮我们解决这个不必要

Windows远程调试Linux上的C++程序:Eclipse+MingW+Samba+GDBserver

转自:http://www.heimizhou.com/windows-remote-debug-linux-c-plus-plus.html 最近有一个需求,就是需要在Windows上远程调试Linux上的C++程序,然后我就从网上搜集各种方法,但是发现很多方法中是先在Windows上编译程序,然后再从Linux上编译程序,最后进行远程调试,这种方法使我的调试不能进入源代码,后来经过尝试发现只需要在Linux上编译程序即可.下面从三个方面:需要安装的软件.安装与配置.配置远程调试,来介绍一下我

【转载】s3c2440裸机开发调试环境(MDK4.6,Jlink v8,mini2440)

用于arm裸机程序开发的IDE基本有 以下3个:MDK,IAR,还有ADS.具体它们的具体情况在这里我就不多说了,百度一下就明白了.由于之前开发c51,stm32时候都使用了MDK开发环境,而且MDK的界面确实看起来舒服多了,所以我选择了MDK作为我的s3c2440裸机开发的IDE.以下主要介绍一下如何使用MDK配合J-link来调试基于s3c2440的开发板. 首先,我们需要下载的有以下2样: MDK J-link 驱动 我的开发环境:windows 7 64位,J-linkv8,mini24

VS2017 Linux 上.NET Core调试

调试Linux 上.NET Core Visual Studio 2017 通过SSH 调试Linux 上.NET Core 应用程序. 本文环境 开发环境:Win10 x64 Visual Studio 2017 部署环境:Ubuntu 14.04 x64 .NET Core SDK 1.0.1 Ubuntu上安装.NET Core SDK Ubuntu 14.04 x64 sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficman

使用Windows上的Eclipse 远程调试 linux下的Tomcat

1:修改Linux上Tomcat的catalina.sh,第一行添加declare -x CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9528" 2:在eclipse中, 点 "Run->Debug...",选 "Remote Java Application",按提示新建,"Project"一项选择需要调

Linux上命令的使用格式和基础命令详解

一.Linux上命令的使用格式 命令行提示符详解: 用户通过终端的命令行接口来控制操作系统,登陆后如下: [[email protected] ~]# root: 当前登录的用户 @:分隔符 localhost: 当前主机的主机名,非完整格式:此处的完整格式为:localhost.localdomain [[email protected] ~]# hostname localhost.localdomain ~:用户当前所在的目录(current directory),也称为工作目录(work