eclipse調試arm裸機程序

2021-01-20 電子產品世界
一、集成開發環境

本文引用地址:http://www.eepw.com.cn/article/201611/318230.htm

軟體部分:eclipse , GDB Server , Jlink軟體

硬體部分:Jlink硬體

準備工作1:從SD/NOR Flash啟動,格式化nand flash

準備工作2:硬體連接

1. Jlink連接

2. 串口連接

3.nand啟動

二、安裝GDB Server

解壓:tar xvzf arm-linux-gdb-7.5.tar.gz

進入目錄:cd arm-linux-gdb-7.5

編譯安裝:./build-all

上面執行好後,gdb工具就安裝好了,安裝在/opt/arm-linux-gdb

為了方便使用,需要添加環境變量:vim /root/.bashrc

在交叉編譯鏈的前面添加gdb的環境變量:

export PATH=$PATH:/opt/arm-linux-gdb/bin/

export PATH=$PATH:/usr/local/arm/4.3.2/bin/

之後保存,退出。這就可以直接運行arm-linux-gdb,如果不行的話則可能是添加錯誤,或者需要註銷。

問:為什麼一定要添加到交叉編譯鏈之前呢?

答:因為在交叉編譯鏈中也包含了arm-linux-gdb,linux系統會根據path環境變量的先後順序來尋找,我們需要找的是我們上面安裝的,而不是這裡的(因為版本可能不對),所以在添加環境變量的時候,一定要添加在交叉編譯鏈的前面。

三、安裝Jlink軟體

解壓:tar xvzf JLink_Linux_V434a.tgz

進入目錄:cd JLink_Linux_V434a

庫:cp -d libjlinkarm.so* /usr/lib -f

:cp 45-jlink.rules /etc/udev/rules.d/

上面四個命令執行完之後,檢測是否能夠檢測到Jlink的連接:

在虛擬機的下面,點擊顯示為Jlink相關的usb圖標,連接。

執行命令:./JLinkGDBServer

如果也切順利的話,會顯示連接上的ARM核心為ARM11:

四、安裝Eclipse軟體

紅帽企業版6.3中默認安裝了eclipse

執行:which eclipse 可以查看在哪個目錄下

這個版本不適合,我們不能用,所以首先我們得卸載這個,其實我們把查詢到的eclipse修改一個名字就好了,在查詢到的目錄執行:mv eclipse eclipse-back即可。

安裝自己的eclipse:

解壓:tar zxvf eclipse-cpp-helios-SR2-linux-gtk.tar.gz

進入目錄:cd eclipse-cpp-helios-SR2-linux-gtk

運行程序:./eclipse

這就啟動eclipse了。

然後選擇自己的工程目錄:

配置eclipse:

首先得安裝一個插件,這個插件是要通過網絡安裝的,所以linux必須能夠上網。

安裝插件:點擊菜單欄的help -> install new software

在Work with輸入插件位置:http://opensource.zylin.com/zylincdt,點擊add

經過一段時間,在下面的方框中顯示出找到的插件,點擊選中:

點擊next;

之後按照提示來。

然後重啟:

使用eclipse進行開發

新建工程,選擇新建一個已存在源文件的工程:

注意:這裡的源文件目錄必須是在工作目錄下的另外一個目錄,比如工作目錄是"/home/S3-ARM/Part1/lesson1",那麼【Existing Code Location】的目錄為不能和工作目錄相同,必須是別的目錄,或者是工作目錄下的一個子目錄,比如"/home/S3-ARM/Part1/lesson1/led/"或者是"/opt/led/"

點擊finish。

編譯項目:【Project】 -> 【Build All】

注意:取消掉【Project】裡面的自動編譯【Build Automatically】

配置調試器:【甲蟲圖標】 -> 【Debug Configurations】

雙擊【Zylin Embedded debug】,出現如下界面:

選中選項卡【main】

在【C/C++ Application】中選擇要調試的項目,注意是選中 "xxx.elf" 文件:

選中選項卡【Debugger】

去掉【Stop on startup at:】選項

將【GDB debugger:】修改成" arm-linux-gdb "

選中選項卡【Commands】

在【Initialize commands】中填入如下初始化指令:

下面是初始化S3C6410處理器的初始化腳本

1 # tiny6410_config 2 # connect to the J-Link gdb server 3 target remote localhost:2331 4 # Set JTAG speed to 30 kHz 5 monitor endian little 6 monitor speed 30 7 # Reset the target 8 monitor reset 9 monitor sleep 10 10 # 11 # CPU core initialization (to be done by user) 12 # 13 # Set the processor mode 14 monitor reg cpsr = 0xd3 15 #config MMU 16 #flush v3/v4 cache 17 monitor cp15 7, 7, 0, 0 = 0x0 18 #/* flush v4 TLB */ 19 monitor cp15 8, 7, 0, 0 = 0x0 20 #disable MMU stuff and caches 21 monitor cp15 1, 0, 0, 0 =0x1002 22 #Peri port setup 23 monitor cp15 15, 2, 0, 4 = 0x70013 24 #disable watchdog 25 monitor MemU32 0x7e004 = 0x00 26 monitor sleep 10 27 #disable interrupt 28 monitor MemU32 0x71214 = 0x00 29 monitor MemU32 0x71314 = 0x00 30 monitor MemU32 0x7120C = 0x00 31 monitor MemU32 0x7130C = 0x00 32 monitor MemU32 0x71200F00 = 0x00 33 monitor MemU32 0x71300F00 = 0x00 34 #set clock 35 monitor MemU32 0x7e00f900 = 0x0801e 36 monitor MemU32 0x7e00f = 0x0ffff 37 monitor MemU32 0x7e00f004 = 0x0ffff 38 monitor MemU32 0x7e00f020 = 0x01043310 39 monitor MemU32 0x7e00f00C = 0xc2150601 40 monitor MemU32 0x7e00f010 = 0xc2150601 41 monitor MemU32 0x7e00f024 = 0x03 42 monitor MemU32 0x7e00f014 = 0x00200102 43 monitor MemU32 0x7e00f018 = 0x00 44 monitor MemU32 0x7e00f01C = 0x14007 45 #config sdram 46 monitor MemU32 0x7e00f120 = 0x08 47 monitor MemU32 0x7e001004 = 0x04 48 monitor MemU32 0x7e001010 = 0x0040f 49 monitor MemU32 0x7e001014 = 0x06 50 monitor MemU32 0x7e001018 = 0x01 51 monitor MemU32 0x7e00101c = 0x02 52 monitor MemU32 0x7e001020 = 0x06 53 monitor MemU32 0x7e001024 = 0x0a 54 monitor MemU32 0x7e001028 = 0x0c 55 monitor MemU32 0x7e00102c = 0x0018f 56 monitor MemU32 0x7e001030 = 0x0c 57 monitor MemU32 0x7e001034 = 0x02 58 monitor MemU32 0x7e001038 = 0x02 59 monitor MemU32 0x7e00103c = 0x02 60 monitor MemU32 0x7e001040 = 0x02 61 monitor MemU32 0x7e001044 = 0x13 62 monitor MemU32 0x7e001048 = 0x13 63 monitor MemU32 0x7e00100C = 0x10012 64 monitor MemU32 0x7e00104C = 0x00b45 65 monitor MemU32 0x7e001200 = 0x150f8 66 monitor MemU32 0x7e001304 = 0x00 67 monitor MemU32 0x7e001008 = 0xc0 68 monitor MemU32 0x7e001008 = 0x00 69 monitor MemU32 0x7e001008 = 0x40 70 monitor MemU32 0x7e001008 = 0x40 71 monitor MemU32 0x7e001008 = 0xa0 72 monitor MemU32 0x7e001008 = 0x80032 73 monitor MemU32 0x7e001004 = 0x00 74 # Setup GDB for faster downloads 75 #set remote memory-write-packet-size 1024 76 set remote memory-write-packet-size 4096 77 set remote memory-write-packet-size fixed 78 monitor speed 12 79 break _start 80 load

初始化2440的腳本內容如下:

1 # connect to the J-Link gdb server 2 target remote localhost:2331 3 # Set JTAG speed to 30 kHz 4 monitor endian little 5 monitor speed 30 6 # Reset the target 7 monitor reset 8 monitor sleep 10 9 # 10 # CPU core initialization (to be done by user) 11 # 12 # Set the processor mode 13 monitor reg cpsr = 0xd3 14 #config MMU 配置MMU 15 #flush v3/v4 cache 16 monitor cp15 7, 7, 0, 0 = 0x0 17 #/* flush v4 TLB 協處理器*/ 18 monitor cp15 8, 7, 0, 0 = 0x0 19 #disable MMU stuff and caches 20 monitor cp15 1, 0, 0, 0 =0x1002 21 #Peri port setup 22 monitor cp15 15, 2, 0, 4 = 0x70013 23 #disable watchdog kangear 關閉看門狗 24 monitor MemU32 0x53 = 0x00 25 monitor sleep 10 26 #disable interrupt kangear 關閉中斷 27 monitor MemU32 0x4A008 = 0xffffffff 28 monitor MemU32 0x4A01C = 0x7fff 29 #set clock 30 #initialize system clocks locktime register 31 monitor MemU32 0x4C = 0xFF 32 #initialize system clocks clock-divn register 33 monitor MemU32 0x4C014 = 0x5 #CLKDVIN_400_148 34 #initialize system clocks mpll register 35 monitor MemU32 0x4C004 = 0x7f021 #default clock 36 #config sdram 37 monitor MemU32 0x53 0x00 38 monitor MemU32 0x4A008 0xFFFFFFFF 39 monitor MemU32 0x4A01C 0x007FF 40 monitor MemU32 0x53 0x00 41 monitor MemU32 0x56050 0x055AA 42 monitor MemU32 0x4C014 0x07 43 monitor MemU32 0x4C 0x00FFFFFF 44 monitor MemU32 0x4C004 0x61012 45 monitor MemU32 0x4C008 0x40042 46 monitor MemU32 0x48 0x22120 47 monitor MemU32 0x48004 0x02F50 48 monitor MemU32 0x48008 0x00700 49 monitor MemU32 0x4800C 0x00700 50 monitor MemU32 0x48010 0x00700 51 monitor MemU32 0x48014 0x00700 52 monitor MemU32 0x48018 0x7FFFC 53 monitor MemU32 0x4801C 0x18005 54 monitor MemU32 0x48020 0x18005 55 monitor MemU32 0x48024 0x008E0459 56 monitor MemU32 0x48028 0x32 57 monitor MemU32 0x4802C 0x30 58 monitor MemU32 0x48030 0x30 59 # Setup GDB for faster downloads 60 #set remote memory-write-packet-size 1024 61 monitor speed auto 62 break _start 63 load

初始化210的腳本內容如下:

1 # connect to the J-Link gdb server 2 target remote localhost:2331 3 # Set JTAG speed to 30 kHz 4 monitor endian little 5 monitor speed 30 6 # Reset the target 7 monitor reset 8 monitor sleep 10 9 # Setup GDB for faster downloads 10 #set remote memory-write-packet-size 1024 11 monitor speed auto 12 break main 13 load

經過上面的設置之後,就可以開始調試了

五、開始調試

注意:用eclipse進行調試的時候必須保證JLinkGDBServer同時在運行

否則會出現類似下面的錯誤:

保證JLinkGDBServer運行起來了,然後點擊【小甲殼蟲】 -> 項目名

準備進入調試界面

選擇【yes】

調試界面如下:

點擊【F5】是"Step Into"

【F6】是"Step Over"

等等,這裡可以查看寄存器的值,沒存的值等等。

一步一步下去可以看到開發板上的led點亮了。

相關焦點

  • eclipse怎麼調試程序 調試代碼的方法介紹
    1、設置斷點   在程序裡面放置一個斷點,也就是雙擊需要放置斷點的程序左邊的欄目上。   2、調試   (1)點擊"打開透視圖"按鈕,選擇調試透視圖,則打開調試透視圖界面,然後先設置斷點,按調試按鈕則可以調試程序。   (2)或者直接點擊調試按鈕,那個蟲子樣子的按鈕,然後就會進入調試透視圖的界面。前提你需要是要在程序中設置好斷點。
  • 用uboot調試裸機C語言
    昨天用uboot1.4調試了一下基於s3c44b0的一個LED燈實驗,成功,紀錄下: 最初的設想是想用uboot的loadb命令來調試自己移植的uboot,發現串口沒顯示,當時就暈了 就不想再動了
  • 使用Eclipse調試Java程序的10個技巧
    你應該看過一些如《關於調試的N件事》這類很流行的帖子 。假設我每天花費1小時在調試我的應用程式上的話,那累積起來的話也是很大量的時間。由於這個原因,用這些時間來重視並了解所有使我們調試更方便的功能。那能為你省下一些時間,也將會使你的生活更安逸、輕鬆。同時也表明其它關於此主題的帖子也是很有價值的。第1條:不要調試太多一個關於調試的瘋狂聲明作為開頭。但它必須是要說的!
  • ARM DS-5開發STM32程序(Eclipse配合Keil插件使用)
    http://pan.baidu.com/s/1mgHX2JY補充:社區版激活代碼:http://ds.arm.com/zh-cn/ds-5-community-edition/getting-started/3.運行DS-5安裝Keil插件安裝好Keil插件後只是使用了Keil的調試和下載功能,真正與DS-5合體需要在Eclipse
  • Eclipse下的Java反編譯插件 查看原始碼不再困難
    Eclipse: 一款開源的集成開發環境(Integrated Development Environment),配合眾多插件,可以用於Java應用程式開發、Android應用程式開發等。最精簡的Eclipse只是一個框架,開發不同應用程式時需要安裝對應的插件才能進行,不像微軟的VS已經集成了眾多的編譯工具。
  • 在Eclipse下編譯Keil MDK工程
    不多說了, 編譯, 下載, 調試. 關於如何使用MDK Plugin for Eclipse 請參數它的幫助文檔吧. 祝愉快!搭建stm32開發環境和st-link調試 一、下載eclipse:我們選擇的工具為Eclipse IDE for C/C++ Developers,官網下載地址在https://www.eclipse.org/downloads/packages/release/helios/sr2/eclipse-ide-cc-developers若網址打不開或下載速度慢,可選用百度雲連結
  • eclipse安裝使用介紹
    eclipse是一套完整的針對Linux運行平臺的C/C++開發工具,其一個很大優點是可直接安裝在Windows環境下。用戶可在自己熟悉的Windows窗口環境下編寫Linux的應用程式,然後通過G++構造的交叉編譯工具鏈,直接生成可在嵌入式Linux環境下(這裡為EM9x60的環境)運行的應用程式。
  • ARM裸機開發bootloader彙編語言
    因為彙編語言的執行效率要高於c語言,所以對某些對效率要求高的程序要用到彙編,可以是彙編與c語言的混合編程。2、彙編分類1、ARM標準彙編,適用於windows平臺下ARM公司開發的彙編器ADS。2、GNU彙編,linux平臺下GNU交叉編譯工具鏈中的彙編器。
  • Eclipse + WinARM開發環境
    這裡我解壓到D:\Eclipse3.從http://www.siwawi.ar i.uni-kl.de/avr_projects/arm_projects/下載WINARM。解壓就可以了,不用安裝。我這裡解壓到D:\WinARM4.在系統環境中的[PATH]加入WinARM的BIN文件夾(該文件夾包括了arm-elf工具鏈)和utils\bin文件夾(調試有關的工具)路徑。
  • 在Eclipse IDE環境下使用TRACE32調試工具
    MCU/SoC系統開發調試工具廠商勞特巴赫技術有限公司(Lauterbach)提供的TRACE32調試和跟蹤工具已經被廣泛的應用在通信/家用電子,汽車電子,醫療器械及工業控制等高端市場的程序調試和跟蹤領域,為無數的行業領導企業帶來了巨大的便利和效益。
  • Ubuntu12.10 使用JLink連接開發板用arm-gdb調試ARM程序
    $wget http://ftp.gnu.org/gnu/gdb/gdb-7.5.tar.bz21.2.2 編譯和安裝編譯和安裝gdb,注意設置目標平臺為arm-linux, 另外注意下面紅色參數:「--program-prefix=arm-linux-」,該參數使安裝後的程序名字為arm-linux-gdb, 防止與系統已經安裝的gdb
  • 使用eclipse開發Java程序詳解
    俗話說,工欲善其事,必先利其器,以前編寫Java代碼用的是記事本,但用記事本寫代碼存在很多不便,不能調試程序,也不適合編寫規模較大的程序。因此,從本課開始,編寫Java代碼將使用eclipse集成開發工具,eclipse是免費的集成開發工具,是Java開發者首先的Java開發工具。
  • 移植strace調試工具到arm平臺
    strace工具是一個非常強大的工具,是調試程序的好工具。要移植到arm平臺,就需要使用交叉編譯工具編譯生成靜態連結的可執行文件。具體步驟如下:1.下載 strace-4.5.16移植strace調試工具到arm平臺 由Linux系統中文網(Linux521.com)編輯收集整理,除Linux521註明原創文章外,其版權歸原作者所有。如果您在學習中遇到問題歡迎在下面的評論中留言,我們會盡全力解答您的問題。
  • openocd 命令行燒寫ARM裸機程序 problems and solutions
    以前是用RVDS 的IDE來燒寫調試ARM程序的,不過RVDS雖然是集成化的調試工具調試起來方便,但是有的時候只知其一,不知其二,只知道按部就班的來點擊按鈕,忽略了一些本質性的東西。
  • arm-Linux-opencv調試總結
    調試了好幾天,終於移植成功,window下的程序也順利移植到ubuntu下了。接下來考慮將opencv移植到arm上(OpenCV在ARM上的移植 http://www.cnblogs.com/emouse/archive/2013/04/01/2993842.html)其中遇到一些錯誤,但最終生成了四個文件(lib share include bin)。
  • Eclipse使用Eclim插件開發Python程序
    此外,使用Vimpab作為Python調試工具,很多人不適應。  我們組裡的Kevin,介紹了使用Eclipse和Pydev作為Python的開發環境,由於基於GUI,很多人都很容易接受。我對Eclipse很久以前有過研究,好長時間沒有用了,今天花了3個多小時的時間,在網上找了一個Eclim的插件,裝上試用了一下,還真可以,下面我就將具體的配置步驟說一下。
  • android平臺arm指令學習和調試
    三、調試可執行程序1)Push編譯好的elf到樣機中2)使用gdbserver啟動該文件「/data/local/gdbserver:12345/data/local/helloa」3)adbforwardtcp:12345tcp:123454)啟動gdb5)Targetremote127.0.0.1:12345
  • 第八篇:使用eclipse開發Java程序
    一種是下載安裝程序,下載後直接運行安裝程序,根據安裝程序的提示選擇安裝選項並完成安裝;一種是下載具有不同功能項的eclispe壓縮包,下載後手動解壓即可。下面分別介紹兩種安裝方式。安裝程序方式如果是64位的Windows作業系統,可以直接單擊上圖的【Download 64 bit】按鈕下載安裝程序。
  • ARM-Linux開發與MCU開發的區別
    開發arm應用程式有兩種方法:一種是直接在arm晶片上開發應用程式,而不使用作業系統,也稱為裸機編程。這種開發方法主要應用於一些低端的arm晶片,其開發過程與單片機的開發過程非常相似,本文不作介紹。另一種是在ARM晶片上運行作業系統。對於硬體的操作,需要編寫相應的驅動程序。
  • ST-Link不能下載程序的幾種解決辦法
    在ubuntu下利用eclipse搭建stm32開發環境和st-link調試 一、下載eclipse:我們選擇的工具為Eclipse