衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

架構性需求的基礎知識

汽車ECU開發 ? 來源:汽車ECU開發 ? 2024-11-15 11:01 ? 次閱讀

第一次接觸“架構性需求”,大約在六年前,當時一位大佬指導我們說,在前期產品規劃時,最重要的就是找到“架構性需求”。本人就一頭的問號,“架構性需求”是什么?我沒有聽錯吧?當時也沒怎么放在心上,直到近年架構設計經驗增多,才領悟這句話的正確性。

什么是?

首先,什么是需求?

需求是一個多義詞,它的準確所指往往取決于你所處的位置。在汽車行業我們往往會利用ASPICE的V模型來找到自己需求的來源。比如做詳細設計,其需求來源就是架構設計。

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

但是這個理解是不準確的,下圖的表述會更加準確,也就是說本層次的需求往往有三個來源,以Domain level - Functional architecture步驟為例:

Vehicle level的Functional architecture

Vehicle level的Logical architecture

Domain level的Requirements

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

RFLP: MBSE背后的方法論

什么是架構性需求?

架構性需求是整個系統的最重要的那些需求,它可能出現在產品開發的各個層次和各個階段,對產品的形態、功能、開發周期等等往往起著決定性的作用。它們最大的特征是:只能在項目早期出現,在項目中期出現往往會導致巨大的工作量,甚至需要將整個項目推倒重來。

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

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

質量需求和非功能性需求,一般是指這個系統的那些功能要完成的有多好。比如剎車系統必須達到ASIL-D標準、最差通信時延必須在1ms以內等等。

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

那么接下來以汽車行業的典型“架構性需求”為例,從不同的層次依次展開講講。

2. 整車級別

整車級別的架構性需求會特別多,就會有下面這些:

車輛的售價:定價20萬區間的車,如果中途說改成要賣40萬,幾乎就是不可能完成的任務。

上市時間:一輛新車的正向開發時間普遍要3年左右,如果說要1年內上市一款新車,那整體的開發策略會完全不一樣。

這個環節離用戶會比較接近,大家一看就明白,我就不多講了。

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

種類:非功能性需求

這個需求是由整車級別的R和F同時作用下,才決定了是否需要這個需求: -車輛的售價決定了是否需要高品質

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

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

自從車載倒車影像出現以來,在車輛啟動之后3秒內,倒車影像就可以正常工作就是個基礎需求。否則的話,司機系好安全帶后若要倒車,就只能傻坐著,用戶體驗非常之差。 這個需求對于Linux時代的車載多媒體系統不是問題,因為Linux本身啟動就比較快。但是當車載多媒體系統進入Android時代,就要了命了。

下圖是Android的啟動順序,Android的界面要能顯示圖像,需要至少到下面的Normal Mode處。當前行業的優秀水平是15秒以內完全啟動。那怎么辦呢?

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

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

行業一般有幾種辦法:

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

深度改造法:對Android系統進行深度定制,比如將倒車影像的啟動順序直接提前到跟Zygote并行啟動。但這個的研發成本很高,需要引入一套新的GUI系統,因為這時Android的UI系統還沒啟動完畢呢。

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

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

休眠法:某些芯片支持在關機時將當前系統狀態保存至Flash上,這樣下次開機就能更快了。但支持這個功能代價是很高的,首先是這種芯片就不多,然后還得浪費幾個G的寶貴空間用于保存狀態。

不下電法:對于純電車,干脆就不讓車機下電,后果就是每天要多掉個幾公里續航,并且對系統的穩定性提出了更高的要求。畢竟每次關機都是清除系統垃圾的機會,不關機就沒有這個時機了。

不管哪個解決辦法,這個看似簡單的“3秒啟動”的需求,搞出了這么多解決方案,也是讓各大廠商的工程師掉了好多頭發。

4.ECU級別

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

種類:約束條件

這個需求的來源大致如下:

為了實現車內的各種功能,如無線鑰匙、遠程解鎖、防盜報警等等,車內的電子器件現在已經是不可或缺的了 (Vehicle Level - Functional)

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

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

說到“極少的內存”,沒接觸過MCU編程的工程師都會想,那又怎么樣?那我就少實現點功能唄。但其實對你的編程模式發生極大的影響。

MCU的一大特點是內存極小,在車載行業較常見的Renesas V850系列,其內存最小8K,最大也就192K。

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

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

基于RTE運行

很多針對MCU的軟件架構都會包含RTE這一角色,其核心的功能就是大部分的線程/Task由RTE創建,并由各個應用共享,這樣就可以節省很多Stack的內存開銷。

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

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

而一旦你的程序需要基于RTE運行,那么隨之而來的,就是要做幾件基礎的事情:

對你的程序進行配置,主要是配置有哪些Runnable。

配置觸發這些Runnable對應的事件Event。

實現這些Runnable。

下圖為Mathworks對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

這種開發方式就跟MPU端的靈活開發有非常大的不同。一切都是由事件觸發,沒有main()函數,并且需要時刻牢記一點:不能block當前的task,否則整個ECU可能都會卡死。

5. 模塊級別

各個ECU確定了選型后,做了整體的系統設計和軟件架構設計后,最終的實現會落到軟件模塊級別。我們以“禁止動態分配內存”為例展開這部分。

種類:約束條件

這個需求的來源大致如下:

車輛的動力底盤域要絕對可靠 (Domain Level - Requirement)

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

想達到ASIL-D級別,是必然不允許動態分配內存的。(Module Level - Requirement)

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

動態分配內存有很多好處,但是壞處也不少

內存利用率相對較低

需要內存管理程序,會額外占用內存

產生內存碎片,需要定期清理

不確定性較大

虛擬內存往往會大于物理內存,不可避免的引發缺頁中斷,使得分配內存的時間不確定性較大

分配內存時,查找可用內存也會引入一定的不確定性

分配內存可能會失敗,為避免這種情況往往需要較為復雜的內存回收機制(如Android的OOM killer),而不定時的觸發會進一步導致不確定性)

所以,像SafeRTOS這種對可靠性要求極高的OS干脆就禁用了動態分配內存。

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

這又意味著什么呢?這就意味著本來在系統層面上的資源分配會前移到代碼編寫階段,對編程模式是個重大的改變。

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

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

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

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

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

6. 如何識別架構性需求

既然架構性需求是如此的關鍵,那么如何才能在項目前期將絕大部分的架構性需求識別出來呢?個人覺得主要?有兩大類方法:

用常見的架構性需求分類來幫助梳理,就如文章開頭所講的:

系統的主要功能需求

質量需求和非功能性需求

決定了解決方案和項目的各種約束條件

進行行業對標和調研,對于行業中各個領域的解決方案中特殊的點要知其然且知其所然,而不是簡單的想當然,因為這些特殊的點往往就是為了滿足特定的“架構性需求”而來的。

結語

三年前,有位大佬問我,架構設計那么多環節,哪個環節最重要?我回答說:“把需求弄清楚最重要”。現在想來,確實如此,萬一你漏了一條“架構性需求”,可該怎么辦?

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    3034

    瀏覽量

    74129
  • 架構
    +關注

    關注

    1

    文章

    516

    瀏覽量

    25494

原文標題:架構性需求是什么

文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    labview基礎知識

    labview基礎知識labview基礎知識labview基礎知識labview基礎知識
    發表于 03-08 17:56

    FPGA架構和應用基礎知識

    ASIC慢3到4倍。本文介紹了FPGA的基礎知識和FPGA架構模塊,包括I / O焊盤,邏輯塊和開關矩陣。FPGA是VLSI的一些新興趨勢領域。FPGA架構通用FPGA架構由三種類型的
    發表于 12-14 17:39

    ARM架構基礎知識小結

    從單片機轉到ARM —— ARM架構基礎知識小結從單片機轉到ARM,主要需要學習ARM的架構,ARM相比單片機多了一些外設和總線。在僅僅是裸奔的情況下,如果熟悉了ARM架構,那么可以認
    發表于 05-12 17:06

    ARM架構基礎知識小結

    從單片機轉到ARM ―― ARM架構基礎知識小結
    發表于 12-29 06:16

    【HarmonyOS基礎知識】HarmonyOS系統架構

    這個視頻帶大家揭秘HarmonyOS基礎知識之HarmonyOS系統架構,一起來看看?
    發表于 01-19 18:32

    Cortex-A7 MPCore架構基礎知識點匯總,不看肯定后悔

    Cortex-A7 MPCore架構基礎知識點匯總,不看肯定后悔
    發表于 11-30 06:45

    ARM架構基礎知識點匯總

    之所以更復雜,當然是為了跑更快以及更好地支持片上系統,所以在某種程度上來說對片上系統不是很了解的話那對于ARM架構的理解也不會那么深。ARM架構基礎知識小結通用寄存器R13通常被用作棧指針,進入異...
    發表于 12-13 06:26

    通信基礎知識教程

    通信基礎知識 1、電信基礎知識2、通信電源技術3、配線設備結構、原理與防護4、防雷基礎知識5、EMC基礎知識6、防腐蝕原理與技術7、產品安
    發表于 03-04 16:48 ?33次下載

    電子電路基礎知識

    電子電路基礎知識 電路基礎知識(一)電路基礎知識(1
    發表于 01-15 09:47 ?23.2w次閱讀

    電池基礎知識(集全版)

    電池基礎知識(集全版)  電池基礎知識
    發表于 11-10 14:19 ?2517次閱讀

    計算機基礎知識介紹

    計算機基礎知識計算機基礎知識計算機基礎知識
    發表于 12-03 16:13 ?0次下載

    使用Eclipse基礎知識

    使用Eclipse 基礎知識 使用Eclipse 基礎知識 適合初學者學習使用
    發表于 02-26 10:30 ?0次下載

    電源管理基礎知識電源管理基礎知識電源管理基礎知識

    電源管理基礎知識電源管理基礎知識電源管理基礎知識
    發表于 09-15 14:36 ?76次下載
    電源管理<b class='flag-5'>基礎知識</b>電源管理<b class='flag-5'>基礎知識</b>電源管理<b class='flag-5'>基礎知識</b>

    優質LDO基礎知識分享

    本節分享下LDO的基礎知識,主要來源于Ti的文檔《LDO基礎知識》。
    的頭像 發表于 03-26 11:03 ?1373次閱讀

    架構模式的基礎知識

    ????作為軟件工程師,為什么至少要學習基本的架構模式? ????我相信有很多人回答了這個問題,但我會給你一些考慮的理由。 ????首先,如果您了解架構模式的基礎知識,那么您就更容易遵循架構
    的頭像 發表于 06-13 16:13 ?747次閱讀
    <b class='flag-5'>架構</b>模式的<b class='flag-5'>基礎知識</b>
    太阳城百家乐口诀| 最佳场百家乐的玩法技巧和规则| 百家乐官网美女视频聊天| 东方太阳城二期| 百家乐策略| 百家乐官网庄家赢钱方法| 大发888私网开户| 网络百家乐真人游戏| 百家乐官网常用公式| 百家乐官网怎么玩了| 开棋牌室赚钱吗| 神人百家乐赌博| 24山消砂| 博彩百家乐官网最新优惠| 百家乐官网哪家有优惠| 娱网棋牌官方下载| 百家乐代理| 百家乐平台是最好的娱乐城| 皇冠百家乐官网的玩法技巧和规则| 百利宫百家乐官网现金网| 蒙特卡罗国际娱乐| 大发888官网多少| 百家乐赌场娱乐网规则| 百家乐软件编辑原理| 闲和庄百家乐官网娱乐城| 百家乐官网平台注册送现金 | 678百家乐官网博彩娱乐场| 百家乐官网销售视频| 八大胜官网| 鸿利国际| 总统娱乐城返水| 大发888娱乐亚洲| 大发888开户博盈国际| 威尼斯人娱乐平台网址| 女神百家乐的玩法技巧和规则 | 网上百家乐官网怎么赌能赢钱| 百家乐官网好不好玩| 桦南县| 邵武市| 现场百家乐官网投注| BB百家乐官网HD|