對于網(wǎng)站建設(shè)公司來講,半托管是ARM處理器支持的調(diào)試功能,在嵌入式開發(fā)中,它允許嵌入式目標(biāo)通過調(diào)試接口訪問主機PC上的 i/o 功能。i/o 功能最常與printf一起使用,將文本數(shù)據(jù)傳輸?shù)秸{(diào)試環(huán)境中的虛擬終端,但它也可用于文件訪問和鍵盤輸入。
半托管功能通常通過與標(biāo)準(zhǔn)C庫接口的特殊庫來實現(xiàn)。在許多情況下,該庫默認包含在開發(fā)環(huán)境中。例如,在Renesas Synergy(TM)平臺e2 Studio中,默認包含–specs=rdimon.specs選項,其中包括使用半托管的掛鉤。開發(fā)人員需要做的就是包含標(biāo)準(zhǔn)庫,并且他們模塊中的所有printf語句都通過半托管設(shè)施重定向。
在最低級別,通過觸發(fā)SWI指令(軟件中斷)在ARM內(nèi)核中實現(xiàn)半托管,該指令已被SVC指令(監(jiān)督調(diào)用)取代。在某些部分,也可能使用BKPT指令。當(dāng)指令執(zhí)行時,處理器停止執(zhí)行應(yīng)用程序并等待調(diào)試器訪問處理器并檢索需要傳輸?shù)街鳈C的內(nèi)容。
表面上的半托管似乎是個好主意,并非所有嵌入式目標(biāo)都具有連接鍵盤、屏幕或文件系統(tǒng)的 i/o 功能,半托管提供了通過主機環(huán)境擁有此功能并使用調(diào)試器傳輸數(shù)據(jù)的能力。
首先,半托管非常慢。在嵌入式開發(fā)中,CPU停止并且調(diào)試器必須訪問內(nèi)核、傳輸?shù)街鳈C然后恢復(fù)操作這一事實會導(dǎo)致執(zhí)行延遲,可能長達數(shù)十毫秒!這比大多數(shù)系統(tǒng)滴答持續(xù)時間更長,并且可能對軟件的實時性能造成嚴(yán)重破壞。
其次,當(dāng)啟用半主機時,處理器會暫停并等待調(diào)試器。如果調(diào)試器未連接到系統(tǒng),處理器將無限期停止!這意味著半托管只能在調(diào)試期間使用,開發(fā)人員必須編譯出他們的半托管功能以用于生產(chǎn)。否則,他們的設(shè)備可能會在等待調(diào)試器檢索信息并恢復(fù)操作時掛斷最終用戶。這種阻塞行為令人失望,但開發(fā)人員需要接受這一事實。
最后,半托管不是確定性的。執(zhí)行時間可能會有很大差異,并且可能會使開發(fā)人員發(fā)瘋,因為他們試圖在他們的軟件中追蹤真正源于使用半托管的奇怪行為。在實時應(yīng)用程序中,確定性至關(guān)重要,應(yīng)不惜一切代價避免任何可能影響這一點的事情。
半托管是一個非常簡潔的功能,在許多情況下肯定會對開發(fā)人員有所幫助。然而,在大多數(shù)情況下,它更像是一個問題而不是資產(chǎn)。盡管如此,對于嵌入式開發(fā)開發(fā)人員來說,了解可用的工具和功能也很重要。建議你花一個小時左右的時間來探索工具鏈中存在的半托管功能,并了解它們?nèi)绾斡绊憰r間以及你開發(fā)系統(tǒng)的能力。
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專線)
400-001-5281 (售后服務(wù)熱線)
深圳市坂田十二橡樹莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專線:400-001-5281
長沙市天心區(qū)芙蓉中路三段398號新時空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務(wù)專線/ 400-966-8830
旗下運營網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號