精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

架構(gòu)性需求的基礎(chǔ)知識(shí)

汽車ECU開發(fā) ? 來(lái)源:汽車ECU開發(fā) ? 2024-11-15 11:01 ? 次閱讀

第一次接觸“架構(gòu)性需求”,大約在六年前,當(dāng)時(shí)一位大佬指導(dǎo)我們說(shuō),在前期產(chǎn)品規(guī)劃時(shí),最重要的就是找到“架構(gòu)性需求”。本人就一頭的問(wèn)號(hào),“架構(gòu)性需求”是什么?我沒(méi)有聽(tīng)錯(cuò)吧?當(dāng)時(shí)也沒(méi)怎么放在心上,直到近年架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)增多,才領(lǐng)悟這句話的正確性。

什么是?

首先,什么是需求?

需求是一個(gè)多義詞,它的準(zhǔn)確所指往往取決于你所處的位置。在汽車行業(yè)我們往往會(huì)利用ASPICE的V模型來(lái)找到自己需求的來(lái)源。比如做詳細(xì)設(shè)計(jì),其需求來(lái)源就是架構(gòu)設(shè)計(jì)。

03aa8ec6-9071-11ef-a511-92fbcf53809c.png

但是這個(gè)理解是不準(zhǔn)確的,下圖的表述會(huì)更加準(zhǔn)確,也就是說(shuō)本層次的需求往往有三個(gè)來(lái)源,以Domain level - Functional architecture步驟為例:

Vehicle level的Functional architecture

Vehicle level的Logical architecture

Domain level的Requirements

03caa738-9071-11ef-a511-92fbcf53809c.png

RFLP: MBSE背后的方法論

什么是架構(gòu)性需求?

架構(gòu)性需求是整個(gè)系統(tǒng)的最重要的那些需求,它可能出現(xiàn)在產(chǎn)品開發(fā)的各個(gè)層次和各個(gè)階段,對(duì)產(chǎn)品的形態(tài)、功能、開發(fā)周期等等往往起著決定性的作用。它們最大的特征是:只能在項(xiàng)目早期出現(xiàn),在項(xiàng)目中期出現(xiàn)往往會(huì)導(dǎo)致巨大的工作量,甚至需要將整個(gè)項(xiàng)目推倒重來(lái)。

典型的架構(gòu)性需求一般有這么三類(但也有不少不在其中):

系統(tǒng)的主要功能需求,它們確定了這個(gè)系統(tǒng)必須擁有的功能。比如:汽車必須能在路上開、SOA通信框架必須能跨MPU和MCU通信等等。

質(zhì)量需求和非功能性需求,一般是指這個(gè)系統(tǒng)的那些功能要完成的有多好。比如剎車系統(tǒng)必須達(dá)到ASIL-D標(biāo)準(zhǔn)、最差通信時(shí)延必須在1ms以內(nèi)等等。

決定了解決方案和項(xiàng)目的各種約束條件。比如X項(xiàng)目必須在1年之內(nèi)完成、某ECU的內(nèi)存只有100KB等等。

那么接下來(lái)以汽車行業(yè)的典型“架構(gòu)性需求”為例,從不同的層次依次展開講講。

2. 整車級(jí)別

整車級(jí)別的架構(gòu)性需求會(huì)特別多,就會(huì)有下面這些:

車輛的售價(jià):定價(jià)20萬(wàn)區(qū)間的車,如果中途說(shuō)改成要賣40萬(wàn),幾乎就是不可能完成的任務(wù)。

上市時(shí)間:一輛新車的正向開發(fā)時(shí)間普遍要3年左右,如果說(shuō)要1年內(nèi)上市一款新車,那整體的開發(fā)策略會(huì)完全不一樣。

這個(gè)環(huán)節(jié)離用戶會(huì)比較接近,大家一看就明白,我就不多講了。

3. 域(子系統(tǒng))級(jí)別域指的是功能域,一般乘用車會(huì)分為“座艙域”、“智駕域”、“車輛控制域”、“動(dòng)力底盤域”等等。這里以座艙域的“3秒內(nèi)倒車影像啟動(dòng)”展開講。

種類:非功能性需求

這個(gè)需求是由整車級(jí)別的R和F同時(shí)作用下,才決定了是否需要這個(gè)需求: -車輛的售價(jià)決定了是否需要高品質(zhì)

-車輛的功能拆解決定了是否有倒車影像

03e0e8c2-9071-11ef-a511-92fbcf53809c.png

自從車載倒車影像出現(xiàn)以來(lái),在車輛啟動(dòng)之后3秒內(nèi),倒車影像就可以正常工作就是個(gè)基礎(chǔ)需求。否則的話,司機(jī)系好安全帶后若要倒車,就只能傻坐著,用戶體驗(yàn)非常之差。 這個(gè)需求對(duì)于Linux時(shí)代的車載多媒體系統(tǒng)不是問(wèn)題,因?yàn)長(zhǎng)inux本身啟動(dòng)就比較快。但是當(dāng)車載多媒體系統(tǒng)進(jìn)入Android時(shí)代,就要了命了。

下圖是Android的啟動(dòng)順序,Android的界面要能顯示圖像,需要至少到下面的Normal Mode處。當(dāng)前行業(yè)的優(yōu)秀水平是15秒以內(nèi)完全啟動(dòng)。那怎么辦呢?

040367bc-9071-11ef-a511-92fbcf53809c.png

http://www.ryantzj.com/boot-sequence-in-android.html

行業(yè)一般有幾種辦法:

駝鳥大法:忽略這個(gè)需求,15秒就讓用戶等吧,反正我這車也便宜。

深度改造法:對(duì)Android系統(tǒng)進(jìn)行深度定制,比如將倒車影像的啟動(dòng)順序直接提前到跟Zygote并行啟動(dòng)。但這個(gè)的研發(fā)成本很高,需要引入一套新的GUI系統(tǒng),因?yàn)檫@時(shí)Android的UI系統(tǒng)還沒(méi)啟動(dòng)完畢呢。

Hypervisor法:近年來(lái)不少芯片都支持Hypervisor,就直接將倒車影像的精簡(jiǎn)版本部署到啟動(dòng)較快的系統(tǒng)上,如Linux或QNX。在快啟階段使用精簡(jiǎn)版本的功能,等到Android完全啟動(dòng)后再切換至完整版本。

042c6cac-9071-11ef-a511-92fbcf53809c.png

休眠法:某些芯片支持在關(guān)機(jī)時(shí)將當(dāng)前系統(tǒng)狀態(tài)保存至Flash上,這樣下次開機(jī)就能更快了。但支持這個(gè)功能代價(jià)是很高的,首先是這種芯片就不多,然后還得浪費(fèi)幾個(gè)G的寶貴空間用于保存狀態(tài)。

不下電法:對(duì)于純電車,干脆就不讓車機(jī)下電,后果就是每天要多掉個(gè)幾公里續(xù)航,并且對(duì)系統(tǒng)的穩(wěn)定性提出了更高的要求。畢竟每次關(guān)機(jī)都是清除系統(tǒng)垃圾的機(jī)會(huì),不關(guān)機(jī)就沒(méi)有這個(gè)時(shí)機(jī)了。

不管哪個(gè)解決辦法,這個(gè)看似簡(jiǎn)單的“3秒啟動(dòng)”的需求,搞出了這么多解決方案,也是讓各大廠商的工程師掉了好多頭發(fā)。

4.ECU級(jí)別

各個(gè)域的功能設(shè)計(jì)做進(jìn)一步的拆解,就落到了ECU里面。這里就以MCU的“極少的內(nèi)存(以KB為單位)”做展開。

種類:約束條件

這個(gè)需求的來(lái)源大致如下:

為了實(shí)現(xiàn)車內(nèi)的各種功能,如無(wú)線鑰匙、遠(yuǎn)程解鎖、防盜報(bào)警等等,車內(nèi)的電子器件現(xiàn)在已經(jīng)是不可或缺的了 (Vehicle Level - Functional)

受限于成本考慮,能由MCU完成的,絕不用MPU (Domain Level - Functional)

044e8558-9071-11ef-a511-92fbcf53809c.png

說(shuō)到“極少的內(nèi)存”,沒(méi)接觸過(guò)MCU編程的工程師都會(huì)想,那又怎么樣?那我就少實(shí)現(xiàn)點(diǎn)功能唄。但其實(shí)對(duì)你的編程模式發(fā)生極大的影響。

MCU的一大特點(diǎn)是內(nèi)存極小,在車載行業(yè)較常見(jiàn)的Renesas V850系列,其內(nèi)存最小8K,最大也就192K。

0468aa28-9071-11ef-a511-92fbcf53809c.png

這么一點(diǎn)內(nèi)存,在MPU端,往往啟動(dòng)一個(gè)進(jìn)程就可以耗光了,根本就不夠用。啟動(dòng)一個(gè)線程,至少需要給它分配兩部分內(nèi)存,TCB和Stack,TCB還好,但Stack會(huì)較大,比如Linux的默認(rèn)配置就是8MB。那么怎么辦呢?這就引出了一條軟件架構(gòu)設(shè)計(jì)階段的“架構(gòu)性需求”。

基于RTE運(yùn)行

很多針對(duì)MCU的軟件架構(gòu)都會(huì)包含RTE這一角色,其核心的功能就是大部分的線程/Task由RTE創(chuàng)建,并由各個(gè)應(yīng)用共享,這樣就可以節(jié)省很多Stack的內(nèi)存開銷。

最著名的就是AUTOSAR了,你的程序(應(yīng)用)被拆成了一個(gè)個(gè)的Runnables,多個(gè)Runnable可以運(yùn)行在同一個(gè)Task中,共享同一個(gè)棧。

0489d360-9071-11ef-a511-92fbcf53809c.png

而一旦你的程序需要基于RTE運(yùn)行,那么隨之而來(lái)的,就是要做幾件基礎(chǔ)的事情:

對(duì)你的程序進(jìn)行配置,主要是配置有哪些Runnable。

配置觸發(fā)這些Runnable對(duì)應(yīng)的事件Event。

實(shí)現(xiàn)這些Runnable。

下圖為Mathworks對(duì)Runnable的配置界面:

04a26b3c-9071-11ef-a511-92fbcf53809c.png

支持的Event類型

04b5f850-9071-11ef-a511-92fbcf53809c.png

https://www.mathworks.com/help/autosar/ug/configure-runnables-events-irvs.html

這種開發(fā)方式就跟MPU端的靈活開發(fā)有非常大的不同。一切都是由事件觸發(fā),沒(méi)有main()函數(shù),并且需要時(shí)刻牢記一點(diǎn):不能block當(dāng)前的task,否則整個(gè)ECU可能都會(huì)卡死。

5. 模塊級(jí)別

各個(gè)ECU確定了選型后,做了整體的系統(tǒng)設(shè)計(jì)和軟件架構(gòu)設(shè)計(jì)后,最終的實(shí)現(xiàn)會(huì)落到軟件模塊級(jí)別。我們以“禁止動(dòng)態(tài)分配內(nèi)存”為例展開這部分。

種類:約束條件

這個(gè)需求的來(lái)源大致如下:

車輛的動(dòng)力底盤域要絕對(duì)可靠 (Domain Level - Requirement)

動(dòng)力底盤域的某ECU上的軟件的可靠性要達(dá)到ASIL-D級(jí)別(ECU Level -Requirement)

想達(dá)到ASIL-D級(jí)別,是必然不允許動(dòng)態(tài)分配內(nèi)存的。(Module Level - Requirement)

04d32506-9071-11ef-a511-92fbcf53809c.png

動(dòng)態(tài)分配內(nèi)存有很多好處,但是壞處也不少

內(nèi)存利用率相對(duì)較低

需要內(nèi)存管理程序,會(huì)額外占用內(nèi)存

產(chǎn)生內(nèi)存碎片,需要定期清理

不確定性較大

虛擬內(nèi)存往往會(huì)大于物理內(nèi)存,不可避免的引發(fā)缺頁(yè)中斷,使得分配內(nèi)存的時(shí)間不確定性較大

分配內(nèi)存時(shí),查找可用內(nèi)存也會(huì)引入一定的不確定性

分配內(nèi)存可能會(huì)失敗,為避免這種情況往往需要較為復(fù)雜的內(nèi)存回收機(jī)制(如Android的OOM killer),而不定時(shí)的觸發(fā)會(huì)進(jìn)一步導(dǎo)致不確定性)

所以,像SafeRTOS這種對(duì)可靠性要求極高的OS干脆就禁用了動(dòng)態(tài)分配內(nèi)存。

04f6b106-9071-11ef-a511-92fbcf53809c.png

這又意味著什么呢?這就意味著本來(lái)在系統(tǒng)層面上的資源分配會(huì)前移到代碼編寫階段,對(duì)編程模式是個(gè)重大的改變。

051b7c70-9071-11ef-a511-92fbcf53809c.png

比如AUTOSAR中的Component配置就包含了這些東西:

提供哪些接口,類型是啥?

需要使用哪些接口,類型是啥?

05458f10-9071-11ef-a511-92fbcf53809c.png

6. 如何識(shí)別架構(gòu)性需求

既然架構(gòu)性需求是如此的關(guān)鍵,那么如何才能在項(xiàng)目前期將絕大部分的架構(gòu)性需求識(shí)別出來(lái)呢?個(gè)人覺(jué)得主要?有兩大類方法:

用常見(jiàn)的架構(gòu)性需求分類來(lái)幫助梳理,就如文章開頭所講的:

系統(tǒng)的主要功能需求

質(zhì)量需求和非功能性需求

決定了解決方案和項(xiàng)目的各種約束條件

進(jìn)行行業(yè)對(duì)標(biāo)和調(diào)研,對(duì)于行業(yè)中各個(gè)領(lǐng)域的解決方案中特殊的點(diǎn)要知其然且知其所然,而不是簡(jiǎn)單的想當(dāng)然,因?yàn)檫@些特殊的點(diǎn)往往就是為了滿足特定的“架構(gòu)性需求”而來(lái)的。

結(jié)語(yǔ)

三年前,有位大佬問(wèn)我,架構(gòu)設(shè)計(jì)那么多環(huán)節(jié),哪個(gè)環(huán)節(jié)最重要?我回答說(shuō):“把需求弄清楚最重要”。現(xiàn)在想來(lái),確實(shí)如此,萬(wàn)一你漏了一條“架構(gòu)性需求”,可該怎么辦?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2998

    瀏覽量

    73881
  • 架構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    509

    瀏覽量

    25447

原文標(biāo)題:架構(gòu)性需求是什么

文章出處:【微信號(hào):eng2mot,微信公眾號(hào):汽車ECU開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    labview基礎(chǔ)知識(shí)

    labview基礎(chǔ)知識(shí)labview基礎(chǔ)知識(shí)labview基礎(chǔ)知識(shí)labview基礎(chǔ)知識(shí)
    發(fā)表于 03-08 17:56

    FPGA架構(gòu)和應(yīng)用基礎(chǔ)知識(shí)

    ASIC慢3到4倍。本文介紹了FPGA的基礎(chǔ)知識(shí)和FPGA架構(gòu)模塊,包括I / O焊盤,邏輯塊和開關(guān)矩陣。FPGA是VLSI的一些新興趨勢(shì)領(lǐng)域。FPGA架構(gòu)通用FPGA架構(gòu)由三種類型的
    發(fā)表于 12-14 17:39

    ARM架構(gòu)基礎(chǔ)知識(shí)小結(jié)

    從單片機(jī)轉(zhuǎn)到ARM —— ARM架構(gòu)基礎(chǔ)知識(shí)小結(jié)從單片機(jī)轉(zhuǎn)到ARM,主要需要學(xué)習(xí)ARM的架構(gòu),ARM相比單片機(jī)多了一些外設(shè)和總線。在僅僅是裸奔的情況下,如果熟悉了ARM架構(gòu),那么可以認(rèn)
    發(fā)表于 05-12 17:06

    ARM架構(gòu)基礎(chǔ)知識(shí)小結(jié)

    從單片機(jī)轉(zhuǎn)到ARM ―― ARM架構(gòu)基礎(chǔ)知識(shí)小結(jié)
    發(fā)表于 12-29 06:16

    【HarmonyOS基礎(chǔ)知識(shí)】HarmonyOS系統(tǒng)架構(gòu)

    這個(gè)視頻帶大家揭秘HarmonyOS基礎(chǔ)知識(shí)之HarmonyOS系統(tǒng)架構(gòu),一起來(lái)看看?
    發(fā)表于 01-19 18:32

    Cortex-A7 MPCore架構(gòu)基礎(chǔ)知識(shí)點(diǎn)匯總,不看肯定后悔

    Cortex-A7 MPCore架構(gòu)基礎(chǔ)知識(shí)點(diǎn)匯總,不看肯定后悔
    發(fā)表于 11-30 06:45

    ARM架構(gòu)基礎(chǔ)知識(shí)點(diǎn)匯總

    之所以更復(fù)雜,當(dāng)然是為了跑更快以及更好地支持片上系統(tǒng),所以在某種程度上來(lái)說(shuō)對(duì)片上系統(tǒng)不是很了解的話那對(duì)于ARM架構(gòu)的理解也不會(huì)那么深。ARM架構(gòu)基礎(chǔ)知識(shí)小結(jié)通用寄存器R13通常被用作棧指針,進(jìn)入異...
    發(fā)表于 12-13 06:26

    通信基礎(chǔ)知識(shí)教程

    通信基礎(chǔ)知識(shí) 1、電信基礎(chǔ)知識(shí)2、通信電源技術(shù)3、配線設(shè)備結(jié)構(gòu)、原理與防護(hù)4、防雷基礎(chǔ)知識(shí)5、EMC基礎(chǔ)知識(shí)6、防腐蝕原理與技術(shù)7、產(chǎn)品安
    發(fā)表于 03-04 16:48 ?33次下載

    電子電路基礎(chǔ)知識(shí)

    電子電路基礎(chǔ)知識(shí) 電路基礎(chǔ)知識(shí)(一)電路基礎(chǔ)知識(shí)(1
    發(fā)表于 01-15 09:47 ?22.9w次閱讀

    電池基礎(chǔ)知識(shí)(集全版)

    電池基礎(chǔ)知識(shí)(集全版)  電池基礎(chǔ)知識(shí)
    發(fā)表于 11-10 14:19 ?2496次閱讀

    計(jì)算機(jī)基礎(chǔ)知識(shí)介紹

    計(jì)算機(jī)基礎(chǔ)知識(shí)計(jì)算機(jī)基礎(chǔ)知識(shí)計(jì)算機(jī)基礎(chǔ)知識(shí)
    發(fā)表于 12-03 16:13 ?0次下載

    使用Eclipse基礎(chǔ)知識(shí)

    使用Eclipse 基礎(chǔ)知識(shí) 使用Eclipse 基礎(chǔ)知識(shí) 適合初學(xué)者學(xué)習(xí)使用
    發(fā)表于 02-26 10:30 ?0次下載

    電源管理基礎(chǔ)知識(shí)電源管理基礎(chǔ)知識(shí)電源管理基礎(chǔ)知識(shí)

    電源管理基礎(chǔ)知識(shí)電源管理基礎(chǔ)知識(shí)電源管理基礎(chǔ)知識(shí)
    發(fā)表于 09-15 14:36 ?76次下載
    電源管理<b class='flag-5'>基礎(chǔ)知識(shí)</b>電源管理<b class='flag-5'>基礎(chǔ)知識(shí)</b>電源管理<b class='flag-5'>基礎(chǔ)知識(shí)</b>

    優(yōu)質(zhì)LDO基礎(chǔ)知識(shí)分享

    本節(jié)分享下LDO的基礎(chǔ)知識(shí),主要來(lái)源于Ti的文檔《LDO基礎(chǔ)知識(shí)》。
    的頭像 發(fā)表于 03-26 11:03 ?1308次閱讀

    架構(gòu)模式的基礎(chǔ)知識(shí)

    ????作為軟件工程師,為什么至少要學(xué)習(xí)基本的架構(gòu)模式? ????我相信有很多人回答了這個(gè)問(wèn)題,但我會(huì)給你一些考慮的理由。 ????首先,如果您了解架構(gòu)模式的基礎(chǔ)知識(shí),那么您就更容易遵循架構(gòu)
    的頭像 發(fā)表于 06-13 16:13 ?708次閱讀
    <b class='flag-5'>架構(gòu)</b>模式的<b class='flag-5'>基礎(chǔ)知識(shí)</b>