DM8168(385)GDB交叉調試環境搭建一

DM8168(385)GDB交叉調試環境搭建
1.交叉調試器製作(利用gdb-7.7.tar.gz)
1.1 下載GDB源代碼
http://ftp.gnu.org/gnu/gdb/
安裝gdb-7.7,實際測試 gdb-6.5和gdb-7.5編譯過不去,看來選擇高版本比較省事.
1.2 解壓並配置環境變量
這裏寫圖片描述
這裏寫圖片描述
1.3 修改代碼 /gdb-7.7/gdb/remote.c
這裏寫圖片描述
這裏寫圖片描述
1.4 配置編譯環境+make+make install
root@ma-ThinkPad-T430:/home/gdb-7.7# ./configure –target=arm-arago-linux-gnueabi –prefix=/usr/local/arm-a8/bin
……
checking whether to enable maintainer-specific portions of Makefiles… no
configure: creating ./config.status
config.status: creating Makefile
root@ma-ThinkPad-T430:/home/gdb-7.7# make
這裏寫圖片描述
root@ma-ThinkPad-T430:/home/gdb-7.7# make install
這裏寫圖片描述
在/usr/local/arm-a8/bin下查看
這裏寫圖片描述
至此我們在PC端使用的GDB交叉調試器製作完成
2. 調試服務器製作
2.1 進入
cd /home/gdb-7.7/gdb/gdbserver
2.2 配置
chmod u+x configure
./configure –target=arm-arago-linux-gnueabi –prefix=/usr/local/arm-a8/bin –host=arm-linux
2.3 編譯
make CC=arm-arago-linux-gnueabi-gcc (完了在當前目錄生成 gdbserver、gdbreplay 等)
編譯過程中出現error: 表示沒有頭文件reg.h
這裏寫圖片描述
進入/usr目錄查找
這裏寫圖片描述
第一個即爲我們所找。於是:找到源文件linux-arm-low.c 129行修改如下:
include “/usr/include/i386-linux-gnu/sys/reg.h”
然後再次編譯
這裏寫圖片描述
注:如果編譯不過去,make clean一下再試,此時出現如下兩個文件:
這裏寫圖片描述
至此在開發板上運行的調試服務器製作完成。
3. 調試實戰
3.1 nfs掛載,下載到開發板上(gdbserver與gdbreplay)
3.2 PC端寫一個小程序,進行調試
源文件:

#include <stdio.h>

int sum(int n)
{
    int  res=0;

    (n>0)&&(res=n+sum (n-1));

    return  res;
}

int main(int argc, char *argv[])
{
    printf("sum(10)=%d\n",sum(10));
    return 0;
}

Makefile文件:

#
sum:sum.o
    arm-arago-linux-gnueabi-gcc -g  -o $@ $^
%.o:%.c
    arm-arago-linux-gnueabi-gcc -g -c $^

clean:
    rm -rf *.o *~ 
    rm -rf sum 

這裏寫圖片描述
3.3 登錄開發板與PC nfs共享目錄,執行
root@ti81xx:/mnt/gdb_debug# gdbserver 192.168.1.3:1234 sum
注意:gdbserver和gdbreplay必須放於此目錄,運行正確會提示監聽端口(如下圖)。
3.4 在PC端共享目錄執行
root@ma-ThinkPad-T430:/home/dm385_sdk/bsp_share/gdb_debug# arm-arago-linux-gnueabi-gdb sum
我擦,居然提示有錯誤,發現是Python2.6的庫找不到。
這裏寫圖片描述
然後去/usr/lib中查找,發現確實沒有2.6的,之後2.7的,怎麼破?對,軟連接,如下圖:
這裏寫圖片描述
這裏寫圖片描述
然後再次執行gdb,發現OK。遠程連接目標板:
target remote 192.168.1.8:1234
這裏寫圖片描述
整個調試過程如下:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章