• <del id="0rfyz"></del>

  • <del id="0rfyz"></del>
      <th id="0rfyz"><progress id="0rfyz"></progress></th>
      <b id="0rfyz"><menuitem id="0rfyz"></menuitem></b>

        <del id="0rfyz"><form id="0rfyz"></form></del>
      1. 
        

          <b id="0rfyz"><menuitem id="0rfyz"></menuitem></b>

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

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

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

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

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

              開機(jī)管理程序扮演重要角色 

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

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

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

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

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

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

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

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

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

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

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

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

              簡化啟動(dòng)程序 

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

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

              表1 USB開機(jī)管理程序搜尋各種可選擇參數(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

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

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

            • <del id="0rfyz"></del>
                <th id="0rfyz"><progress id="0rfyz"></progress></th>
                <b id="0rfyz"><menuitem id="0rfyz"></menuitem></b>

                  <del id="0rfyz"><form id="0rfyz"></form></del>
                1. 
                  

                    <b id="0rfyz"><menuitem id="0rfyz"></menuitem></b>

                        天天日天天插天天爽 | 欧洲激情综合网 | 熟女AV一区 | 深爱激情五月网婷婷 | 操逼射精视频 |