在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

嵌入式軟件架構設計之程序分層

汽車電子技術 ? 來源:大橙子瘋嵌入式 ? 作者:大橙子瘋 ? 2023-02-15 14:41 ? 次閱讀

1、前言

嵌入式MCU軟件開發過程中,程序分層設計也是重中之重,關系到整個軟件開發過程中的協同開發,降低系統軟件的復雜度(復雜問題分解)和依賴關系、同時有利于標準化,便于管理各層的程序,提高各層邏輯的復用等。

2、分層介紹

硬件抽象層(HAL)

嵌入式開發的核心就是芯片,它提供固定的片內資源(常用的有I/O,ISR,TIMER等,稍微好點的還有ADC,SPI等硬件資源,不需要芯片外圍ADC采集芯片或模擬SPI)共開發者使用。而且它具有一個很重要的特點就是,不隨項目的新增需求變動而變動。所以應將其作為最底層,為上層提供基礎支持。

大部分情況下該層都會有芯片廠商提供相應的庫函數包或者配置工具生成對應API函數,基本只要知道如何配置和使用就行,當然,也有可能存在芯片廠商提供的庫函數包或配置工具配置/使用自由度不高,需要自己查看芯片寄存器手冊增加自己需要的API函數。

硬件驅動層(HDL)

嵌入式開發通常都會使用片外資源,用來彌補硬件抽象層實現不了的功能或者需要擴展的功能。

如AT24C02,W25Q128等常見的外圍EEPROM芯片,需要SPI通信(硬件SPI或I/O模擬的SPI)發送相應指令驅動該芯片,實現該芯片能正常工作。因此驅動這部分的API函數實現程序即為硬件驅動層。即使換了MCU,也只需將調用過硬件抽象層的API函數替換即可。

功能模塊層(FML)

硬件抽象層和驅動層主要就是為功能模塊層提供的,實現該項目需要的基本功能。而這一層又為上層提供最基本的功能,各功能模塊之前沒有太多聯系。

比如KEY、LED和EEPROM等功能,其中LEY、LED基本調用硬件抽象層的API函數(更復雜的可能通過片外芯片獲取/控制等,因此可能也需要使用硬件驅動層),EEPROM調用硬件驅動層的API函數,即使EEPROM芯片更換(AT24C02或W25Q128等),也不影響EEPROM之前編寫含的功能代碼程序(前提是AT24C02,W25Q128提供的API函數提供的是統一標準)。

應用程序層(APL)

應用程序層主要負責的就是功能模塊的使用和之間的邏輯關系處理等等,比如用戶交互界面應用程序可能需要按鍵(KEY)、指示燈(LED)、顯示屏(LCD)等,實現一系列的人機交互功能,通常應用程序層相對于功能模塊層而言獨立性較低。

一般情況下也可細分出應用業務層,但是對于單片機產品來說,這一層的必要性反而不高,分層太多,反而顯得臃腫。

3、總結

硬件抽象層和硬件驅動層的主要區別

硬件抽象層使用的芯片內本身的資源(芯片手冊都有介紹),而硬件驅動層使用的是芯片本身不存在的資源,而且需要編寫相應代碼才能實現的資源。

比如正點原子STM32CAN使用的TJA1050芯片,CAN屬于STM32的片內資源,TJA1050屬于片外資源,但由于TJA1050不需要額外的代碼就能通過STM32中CAN本身提供API函數正常 工作;因此可以認為TJA1050不屬于硬件驅動層,而若使用TJA1041,則需要編寫額外代碼才能使正常工作才能使STM32中CAN本身提供API函數正常工作,因此可以將TJA1041歸為硬件驅動層。

圖片

圖片

功能模塊層、硬件抽象層和硬件驅動層的主要區別

功能模塊層是按照項目需求提取出來的功能,需要硬件抽象層和硬件驅動層的硬件支持才能實現,功能模塊層根據項目的功能需求改變而改變,而硬件抽象層和硬件驅動層則是項目需求書中的功耗等硬件相關的需求變動而改變,當然,若子功能的增加而硬件不支持,則也需更換硬件驅動。

比如項目中的數據儲存功能,硬件支持有AT24C02、W25Q128和芯片本身的FLASH,都可以支持數據儲存功能,即使后期因為功耗或節約成本等問題,硬件的更換也不影響數據儲存功能的實現(前提規劃好標準規范的API函數定義)且避免了重寫該功能代碼所帶來的各種問題,保證了該功能的穩定性。

4、分層結構圖

圖片

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

    關注

    146

    文章

    17317

    瀏覽量

    352646
  • 嵌入式
    +關注

    關注

    5092

    文章

    19177

    瀏覽量

    307673
  • 程序
    +關注

    關注

    117

    文章

    3795

    瀏覽量

    81411
收藏 人收藏

    評論

    相關推薦

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

    軟件架構設計!2. 嵌入式環境下軟件設計的特點要談嵌入式軟件
    發表于 08-10 07:46

    嵌入式分層架構的相關資料分享

    最近重新進入嵌入式領域,有必要對嵌入式分層架構有一個清晰的理解。經過多方查閱以及個人的理解,本人對嵌入式
    發表于 10-28 08:42

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

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

    嵌入式軟件架構設計的目的及思路

    【1】架構設計的目的1.應用的代碼邏輯清晰,且避免重復造輪子。2.方便軟件的移植。3.最大限度地復用。4.高內聚低耦合。 【2】嵌入式架構思路1.功能模塊化設計獲得需求------->
    發表于 11-08 06:41

    嵌入式系統中的架構設計的理解

    【閱讀這篇文章,你能了解到什么】1. 從事嵌入式開發12年的我,對架構設計的理解;2. 對嵌入式系統中的架構設計要刻意訓練;3. 嵌入式系統
    發表于 11-08 08:23

    嵌入式軟件架構設計資料分享

    作為程序員,我覺得如果要走的更遠必須要成為工程師,畢竟年齡和資歷都擺在那里了。所以就讓我這個老程序員淺談一下嵌入式軟件架構設計。我參考的也是
    發表于 12-24 07:09

    嵌入式軟件架構設

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

    ARM嵌入式應用程序架構設計工具-DLTools

    ARM嵌入式應用程序架構設計實例精講--ARM嵌入式應用程序架構設計工具-DLTools
    發表于 07-08 11:08 ?4次下載

    ARM嵌入式應用程序架構設計工具-字庫

    ARM嵌入式應用程序架構設計實例精講--ARM嵌入式應用程序架構設計工具-字庫
    發表于 07-08 11:08 ?10次下載

    ARM嵌入式應用程序架構設計工具

    電子專業單片機相關知識學習教材資料——ARM嵌入式應用程序架構設計工具
    發表于 09-13 17:23 ?0次下載

    嵌入式軟件架構設

    【1】架構設計的目的1.應用的代碼邏輯清晰,且避免重復造輪子。2.方便軟件的移植。3.最大限度地復用。4.高內聚低耦合。?【2】嵌入式架構思路1.功能模塊化設計? 獲得需求------
    發表于 11-03 16:36 ?10次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b><b class='flag-5'>架構設</b>計

    嵌入式UI架構設計漫談

    嵌入式UI架構設計漫談
    發表于 11-03 17:36 ?15次下載
    <b class='flag-5'>嵌入式</b>UI<b class='flag-5'>架構設</b>計漫談

    嵌入式系統軟件架構設

    嵌入式系統軟件架構設計目錄1.前言42.決定架構的因素和架構的影響42.1.常見的誤解52.1.1.小型的系統不需要
    發表于 11-03 18:21 ?30次下載
    <b class='flag-5'>嵌入式</b>系統<b class='flag-5'>軟件</b><b class='flag-5'>架構設</b>計

    嵌入式硬件通信接口協議-SPI(二)分層架構設計模擬接口

    嵌入式硬件通信接口協議-SPI(二)分層架構設計模擬接口
    發表于 12-09 12:36 ?19次下載
    <b class='flag-5'>嵌入式</b>硬件通信接口協議-SPI(二)<b class='flag-5'>分層</b><b class='flag-5'>架構設</b>計模擬接口

    嵌入式軟件架構設任務調度

    嵌入式MCU軟件開發過程中,程序任務調度架構的搭建尤為重要,直接關系到該程序能支持多少功能(隨著功能越多系統響應能力越弱,好的任務調度
    的頭像 發表于 02-15 14:44 ?2311次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b><b class='flag-5'>架構設</b>計<b class='flag-5'>之</b>任務調度
    主站蜘蛛池模板: 久久天天躁夜夜躁狠狠 | 高清性欧美xxx | 久久精品视频网站 | 免费伦费一区二区三区四区 | 天天干天天狠 | 你懂的网址在线 | 亚洲ay| 三级理论手机在线观看视频 | 色五夜婷婷| 人人草97 | 欧美aaaaa性bbbbb小妇 | 成人精品视频在线观看播放 | 中文字幕亚洲天堂 | 免费在线看a | 黄a大片| 四虎精品免费永久在线 | 一本大道香蕉大vr在线吗视频 | 午夜男人视频 | 91综合在线视频 | 人人爱干 | 免费被视频网站在线观看 | 欧美天天干 | 六月婷婷网视频在线观看 | 最新国产在线播放 | 天天做天天爱天天综合网 | 欧美精品videosex性欧美 | 久久国内精品 | 国产伦精一区二区三区 | 四虎在线最新永久免费 | 亚洲精品午夜久久aaa级久久久 | 日本拍拍 | 国产网红精品 | 美女和帅哥在床上玩的不可描述 | 国产高清美女一级a毛片 | 激情丁香六月 | 亚洲欧美色一区二区三区 | 国产精品欧美激情在线播放 | 天天透天天射 | 一级特黄aaa大片在 一级特黄aaa大片在线观看视频 | 在线毛片免费 | 亚洲国产网址 |