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)定性。

主站蜘蛛池模板: 在线高清亚洲精品二区| 四虎永久在线| 一个色综合久久| 免费人欧美成又黄又爽的视频| 国产精品夜夜嗨视频免费视频| 国产精品嫩草影院视频| 亚洲无线一二三四区男男| 日韩欧美一区在线观看| 亚洲国产AV无码综合原创| 夜夜高潮夜夜爽国产伦精品| 亚洲中文精品久久久久久不卡| 国产欧美日韩综合在线第一| 丝袜美女被出水视频一区| 国产成人精品男人的天堂下载 | 色哟哟国产精品一区二区| 亚洲欧美国产高清va在线播放| 亚洲综合极品香蕉久久网| 激情综合网址| 国产在线日本| 中文字幕久久波多野结衣| 国产精品内射视频| 国产欧美精品午夜在线播放| 波多野结衣视频网站| 国产综合在线观看视频| 色综合中文字幕| 欧美亚洲国产精品第一页| 婷婷色一区二区三区| 日韩 欧美 小说 综合网 另类| 99久久精品免费看国产免费软件| 亚洲侵犯无码网址在线观看| 久久99精品国产麻豆宅宅| 一级毛片免费观看不卡视频| 免费A∨中文乱码专区| 亚洲另类国产欧美一区二区| 亚洲愉拍一区二区精品| 亚洲国产AV无码综合原创| h网址在线观看| 久久久久国产精品熟女影院| 综合五月天网| 久久性妇女精品免费| 亚洲综合九九| 欧美精品高清| 国产精品主播| 黄色网站不卡无码| 久久96热在精品国产高清| 欧美成人亚洲综合精品欧美激情| 欧美有码在线| 亚洲男人天堂网址| 美女国内精品自产拍在线播放| 久久精品国产精品一区二区| 成人福利在线观看| 国产无人区一区二区三区| 亚洲成人黄色在线观看| 亚洲欧美成人在线视频| 日本亚洲成高清一区二区三区| 国产精品3p视频| 丰满的熟女一区二区三区l| 日韩黄色精品| 亚洲天堂成人| 亚洲六月丁香六月婷婷蜜芽| 日韩黄色精品| 国产精品19p| 四虎影视国产精品| 嫩草国产在线| 日本人妻一区二区三区不卡影院| 99这里只有精品免费视频| 全色黄大色大片免费久久老太| 中国国产A一级毛片| 国产精品99一区不卡| 日韩少妇激情一区二区| 欧美视频免费一区二区三区| 免费在线一区| 亚洲另类国产欧美一区二区| 日韩国产黄色网站| 欧美成人在线免费| 欧美视频在线不卡| 亚洲αv毛片| 女人18毛片一级毛片在线| 18黑白丝水手服自慰喷水网站| 91小视频版在线观看www| 亚洲精品另类| 风韵丰满熟妇啪啪区老熟熟女|