娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年07月07日(星期一)

2021年07月07日 | gdbserver遠程調試嵌入式linux應用程序方法

發布者:SparklingStar 來源: eefocus關鍵字:gdbserver  遠程調試  嵌入式linux 手機看文章 掃描二維碼
隨時隨地手機看文章

簡介:嵌入式linux應用程序的開發一般都是在linux里面編寫好代碼,并用交叉編譯器arm-linux-gcc編譯好之后再下載到板子上運行。如果建立了遠程調試(能夠在PC機ubuntu中調試板子中的linux應用程序),這樣對于開發程序是極其方便的。以下是摘自網絡上的一些方法。其中加入了自己所遇到的一些問題,并提出了解決方法。


1、首先建立nfs文件系統,讓PC機ubuntu上的文件系統這里假設路徑為:/home/xxx/work/可以掛載到板子上去。方法可以見本博的另一篇文章。其中IP環境是PC機win7的IP為192.168.0.11(這個不重要,只要保證在同一個網段即可)。虛擬機中IP為:192.168.0.57。下位機中的IP為192.168.0.16。


2、安裝交叉編譯環境arm-linux-gcc等工具。方法可以網上找。這里假設已經安裝好,并且版本是3.4.1。路徑為:/usr/local/arm/3.4.1/bin。并建好環境變量。


3、下面我們就來測試一個簡單的例子。


/*Hello.c*/

#include

int main()

{

printf(“hello word!n”);

return 0;

}

程序輸好以后確認無誤,保存。進入程序文件所在目錄

# arm-linux-gcc hello.c –o hello


將hello文件放入nfs共享目錄中/home/xxx/work/中,并在串口終端中執行hello程序./hello。


4、安裝gdb和gdbserver


要經行gdbserver遠程調試,還必須安裝gdb遠程調試工具:

gdb的源代碼包可以從http: //ftp.cs.pu.edu.tw/Linux/sourceware/gdb/releases/下載,我下載的是gdb-6.6。下載到某個目錄,筆者下載到自己的用戶目錄

下載完后,進入該目錄,配置編譯步驟如下:

#tar jxvf gdb-6.6-tar-bz2

#cd gdb-6.6

#./configure --target=arm-linux --prefix=/usr/local/arm-gdb -v

#make


執行到此步之后我出現了如下的錯誤


cc1: warnings being treated as errors

/root/tools/gdb-6.6/bfd/elf32-arm.c: In function 'find_thumb_glue':

/root/tools/gdb-6.6/bfd/elf32-arm.c:2452: error: ignoring return value of 'asprintf', declared with attribute warn_unused_result

/root/tools/gdb-6.6/bfd/elf32-arm.c: In function 'find_arm_glue':

/root/tools/gdb-6.6/bfd/elf32-arm.c:2485: error: ignoring return value of 'asprintf', declared with attribute warn_unused_result


這個由于返回值沒有被接收 導致編譯中斷 這是因為makefile中加入了-Werror導致將警告當成了錯誤


將下列文件中的-Werror選項刪除后保存即可重新編譯成功

bfd/Makefile:185:WARN_CFLAGS = -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror

opcodes/Makefile:175:WARN_CFLAGS = -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror


接下來執行:


#make install

#export PATH=$PATH:/usr/local/arm-gdb

進入gdbserver目錄(在gdb目錄下):

#./configure --target=arm-linux –host=arm-linux

#make CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc

(這一步要指定arm-linux-gcc的位置,可能跟你的不一樣)


這時,可能又會遇到一個錯誤:


/usr/local/arm/3.4.1/bin/arm-linux-gcc -c -Wall -g -O2 -I. -I. -I./../regformats -I./../../include -I../../bfd -I./../../bfd linux-arm-low.c


linux-arm-low.c:35:21: sys/reg.h: No such file or directory


因為sys/reg.h在ubuntu中 /usr/include/sys/reg.h目錄中,所以可以加上 -I/usr/include


然后單獨運行:/usr/local/arm/3.4.1/bin/arm-linux-gcc -c -Wall -g -O2 -I. -I. -I./../regformats -I./../../include -I../../bfd -I./../../bfd -I/usr/include linux-arm-low.c


OK!!!!!


再運行一遍


#make CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc


沒有錯誤的話就在gdbserver目錄下生成gdbserver可執行文件,把它燒寫到flash的根文件系統分區,或通過nfs mount的方式都可以。只要保證gdbserver能在開發板上運行就行。


5、安裝必要的庫libthread_db-1.0.so


如果你的嵌入式linux沒有安裝libthread_db-1.0.so這個庫的話,在板子中運行gdbserver會提示錯誤。解決方法如下:


將你的arm-linux-gcc的交叉編譯環境中的/usr/local/arm/3.4.1/arm-linux/lib下的libthread_db-1.0.so文件拷貝到下位機TE2440開發板的根目錄下的/lib中去(可以先放入nfs共享文件夾中然后再在串口終端中輸入拷貝命令)。并在/lib目錄建立一個一個指向libthread_db-1.0.so的軟鏈接libthread_db.so.1。


命令如下:#ln -slibthread_db-1.0.solibthread_db.so.1


執行完之后,再次運行gdbserver ./gdbserver之后不會再提示找不到庫了。


6、調試hello程序


要進行gdb調試,首先要在目標系統上啟動gdbserver服務。在gdbserver所在目錄下輸入命令:(串口終端中)

#cd /tmp

#./gdbserver 192.168.2.57:2345 hello

192.168.2.57為宿主機IP,在目標系統的2345端口開啟了一個調試進程(避免使用1024以下的端口號),hello為要調試的程序。

出現提示:

Process /tmp/hello created: pid="80"

Listening on port 2345


在虛擬機ubuntu中的終端里面輸入


#cd /


#export PATH=$PATH:/usr/local/arm-gdb/bin

#arm-linux-gdb hello

(gdb) target remote 192.168.2.223:2345

(192.168.2.223為開發板IP)

出現提示:

Remote debugging using 192.168.2.223:2345

[New thread 80]

[Switching to thread 80]

0x40002a90 in ??()

同時在串口中終端下提示:

Remote debugging from host 192.168.2.100

(gdb)

連接成功,這時候就可以輸入各種gdb命令如list、run、next、step、break等進行程序調試了。


至于出現了0x40002a90 in ??()的問題是因為arm-linux-gdb的共享庫路徑沒有進行設置。找不到庫文件。通過輸入下列語句可以解決問題。


set solib-absolute-prefix /usr/local/arm/4.4.3/arm-none-linux-gnueabi/sys-root/


關鍵字:gdbserver  遠程調試  嵌入式linux 引用地址:gdbserver遠程調試嵌入式linux應用程序方法

上一篇:基于ARM+DSP的智能網絡視頻監控終端設計
下一篇:基于圖像傳感器的CPLD視覺系統設計

推薦閱讀

自日本經濟經歷“失去的20年”以來,以松下、索尼、東芝、夏普等為代表的日本家電企業競爭力持續下降。其中,最典型的莫過于松下電器。如今在中國市場,松下電器市場份額由輝煌時期的20%跌至2%,霸主地位已失,甚至被擠出電器行業的第一梯隊。?作為日系家電企業的代表,松下的衰敗令人惋惜的同時,也惹人探究。在低潮期,盡管松下一直在積極探索轉型,...
6月23日,國內首個“多站合一”全直流預制式數據中心在蘇州同里區域能源互聯網示范區投運。該中心也是江蘇綜合能源數據平臺的重要組成部分。 作為江蘇綜合能源服務平臺的數據“收集池”和“中轉站”,各類能源數據在這里匯總。除電力系統內部數據外,該中心還將采集宏觀經濟、氣象等外部數據,客戶側設備用能數據,以及園區級專項子系統、社會能效服務...
1.原理:通過定時器每隔一段時間觸發一次DAC轉換,然后通過DMA發送正玄波碼表值給DAC.當需要改變頻率HZ時,只需要修改定時器頻率即可(最高只能達到20KHz)當需要改變正玄波的正峰峰值/負峰峰值時,只需要修改正玄波碼表即可 2.實現代碼如下所示(采用的是定時器2,DAC引腳是PA4)#define HZ(x) (u16)(72000000/sizeof(Sine12bit)*2/x) //計算Hz#define DA...
作為一款手持示波器,會經常應用在外場環境,這就要求設備在設計和定義中,要全面考慮外場的環境和條件,那RTH針對外場環境有哪些不一樣的提高呢。 高清電容屏無論是臺式示波器還是手持示波器,屏幕作為波形顯示的載體,無疑都是示波器重要的部件,而外場測試由于環境的差異,對示波器的顯示就顯得格外重要。RTH示波器采用了一塊7英寸WVQA(800*480)的電...

史海拾趣

問答坊 | AI 解惑

用運放構成電壓跟隨器應注意的幾個問題

本帖最后由 paulhyde 于 2014-9-15 04:12 編輯 用運放構成電壓跟隨器應注意的幾個問題  …

查看全部問答∨

請教關于 VIP 的問題

現有幾個altera VIP的問題想向各位大俠請教,謝謝!模塊目的:視頻轉換(主要是指顯示大小的轉換)所用到的VIP:(芯片adv7180)--> clocked_video_in --> scaler  --> clocked_video_out --> (芯片adv7123)問題:如上面所示,我 ...…

查看全部問答∨

關于NMEA0183語句GPRMC中的速度信息

1、GPRMC中的速度單位是什么?我在網上查的有的說是節,有的說是海里,究竟是哪個,我這里也沒條件測試 2、GPRMC中的速度范圍是什么?網上查的是000.0~999.9,但我收到的是0.00,小說點后面的位數怎么對不上?…

查看全部問答∨

有使用瑞薩公司芯片做開發的嗎?是什么公司。我們現在培訓使用的是瑞薩的芯片。

有使用瑞薩公司芯片做開發的嗎?是什么公司,我是軟件學院的,我們學校請了上海巨通公司人員過來培訓的,重點學的是R8C 和M16 系列的。現在大四了,面臨著實習,想找一家這個方向的公司實習,做畢業設計!…

查看全部問答∨

STM32DSP函數庫--補丁

在ST更新STM32 DSP庫之前,需要用到256點和1024點FFT運算的同學,不妨用以下的補丁打上。1. 現有的DSP庫函數中,64點FFT是正確的。2. 256/1024點需要更改以下幾個地方(1)NPT的定義IAR assembly file: #define&n ...…

查看全部問答∨

怎樣才能提升逆變器的可靠性?

  逆變器可靠性至關重要,下面分享一些逆變器開發心得以及可靠性改善技巧,例如關鍵電子元器件參數和封裝對可靠性的影響、結構設計問題、散熱問題、對不同負載的適應性、MOS管的并聯以及電路保護問題。 電容、負載適應性與散熱 我們知道 ...…

查看全部問答∨

Altera 時鐘問題 PLL和直接使用的信號質量差別

現在需要用FPGA產生一個時鐘,我現在的做法是直接在代碼里 assign clk_out=clk 也就是把PIN_28的時鐘直接引到需要的I/O PIN上了,這樣我在那個I/O PIN上 測得的是20MHz,但已經不是方波了,是個類似正弦曲線的波,上升沿時間 和下降 ...…

查看全部問答∨

【MSP430共享】基于改進時差法的超聲流量計

利用時差法的改進算法設計出超聲流量計 , 從測量原理上提高了流量測量的精度 , 同時給出以MS P 4 3 0單片機為核心的流量測量系統的硬件電路設計, 著重敘述了超聲波發射與接收電路的具體實 現 ,并提 出低功耗的設計方法。  [ 本帖最后由 ...…

查看全部問答∨

求大神指導小弟一個不理解的地方,關于輸出PWM波的

#include void main(void){ WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR |= 0x0C; // P1.2 and P1.3 output P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 options CCR0 = 1023; // PWM Period CCTL1 = OUTMOD_7; // CCR1 reset/set CCR1 = 768; // P ...…

查看全部問答∨

LPC1500體驗+(6)基于LPC15xx的智能自學習萬用紅外遙控器——全原創項目

本帖最后由 mars4zhu 于 2014-9-25 23:46 編輯 LPCXpresso1549試用報告——基于LPC15xx的智能自學習萬用紅外遙控器 文檔編號AN-0002-A0關鍵字LPCXpresso1549,  LPC1549, Keil MDK,萬用紅外遙控,智能遙控器,自學習摘要本文記述 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 湘西| 连南| 彰化县| 平潭县| 甘谷县| 建始县| 金塔县| 灵台县| 滨海县| 安阳县| 新乡县| 岫岩| 米易县| 华容县| 济宁市| 龙海市| 时尚| 巴楚县| 乐昌市| 哈尔滨市| 军事| 屏山县| 莱州市| 凉山| 大冶市| 海盐县| 留坝县| 荣成市| 米泉市| 芮城县| 云阳县| 长治市| 天峨县| 泰顺县| 巫溪县| 天水市| 南京市| 上虞市| 上思县| 西乌| 唐山市|