在VIM中實現對嵌入式軟體的調試

2020-12-11 電子產品世界

引 言
GNU免費提供了一整套工具鏈,為嵌入式Linux程序的開發和調試提供了完整的支持。其強大的gdb調試工具可以方便地對嵌入式平臺上的程序進行跟蹤調試;而Linux下強悍的VIM編輯器,不僅可以方便地調用make文件對代碼進行編譯,而且通過腳本的配置還可輕鬆地成為高效的代碼編輯環境。流傳著這樣一種說法,「世界上的程式設計師分三種,一種使用Emacs,一種使用VIM,剩餘的是其他。」不去辯論這句話的對與錯,單純從字面意義上來理解,也足見VIM的魅力了。因此,在VIM中實現嵌入式軟體的調試,我們便得到了一個高效、穩定的嵌入式Linux的開發環境。

1 gdb對嵌入式軟體的調試模式
許多非Linux的嵌入式系統已經在使用gdb與gdbstub對目標板進行遠程「交叉調試」;然而,因為Linux內核實現了ptrace()系統調用,所以在對嵌入式應用程式進行調試的時候並不需要gdb stub,而採用gdb套件提供的gdb伺服器來對目標板上的嵌入式應用程式進行調試。
目標板上的gdb服務端gdbserver與主機上的gdb調試器的通信方式主要有兩種:使用串口通信的「交叉串行連接」和使用網口的「TCP/IP」聯機。鑑於PC端的方便性以及串口資源有限,尤其是現在的筆記本電腦甚至已經不存在串口,所以,大多採用TCP/IP方式,即PC主機與目標板通過網線直連或者PC機與目標板通過路由或者hub等組成區域網通信。這種調試模式如圖1所示。

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

2 在VIM中實現對嵌入式軟體的調試
我們知道,gdb的功能雖然強大,但由於其基於命令行的操作,所以調試過程不直觀,而且Windows下的調試環境集調試與代碼編輯為一體,當出現bug的時候,可以方便地對原始碼進行修改,相比而言,gdb在這方面又有失色。既然VIM和gdb的功能如此強大,又完全免費,而且完全適合嵌入式這種特殊的開發模式,那麼有沒有將二者強強聯合的方法呢?有,那就是vimgdb。
vimgdb是給VIM提供一個可選特性的補丁。它可以在VIM編輯器裡提供完整的gdb調試器支持,比如設置斷點、查看變量值、gdb命令補全等等,並且這些操作可以在VIM中直觀地顯示出來。下面闡述在VIM中實現時嵌入式軟體調試的具體過程。
2.1 系統環境及所用軟體包版本
PC作業系統:Ubuntu8.10。
PC編譯器:GNU gcc4.3.1。
PC調試器:GNU gdb6.8。
目標板Linux內核:2.6.13。
目標板CPU:S3C2440(ARM9架構)。
交叉編譯器:arm―linux―gcc3.4.1。
交叉調試器:自編譯GNU gdb6.8。
目標板gdb服務端:自編譯GNU gdbserver6.8。
跨平臺開發工具路徑:~/build-tools/arm―linux,且已經設置好系統路徑變量。
測試代碼及程序路徑:~/test,包含程序代碼test.c及Makefile。
所用軟體包存放路徑:~/down。
所用軟體包:VIM編輯器源碼vim一7.1.tar.bz2、vimgdb71-1.13.tar.gz、GNU gdb源碼gdb-6.8.tar.bz2。
2.2 對VIM源碼打vimgdb補丁並編譯安裝
①運行下面的命令,解壓VIM源碼及vimgdb補丁文件,並對VIM源碼打補丁:


執行完上述操作後,VIM將會被安裝在/usr/local路徑下。如果想修改安裝路徑,可在上述的編澤安裝前,打開~/down/vim71/src/Makefile文件的862行安裝路徑選項並修改。如將VIM安裝在/usr路徑下,則將862#prefix=$(HOME)修改為862 prefix=/usr。
③安裝vimgdb的runtime文件,運行下面的命令:
ca~/down/vimgdb
tar zxfv vimgdb_runtime.tgz―C/usr/share/vim/vimfiles
2.3 建立交叉調試嵌入式軟體的gdb組件
①編譯嵌入式gdh調試器服務端gdbserver,運行如下的命令:


將當前目錄下的gdbserver拷貝到目標板文件系統的/bin目錄下,以備交叉調試用。
②編譯安裝交叉調試器gdb,運行如下命令:


注意,這裡的prefix的值必須填寫絕對路徑,而不能用「~」來替代用戶路徑/home/popeye,否則會提示prefix路徑賦值錯誤。然後運行:
make
這個過程中,可能會出現圖2所示的錯誤。
出現這種情況的原因是,編譯規則中選擇了警告選項「-Werror」。它會將所有的警告轉變為錯誤,而且出現的有關「getwd」函數的提示信息表明,這裡編譯器檢測到的應該是一個「警告」,而不是真正的語法錯誤。所以,需改正編譯選項:
cd~/down/gdb一6.8/gdb
gedit Makefile
注意,此處的MaKefile是在執行完上述的make命令後才產生的,在最初的代碼包裡不含有這個文件。對文什的145行進行修改,去掉WERROR_CFLAGS的賦值,即


2.4 在VIM中實現對嵌入式軟體調試前的準備
在嵌入式軟體開發過程中的習慣做法是:首先,在PC機上編譯調試程序,如果在PC機上運行正常,再進行交叉編澤。然後,將軟體移植到目標板上,如果在目標板上出現bug,再用交叉調試器arm―linux―gdb進行調試。
簡而佔之,對嵌入式軟體的調試過程包含兩個部分:PC機上調試部分和嵌入式平臺上的凋試部分。在這個過程中,可能既用到PC機上的調試器gdb,又用到交叉調試器arm―linux―gdb,而對應的是同一個原始碼程序和運行在不同平臺上的兩個可執行程序。同時涉及兩個調試器轉換的問題,但vimgdb只能對寧符串為「gdb」的系統命令進行調用。下面,將這個比較困難的問題簡單化:
①編輯適用的Makefile,控制生成對應不同平臺的可執行程序:
cd~/test
其中,test.c為實驗代碼,Makefile為編譯規則,我們簡單編寫Makefile的內容為:


當執行「make test―pc」命令時,就會生成可運行在PC機上的可執行程序;執行「make test一em」則生成可運行在嵌入式目標板上的可執行程序。
②修改vimgdb的快捷鍵映射腳本,在VIM中實現PC調試器與交叉調試器的輕鬆切換。
首先,針對vimgdb只能對字符串為「gdb」的系統命令進行調用,做如下的工作:

其次,編輯文件/etc/vim/macros/gdb_mappings.vim。主要修改和添加的部分為:

linux作業系統文章專題:linux作業系統詳解(linux不再難懂)

相關焦點

  • ARM7嵌入式系統中啟動程序的實現
    在我們研製開發基於ARM7的嵌入式系統過程中,發現技術難點主要在於系統啟動程序的編寫,為此本文詳細論述了在arm7基礎上開發嵌入式系統
  • 如何調試複雜的實時嵌入式系統?
    ADI公司  隨著實時嵌入式系統的複雜程度不斷提高,低效率的調試方法的成本日益增加。鑑於當前嵌入式應用的複雜性還有繼續上升的趨勢,對這些系統的調試將成為加速產品上市和提供魯棒性最終產品的關鍵因素。隨著應用對多線程和中斷嵌套的使用,開發商的大部分時間目前都花在調試上。
  • 基於開源軟體的嵌入式網絡列印伺服器
    為了在一個區域網環境中共享使用一臺USB口印表機,需要為該印表機配備一臺伺服器,然後通過共享設置實現印表機的網絡共享。這種方式有幾個方面的缺陷:需要佔用一臺伺服器資源;耗電;容易中毒導致無法正常列印;由於長時間不間斷運行,出現故障的概率高,導致無法列印;佔用辦公空間。
  • VIM編輯器學習
    第一關是理解vim的設計思路,vim設計之初就是整個文本編輯都用鍵盤而非滑鼠來完成,鍵盤上幾乎每個鍵都有固定的用法,且vim的製作者希望用戶在普通模式(也就是命令模式,只可輸入命令)完成大部分的編輯工作,將此模式設計為默認模式,初學者打開vim,如果直接輸入單詞,結果就會滴滴亂響,這是因為vim把用戶輸入的單詞理解為命令了。
  • 嵌入式系統設計中的「團隊技能」
    本文引用地址:http://www.eepw.com.cn/article/164528.htm  首先,嵌入式系統的設計經常是一項很艱巨的任務。一個複雜的系統。例如,一個電機控制的嵌入式系統在由一個開發團隊來負責的時候,有的工程師會負責RTOS的移植、調度等工作,有的專門負責硬體電路和接口設計,有的專門負責電機的控制等等。
  • 嵌入式行業發展狀況_嵌入式行業人才需求_嵌入式系統就業前景分析
    嵌入式系統用在一些特定專用設備上,通常這些設備的硬體資源(如處理器、存儲器等)非常有限,並且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。按照行業細分,嵌入式產品主要分布在消費類電子、通信、醫療、安全等行業(圖1)   嵌入式軟體產業發展迅猛,已成為軟體體系的重要組成部分。
  • vim命令使用總結
    vim簡介vim 是linux系統自帶的文本編輯器。2.2.2 vim查找默認是大小寫敏感查找在查找模式中加入\c表示大小寫不敏感查找,\C表示大小寫敏感查找例如:/foo\c 會查找所有foo、FOO、fOOD等2.2.3
  • Linux系統中yum安裝軟體的路徑查看方法
    安裝vim軟體:yum install vim -y3. 查看vim軟體的安裝包:4. 查看安裝包的安裝路徑:第三步查詢到vim有三個安裝包,我們根據需要查詢這些安裝包的安裝路徑。查詢第一個安裝包的安裝路徑:就會列出vim-minimal-8.0.1763-13.el8.x86_64安裝包的詳細安裝路徑,其它同理。
  • 軟體調試與軟體測試有什麼區別?
    1、目的不同     軟體測試的目的是發現錯誤,至於找出錯誤的原因和錯誤發生的地方不是軟體測試的任務,而是調試的任務.調試的目的是為了證明程序的正確,因此它必須不斷地排除錯誤.它們的出發點不一樣。前者是挑錯,是一種挑剔過程,屬於質盤保證活動。
  • 計算機三級考試嵌入式系統開發技術題庫(有答案) - 前程網(365...
    嵌入式系統的嵌入性特性,是指系統需要與物理世界中特定的環境和設備緊密結合。     2.嵌入式系統開發中的角色可以分為晶片製造商、設備製造商、作業系統提供者、系統集成商、獨立軟體開發商、獨立硬體開發商、最終用戶。
  • 嵌入式軟體底層開發的框架陳述
    嵌入式軟體底層開發的框架陳述 羽林君 發表於 2020-12-22 14:57:27 在底層代碼編寫中,初始的框架設計總會面臨選擇,針對實際的硬體使用環境
  • Cortex-M3平臺上lwIP+AJAX的Web嵌入式應用
    摘要:本文基於lwIP乙太網協議棧將AJAX動態網頁設計技術應用於嵌入式Cortex-M3平臺,實現Web嵌入式應用相比於CGI技術,AJAX實現簡易,移植性強,可支持傳統IE或是手機等不同的網頁訪問終端用戶。所選Cortex-M3平臺內部集成PHY,lwIP協議棧及實時作業系統FreeRTOS均是開源、免費,整個系統成本在60RMB以內,對於成本較敏感的網絡互聯產品提供了一種解決方案,並給出了硬體原理圖及軟體代碼。
  • 總線實現片內硬體調試支持單元設計
    在整個SoC 的硬體設計過程中,從第一次投片到最後成功的實現所有功能,硬體調試的時間已經接近整個時間的35%,而且這個數字隨著集成度的提高還會增加。  圖2 AH B 總線系統互聯結構  1. 2 T race Buf fer  為了實現引言中提到的調試的可觀察性,本系統中就必須具備能夠記錄總線通信信息以及指令執行情況的模塊
  • 秒變調音師,超級音雄K歌音效卡調試軟體,免費開放
    目前中國市場還沒有一個真正屬於自己的調音軟體,普通的正版或非正版軟體也存在著操作困難、體驗感差等諸多問題。為此中國的音頻技術團隊傾力打造一款屬於中國的調音軟體——超級音雄,讓你化身專業調音師。用戶需要花很長時間去了解和調試,並且在使用過程中會遇到很多難以解決的問題。比如用戶一旦更新系統或電腦重置,就需要重新調試音效卡。這不僅需要用戶對計算機硬體要求很高,而且導致用戶體驗感不佳。超級音雄技術團隊經過長時間的研究和設計,攻堅破難最終研發出了簡單易上手的操作流程,用戶只需一鍵安裝,之後即可立即使用,簡單的操作代替了繁瑣的過程,極大的減輕了用戶的學習成本,節約時間,輕鬆成為專業調音師。
  • 嵌入式軟體產品名稱與開票名稱不符應如何退稅
    a企業是一家軟體開發公司,銷售其自行開發生產的嵌入式軟體產品,並享受對其增值稅實際稅負超過3%的部分實行即徵即退政策,a公司在銷售軟體產品的時候,開票商品名稱為:智能板 (含ab變送器測量系統),軟體著件權上的名稱為「ab變送器測量系統」,主管稅務機關在審核時認定a公司智能板產品與軟體著作權上的名字差異較大
  • 嵌入式軟體產品即徵即退稅惠政策為廚電企業注入發展「芯」動力
    南方網訊(記者/吳詩航 通訊員/杜穎仙)9月1日,華帝股份有限公司(以下簡稱「華帝」)收到了稅務部門退回的嵌入式軟體產品即徵即退增值稅260多萬元,這是華帝自2019年8月取得計算機軟體著作權登記證書及軟體檢測機構出具的檢測證明,並完成增值稅即徵即退資格備案後第11個月享受到該項稅收優惠政策
  • vim常用命令有哪些?Linux入門學習
    vim是一個文本編輯程序,沒有菜單,只有命令,且命令繁多。在運維培訓學習中,vim編輯器都有哪些知識點?有哪些命令需要掌握?(vsp)+文件名水平或垂直拆分窗口顯示兩個不同的文件退出分屏模式命令:wqall保存並退出所有屏幕命令:wq保存並退出光標所在的屏幕Ctrl+ww切換兩個屏幕 vim
  • 讀軟體工程專業選擇嵌入式方向是否有較好的就業前景
    首先,軟體工程專業近些年來由於有較好的就業表現,所以一直是計算機相關專業當中的熱門選擇,同時嵌入式方向未來在物聯網發展的推動下,也會有比較廣闊的就業前景。所以,在軟體工程專業學習嵌入式方向是不錯的選擇。
  • 軟體開發究竟包含哪些程式語言
    軟體開發是根據用戶要求建造出軟體系統或者系統中的軟體部分的過程。軟體開發是一項包括需求捕捉,需求分析,設計,實現和測試的系統工程。軟體一般是用某種程序設計語言來實現的。通常採用軟體開發工具可以進行開發。軟體分為系統軟體和應用軟體。
  • 基於4G的嵌入式數據通信系統研究
    1 主要技術分析  下面對基於4G-Ready 與Wi-Fi 架構的嵌入式系統中應用的主要技術予以分析。這裡設計與分析的嵌入式系統採用分離結構GPS 接收機。  1.2 嵌入式(Embedded Technology)技術  嵌入式系統由32 位字長的微處理器、ROM 存儲器、RAM存儲器和信息I/O 接口等模塊和部件組成,嵌入式Linux 作業系統存放在ROM 中。