精品人妻一区二区三区麻豆91国产精品亚洲精品日韩|国产成人精品久久久久日韩中文字幕视频一区二区|国产区精品福利在线熟女|xk8134星空传媒|亚洲一区二区精品3399|5566中文字幕一区二区|国产69精品久久久久9999|中文字幕亚洲欧美日韩|国产日韩久久久久精品影院|亚洲国产精品久久久久久久久,果冻传媒精选麻豆人口中文av内射,欧美成人精品一区二区三区在线观看国产91精品肉色丝袜 ,国产日韩欧美一区二区久久精品东北电影制片厂第一部电影

在線客服
首頁 > 技術(shù)文章 >
技術(shù)文章
技術(shù)文章

無須重新設(shè)計硬件配置,USB成嵌入式載體的重要部分

通??山逵勺兏谖⒖刂破魃蠄?zhí)行的軟件擴增新功能,,或為裝置出貨前沒發(fā)現(xiàn)到的問題除錯,例如血糖計,,僅須修改軟件就能使用新型試紙,;某些顧客桌面上無法使用的光學(xué)鼠標(biāo),修改軟件能重新設(shè)定影像傳感器采集到的數(shù)據(jù)特征,。這類的設(shè)計變更不須重新設(shè)計硬件的配置,,已成為相當(dāng)常見的作法,能在產(chǎn)品還未出廠時,,即迅速對硅組件更新編程,,在顧客方面,直接編程是不切實際的方法,,因為需要特殊的硬件連結(jié)微控制器上的專屬接腳,,若裝置已需USB作為通訊機制,把一個簡單的開機管理應(yīng)用程序加到原始韌體,,就能使用標(biāo)準(zhǔn)計算機下載新版與后續(xù)更新的韌體,,并可由制造商或終端使用者執(zhí)行更新動作,。 

幾乎無所不在的通用序列總線(USB)通訊媒介,原用來把鼠標(biāo)或鍵盤連結(jié)至計算機,,后來已擴展至喇叭、攝影機,、打印機及其它各種裝置,,如今像吉他到轎車都已配備USB接口。在這類裝置中,,利用現(xiàn)有的USB聯(lián)機變更在嵌入式控制器上執(zhí)行的軟件,,就能擴增新功能或解決效能故障方面的問題,且研發(fā)業(yè)者不但可充分發(fā)揮本身具備的好處,,并可提供產(chǎn)品重新編程的彈性,。

在嵌入式微控制器中,開機管理程序是一個位于程序內(nèi)存內(nèi)的小程序,。當(dāng)重新啟動或開機時,,開機管理程序會率先執(zhí)行,并讓處理器執(zhí)行使用者的程序或下載新版程序,,在這種組態(tài)下,,直接編程僅須把開機管理程序插入至程序內(nèi)存。開機管理程序可使用不同的通訊技術(shù)采集新程序,,包括USB,、I2C、SPI,、UART,,甚至可建置專屬的通訊協(xié)議以下載新程序,也可使用不同的方法儲存下載的程序,。根據(jù)內(nèi)存的需求,,程序可儲存在微控制器內(nèi)部的閃存,或是各種外部儲存媒體,,由于大多數(shù)開機管理程序僅需少量的程序空間即可建置,,因此通常和使用者的程序裝在同一片閃存中,在并存時,,開機管理程序須負(fù)責(zé)把程序代碼下載到同一片內(nèi)存時,,防止覆蓋本身的程序代碼,在內(nèi)存空間的開機管理程序,,可設(shè)定成不可覆寫,,以避免意外的毀損。 

開機管理程序扮演重要角色 

圖1 USB開機管理程序的數(shù)據(jù)流程

圖1顯示USB開機管理程序的數(shù)據(jù)流,。在開機重新啟動時,,開機管理程序會計算使用者程序的檢查碼,,并和儲存在內(nèi)存中的檢查碼進行比對。這個檢查碼是現(xiàn)場可編程開機管理程序的檢查碼模塊,,若兩個數(shù)值相符,,開機管理程序就會讓處理器開始執(zhí)行使用者的程序,但若檢查碼不一致,,開機管理程序就會讓主機等候分送新的使用者程序代碼,。在準(zhǔn)備階段,開機管理程序會關(guān)閉任何可能干擾下載流程的岔斷,,在某些系統(tǒng)中,,微控制器可能須處理一些重要作業(yè),然后再開始下載,,如可能必須啟動散熱風(fēng)扇或讓某些發(fā)光二極管(LED)燈號閃動,,由于應(yīng)用程序的空間是被刪除的目標(biāo),因此如散熱風(fēng)扇或LED燈號的控制例程等這類關(guān)鍵作業(yè)須寫入開機管理程序,。 

為了開始通訊,,開機管理程序會設(shè)定USB接口,然后等待計算機連結(jié)裝置,。計算機透過交握程序了解何種裝置插入連結(jié)端口,,此程序稱為裝置列舉,可確保裝置和正確的主控端軟件進行通訊,,在這個例子中,,主控端是個人計算機(PC)應(yīng)用程序,程序中含須下載的內(nèi)容,,為避免意外下載,,并確保安全,開機管理程序會在交易過程中尋找主控端的金鑰,。 

檢查金鑰后,,開機管理程序會對主控端做出響應(yīng),并要求取得Flash映像,,由于閃存不支持單一地址寫入,,故須使用完整分頁寫入。在找出整個分頁的地址前,,會先把傳入的數(shù)據(jù)儲存在隨機存取內(nèi)存(RAM),,由于處理器在此刻正忙著下載新韌體,因此幾乎所有RAM資源都可使用,,系統(tǒng)必須在較低的溫度把內(nèi)容穩(wěn)定寫入至閃存,,為增加內(nèi)存保存數(shù)據(jù)時間及寫入周期的次數(shù),了解現(xiàn)場溫度及使用合適的編程算法相當(dāng)重要,。 

在快閃編程過程中,,電源的穩(wěn)定度也是一項重要因素,,任何電源噪聲、故障,、斷電,、電位緩升、接觸不良等狀況,,都會造成難以偵測的問題,。若真的發(fā)生電力瞬時問題,開機管理程序就會再次啟動,,并因檢查碼核對失敗而重新開始下載程序,當(dāng)所有Flash分頁都含有檢查碼并成功寫入,,開機管理程序就會檢查閃存并開始重新啟動,,此時當(dāng)系統(tǒng)重新啟動后,開機管理程序會搜尋正確的檢查碼,,并開始執(zhí)行使用者程序代碼,。 

圖2 通用型開機管理程序架構(gòu)

當(dāng)檢查碼有效時,所有后續(xù)的開機管理程序作業(yè)都必須從執(zhí)行中的使用者程序代碼呼叫,。透過正確的應(yīng)用程序接口呼叫,,PC程序能直接指揮使用者程序關(guān)閉所有岔斷、重置USB硬件及開始扮演開機管理程序,。另一方面,,裝置設(shè)定完成后,藉由如開關(guān)等某些硬件狀態(tài)變更事件,,便進入開機管理程序的裝置列舉程序,。 

內(nèi)存管理可避免
無法使用USB下載數(shù)據(jù)問題 

開機管理程序被意外刪除會導(dǎo)致系統(tǒng)無法透過USB下載數(shù)據(jù)。系統(tǒng)化的內(nèi)存配置,,能減少或消弭這種意外的風(fēng)險,,圖2所示為一個可行的配置,可由各種Flash架構(gòu)運用,,圖中由上而下第一組模塊含有重置與USB岔斷向量,,第二組則含有開機管理程序設(shè)定的內(nèi)存區(qū)域,含有用來搜尋開機管理程序檢查碼的啟動指令,,用以下載新映像的程序代碼,,以及用來儲存檢查碼的空間,這組程序代碼可重設(shè)位置,,不同的區(qū)塊可置入專屬的內(nèi)存區(qū)域,,然而,當(dāng)項目設(shè)計準(zhǔn)備開始建置,,除檢查碼外,,這區(qū)域的所有空間都不可升級,。

第三組則是供使用者程序使用,這個部分含有使用者程序代碼,、所有相關(guān)的岔斷向量及呼叫開機管理程序的例程,,這個區(qū)域可重新編程與重新尋址,但在開機管理程序下載程序代碼時無法被存取,。任何指向此區(qū)域的岔斷,,在呼叫任何開機管理程序函式之前都應(yīng)關(guān)閉,若在執(zhí)行時程序內(nèi)容會變更,,則應(yīng)考慮可能發(fā)生的各種問題,。 

在個人計算機方面,應(yīng)用程序須和裝置進行通訊,,以及傳送新的使用者程序代碼,。研發(fā)業(yè)者會透過網(wǎng)站或光盤獲得所需軟件,軟件須能要求裝置進入開機狀態(tài),,并提供正確的驗證金鑰,,當(dāng)裝置準(zhǔn)備好時,主控端應(yīng)傳送新的內(nèi)容,,以便寫入至閃存,,并啟動下載程序的使用者程序,且應(yīng)記住開機管理程序的內(nèi)存配置,,這方面須知道使用者程序代碼的開始與結(jié)束位置及檢查碼等數(shù)據(jù),。在正常的運作模式下,開機管理程序會連結(jié)至正確的地址,,找到使用者程序代碼的開端,,使用者程序代碼發(fā)出的任何開機呼叫,都會指向開機管理程序例程的正確地址,。 

計算機可使用各種不同的機制,,把內(nèi)容透過USB傳送到開機管理程序,根據(jù)裝置內(nèi)開機管理程序的需求,,可利用控制,、岔斷或批次傳輸以傳送數(shù)據(jù),裝置內(nèi)的USB描述亦可決定程序須支持的驅(qū)動程序類型,,并可設(shè)定讓程序使用操作系統(tǒng)的人機接口裝置驅(qū)動程序,,或使用特定廠商的驅(qū)動程序。 

簡化啟動程序 

開機啟動其實是一個常見的程序,,個人計算機使用相同的原理把操作系統(tǒng)從硬盤加載到計算機,,許多參考設(shè)計方案與網(wǎng)絡(luò)上的項目設(shè)計范例,能協(xié)助在嵌入式設(shè)計中建置開機管理程序,,如廠商推出的PSoC Designer工具能用來建立一個USB或I2C開機管理程序,,并能搭配各種可編程系統(tǒng)單芯片或PSoC,。USB開機管理程序的使用者模塊會產(chǎn)生所有必要的開機管理程序代碼,能和使用者程序并存運作,,此工具讓業(yè)者設(shè)計出全速,、符合Chapter 9標(biāo)準(zhǔn)規(guī)范、人機接口裝置或原生USB裝置,,引導(dǎo)精靈會協(xié)助產(chǎn)生精確的USB描述,,并利用岔斷或控制傳輸類型支持開機管理程序的轉(zhuǎn)換。 

使用者模塊會根據(jù)設(shè)計時預(yù)測的需求產(chǎn)生開機管理程序代碼(表1),,其會搜尋各種可供選擇的參數(shù),,如使用者程序第一個和最后一個模塊、開機管理程序第一個與最后一個區(qū)塊及檢查碼的地址,,開機管理程序的大小也可自行調(diào)整,,以便插入任何必須和下載程序一起進行的特殊程序代碼,USB交易需要的金鑰也可自行設(shè)定,,而了解未來開機管理程序可能面臨的環(huán)境溫度,,可讓工具能產(chǎn)生適合的編程例程,,最后,,使用者可產(chǎn)生像void BootLdrUSB_EnterBootloader(void)例程,讓使用者程序代碼能從軟件程序啟動開機程序,。

表1 USB開機管理程序搜尋各種可選擇參數(shù)

用戶模塊參數(shù)

參數(shù)值

TW0_Block_Relocatable_Interrupt_Table

4C

ApplicationCode_Start_Block

4E

Last_Application_Block   FE

FE

Application_Checksum_Block

FF

Bootloader_Start_Block   2

2

Bootloader_Size

4B

BootloaderKey

0001020304050607

Flash_Program_Temperature_deg_C

-40C

ICE_Debug_FLASH_DISABLE

DISABLE_FLASH_WRITE

BootLdrUSBFS_ver

1000

模塊會產(chǎn)生一個有效的內(nèi)容檢查碼,,內(nèi)容是透過開機管理程序下載而來,另一個工具從編譯器的輸出端提供下載檔案,,這個*.dld檔案含有hex編碼格式的內(nèi)容,,和新的檢查碼一起編排成Flash模塊,且可透過由Visual Basic或C#語言撰寫的個人計算機程序分析讀取,。本文列舉之上述方式,,可把新的使用者程序透過USB接口下載到裝置中,讓最終使用者升級其產(chǎn)品,、除錯或改進功能,,不但不須使用任何特殊硬件進行升級,且毋需成本昂貴的產(chǎn)品召回或更換作業(yè),。 

北京迪陽世紀(jì)科技有限責(zé)任公司 版權(quán)所有 ? 2008 - 2018 著作權(quán)聲明
010-62156134 62169728 13301007825 節(jié)假日:13901042484 微信號:sun62169728
地址:北京市西城阜外百萬莊扣鐘北里7號公寓
E_mail:[email protected] 傳真: 010-68328400
京ICP備17023194號-1 公備110108007750