eclipse調試arm裸機程序

1、集成開發環境

42892584

軟件部分:eclipse , GDB Server , Jlink軟件linux

硬件部分:Jlink硬件ios

準備工做1:從SD/NOR Flash啓動,格式化nand flashvim

準備工做2:硬件鏈接bash

1. Jlink鏈接網絡

2. 串口鏈接less

3. nand啓動eclipse

2、安裝GDB Server

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

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

編譯安裝:./build-allspa

上面執行好後,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,若是不行的話則多是添加錯誤,或者須要註銷。

6176204

問:爲何必定要添加到交叉編譯鏈以前呢?

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

3、安裝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:

6531013

4、安裝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了。

而後選擇本身的工程目錄:

17952797

6916210

配置eclipse:

首先得安裝一個插件,這個插件是要經過網絡安裝的,因此linux必須可以上網。

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

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

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

6978985

點擊next;

7719381

以後按照提示來。

而後重啓:

7889344

使用eclipse進行開發

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

8059526

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

18167595

點擊finish。

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

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

9798453

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

9958635

10081221

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

10134058

選中選項卡【main】

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

10291838

選中選項卡【Debugger】

去掉【Stop on startup at:】選項

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

10423378

選中選項卡【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 = 0x70000013 24 #disable watchdog 25 monitor MemU32 0x7e004000 = 0x00000000 26 monitor sleep 10 27 #disable interrupt 28 monitor MemU32 0x71200014 = 0x00000000 29 monitor MemU32 0x71300014 = 0x00000000 30 monitor MemU32 0x7120000C = 0x00000000 31 monitor MemU32 0x7130000C = 0x00000000 32 monitor MemU32 0x71200F00 = 0x00000000 33 monitor MemU32 0x71300F00 = 0x00000000 34 # set clock 35 monitor MemU32 0x7e00f900 = 0x0000801e 36 monitor MemU32 0x7e00f000 = 0x0000ffff 37 monitor MemU32 0x7e00f004 = 0x0000ffff 38 monitor MemU32 0x7e00f020 = 0x01043310 39 monitor MemU32 0x7e00f00C = 0xc2150601 40 monitor MemU32 0x7e00f010 = 0xc2150601 41 monitor MemU32 0x7e00f024 = 0x00000003 42 monitor MemU32 0x7e00f014 = 0x00200102 43 monitor MemU32 0x7e00f018 = 0x00000000 44 monitor MemU32 0x7e00f01C = 0x14000007 45 #config sdram 46 monitor MemU32 0x7e00f120 = 0x00000008 47 monitor MemU32 0x7e001004 = 0x00000004 48 monitor MemU32 0x7e001010 = 0x0000040f 49 monitor MemU32 0x7e001014 = 0x00000006 50 monitor MemU32 0x7e001018 = 0x00000001 51 monitor MemU32 0x7e00101c = 0x00000002 52 monitor MemU32 0x7e001020 = 0x00000006 53 monitor MemU32 0x7e001024 = 0x0000000a 54 monitor MemU32 0x7e001028 = 0x0000000c 55 monitor MemU32 0x7e00102c = 0x0000018f 56 monitor MemU32 0x7e001030 = 0x0000000c 57 monitor MemU32 0x7e001034 = 0x00000002 58 monitor MemU32 0x7e001038 = 0x00000002 59 monitor MemU32 0x7e00103c = 0x00000002 60 monitor MemU32 0x7e001040 = 0x00000002 61 monitor MemU32 0x7e001044 = 0x00000013 62 monitor MemU32 0x7e001048 = 0x00000013 63 monitor MemU32 0x7e00100C = 0x00010012 64 monitor MemU32 0x7e00104C = 0x00000b45 65 monitor MemU32 0x7e001200 = 0x000150f8 66 monitor MemU32 0x7e001304 = 0x00000000 67 monitor MemU32 0x7e001008 = 0x000c0000 68 monitor MemU32 0x7e001008 = 0x00000000 69 monitor MemU32 0x7e001008 = 0x00040000 70 monitor MemU32 0x7e001008 = 0x00040000 71 monitor MemU32 0x7e001008 = 0x000a0000 72 monitor MemU32 0x7e001008 = 0x00080032 73 monitor MemU32 0x7e001004 = 0x00000000 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 12000 79 break _start 80 load

10599222

初始化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 = 0x70000013 23 #disable watchdog kangear 關閉看門狗 24 monitor MemU32 0x53000000 = 0x00000000 25 monitor sleep 10 26 #disable interrupt kangear 關閉中斷 27 monitor MemU32 0x4A000008 = 0xffffffff 28 monitor MemU32 0x4A00001C = 0x7fff 29 # set clock 30 #initialize system clocks --- locktime register 31 monitor MemU32 0x4C000000 = 0xFF000000 32 #initialize system clocks --- clock - divn register 33 monitor MemU32 0x4C000014 = 0x5 #CLKDVIN_400_148 34 #initialize system clocks --- mpll register 35 monitor MemU32 0x4C000004 = 0x7f021 # default clock 36 #config sdram 37 monitor MemU32 0x53000000 0x00000000 38 monitor MemU32 0x4A000008 0xFFFFFFFF 39 monitor MemU32 0x4A00001C 0x000007FF 40 monitor MemU32 0x53000000 0x00000000 41 monitor MemU32 0x56000050 0x000055AA 42 monitor MemU32 0x4C000014 0x00000007 43 monitor MemU32 0x4C000000 0x00FFFFFF 44 monitor MemU32 0x4C000004 0x00061012 45 monitor MemU32 0x4C000008 0x00040042 46 monitor MemU32 0x48000000 0x22111120 47 monitor MemU32 0x48000004 0x00002F50 48 monitor MemU32 0x48000008 0x00000700 49 monitor MemU32 0x4800000C 0x00000700 50 monitor MemU32 0x48000010 0x00000700 51 monitor MemU32 0x48000014 0x00000700 52 monitor MemU32 0x48000018 0x0007FFFC 53 monitor MemU32 0x4800001C 0x00018005 54 monitor MemU32 0x48000020 0x00018005 55 monitor MemU32 0x48000024 0x008E0459 56 monitor MemU32 0x48000028 0x00000032 57 monitor MemU32 0x4800002C 0x00000030 58 monitor MemU32 0x48000030 0x00000030 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

通過上面的設置以後,就能夠開始調試了

5、開始調試

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

17378682

不然會出現相似下面的錯誤:

17347248

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

準備進入調試界面

17441270

選擇【yes】

17516977

調試界面以下:

17575057

點擊【F5】是"Step Into"

【F6】是"Step Over"

等等,這裏能夠查看寄存器的值,沒存的值等等。

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

相關文章
相關標籤/搜索