色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式設(shè)備遠(yuǎn)程在線升級(jí)技術(shù)的研究

          嵌入式設(shè)備遠(yuǎn)程在線升級(jí)技術(shù)的研究

          作者: 時(shí)間:2012-07-06 來源:網(wǎng)絡(luò) 收藏

          2.2 系統(tǒng)軟件設(shè)計(jì)
          2.2.1 Bootloader工作原理
          Bootloader位于FLASH的起始處,主要是用來啟動(dòng)系統(tǒng),并且裝載用戶程序執(zhí)行,如果沒有Bootloader,硬件啟動(dòng)成功后,將直接運(yùn)行用戶應(yīng)用程序。反之,Bootloader的啟動(dòng)代碼將先被執(zhí)行,進(jìn)行一系列的初始化操作后,根據(jù)預(yù)先設(shè)定的條件,選擇執(zhí)行用戶應(yīng)用程序或升級(jí)控制程序。
          Bootloader包含兩種不同的操作模式:“啟動(dòng)加載”模式和“下載”模式。啟動(dòng)加載模式:這種模式也稱為“自主”模式。也就是Bootloader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過程并沒有用戶的介入。這種模式是Boodoader的正常工作模式。下載模式:在這種模式下,目標(biāo)機(jī)上的Bootloader將通過串口連接或網(wǎng)絡(luò)連接等通信手段從PC下載文件,比如:下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被Bootloader保存到目標(biāo)機(jī)的RAM中,然后再被Bootloader寫到目標(biāo)機(jī)上的FLASH類固態(tài)存儲(chǔ)中。Bootloader工作原理流程圖如圖3所示。

          本文引用地址:http://cafeforensic.com/article/148804.htm

          d.JPG


          2.2.2 FLASH存儲(chǔ)器編程及升級(jí)流程
          終端的升級(jí)主要是對(duì)ARM芯片內(nèi)部的FLASH存儲(chǔ)器的原始數(shù)據(jù)進(jìn)行擦除以及新數(shù)據(jù)的下載的過程。本采用IAP(In-Application Programming)進(jìn)行FLASH編程,在應(yīng)用編程IAP是從結(jié)構(gòu)上將FLASH存儲(chǔ)器映射為兩個(gè)存儲(chǔ)體,當(dāng)運(yùn)行一個(gè)存儲(chǔ)體上的用戶程序時(shí),可對(duì)另一個(gè)存儲(chǔ)體重新編程,之后將程序從一個(gè)存儲(chǔ)體轉(zhuǎn)向另一個(gè);同時(shí)還可以在應(yīng)用程序控制下,對(duì)程序某段存儲(chǔ)空間進(jìn)行讀取、擦除和寫入操作。IAP的實(shí)現(xiàn)極為靈活,可利用單片機(jī)的串行口接到計(jì)算機(jī)的RS232口,通過專門設(shè)計(jì)的固件程序來編程內(nèi)部存儲(chǔ)器,可以通過現(xiàn)有的Inte rnet或其他通訊方式很方便地實(shí)現(xiàn)升級(jí)和維護(hù)。
          為了實(shí)現(xiàn)升級(jí)將ARM芯片內(nèi)部的FLASH存儲(chǔ)器劃分為Bootloader區(qū)(程序啟動(dòng)區(qū))、升級(jí)處理區(qū)、用戶代碼0區(qū)、用戶代碼1區(qū)。如圖4所示。

          e.JPG


          啟動(dòng)區(qū)主要用于存放系統(tǒng)初始化代碼以及引導(dǎo)程序Boofloader,當(dāng)CPU復(fù)位后,自動(dòng)執(zhí)行該段程序代碼,該程序的主要功能是讀取片外EEPROM中相關(guān)標(biāo)志,判定系統(tǒng)的運(yùn)行模式,若是工作模式,則根據(jù)片外EEPROM中其他標(biāo)志,跳轉(zhuǎn)到規(guī)定的應(yīng)用程序區(qū)的首地址;若是升級(jí)模式,則進(jìn)入軟件升級(jí)處理部分的首地址。
          升級(jí)處理區(qū)主要是負(fù)責(zé)接收程序代碼數(shù)據(jù)包、校驗(yàn)、固化程序代碼等;當(dāng)升級(jí)完畢后,將修改片外EEPROM中相關(guān)標(biāo)志,指示CPU復(fù)位后的運(yùn)行模式和復(fù)位后應(yīng)運(yùn)行的程序區(qū)。
          用戶代碼0區(qū)和用戶代碼1區(qū)用于交替存放當(dāng)前用戶代碼以及升級(jí)代碼,若當(dāng)前用戶代碼放在0區(qū),則將接收到的升級(jí)代碼存放在1區(qū),此時(shí)用戶代碼1區(qū)便成為當(dāng)前終端指向的用戶程序,而用戶代碼0區(qū)則用于存放下次升級(jí)時(shí)的新代碼。
          終端上電后首先進(jìn)入Bootloader區(qū)進(jìn)行系統(tǒng)的初始化,接著終端從片外的EEPROM中讀取升級(jí)配置,包括升級(jí)標(biāo)志位,已收到的最后一個(gè)數(shù)據(jù)包的ID等,若終端處于升級(jí)狀態(tài),則發(fā)出向服務(wù)器索要升級(jí)數(shù)據(jù)的指令,此時(shí)指令中將包含終端上次已接收到的最后一個(gè)數(shù)據(jù)包的ID,這樣可以避免服務(wù)器重復(fù)發(fā)送數(shù)據(jù)包,實(shí)現(xiàn)續(xù)傳的功能。終端通過Internet接收數(shù)據(jù)包并對(duì)數(shù)據(jù)包進(jìn)行校驗(yàn)判斷以保證接收到正確的數(shù)據(jù)。由于FLASH中進(jìn)行編程的最小單位是頁,當(dāng)接收到的數(shù)據(jù)達(dá)到一頁后,通過IAP進(jìn)行編程,編程結(jié)束后將最后一條數(shù)據(jù)包的ID保存在EEP ROM中,所有升級(jí)數(shù)據(jù)發(fā)送結(jié)束并編程成功后,通過IAP指示CPU復(fù)位后應(yīng)運(yùn)行的應(yīng)用程序區(qū)域。具體的軟件升級(jí)流程圖如圖5所示。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉