色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>嵌入式開發>嵌入式Linux內核調試技術解析

嵌入式Linux內核調試技術解析

2017-10-30 | rar | 0.3 MB | 次下載 | 1積分

資料介紹

近年處理器技術發展速度加快,嵌入式領域發生了翻天覆地的變化。特別是網絡的普及,消費電子異軍突起,嵌入式與互聯網成為最熱門的技術。在所有操作系統中,Linux是發展很快、應用很廣泛的一種操作系統。Linux的開放性以及其他優秀特性使其成為嵌入式系統開發的首選。
  嵌入式系統開發所面臨的問題
  嵌入式軟件開發有別于桌面軟件系統開發的一個顯著的特點是,一般需要一個交叉編譯和調試環境,即編輯和編譯軟件在主機上進行,編譯好的軟件需要下載到目標機上運行 ,主機和目標機之間建立起通訊連接,并傳輸調試命令和數據。由于主機和目標機往往運行著不同的操作系統,而且處理器的體系結構也彼此不同,這就提高了嵌入式開發的復雜性。
  總的來說,嵌入式開發所面臨的問題主要表現在以下幾個方面。
  涉及多種CPU 及多種OS
  嵌入式的CPU或處理器包括MIPS、PPC、ARM,XScale等不同的架構,這些處理器上運行的操作系統也有VxWorks、Linux、μC/OS、WinCE等多種。在一個企業之內,可能會同時使用好幾種處理器,甚至幾種嵌入式操作系統。如果需要同時調試多種類型的電路板,那復雜性是可想而知的。這也是我們選用瑞士Abatron公司的BDI2000的原因之一,它是一款功能強大的JTAG/BDM通用仿真器。它支持:PPC/MIPS/ARM/XSCALE/ CPU12/CPU32/M-CORE/ColdFire等多種處理器,支持Windows/Linux系統平臺,以及多種第三方調試器,并且對Flash的燒寫也很簡單方便。
  開發工具種類繁多
  通常各種操作系統有各自的開發工具,在同一系統下開發的不同階段也會應用不同的開發工具。如在用戶的目標板開發初期,需要硬件仿真器來調試硬件系統和基本的引導程序,然后進行操作系統及驅動程序的開發調試。在調試應用程序階段可以使用交互式的開發環境進行軟件調試,在測試階段需要一些專門的測試工具軟件進行功能和性能的測試。在生產階段需要固化程序及出廠檢測等等。BDI2000可以適應開發的各個階段,節約企業的支出和簡化管理難度。
  對目標系統的觀察和控制
  由于嵌入式硬件系統千差萬別,軟件模塊和系統資源也多種多樣,要使系統能正常工作,軟件開發者必須要對目標系統具有完全的觀察和控制能力,例如硬件的各種寄存器、內存空間、操作系統的信號量、消息隊列、任務、堆棧等。
  此外,嵌入式系統變化更新比較快,對開發時間要求比較緊,需要一套功能強大的嵌入式軟件集成開發工具,用于嵌入式軟件開發的各個階段。美國 Ultimate Solution公司的LinuxScope-JTD調試器是一個很好的選擇,它專門用于配合BDI2000仿真器,特點是基于Eclipse的集成開發環境和插件技術;提供腳本定制功能實現目標機的特殊操作;提供Linux內核調試功能,容易修改和觀察硬件寄存器;增強的MI接口可識別硬件斷點及模塊跟蹤;具有標準調試特性;支持Linux應用程序的開發;以及Windows/Linux系統平臺。
  嵌入式Linux內核的調試
  編譯內核
  本文所調試的是MontaVista Linux,硬件是Intel Xscale PXA250。它擁有超過兩千多用戶和眾多的MontaVista Linux產品在市場上銷售,覆蓋從智能手機、高清電視、機器人、無線網絡設備到3G電信服務器等各種嵌入式應用。MontaVista Linux本身就是用BDI2000來開發調試的。
  進入內核源碼目錄下,即可配置完成相關選項并準備編譯。配置時不要選中KGDB(軟件基內核調試),否則會和BDI2000沖突。為了調試內核,需要在編譯時加入調試信息,否則將無法看到源代碼。修改內核源碼根目錄下的Makefile,在CFLAGS宏定義的末尾添加“–ggdb”選項,保存退出。這里加上gdb是為了更好的使代碼適合gdb調試器,另外注意Makefile中的優化設置,有些時候優化會調整代碼執行的順序,在內核的調試階段,不要加入優化選項。
  內核調試
  首先,配置BDI2000,確保目標機的正常初始化。通常來說,到了調試內核的階段,電路板的boot程序應該是正常的,可以利用boot來完成目標機的初始化;另一種方式是通過BDI的配置文件來完成。
  接下來就是下載代碼進行調試。如果代碼已經固化,那僅下載調試信息給仿真器即可;否則需要把代碼下載到RAM里運行,同時下載調試信息給仿真器。本文所用的是后一種方式。
  由于Linux運行之后會啟動MMU而使地址重映射,因此第一個斷點通常在函數start_kernel( ),而且只能設置為硬斷點。硬件斷點是非常有限的,有的處理器甚至只能設置一個。所以,在調試Linux內核時,使用普通的GDB進行斷點設置會非常不方便。LinuxScope可以很方便的切換斷點模式,并支持軟斷點,使斷點的設置不再受到限制,為調試Linux內核提供強有力的支持。具體步驟如下:
  1) BDI配置文件的斷點模式:soft
  2) LinuxScope配置默認的斷點模式:soft /hard 都可以
  3) 用BDI下載壓縮的內核:load 0x20000 zImage bin
  4) 把PC指針指到內核入口地址:ti 0x30000
  5) 運行LinuxScope,在start_kernel處設置硬件斷點
  6) go,停下來后再設置軟斷點即可
  模塊內核的調試
  我們使用BDI2000來調試Linux內核的另外一個重要原因,就是它可以支持調試內核模塊。內核模塊是一些可以讓操作系統內核在需要時載入和執行的代碼,這意味著它可以在不需要時由操作系統卸載。這種方式可以擴展操作系統內核的功能,而不需要重新啟動系統,這一點對調試驅動程序的工程師特別有用。因為如果驅動程序編譯進內核的話,會增加內核的大小,還要改動內核的源文件,而且不能動態的卸載,不利于調試,所以推薦使用模塊方式。
  調試Linux 2.4內核模塊
  Linux 2.4內核模塊的調試比較簡單,使用命令“insmod -m”來加載模塊。參數“-m”非常重要,它的功能是在把模塊加載到內存時產生一個加載map表。然后通過LinuxScope調試器加載相應的調試信息。例如:
  [root@lisl tmp]# insmod -m hello.o 》modaddr
  查看模塊的加載信息文件modaddr如下:
  .this 00000060 c88d8000 2**2
  .text 00000035 c88d8060 2**2
  .rodata 00000069 c88d80a0 2**5
  ……
  .data 00000000 c88d833c 2**2
  .bss 00000000 c88d833c 2**2
  ……
  在這些信息中,我們用到的只有.text、.rodata、.data、.bss。當然,把相關的信息輸入LinuxScope調試器,它會把以上地址信息加入到gdb中進行模塊功能的調試。
  這里需要注意的是對模塊進行編譯時,也需要增加“-g”選項。
  另外,這種方法也存在一定的不足,它不能調試模塊初始化的代碼,因為此時模塊初始化代碼已經執行過了。如果初始化部分有問題,那么將無法進行調試。遇到這樣的情況可以修改代碼,延遲初始化部分的執行。另外,也可以采用以下替代方法:當插入內核模塊時,內核模塊機制將調用函數sys_init_module (kernel/modle.c)執行對內核模塊的初始化。程序代碼片斷如下:
  ……
  if (mod-》init != NULL)
  ret = mod-》init();
  ……
  在該語句上設置斷點,也能在執行模塊初始化之前停下來。
  調試Linux 2.6內核模塊
  在Linux 2.6內核系統中,由于module-init-tools工具的更改,insmod命令不再支持-m參數,只有采取其他的方法來獲取模塊加載到內核的地址。
  比較簡單的方式是修改內核配置文件,使系統支持CONFIG_KALLSYMS,這樣就可以把相關的符號信息放到目錄/sys下,然后通過LinuxScope調試器加載相應的調試信息。通過在模塊初始化函數中放置一下代碼,也可以獲得模塊加載到內存中的地址,只是這樣要麻煩一些。
  應用程序的調試
  到了應用程序調試的階段,仿真器就可以“功成身退”了,剩下的調試任務就由LinuxScope調試器來獨自完成。此時只要在目標系統中啟動“gdbserver”,調試應用程序非常的方便。
  結語
  面向行業、應用和設備的嵌入式Linux工具軟件和嵌入式Linux操作系統平臺是未來發展的必然趨勢。跟蹤Linux的發展,符合標準,遵循開放是大勢所趨,嵌入式Linux也不例外。Linux調試技術的進步為Linux在嵌入式領域的應用廣泛性提供了保證。本文所講述的仿真器技術和調試器技術可以極大的提高開發者的效率。
?
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關電源基礎知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統的設計與實現
  10. 0.61 MB  |  2次下載  |  免費
  11. 6基于FPGA的C8051F單片機開發板設計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 久久夜色噜噜噜亚洲AV0000| 极品少妇小泬50PTHEPON| 亚洲欧美偷拍视频一区| 少妇无码太爽了视频在线播放| 免费精品国产人妻国语| 久久影院毛片一区二区| 精品欧美小视频在线观看| 国产精品久久毛片A片软件爽爽| 把腿张开老子CAO烂你动态图| 97人妻久久久精品系列A片| 最近中文字幕在线看免费完整版| 一个人免费视频在线观看| 亚洲中文热码在线视频| 亚洲乱码中文字幕久久孕妇黑人| 亚洲精品不卡视频| 亚洲欧洲日产国产 最新| 亚洲午夜精品一区二区公牛电影院 | 午夜婷婷精品午夜无码A片影院| 色 花 堂 永久 网站| 乳交高H糙汉宠文| 双腿打开揉弄高潮H苏安安秦慕深| 日韩精品无码免费专区| 探花口爆颜射乳交日韩| 亚婷婷洲AV久久蜜臀无码| 校花在公车上被内射好舒服| 午夜看片a福利在线观看| 午夜AV亚洲一码二中文字幕青青| 亚洲 欧美 日本 国产 高清| 亚洲精品天堂在线观看| 伊人国产在线观看| 1区2区3区4区产品不卡码网站| 69人体阴展网| YY600800新视觉理论私人| 广西美女色炮150p图| 国产精品在线手机视频| 国产午夜精品久久理论片小说| 果冻传媒2021一二三区| 久久国产高清视频| 蜜臀AV浪潮99国产麻豆| 人妻体内射精一区二区| 无限资源日本2019版免费|