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| 亚洲国产精品成人久久综合影院| 午夜日b视频| 日本一区二区不卡视频| 黄色网址免费在线| 久久一日本道色综合久久| 色噜噜久久| 91在线播放国产| 国产乱人免费视频| 高清视频一区| 欧美成在线视频| 日韩 欧美 国产 精品 综合| 欧美激情视频一区二区三区免费| 一级一级特黄女人精品毛片| 亚洲水蜜桃久久综合网站| 亚洲视频免| 亚洲综合在线最大成人| 一本大道香蕉高清久久| 国产福利在线免费| 国产精品久久久久无码网站| 香蕉久久永久视频| 中国精品自拍| 亚洲视频一区| 国产在线八区| 免费一级毛片不卡在线播放| 亚洲国产无码有码| 亚洲青涩在线| 亚洲成人一区在线| 欧洲成人在线观看| 免费全部高H视频无码无遮掩| 国产欧美中文字幕| 国产美女精品在线| 二级特黄绝大片免费视频大片| 国产精品99r8在线观看| 99re经典视频在线| 欧美中文字幕无线码视频| 国产精品真实对白精彩久久| 91网红精品在线观看| 日本在线欧美在线| 久久96热在精品国产高清| 久久99国产综合精品女同| 99视频精品在线观看| 91精品国产情侣高潮露脸| 国产午夜小视频| 久久综合色视频| 18禁黄无遮挡网站| 丰满的熟女一区二区三区l| 国产精品冒白浆免费视频| 伊人色天堂| 国产在线精彩视频二区| 色网站免费在线观看| 99九九成人免费视频精品| 亚洲精品欧美重口| 亚洲人成影视在线观看| 日韩欧美中文| 99热这里只有精品久久免费| 26uuu国产精品视频| 丁香婷婷久久| 一本一本大道香蕉久在线播放| 国内自拍久第一页| 97成人在线视频| 久久亚洲国产一区二区| 伊人大杳蕉中文无码| 激情综合婷婷丁香五月尤物| 婷婷午夜天| 中国毛片网| 91小视频在线观看| 一本综合久久| 亚洲AV无码不卡无码| 亚洲a级在线观看| 91精品国产自产91精品资源| 久久综合色天堂av| 日韩高清欧美| 日韩国产亚洲一区二区在线观看| 成人午夜网址| 深夜福利视频一区二区| 中文字幕免费播放| 亚洲成人精品在线| 欧美日韩成人在线观看| 亚洲av无码片一区二区三区|