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

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

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

3天內不再提示

如何正確的設計嵌入式軟件架構應該這么做

Q4MP_gh_c472c21 ? 來源:未知 ? 2019-01-29 15:45 ? 次閱讀

錯誤的示范

公司新招了一個做嵌入式軟件開發的同事,該同事是從上海的某一個上市公司出來的,因為我們這邊人手不夠,因此把他安排了去負責一個新產品的研發,前期讓他負責加速度計、NB-IOT、舵機、外置Flash的功能測試,測試完成之后,準備讓他做一個該產品的概要設計。然后他花了2個星期的時間,給我們寫出來一個概要設計,說實話,我看到這個概要設計,我就覺得是剛畢業的大學生寫的。版本一的架構設計

2.1系統體系結構系統分為兩層:硬件驅動層、應用層。2.1.1硬件驅動層硬件驅動層包含板載硬件資源正常運行所需的所有驅動程序。1)MCU初始化2)I2C數據存取3)SPI數據讀取4)加速度計初始化5)藍牙模塊啟動6)BC95模塊啟動7)485通訊模塊啟動2.2.2應用層1)Mcu運行模式切換2)震動及傾斜3)數據解析4)開/關鎖5)數據發送6)歷史數據保存

看到版本一的架構設計之后,說實話,我還是第一次見到這樣來寫架構設計的,居然是以序號來寫的,這個讓別人讀起來,特別的別扭。版本二的架構設計

看到版本二的架構設計之后,雖然頗感欣慰,但是想到達到我們所要求的,還要很大的一段距離,該架構設計,主要有以下幾點問題:1.對架構的理解還不是很清晰,既然是做架構設計,那就應該從整體來看,而不是僅僅只是局限于一個模塊,或者功能里面。2.還是每個層次的理解也還不是很清晰,比如講MCU的初始化,歸于硬件驅動層里面。MCU的初始化,嚴格意義上來說,是屬于流程的一部分了,而不是驅動。比如電腦的開啟啟動,把這個歸于硬件的驅動里面,肯定是屬于牛頭不對馬嘴的。3.還有就是各個模塊的啟動,也是不能屬于硬件驅動層的,也都是業務流程的一部分了,都不應該屬于驅動層的一部分。4.還有就是總線數據的讀寫,雖然驅動的作用也就是讀寫,但是數據總線的讀寫不能寫成硬件驅動。5.應用層的系統參數初始化,也還是屬于流程。6.數據的解析和數據的發生,都是屬于通信功能里面的,不應該單獨獨立出來,屬于單個的應用。

更改版基本框架圖

(1)架構設計的目的1.應用的代碼邏輯清晰,且避免重復造輪子。2.如果沒有好的架構,移植將會是一件很痛苦的事情,因此一個好的架構設計,方便軟件的移植。3.最大限度地復用。4.高耦合低內聚。(2)設計思路如何把硬件的驅動和一個功能封裝成一個個的模塊,然后可以像小朋友搭積木一個,一個個模塊可以快速的拼接起來,組成一個個不同的模型。我們的嵌入式架構思路也是來源于此,即功能模塊化設計、分層設計。這個設計和WEB開發的MVC模式類似,都是注重分層設計。模塊化設計:將收集到的需求,進行歸類,總結和分析,將這些需求概括為一個個單獨的功能,每一個功能,做成一個單獨的功能模塊。分層設計一句話不好直接表達,其主要體現在一下幾方面:1.功能模塊對外調用的模塊封裝成一個個API,將底層驅動做個API以供功能模塊調用。(各個功能模塊可以獨立編譯(如通信模塊純ANSI C,可在任意平臺復用),或者調用驅動層接口(日志庫模塊調用了驅動讀寫Flash),總而言之,言而總之,封裝出各個功能獨立的可復用的功能模塊。)2.API分為驅動層API和應用層API,而不是所有程序都調用驅動層API。(整個應用中都調用驅動層API會導致應用中驅動調用隨處可見,無法移植和最大限度的復用)總體分 硬件驅動層-->功能模塊層-->業務邏輯層-->應用層總體結構示意框圖:

說明:1.層與層之間不能跨層調用。2.模塊與模塊各自獨立,無依賴關系。3.模塊提供統一的接口供上層調用,模塊的內外接口分明。4.模塊的功能只能增,不能改。5.各個功能模塊層也還可以進行繼續分層,比如接口層、驅動層、硬件層。(3)模塊層次說明

硬件驅動層硬件驅動層包含板載硬件資源正常運行所需的所有驅動程序并提供API給功能模塊調用。

功能模塊層功能模塊層包括實現具體功能的函數,通過調用驅動層API實現相應功能,同時提供可調用的API給業務邏輯層。

業務邏輯層業務邏輯層包括產品整體功能的各個業務流程,通過調用功能模塊層的API實現。

應用層應用層將各個業務邏輯進行整合調用,完成整個產品的功能。(4)優勢如果驅動變動了,或者換不同平臺,只需更改驅動層,應用層不受影響。如果功能模塊變動了,只需升級相應的功能模塊,其他的模塊不受影響,應用層也不受影響。按照這種邏輯設計好之后,主要的工作就是在業務邏輯層。應用層則為程序的總體流程和框架,主要調用業務邏輯層實現不同的功能。

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

    關注

    146

    文章

    17317

    瀏覽量

    352635
  • 嵌入式
    +關注

    關注

    5092

    文章

    19177

    瀏覽量

    307653
  • API
    API
    +關注

    關注

    2

    文章

    1510

    瀏覽量

    62393

原文標題:嵌入式軟件架構設計實際該怎么做?

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式軟件開發應該掌握哪些知識?

    嵌入式軟件開發應該掌握哪些知識? 一、 什么是嵌入式軟件嵌入式
    發表于 02-19 11:23

    嵌入式系統的軟件架構設計!

    1. 前言嵌入式軟件設計領域的一個分支,它自身的諸多特點決定了系統架構師的選擇,同時它的一些問題又具有相當的通用性,可以推廣到其他的領域。提起嵌入式
    發表于 08-10 07:46

    嵌入式軟件開發中的程序架構

    嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。軟件架構對于系
    發表于 02-02 06:58

    嵌入式架構有多重要

    原有的代碼。接下來嵌入式ARM便和大家分享一下,嵌入式架構那些事兒……01嵌入式系統的基本架構嵌入式
    發表于 10-27 08:15

    為何要進行嵌入式軟件架構設計?如何設計?

    為何要進行嵌入式軟件架構設計?如何進行嵌入式軟件架構設計?
    發表于 11-01 06:31

    決定嵌入式系統軟件架構的因素和架構的影響

    嵌入式系統軟件架構設計目錄1.前言42.決定架構的因素和架構的影響42.1.常見的誤解52.1.1.小型的系統不需要
    發表于 11-08 06:54

    嵌入式軟件基礎的四層架構分別是哪些

    嵌入式軟件分層架構基本原則有哪些?嵌入式軟件基礎的四層架構分別是哪些?
    發表于 12-24 07:57

    嵌入式軟件架構設計

    嵌入式軟件架構的設計,幫助我們建立合理,有效的軟件架構
    發表于 11-09 17:34 ?19次下載

    嵌入式軟件是什么意思_嵌入式軟件的分類有哪些

    本文首先闡述了嵌入式軟件的概念,其次介紹了嵌入式軟件的特征,最后介紹了嵌入式軟件的分類。
    發表于 08-31 15:54 ?1.6w次閱讀

    嵌入式開發中常用的軟件架構

    嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。軟件架構對于系
    的頭像 發表于 01-01 10:16 ?5638次閱讀
    <b class='flag-5'>嵌入式</b>開發中常用的<b class='flag-5'>軟件</b><b class='flag-5'>架構</b>

    要想成為ARM嵌入式硬件高手,你得這么做!資料下載

    電子發燒友網為你提供要想成為ARM嵌入式硬件高手,你得這么做!資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發表于 04-18 08:41 ?15次下載
    要想成為ARM<b class='flag-5'>嵌入式</b>硬件高手,你得<b class='flag-5'>這么做</b>!資料下載

    嵌入式軟件架構

    嵌入式軟件架構
    發表于 10-20 20:51 ?20次下載
    <b class='flag-5'>嵌入式</b>系<b class='flag-5'>軟件</b><b class='flag-5'>架構</b>

    嵌入式架構師成長之路--架構設計

    詳見微信公眾號,二進制人生。目錄:嵌入式環境下軟件設計的特點 設計目標 設計思路 多進程解耦嵌入式環境下軟件設計的特點要談嵌入式
    發表于 11-03 20:21 ?31次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>架構</b>師成長之路--<b class='flag-5'>架構</b>設計

    嵌入式電腦主板應該如何正確的安裝?

    嵌入式電腦主板主要應用在各種工業場合當中,被工業電腦所采用,而且,在使用的時候嵌入式電腦主板還可以根據需求來適應寬溫環境,從而適應工業環境中的各種惡劣環境,能長時間的進行高負荷工作。那么好用的嵌入式電腦主板
    的頭像 發表于 02-10 17:55 ?1426次閱讀
    <b class='flag-5'>嵌入式</b>電腦主板<b class='flag-5'>應該</b>如何<b class='flag-5'>正確</b>的安裝?

    詳解FreeRTOS:嵌入式軟件系統架構

    目前常見的嵌入式軟件系統架構有三種可以分為:輪詢系統架構、前后臺系統架構和多任務系統架構
    的頭像 發表于 05-04 16:40 ?2634次閱讀
    詳解FreeRTOS:<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>系統<b class='flag-5'>架構</b>
    娱乐城开户送真钱200| 百家乐官网赌场现金网平台排名| 大发888开户xa11| 百家乐平六亿财富网| 百家乐官网园百乐彩| 百家乐官网走势图| 金赞百家乐官网现金网| 金赞娱乐| bet365贴吧| 大发888 备用6222.com| 威尼斯人娱乐城提款| 百家乐如何抽千| 百家乐在线直播| 百家乐官网德州扑克桌布| 专业的百家乐官网玩家| 百家乐官网电投软件| 澳门百家乐官网游戏| 百家乐官网知识技巧玩法| 怎么玩百家乐官网能赢钱| 百家乐官网网上赌博| 百家乐官网怎么开户| k7娱乐城开户| 周宁县| 百家乐官网路纸计算| 百家乐官网高手qq| 百家乐官网永利娱乐城| 百家乐官网书籍| 星级百家乐官网技巧| 深圳百家乐官网的玩法技巧和规则 | 溧水县| 百家乐官网投注玩多少钱| 哪个百家乐官网网站最大| 金臂百家乐官网开户送彩金| 真人百家乐官网代理合作| 百家乐官网赌博规律| 百家乐官网娱乐求解答| 百家乐官网翻天超清| 百家乐怎么刷反水| 优惠搏百家乐官网的玩法技巧和规则 | 百家乐怎样算大小| 网上百家乐是真是假天涯论坛|