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

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]嵌入式軟件集成開發(fā)環(huán)境的設計與實現

摘要:文章設計了嵌入式集成開發(fā)環(huán)境的層次結構;給出GCC重定向的一般方法并設計了通用交叉編譯接口;給出GDB移植的一般方法并設計了通用調試接口。在此基礎上,實現了PLAEmbeddedIDE v1.0嵌入式軟件集成開發(fā)環(huán)境原型系統(tǒng)。

1 引言

日益成熟的硬件技術以及更加復雜化的應用需求,使得軟件逐步取代硬件成為嵌入式系 統(tǒng)系統(tǒng)的主要組成部分[7]。嵌入式軟件系統(tǒng)的開發(fā)是否能跟上市場需求的變化成為制約嵌入 式產品能否占據市場的關鍵因素。因此,設計一種較為通用的,高度集成的,同時具備良好 擴展性的嵌入式軟件集成開發(fā)環(huán)境對于提高嵌入式軟件開發(fā)效率非常重要[1][4]。

本文中設計并實現的嵌入式軟件開發(fā)環(huán)境 PLAEmbeddedIDE v1.0,是基于Windows 環(huán) 境的,集編輯器、交叉編譯器、交叉調試器等工具為一體的,具備擴展性的嵌入式軟件集成 開發(fā)環(huán)境。

2 PLAEmbeddedIDE 的層次結構

PLAEmbeddedIDE 采用分層的模塊化結構,其結構如圖1 所示,從上至下分別是用戶 界面層、配置實體層、接口層、功能層。其中,功能層又分為兩大部分:工具集和可重用組 件庫。用戶界面接收用戶的輸入對系統(tǒng)進行配置,通過配置實體設定相應的參數,接口層通 過傳遞過來的配置參數,對工具進行必要的配置,并加載恰當的工具完成用戶動作。

 

 

3 PLAEmbeddedIDE 的交叉編譯器模塊

3.1 交叉編譯器后端重定向機制

可重定向編譯器是快速開發(fā)交叉編譯器的平臺[2],以最常用的可重定向編譯器GCC 為 例,圖2 是GCC 后端重定向的原理圖。

GCC 后端與目標相關部分的源碼insn-*,是由后端代碼生成器gen*(文件名以gen 開 頭的c 源程序)讀入3 個目標描述文件自動產生的,如圖2 中右側所示。這些生成器gen* 相當于目標描述文件的解釋程序,對目標描述文件進行分析和處理。目標描述文件由 machine.md、machine.h、和machine.c 構成,是insn-*文件描述內容的抽象形式,與insn-* 文件相比,目標描述文件更容易書寫和理解。

 

 

gen*程序實現了從目標機描述文件到GCC 后 端的自動生成。 重定向交叉編譯器時,gen*讀入目標描述文件生成相應的insn-*,然后將這些insn-*與 GCC 的其它源程序(與目標不相關的代碼)共同編譯鏈接,生成最終的交叉編譯器。用戶 在基于GCC 構建新的交叉編譯器時,需要做的工作就是編寫或改寫三個目標描述文件,修 改相關編譯選項即可[5]。

3.2 交叉編譯器的接口設計

基于 GCC 構建的交叉編譯器是一個獨立的應用程序,當用戶調用的時候,GCC 作為后 臺程序運行[5],完成編譯功能之后,將返回結果傳送給用戶界面。因此,還需要向上層用戶 界面提供通用的編譯接口,PLAEmbeddedIDE 通過調用這些接口來完成各項編譯工作。 根據集成開發(fā)環(huán)境對交叉編譯器的功能要求,本文設計了通用的編譯接口函數 InvokeComplier( )供上層GUI 調用。部分代碼如下:

 

 

 

 

4 PLAEmbeddedIDE 交叉調試器模塊

4.1 GDB 的移植

GDB 的移植工作主要集中在與目標相關的代碼編寫[3][6],下面將分別就GDB 源碼中與 目標相關的文件,講述如何進行移植代碼的編寫。

(1)GDB-6.3/gdb/ARCH-tdep.c 該文件的主要作用是初始化gdbarch 結構,ARCH 代表目標體系結構的名稱。gdbarch 結構是在gdbarch.c 文件中定義的,用于存放與目標體系結構相關的信息。mcore-tedp.c 文件 的初始化函數是_initialize_mcore_tdep(void),這個函數在GDB 啟動的時候被調用。當GDB 讀入類型為bfd_arch_ARCH 的可執(zhí)行文件時,將調用類型bfd_arch_ARCH 指向的函數: ARCH_gdbarch_init(),ARCH_dump_tdep()。其中,函數ARCH_gdbarch_init()主要負責完成 gdbarch 結構的部分初始化工作,ARCH_dump_tdep()負責顯示有關目標信息(可以省略)。

(2)GDB-6.3/gdb/ARCH-TOS-tdep.c 該文件主要對上面(1)中建立的gdbarch 結構根據操作系統(tǒng)的特性進一步初始化。其 中ARCH 代表的意義與(1)中相同,TOS 代表目標平臺采用的操作系統(tǒng)名稱。該文件的初 始化函數void _initialize_more_uclinux_tdep (void) 也是在GDB初始化的時候被調用執(zhí)行的。

該初始化函數通過調用gdbarch_regiSTer_osabi ()向全局鏈表gdb_osabi_handler_list 上注冊函 數mcore_uclinux_init_abi()。注冊過的函數將被初始化函數ARCH_gdbarch_init()中的 gdbarch_init_osabi()調用執(zhí)行。

(3)GDB-6.3/gdb/ARCH-NAT.c 和GDB-6.3/gdb/ARCH-TOS-NAT.c

這兩個文件是與操作系統(tǒng)相關的,其中文件ARCH-NAT.c 中的函數側重于目標體系結 構,支持多種操作系統(tǒng),文件ARCH-TOS-NAT.c 中的函數則針對某種目標體系結構上的某 種操作系統(tǒng),實際編寫時可以靈活掌握。

(4)GDB-6.3/gdb/config/ARCH/ARCH.mt

這個文件是設置一些生成目標GDB 時,需要跟目標操作系統(tǒng)有關的文件。

(5)GDB-6.3/gdb/config/ARCH/tm-ARCH.h 和GDB-6.3/gdb/config/ARCH/tm-TOS.h

這兩個文件是分別與體系結構相關和與操作系統(tǒng)相關的頭文件,這些頭文件將被很多相 關文件所包含。通過在這些頭文件中設置相應的宏或其他的定義,起到對其他相關文件設置 的作用。

(6)GDB-6.3/config.sub 和GDB-6.3/gdb/configure.tgt

修改config.sub 和configure.tgt 文件,在config.sub 中添加相應目標體系結構的處理腳本, 同時在configure.tgt 中指定交叉調試器的名稱等信息。修改完成后,就可以利用make 工具, 運行“./configure –target=ARCH”命令生成可以直接運行的新的交叉調試器了。[!--empirenews.page--]

4.2 交叉調試器的接口設計

為了向上層 PLAEmbeddedIDE 隱藏調試器實現的細節(jié),與交叉編譯器類似,需要設計 通用的調試接口。

根據集成開發(fā)環(huán)境對交叉調試器的功能要求,部分設計的接口函數如下:

??SEttarget(BSTR TargetType, unsigned long baudRate, BSTR comPort)

功能描述:設置目標板類型、通信波特率、串口號、并連接目標板;

??InvokeDebugger( unsigned long hWnd, BSTR Path, BSTR filename, BSTR TargetType)

功能描述:調用針對當前目標類型的GDB,并打開被調試文件; ??

DownloadFile() 功能描述:將被調試程序下載到目標板上;

??SendExecCmd(unsigned long cmd) 功能描述:向GDB發(fā)送跟蹤調試的命令,比如繼續(xù)、跳過、跳入等等; ??DumpRegisters(BSTR *pReg) 功能描述:獲取當前所有寄存器的值; ??

ReadMemory (unsigned long startAddress, unsigned longend Address, BSTR * pMemData ) 功能描述:取得指定地址區(qū)間的內存值;

5 結束語

本文通過對開放源碼的工具集 GNU 的重定向,實現了開放式、可擴展的嵌入式軟件集 成開發(fā)環(huán)境的設計。設計并實現的嵌入式軟件集成開發(fā)環(huán)境原型系統(tǒng)PLAEmbeddedIDE v1.0,包括了編碼、編譯、調試等嵌入式軟件開發(fā)中所需要的各項服務。用戶通過用戶界面調用通用的編譯接口和調試接口,可以方便地調用與目標相對應的交叉編譯器和交叉調試 器,能夠大大簡化嵌入式軟件開發(fā)的過程、提高開發(fā)效率。

該系統(tǒng)已經成功運用于 Mcore 和ARM 兩個系列目標處理器的嵌入式軟件開發(fā)中。但在 以后的開發(fā)過程中,需要不斷擴展所支持的處理器類型,增加相應的驅動程序庫,還需要不 斷豐富集成開發(fā)環(huán)境的模版等進一步完善工作。

本站聲明: 本文章由作者或相關機構授權發(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) 散熱

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

關鍵字: LED 設計 驅動電源

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

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

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

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

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

關鍵字: LED 驅動電源 功率因數校正

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

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

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

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

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

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