亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        信息創(chuàng)新環(huán)境下的嵌入式軟件交叉調(diào)試技術(shù)

        2022-04-25 08:36:10丁呂繁陳瑋彤王俊翔楊曦
        電子元器件與信息技術(shù) 2022年2期
        關(guān)鍵詞:宿主機(jī)嵌入式軟件斷點

        丁呂繁,陳瑋彤,王俊翔,楊曦

        (1.四川大學(xué) 計算機(jī)學(xué)院,四川 成都 610041;2.成都創(chuàng)騰軟件有限公司,四川 成都 610095)

        0 引言

        為突破國外組織、機(jī)構(gòu)對操作系統(tǒng)配套軟件集成開發(fā)環(huán)境的壟斷,彌補(bǔ)國內(nèi)研發(fā)的操作系統(tǒng)軟件生態(tài)不成熟、國內(nèi)研發(fā)的操作系統(tǒng)對國產(chǎn)處理器支持不充分的問題,本項目實現(xiàn)了一個基于OSGi規(guī)范的嵌入式軟件開發(fā)環(huán)境平臺。該嵌入式軟件開發(fā)環(huán)境支持銀河麒麟操作系統(tǒng),可以運(yùn)行在國產(chǎn)飛騰處理器上,實現(xiàn)了對嵌入式軟件開發(fā)過程的信息創(chuàng)新,在自主運(yùn)行環(huán)境上突破代碼編輯、管理、編譯、項目管理、過程控制、項目發(fā)布、代碼調(diào)試、覆蓋率分析、性能優(yōu)化等關(guān)鍵技術(shù)。

        嵌入式軟件因其實用性和靈活性,在近年來越來越受到人們的歡迎[1],而嵌入式平臺的軟件開發(fā)與桌面軟件開發(fā)有很大的不同,其一般需要使用交叉編譯和交叉調(diào)試環(huán)境,這意味著需要在宿主機(jī)上實現(xiàn)代碼的編譯,而代碼的運(yùn)行則是在目標(biāo)機(jī)上,這使得編譯和調(diào)試的過程更加復(fù)雜[2]。在一個軟件的開發(fā)周期中,軟件調(diào)試需要的時間往往占總開發(fā)時間的一半以上,一個好的調(diào)試環(huán)境可以極大地加快軟件的開發(fā)速度[3]。

        雖然目前已有少量針對國內(nèi)研發(fā)的操作系統(tǒng)的交叉調(diào)試軟件[4],但是總體來看,國內(nèi)研發(fā)的操作系統(tǒng)下的交叉調(diào)試軟件還是不足。針對目前在適配國內(nèi)研發(fā)的操作系統(tǒng)中嵌入式軟件開發(fā)工具的缺失,開發(fā)了一個適用于國產(chǎn)銀河麒麟操作系統(tǒng)的嵌入式軟件開發(fā)環(huán)境。在本文中,主要描述了嵌入式開發(fā)環(huán)境的調(diào)試部分,詳細(xì)介紹了實現(xiàn)調(diào)試功能的各個組件及其功能,說明了調(diào)試流程的運(yùn)行原理,最后給出了調(diào)試過程的圖形化界面。

        1 Eclipse平臺

        1.1 Eclipse基礎(chǔ)框架

        Eclipse項目是一個由多個軟件公司參與研究和推廣的通用集成開發(fā)環(huán)境,是一個開放源代碼的、使用Java開發(fā)的可擴(kuò)展開發(fā)平臺,其核心是動態(tài)發(fā)現(xiàn)插件(Plugin)的體系結(jié)構(gòu)[5]。Eclipse采用以O(shè)SGi規(guī)范為基礎(chǔ)實現(xiàn)的一個微內(nèi)核,該微內(nèi)核負(fù)責(zé)處理基本環(huán)境的后臺工作,其余工作由按規(guī)范開發(fā)的插件完成。

        Eclipse由多個子系統(tǒng)構(gòu)成,包括平臺運(yùn)行庫(Platform Runtime)、工作區(qū)(workspace)、工作臺(workbench)、圖形API(SWT/JFace)、Java開發(fā)環(huán)境插件(JDT)、插件開發(fā)環(huán)境(PDE)等核心部分[6]。圖1為Eclipse的體系結(jié)構(gòu)。

        圖1 Eclipse 體系結(jié)構(gòu)

        通過集成來自不同供應(yīng)商的插件,Eclipse可以不斷擴(kuò)展,實現(xiàn)各種不同的功能。各個工具建造者通過構(gòu)建符合Eclipse要求的插件來擴(kuò)展Eclipse的功能[7]。

        Eclipse目前已經(jīng)成為編寫嵌入式軟件集成開發(fā)環(huán)境的主流平臺,包含了嵌入式軟件開發(fā)調(diào)試過程中的各種工具,如源代碼編輯、項目構(gòu)建、交叉運(yùn)行、交叉調(diào)試、交叉測試等。

        1.2 Eclipse插件技術(shù)

        Eclipse平臺的子系統(tǒng)都依靠插件的形式實現(xiàn),插件是一種按照指定應(yīng)用程序接口規(guī)范編寫的程序。插件技術(shù)使得系統(tǒng)結(jié)構(gòu)清晰明了,提高了可維護(hù)性和移植性,便于調(diào)整系統(tǒng)功能,每個插件之間的連接關(guān)系是通過聲明擴(kuò)展點和擴(kuò)展其它插件聲明的擴(kuò)展點來實現(xiàn)的[8]。

        當(dāng)Eclipse啟動時,平臺運(yùn)行庫(Platform Runtime)將掃描Plugins目錄下所有插件,然后將插件逐個添加到注冊表中,但此時并不會激活系統(tǒng)注冊表中的插件,而是僅僅加載各個插件的配置文件中的信息,只有當(dāng)用戶在使用過程中真正需要某個插件時,平臺才會將該插件的執(zhí)行文件調(diào)入內(nèi)存并激活使用。這種機(jī)制可以有效避免內(nèi)存浪費(fèi),當(dāng)該插件不再使用時,系統(tǒng)將適時將其清除出內(nèi)存。

        擴(kuò)展點在Eclipse中作為一個松耦合的功能模塊被廣泛使用。在開發(fā)插件時,開發(fā)人員需要在插件清單中聲明所開發(fā)插件的擴(kuò)展點,提供接口和相關(guān)類的最小集合供他人使用。當(dāng)其它插件需要使用到該插件時,需要聲明該擴(kuò)展點的擴(kuò)展項,實現(xiàn)其接口,并引用提供的類或基于提供的類進(jìn)行創(chuàng)建。

        1.3 GDB調(diào)試器

        GBD是GNU開源組織發(fā)布的跨平臺源碼級調(diào)試工具,可以用于C/C++等程序的跟蹤調(diào)試。在嵌入式系統(tǒng)開發(fā)中,開發(fā)人員能夠使用GDB以遠(yuǎn)程調(diào)試的方式控制目標(biāo)機(jī)上的程序,實現(xiàn)單步運(yùn)行、設(shè)置斷點、查看內(nèi)存信息、和目標(biāo)平臺交換信息等功能。GDB可以和目標(biāo)機(jī)進(jìn)行高效的交互,其在遠(yuǎn)程調(diào)試的動態(tài)性和實時性等方面也有明顯優(yōu)勢[9]。

        使用GDB調(diào)試器連接目標(biāo)機(jī)時,可以使用通信端口或者TCP/IP的方式進(jìn)行通信。在進(jìn)行主從通信時,需要在目標(biāo)機(jī)上維持一個進(jìn)程,稱之為目標(biāo)機(jī)代理,其作用是執(zhí)行從宿主機(jī)調(diào)試器發(fā)送過來的調(diào)試命令,并及時向宿主機(jī)調(diào)試器反饋目標(biāo)機(jī)的狀態(tài)信息和異常事件。宿主機(jī)調(diào)試器與目標(biāo)機(jī)代理之間的通信遵循“GDB遠(yuǎn)程串行協(xié)議”,簡稱“GDB RSP協(xié)議”[10]。

        2 基于Equinox OSGi框架的交叉調(diào)試環(huán)境的實現(xiàn)

        2.1 交叉調(diào)試結(jié)構(gòu)

        本嵌入式軟件開發(fā)環(huán)境的交叉調(diào)試功能由三個模塊構(gòu)成,分別為“目標(biāo)機(jī)管理”、“調(diào)試環(huán)境”、“控制臺”,調(diào)試模塊結(jié)構(gòu)如圖2所示。在我們實現(xiàn)的信息創(chuàng)新集成開發(fā)環(huán)境中,宿主機(jī)搭載了使用國產(chǎn)飛騰處理器的銀河麒麟操作系統(tǒng),目標(biāo)機(jī)搭載了使用國產(chǎn)龍芯處理器的嵌入式操作系統(tǒng)。

        圖2 調(diào)試模塊結(jié)構(gòu)

        2.1.1 目標(biāo)機(jī)管理

        “目標(biāo)機(jī)管理”模塊是宿主機(jī)調(diào)試類工具和目標(biāo)機(jī)服務(wù)器進(jìn)行通信的中心,由“遠(yuǎn)程系統(tǒng)管理插件”和“目標(biāo)機(jī)服務(wù)器”構(gòu)成。“遠(yuǎn)程系統(tǒng)管理插件”提供目標(biāo)機(jī)連接的創(chuàng)建、刪除、連接、斷開等功能,“目標(biāo)機(jī)服務(wù)器”用于實現(xiàn)宿主機(jī)與目標(biāo)機(jī)之間數(shù)據(jù)的路由和交換功能,可通過網(wǎng)絡(luò)方式為遠(yuǎn)程宿主機(jī)提供調(diào)試服務(wù)。

        其提供以下功能:①目標(biāo)機(jī)連接管理,提供圖形化的用戶界面對目標(biāo)機(jī)連接進(jìn)行管理;②支持物理通信連接復(fù)用,可在單一物理連接上實現(xiàn)多個邏輯連接;③多目標(biāo)機(jī)連接,支持一臺宿主機(jī)同時連接多臺目標(biāo)機(jī);④目標(biāo)機(jī)共享,支持遠(yuǎn)程宿主機(jī)利用本地宿主機(jī)作為跳板,連接目標(biāo)機(jī)。

        2.1.2 調(diào)試環(huán)境

        調(diào)試環(huán)境提供從宿主機(jī)下載執(zhí)行程序到目標(biāo)機(jī)的功能以及在宿主機(jī)上控制目標(biāo)機(jī)上代碼運(yùn)行的功能。在宿主機(jī)的源代碼上設(shè)置斷點,通過調(diào)試環(huán)境可以控制目標(biāo)機(jī)運(yùn)行到斷點處暫停,并且查看和修改目標(biāo)機(jī)當(dāng)前運(yùn)行狀態(tài)的上下文,如內(nèi)存數(shù)據(jù)、寄存器當(dāng)前值。

        調(diào)試環(huán)境提供基本的調(diào)試功能,包括:運(yùn)行控制、斷點管理、符號表管理、信息查詢、數(shù)據(jù)修改。為用戶提供了三種斷點:行斷點、表達(dá)式斷點、數(shù)據(jù)斷點。其中,行斷點和表達(dá)式斷點都可以由軟件斷點和硬件斷點兩種方式實現(xiàn),而數(shù)據(jù)斷點只能由硬件斷點方式實現(xiàn)。

        調(diào)試環(huán)境提供“系統(tǒng)級調(diào)試”和“分區(qū)級調(diào)試”兩種調(diào)試方式。“系統(tǒng)級調(diào)試”在斷點或異常的處理過程中會使得整個系統(tǒng)暫停,等待用戶的下一步命令,其調(diào)試的對象是整個目標(biāo)機(jī)系統(tǒng);“分區(qū)級調(diào)試”在斷點或異常的處理過程中,只停止被調(diào)試的分區(qū),其余分區(qū)照常運(yùn)行,被調(diào)試的對象是用戶指定的分區(qū)。

        2.1.3 控制臺

        控制臺向開發(fā)者提供命令行操作的功能,包括“宿主機(jī)控制臺”和“目標(biāo)機(jī)控制臺”。其中“宿主機(jī)控制臺”提供一個菜單可以直接啟動宿主機(jī)開發(fā)環(huán)境提供的命令行窗口,“目標(biāo)機(jī)控制臺”接收開發(fā)者在控制臺輸入的命令,使用GDB調(diào)試器將命令發(fā)送給目標(biāo)機(jī)并反饋結(jié)果。

        2.2 交叉調(diào)試流程

        與其它平臺的交叉調(diào)試流程類似[11],我們的交叉調(diào)試工具在進(jìn)行調(diào)試時,大致分為三個步驟。

        第一步,宿主機(jī)與目標(biāo)機(jī)之間的連接,初始化二者的交叉調(diào)試環(huán)境,包括啟動宿主機(jī)端的遠(yuǎn)程調(diào)試器和目標(biāo)機(jī)端的代理服務(wù)器等操作。

        第二步,“調(diào)試環(huán)境”組件利用“目標(biāo)機(jī)管理”組件,發(fā)送一系列內(nèi)存讀寫的指令,將需要運(yùn)行的程序鏡像下載到目標(biāo)機(jī)的內(nèi)存上。并且根據(jù)用戶在調(diào)試頁面的操作,將斷點信息傳輸?shù)侥繕?biāo)機(jī),在適當(dāng)位置設(shè)置斷點,方便用戶進(jìn)行遠(yuǎn)程調(diào)試。

        第三步,開始運(yùn)行程序,在遇到用戶設(shè)置的斷點之前,程序?qū)⒄?zhí)行。當(dāng)程序運(yùn)行遇到斷點時,程序的控制權(quán)將從目標(biāo)機(jī)處理器轉(zhuǎn)移到目標(biāo)機(jī)的代理服務(wù)器上,而此時代理服務(wù)器將通過“目標(biāo)機(jī)管理”組件向宿主機(jī)報告遇到斷點,并發(fā)送斷點的上下文信息,方便宿主機(jī)上的用戶判斷下一步的操作,此時目標(biāo)機(jī)服務(wù)器將一直等待宿主機(jī)的回復(fù),不會有下一步操作。宿主機(jī)在得知目標(biāo)機(jī)運(yùn)行遇到斷點之后,便可以如本機(jī)調(diào)試一樣,查看和修改斷點時刻的寄存器信息、內(nèi)存信息等上下文信息。

        2.3 應(yīng)用實例

        建目標(biāo)機(jī)連接時,由于目標(biāo)機(jī)使用的處理器為國產(chǎn)龍芯處理器,其體系結(jié)構(gòu)為mips,因此設(shè)置體系結(jié)構(gòu)為mips,連接類型為UDP,在連接參數(shù)中有目標(biāo)機(jī)服務(wù)器的調(diào)試端口IP地址,設(shè)置超時時間為5000ms。若發(fā)生連接超時,可以重啟IDE再嘗試連接。連接頁面如圖3所示。

        圖3 連接目標(biāo)機(jī)

        右鍵項目名,選擇調(diào)試,等待一段時間后,選擇分區(qū)加載。若遇到分區(qū)映像已存在,則選擇覆蓋。選擇界面如圖4所示。

        圖4 選擇加載分區(qū)

        在點擊加載之后,就可以進(jìn)入調(diào)試狀態(tài),在下圖中main.c中雙擊設(shè)置斷點,點擊上方工具欄的繼續(xù)按鈕,開始調(diào)試程序,程序會在斷點處暫停,查看目標(biāo)機(jī)的狀態(tài)信息。調(diào)試界面如圖5所示。

        圖5 調(diào)試界面

        在交叉調(diào)試的過程中,會使用到多個調(diào)試按鈕,分別為繼續(xù)、暫掛、終止、斷開連接、單步跳入、單步跳過、單步返回。

        3 結(jié)語

        本文介紹了在國產(chǎn)銀河操作系統(tǒng)下,嵌入式軟件開發(fā)環(huán)境中的調(diào)試功能和實現(xiàn)技術(shù)。首先對Eclipse框架和相應(yīng)的插件機(jī)制進(jìn)行了說明,在此基礎(chǔ)上詳細(xì)描述了調(diào)試功能的相關(guān)組件及結(jié)構(gòu),對具體的調(diào)試流程進(jìn)行了解釋,并且給出了在實際調(diào)試過程中的用戶界面。通過使用該嵌入式軟件開發(fā)環(huán)境,開發(fā)人員可以較為方便地在銀河麒麟操作系統(tǒng)上開發(fā)針對龍芯等mips架構(gòu)嵌入式開發(fā)板的軟件,提高了在銀河麒麟操作系統(tǒng)上進(jìn)行嵌入式開發(fā)的效率,豐富了國內(nèi)研發(fā)的操作系統(tǒng)的軟件開發(fā)生態(tài)。

        猜你喜歡
        宿主機(jī)嵌入式軟件斷點
        一類無限可能問題的解法
        實時嵌入式軟件的測試技術(shù)
        電子測試(2018年10期)2018-06-26 05:54:08
        虛擬網(wǎng)絡(luò)實驗室在農(nóng)村職校計算機(jī)網(wǎng)絡(luò)技術(shù)教學(xué)中的應(yīng)用研究
        全景相機(jī)遙控器嵌入式軟件V1.0 相關(guān)操作分析
        電子制作(2017年17期)2017-12-18 06:40:56
        嵌入式計算機(jī)軟件測試關(guān)鍵技術(shù)的思考
        主導(dǎo)電回路發(fā)生斷點故障判斷方法探討
        嵌入式計算機(jī)軟件測試關(guān)鍵技術(shù)研究
        基于Eclipse的航天嵌入式軟件集成開發(fā)環(huán)境設(shè)計與實現(xiàn)
        航天嵌入式軟件浮點運(yùn)算誤差分析與控制
        在不連接網(wǎng)線的情況下Windows與VM之間如何ping通
        国产午夜三级一区二区三| 在线观看播放免费视频| 永久免费观看的黄网站在线| 午夜久久久久久禁播电影| 亚洲一区二区三区无码久久| 人人做人人妻人人精| 国产成人精品aaaa视频一区| 国产午夜精品久久精品| 精品午夜福利在线观看| 怡红院免费的全部视频| 久久精品无码一区二区2020| 91成人自拍视频网站| 日本一区二区三级在线观看 | 亚洲精品熟女av影院| 中文区中文字幕免费看| 男女啪啪免费体验区| 婷婷激情六月| 老岳肥屁熟女四五十路| 特黄 做受又硬又粗又大视频| 又污又爽又黄的网站| 久久这里只精品国产2| 日本一区二区三区在线观看视频| 国产亚洲一区二区在线观看| 亚洲精品美女久久久久久久| 亚洲精品中文字幕无乱码麻豆| 伊人影院在线观看不卡| 顶级高清嫩模一区二区| 又粗又大又硬毛片免费看| 放荡的闷骚娇妻h| 久久精品国产精品亚洲艾| 男人天堂亚洲天堂av| 国产亚洲日本精品无码| 亚洲熟妇网| 国产免费一区二区三区在线观看| 免费a级毛片无码a∨蜜芽试看| 国产精品黄在线观看免费软件| 成人综合久久精品色婷婷| 日韩人妻免费视频一专区| 国产精品久久人妻无码| www插插插无码视频网站| 成人性生交大片免费看i|