999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于嵌入式系統(tǒng)程序升級(jí)的架構(gòu)設(shè)計(jì)

2022-02-14 07:36:50潘文卿劉興義王飛飛宋炳雨王琳琳
汽車(chē)電器 2022年1期

潘文卿, 劉興義, 王飛飛, 宋炳雨, 王琳琳

(濰柴動(dòng)力股份有限公司, 山東濰坊 261061)

在汽車(chē)領(lǐng)域, 隨著智能化的不斷提升, 汽車(chē)各方面的功能越來(lái)越多, 越來(lái)越復(fù)雜, 軟件會(huì)不斷地迭代升級(jí), 而且更新周期開(kāi)始變得越來(lái)越短, 所以需要不斷地更新升級(jí)程序。 程序升級(jí)的流程和架構(gòu)需要保證正確穩(wěn)定, 安全可靠。 在汽車(chē)領(lǐng)域的嵌入式系統(tǒng)軟件中, 主要包含兩部分程序, 一部分是引導(dǎo)加載程序, 主要負(fù)責(zé)完成初始化硬件設(shè)備, 建立內(nèi)存空間的映射關(guān)系, 升級(jí)控制程序, 即Bootloader程序, 以下簡(jiǎn)稱(chēng)Boot程序; 另一部分是實(shí)現(xiàn)相關(guān)控制功能的應(yīng)用程序即APP程序。

1 Bootloader的相關(guān)概念

Bootloader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段程序, 初始化硬件設(shè)備, 建立內(nèi)存空間的映射關(guān)系, 從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適狀態(tài), 以便最終調(diào)用操作系統(tǒng)內(nèi)核做好正確的環(huán)境。 Bootloader是依賴(lài)于硬件而實(shí)現(xiàn)的, 特別是在嵌入式系統(tǒng)中。 因而我們可以構(gòu)建一個(gè)具有適用性、 安全可靠的架構(gòu)。

2 單Boot刷寫(xiě)架構(gòu)

單Boot刷寫(xiě)的架構(gòu), 即系統(tǒng)一上電, 先進(jìn)入Boot程序,進(jìn)行軟硬件的初始化, 建立內(nèi)存空間的映射關(guān)系, 然后校驗(yàn)應(yīng)用程序的完整性, 如果程序是完整的, 當(dāng)前也沒(méi)有程序更新需求進(jìn)入, 將跳轉(zhuǎn)到APP程序中運(yùn)行。 如果應(yīng)用程序運(yùn)行過(guò)程中收到刷寫(xiě)的命令, 則跳轉(zhuǎn)到Boot程序進(jìn)行APP軟件升級(jí)的會(huì)話(huà)流程。 這種單Boot的架構(gòu)隨著功能的不斷迭代升級(jí), 局限性已日漸明顯。 一旦Boot程序燒錄到控制器中, 即無(wú)法再更新。 圖1是Boot程序和APP程序運(yùn)行及刷寫(xiě)架構(gòu)圖。

圖1 Boot和APP的跳轉(zhuǎn)及刷寫(xiě)流程

這種單Boot的架構(gòu)適用于項(xiàng)目規(guī)劃最初就能夠?qū)?yīng)用程序的架構(gòu)劃分明確, 不會(huì)因?yàn)楣δ艿脑黾樱?程序的迭代導(dǎo)致程序區(qū)或者數(shù)據(jù)區(qū)空間不夠, 需要重新劃分區(qū)間的情況。 一旦應(yīng)用程序的架構(gòu)有調(diào)整, 單Boot的刷寫(xiě)架構(gòu)將不再適用, 控制器將不再支持軟件版本上下兼容, 持續(xù)升級(jí)。

3 雙Boot刷寫(xiě)架構(gòu)

3.1 雙Boot刷寫(xiě)架構(gòu)1

為了規(guī)避單Boot 的架構(gòu)帶來(lái)的不便, 再單獨(dú)拿一塊Flash區(qū)域做成雙Boot, 我們分別用BootA (更新應(yīng)用程序的Bootloader), BootM (更新BootA的Bootloader) 區(qū)分。 BootA中有啟動(dòng)程序, 一上電, 程序就從BootA中啟動(dòng)運(yùn)行, 上電后初始化軟硬件, 完成內(nèi)存空間的映射關(guān)系, 校驗(yàn)APP應(yīng)用程序的完整性, 在BootA中停留一定時(shí)間后跳轉(zhuǎn)到APP應(yīng)用程序, 如果在此停留期間收到更新APP的會(huì)話(huà)請(qǐng)求, 按照標(biāo)準(zhǔn)的UDS刷寫(xiě)流程進(jìn)行APP應(yīng)用程序更新, 更新完成后, 則跳轉(zhuǎn)到APP入口運(yùn)行應(yīng)用程序; 如果在BootA運(yùn)行期間收到更新BootA的會(huì)話(huà)命令, 則跳轉(zhuǎn)到BootM中, 按照標(biāo)準(zhǔn)的UDS刷寫(xiě)流程更新BootA, 更新完成后, 先從BootM跳轉(zhuǎn)到BootA, 然后再跳轉(zhuǎn)到APP。

如果在APP運(yùn)行期間收到更新BootA的會(huì)話(huà)請(qǐng)求, 則先從APP跳轉(zhuǎn)到BootA, 再?gòu)腂ootA跳轉(zhuǎn)到BootM, 進(jìn)行BootA的程序更新, 更新完成后則由BootM 先跳轉(zhuǎn)到BootA, 再由BootA跳轉(zhuǎn)到APP。 BootM和APP之間不能直接跳轉(zhuǎn), 以保證BootM的獨(dú)立性。

為了防止出現(xiàn)異常復(fù)位或者刷死APP的情況, 設(shè)定復(fù)位機(jī)制, 強(qiáng)制停留在BootA程序中, 并發(fā)送一條具有復(fù)位原因標(biāo)識(shí)內(nèi)容的報(bào)文到總線(xiàn)上以便分析, 當(dāng)前因異常強(qiáng)制停留在了BootA, 可以分析APP程序進(jìn)行定位以便重新進(jìn)行程序刷寫(xiě)。

此架構(gòu)的優(yōu)點(diǎn)是隨著程序的不斷迭代升級(jí), 當(dāng)BootA的刷寫(xiě)流程或者程序設(shè)計(jì)不滿(mǎn)足要求的時(shí)候, 可以通過(guò)BootM進(jìn)行更新, BootM僅有更新BootA的功能, 比較純粹和獨(dú)立,僅僅是用來(lái)更新BootA, 因此它占用的空間會(huì)比較小, 對(duì)整個(gè)嵌入式系統(tǒng)程序的設(shè)計(jì)不會(huì)帶來(lái)太大的影響。

如圖2 所示, BootM 和APP 沒(méi)有直接的跳轉(zhuǎn)關(guān)系,都是通過(guò)BootA來(lái)跳轉(zhuǎn), 這樣BootM 會(huì)比較獨(dú)立, 不受APP 的影響,但是同時(shí)更新BootA 時(shí)風(fēng)險(xiǎn)比較大, 此時(shí)要保持通信的設(shè)備和線(xiàn)路穩(wěn)定, 通信會(huì)話(huà)流程設(shè)計(jì)要安全可靠, 如果在更新BootA的過(guò)程中出現(xiàn)間斷、 卡滯等問(wèn)題會(huì)導(dǎo)致刷寫(xiě)失敗, 如果BootA不能正常啟動(dòng)運(yùn)行, 會(huì)導(dǎo)致控制器失效。 因此更新BootA的風(fēng)險(xiǎn)性較高。

圖2 BootA-BootM-APP跳轉(zhuǎn)關(guān)系1

3.2 雙Boot刷寫(xiě)架構(gòu)2

控制器上電首先進(jìn)入BootM, BootM中包含了啟動(dòng)程序,初始化程序, 校驗(yàn)APP完整性功能, 在BootM運(yùn)行期間收到刷寫(xiě)會(huì)話(huà)命令, 如果要更新BootA, 則按照標(biāo)準(zhǔn)的UDS刷寫(xiě)流程更新BootA, 更新完畢后, 跳轉(zhuǎn)到APP; 如果收到更新APP的會(huì)話(huà)命令, 則先跳轉(zhuǎn)到BootA, 然后更新APP; 如果沒(méi)有收到任何更新程序的會(huì)話(huà)命令, 則直接跳轉(zhuǎn)到APP。

在APP程序運(yùn)行期間, 如果收到更新BootA的會(huì)話(huà)命令,則跳轉(zhuǎn)到BootM, 更新BootA, 更新完畢后跳轉(zhuǎn)到APP; 如果收到更新APP的會(huì)話(huà)命令, 則跳轉(zhuǎn)到BootA, 對(duì)APP程序進(jìn)行更新, 更新完畢后跳轉(zhuǎn)到APP運(yùn)行。 BootM的功能保證了不管什么情況下即便是BootA異常刷死了, 也可以重新上電跳轉(zhuǎn)到APP正常運(yùn)行。

如圖3 所示, 在此架構(gòu)關(guān) 系 中 ,BootM、 BootA、 APP 三者建立相互跳轉(zhuǎn)關(guān)系, BootM承接一部分初始化的功能,更 新 BootA,如果更新BootA失敗, 則停留在BootM中。 BootA保留更新APP的功能, 如果APP存在異常, 連續(xù)復(fù)位或者被刷死的時(shí)候, 設(shè)定復(fù)位機(jī)制, 停留在BootA中, BootA會(huì)通過(guò)一條可以標(biāo)識(shí)復(fù)位原因的報(bào)文發(fā)送到總線(xiàn)上以便分析并進(jìn)一步更新APP; 如果APP更新失敗, 會(huì)停留在BootA中; 如果BootA更新失敗, 停留在BootM中, 以便程序進(jìn)一步更新, 可以保證控制器不會(huì)因?yàn)槌绦騿?wèn)題而失效。

圖3 BootA-BootM-APP跳轉(zhuǎn)關(guān)系2

4 結(jié)論

本文以實(shí)際的嵌入式系統(tǒng)程序升級(jí)為例, 提出了3種嵌入式系統(tǒng)程序升級(jí)Boot架構(gòu)設(shè)計(jì), 并對(duì)每一種Boot架構(gòu)的優(yōu)缺點(diǎn)進(jìn)行了分析。 在功能不斷智能化、 多樣化的情況下,程序不斷迭代升級(jí), 頻繁升級(jí)程序是不可避免的, 在優(yōu)化過(guò)程中, Boot也會(huì)升級(jí)。 為了保證控制器下線(xiàn)后, Boot程序和應(yīng)用程序都能夠不斷地升級(jí), 我們提出了雙Boot的概念,用一個(gè)Boot升級(jí)另一個(gè)Boot, 另一個(gè)Boot升級(jí)應(yīng)用程序, 這樣上電后的啟動(dòng)順序以及跳轉(zhuǎn)關(guān)系成了關(guān)鍵。 本文從兩種Boot架構(gòu)中分析了各自的優(yōu)缺點(diǎn), 在架構(gòu)2中彌補(bǔ)了架構(gòu)1的缺點(diǎn), 降低了Boot刷寫(xiě)的風(fēng)險(xiǎn), 提高了系統(tǒng)的穩(wěn)定性。

主站蜘蛛池模板: 亚洲天堂高清| 91视频免费观看网站| 黄色网址手机国内免费在线观看| 亚洲浓毛av| 亚洲av无码专区久久蜜芽| 国产精品久线在线观看| 又黄又湿又爽的视频| 国产美女丝袜高潮| 青青国产成人免费精品视频| 国产又爽又黄无遮挡免费观看| 香蕉综合在线视频91| 2022精品国偷自产免费观看| 国产美女91视频| 天天视频在线91频| 色婷婷亚洲综合五月| 午夜日本永久乱码免费播放片| 白浆视频在线观看| 99精品高清在线播放| 欧美亚洲第一页| 日韩av手机在线| 毛片久久网站小视频| 999国内精品久久免费视频| yjizz国产在线视频网| 久久99国产精品成人欧美| Aⅴ无码专区在线观看| 伊人福利视频| 精品国产成人a在线观看| 人妻无码中文字幕第一区| 欧美成人国产| 亚洲国产精品不卡在线| 狂欢视频在线观看不卡| 亚洲最黄视频| 日韩 欧美 小说 综合网 另类| 精品伊人久久久久7777人| 亚洲第一视频区| 中文字幕乱码中文乱码51精品| 五月婷婷导航| 九色综合伊人久久富二代| 久久无码av一区二区三区| 美女潮喷出白浆在线观看视频| 国产在线观看91精品| 91年精品国产福利线观看久久 | 久久九九热视频| 亚洲第一中文字幕| 欧美97欧美综合色伦图| 91精品啪在线观看国产| 色噜噜在线观看| 亚洲欧美日本国产综合在线| 日韩乱码免费一区二区三区| 极品私人尤物在线精品首页| 999精品色在线观看| 久久免费视频播放| 国产最新无码专区在线| 4虎影视国产在线观看精品| 国产91视频免费观看| 三区在线视频| 伊人蕉久影院| 四虎永久免费网站| 精品日韩亚洲欧美高清a| 亚洲一区二区无码视频| 97超级碰碰碰碰精品| 99999久久久久久亚洲| 国产真实乱子伦视频播放| 亚洲二区视频| 亚洲天堂成人| 亚洲国产看片基地久久1024| 嫩草国产在线| 毛片大全免费观看| 欧美色视频在线| 欧美第一页在线| 波多野结衣一二三| 亚洲久悠悠色悠在线播放| 精品小视频在线观看| 一本色道久久88| 亚洲一级毛片在线观| 2020极品精品国产 | 国产高清不卡| 91破解版在线亚洲| 日韩精品专区免费无码aⅴ| 国产精品午夜福利麻豆| 老司国产精品视频| 亚洲欧美日本国产综合在线|