linux上使用J-Link調試S3C2440裸機代碼


linux上使用J-Link調試S3C2440裸機代碼

工具:

  1. segger的jlink仿真器
  2. segger的jlink for linux
  3. 交叉編譯工具鏈里面的arm-xx-linux-xx-gdb
  4. 初始化腳本

工具安裝

進入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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM