日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]在目前行業(yè)發(fā)展中,面向行業(yè)、應用和設備的嵌入式Linux工具軟件和嵌入式Linux操作系統(tǒng)平臺是未來發(fā)展的必然趨勢。

在目前行業(yè)發(fā)展中,面向行業(yè)、應用和設備的嵌入式Linux工具軟件和嵌入式Linux操作系統(tǒng)平臺是未來發(fā)展的必然趨勢。在所有操作系統(tǒng)中,Linux是發(fā)展很快、應用很廣泛的一種操作系統(tǒng)。Linux的開放性以及其他優(yōu)秀特性使其成為嵌入式系統(tǒng)開發(fā)的首選。

嵌入式系統(tǒng)開發(fā)所面臨的問題

嵌入式軟件開發(fā)有別于桌面軟件系統(tǒng)開發(fā)的一個顯著的特點是,一般需要一個交叉編譯和調試環(huán)境,即編輯和編譯軟件在主機上進行,編譯好的軟件需要下載到目標機上運行 ,主機和目標機之間建立起通訊連接,并傳輸調試命令和數(shù)據(jù)。由于主機和目標機往往運行著不同的操作系統(tǒng),而且處理器的體系結構也彼此不同,這就提高了嵌入式開發(fā)的復雜性。

總的來說,嵌入式開發(fā)所面臨的問題主要表現(xiàn)在以下幾個方面。

涉及多種CPU 及多種OS

嵌入式的CPU或處理器包括MIPS、PPC、ARM,XScale等不同的架構,這些處理器上運行的操作系統(tǒng)也有VxWorks、Linux、μC/OS、WinCE等多種。在一個企業(yè)之內,可能會同時使用好幾種處理器,甚至幾種嵌入式操作系統(tǒng)。如果需要同時調試多種類型的電路板,那復雜性是可想而知的。這也是我們選用瑞士Abatron公司的BDI2000的原因之一,它是一款功能強大的JTAG/BDM通用仿真器。它支持:PPC/MIPS/ARM/XSCALE/ CPU12/CPU32/M-CORE/ColdFire等多種處理器,支持Windows/Linux系統(tǒng)平臺,以及多種第三方調試器,并且對Flash的燒寫也很簡單方便。

開發(fā)工具種類繁多

通常各種操作系統(tǒng)有各自的開發(fā)工具,在同一系統(tǒng)下開發(fā)的不同階段也會應用不同的開發(fā)工具。如在用戶的目標板開發(fā)初期,需要硬件仿真器來調試硬件系統(tǒng)和基本的引導程序,然后進行操作系統(tǒng)及驅動程序的開發(fā)調試。在調試應用程序階段可以使用交互式的開發(fā)環(huán)境進行軟件調試,在測試階段需要一些專門的測試工具軟件進行功能和性能的測試。在生產(chǎn)階段需要固化程序及出廠檢測等等。BDI2000可以適應開發(fā)的各個階段,節(jié)約企業(yè)的支出和簡化管理難度。

對目標系統(tǒng)的觀察和控制

由于嵌入式硬件系統(tǒng)千差萬別,軟件模塊和系統(tǒng)資源也多種多樣,要使系統(tǒng)能正常工作,軟件開發(fā)者必須要對目標系統(tǒng)具有完全的觀察和控制能力,例如硬件的各種寄存器、內存空間、操作系統(tǒng)的信號量、消息隊列、任務、堆棧等。

此外,嵌入式系統(tǒng)變化更新比較快,對開發(fā)時間要求比較緊,需要一套功能強大的嵌入式軟件集成開發(fā)工具,用于嵌入式軟件開發(fā)的各個階段。美國 Ultimate SoluTIon公司的LinuxScope-JTD調試器是一個很好的選擇,它專門用于配合BDI2000仿真器,特點是基于Eclipse的集成開發(fā)環(huán)境和插件技術;提供腳本定制功能實現(xiàn)目標機的特殊操作;提供Linux內核調試功能,容易修改和觀察硬件寄存器;增強的MI接口可識別硬件斷點及模塊跟蹤;具有標準調試特性;支持Linux應用程序的開發(fā);以及Windows/Linux系統(tǒng)平臺。

嵌入式Linux內核的調試

編譯內核

本文所調試的是MontaVista Linux,硬件是Intel Xscale PXA250。它擁有超過兩千多用戶和眾多的MontaVista Linux產(chǎn)品在市場上銷售,覆蓋從智能手機、高清電視、機器人、無線網(wǎng)絡設備到3G電信服務器等各種嵌入式應用。MontaVista Linux本身就是用BDI2000來開發(fā)調試的。

進入內核源碼目錄下,即可配置完成相關選項并準備編譯。配置時不要選中KGDB(軟件基內核調試),否則會和BDI2000沖突。為了調試內核,需要在編譯時加入調試信息,否則將無法看到源代碼。修改內核源碼根目錄下的Makefile,在CFLAGS宏定義的末尾添加“–ggdb”選項,保存退出。這里加上gdb是為了更好的使代碼適合gdb調試器,另外注意Makefile中的優(yōu)化設置,有些時候優(yōu)化會調整代碼執(zhí)行的順序,在內核的調試階段,不要加入優(yōu)化選項。

內核調試

首先,配置BDI2000,確保目標機的正常初始化。通常來說,到了調試內核的階段,電路板的boot程序應該是正常的,可以利用boot來完成目標機的初始化;另一種方式是通過BDI的配置文件來完成。

接下來就是下載代碼進行調試。如果代碼已經(jīng)固化,那僅下載調試信息給仿真器即可;否則需要把代碼下載到RAM里運行,同時下載調試信息給仿真器。本文所用的是后一種方式。

由于Linux運行之后會啟動MMU而使地址重映射,因此第一個斷點通常在函數(shù)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內核的另外一個重要原因,就是它可以支持調試內核模塊。內核模塊是一些可以讓操作系統(tǒng)內核在需要時載入和執(zhí)行的代碼,這意味著它可以在不需要時由操作系統(tǒng)卸載。這種方式可以擴展操作系統(tǒng)內核的功能,而不需要重新啟動系統(tǒng),這一點對調試驅動程序的工程師特別有用。因為如果驅動程序編譯進內核的話,會增加內核的大小,還要改動內核的源文件,而且不能動態(tài)的卸載,不利于調試,所以推薦使用模塊方式。

調試Linux 2.4內核模塊

Linux 2.4內核模塊的調試比較簡單,使用命令“insmod -m”來加載模塊。參數(shù)“-m”非常重要,它的功能是在把模塊加載到內存時產(chǎn)生一個加載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”選項。

另外,這種方法也存在一定的不足,它不能調試模塊初始化的代碼,因為此時模塊初始化代碼已經(jīng)執(zhí)行過了。如果初始化部分有問題,那么將無法進行調試。遇到這樣的情況可以修改代碼,延遲初始化部分的執(zhí)行。另外,也可以采用以下替代方法:當插入內核模塊時,內核模塊機制將調用函數(shù)sys_init_module (kernel/modle.c)執(zhí)行對內核模塊的初始化。程序代碼片斷如下:

……

if (mod->init != NULL)

ret = mod->init();

……

在該語句上設置斷點,也能在執(zhí)行模塊初始化之前停下來。

調試Linux 2.6內核模塊

在Linux 2.6內核系統(tǒng)中,由于module-init-tools工具的更改,insmod命令不再支持-m參數(shù),只有采取其他的方法來獲取模塊加載到內核的地址。

比較簡單的方式是修改內核配置文件,使系統(tǒng)支持CONFIG_KALLSYMS,這樣就可以把相關的符號信息放到目錄/sys下,然后通過LinuxScope調試器加載相應的調試信息。通過在模塊初始化函數(shù)中放置一下代碼,也可以獲得模塊加載到內存中的地址,只是這樣要麻煩一些。

應用程序的調試

到了應用程序調試的階段,仿真器就可以“功成身退”了,剩下的調試任務就由LinuxScope調試器來獨自完成。此時只要在目標系統(tǒng)中啟動“gdbserver”,調試應用程序非常的方便。

結語

近年處理器技術發(fā)展速度加快,嵌入式領域發(fā)生了翻天覆地的變化。特別是網(wǎng)絡的普及,消費電子異軍突起,嵌入式與互聯(lián)網(wǎng)成為最熱門的技術。跟蹤Linux的發(fā)展,符合標準,遵循開放是大勢所趨,嵌入式Linux也不例外。Linux調試技術的進步為Linux在嵌入式領域的應用廣泛性提供了保證。本文所講述的仿真器技術和調試器技術可以極大的提高開發(fā)者的效率。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉