日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 技術學院 > 技術前線
[導讀]嵌入式軟件,受限于硬件資源,時常會出現驅動與應用緊密耦合的情況。然而,對于大型項目而言,充足的資源使得我們能夠采用更為復雜的架構模式來應對業(yè)務邏輯的復雜性以及后續(xù)的擴展維護需求。這些架構模式,如分層架構、多層架構、管道-過濾器架構等,都是為了解決特定問題而設計的。

嵌入式軟件開發(fā)是一門應用廣泛且不斷發(fā)展的技術領域,為了滿足不同應用場景的需求,開發(fā)人員可以采用多種架構方法。

0、前言

在嵌入式軟件開發(fā),包括單片機開發(fā)中,軟件架構對于開發(fā)人員是一個必須認真考慮的問題。軟件架構對于系統(tǒng)整體的穩(wěn)定性和可靠性是非常重要的,一個合適的軟件架構不僅結構清晰,并且便于開發(fā)。

我相信在嵌入式或單片機軟件開發(fā)的初期大多數開發(fā)者采用的都是簡單的前后臺順序執(zhí)行架構(我就是這樣的)。

在嵌入式軟件開發(fā)中,程序架構主要分為三種,本篇文章將對這三種程序架構做出詳解。

1、軟件架構存在的意義

可以說一個好的程序架構,是一個有經驗的工程師和一個初學者的分水嶺。軟件架構對于開發(fā)人員是友好的,你希望先執(zhí)行什么任務后執(zhí)行什么任務,或者這一個時間點執(zhí)行什么任務下一個執(zhí)行什么任務,又或者什么事件會同步到某個任務等等,在不同的軟件架構下,解決上述問題的具體方法都是有所區(qū)別的。軟件架構對開發(fā)者最大的幫助是:幫助開發(fā)者掌控整個工程的框架,當你熟練使用其中某一個程序架構后,對于系統(tǒng)中出現的bug你一定能夠快速的定位并解決。當然,我建議要根據需要選擇合適的軟件架構進行開發(fā),具體原因在文章后面會進行介紹。

2、深入介紹三種不同的程序架構

三種常用的軟件架構有:順序執(zhí)行的前后臺系統(tǒng)、時間片輪詢系統(tǒng)和多任務操作系統(tǒng)。為了讓大家有一個更為清晰的認識,我分別用三種軟件架構對一個實例進行介紹說明。這個實例如下:它有4個任務,這4個任務為按鍵掃描、聲光報警、顯示屏刷新和超聲波測距。這個實例的具體功能是通過按鍵設置測量距離的閾值,當測距距離低于設置的閾值時,觸發(fā)聲光報警并且將測量距離實時顯示在顯示屏上(這個應用是汽車倒車雷達的具體體現)。

2.1順序執(zhí)行的前后臺系統(tǒng)

在順序執(zhí)行的前后臺系統(tǒng)中,我會把鍵盤掃描用查詢的方式放在while(1)中,而顯示屏刷新和超聲波測距使用中斷,在中斷服務函數中獲取測量距離后進行顯示,在主函數的循環(huán)中進行按鍵的檢測,聲光處理也放在主循環(huán)中。這樣整個程序就以變量標志的同步方式在主循環(huán)和后臺中斷中執(zhí)行,對應的程序代碼如圖所示:

順序執(zhí)行前后臺系統(tǒng)的主函數

順序執(zhí)行前后臺系統(tǒng)的中斷服務函數

在本文中,我們將探討嵌入式軟件開發(fā)中常用的三種架構:前后臺順序執(zhí)行法、時間片法和操作系統(tǒng)。

01.

前后臺順序執(zhí)行法

前后臺順序執(zhí)行法也稱為單任務執(zhí)行法,是最簡單、最常見的嵌入式軟件架構之一。

在這種架構中,系統(tǒng)按照程序代碼的順序依次執(zhí)行任務。所有任務都在一個循環(huán)中執(zhí)行,每次只執(zhí)行其中一個任務,其余任務被掛起。這種架構適用于簡單的應用,如傳感器數據采集、控制器等。

然而,前后臺順序執(zhí)行法有一定的局限性。

首先,它無法充分利用處理器資源,因為每次只執(zhí)行一個任務,其他任務處于掛起狀態(tài)。其次,任務之間無法靈活共享資源,容易造成資源浪費和效率低下。在一些對實時性要求較高的場景中,這種架構無法滿足要求。

02.

時間片法

時間片法是一種多任務執(zhí)行法,它通過為每個任務分配一定的執(zhí)行時間片,使得所有任務都能夠按照一定的時間間隔交替執(zhí)行。

任務執(zhí)行的時間片是固定的,當一個任務的時間片用完后,系統(tǒng)切換到下一個任務執(zhí)行。這種方式使得多個任務能夠并行執(zhí)行,提高了系統(tǒng)的資源利用率和效率。

時間片法適用于中等復雜度的嵌入式系統(tǒng),可以滿足對實時性要求較高的場景。它需要合理設置任務的優(yōu)先級和時間片大小,以確保重要任務優(yōu)先執(zhí)行,并且每個任務都能在適當的時間內完成。

03.

操作系統(tǒng)

操作系統(tǒng)是一種更為復雜和強大的嵌入式軟件架構。它能夠管理和協(xié)調多個任務的執(zhí)行,并提供一系列的系統(tǒng)服務,如任務調度、內存管理、設備驅動、通信機制等。操作系統(tǒng)為開發(fā)人員提供了更高層次的抽象,使得軟件開發(fā)更加靈活、高效。

在操作系統(tǒng)架構下,每個任務都有自己的優(yōu)先級和狀態(tài),操作系統(tǒng)通過任務調度算法決定哪個任務優(yōu)先執(zhí)行。任務之間可以共享資源,通過互斥機制來實現對共享資源的訪問控制,確保系統(tǒng)穩(wěn)定和安全。

操作系統(tǒng)適用于復雜度較高、實時性要求嚴格的嵌入式應用,如智能手機、工業(yè)自動化控制系統(tǒng)等。它提供了更大的靈活性和可擴展性,使得開發(fā)人員能夠更容易地實現復雜的功能和算法。

綜上所述,嵌入式軟件開發(fā)中常用的三種架構分別是前后臺順序執(zhí)行法、時間片法和操作系統(tǒng)。

選擇適合的架構取決于應用的復雜性、實時性要求和資源限制等因素。開發(fā)人員需要根據具體情況,靈活選擇合適的架構,并結合系統(tǒng)要求進行合理的設計和優(yōu)化,以確保嵌入式系統(tǒng)的穩(wěn)定性、可靠性和高效性。

嵌入式軟件,受限于硬件資源,時常會出現驅動與應用緊密耦合的情況。然而,對于大型項目而言,充足的資源使得我們能夠采用更為復雜的架構模式來應對業(yè)務邏輯的復雜性以及后續(xù)的擴展維護需求。這些架構模式,如分層架構、多層架構、管道-過濾器架構等,都是為了解決特定問題而設計的。

在眾多架構模式中,分層架構是最為常見的一種。它主要由展現層、業(yè)務層、持久層和數據庫層四個部分組成,通過這種方式,軟件能夠更加清晰地分離不同的功能模塊,從而提高代碼的可讀性和可維護性。


超詳細解析!嵌入式開發(fā)中的三種程序構架

1)背景

隨著系統(tǒng)復雜性的增加,各個部分的需求和衍化往往獨立發(fā)展。為了更好地管理和維護這樣的系統(tǒng),開發(fā)者需要明確地分離關注點,使各個模塊能夠獨立進行開發(fā)和演進。

2)挑戰(zhàn)

軟件架構需要設計成一種方式,使得各個模塊能夠單獨開發(fā)和變化,同時減少模塊間的交互,從而確保系統(tǒng)的可移植性、可修改性和復用性。

3)解決方案

分層架構模式應運而生,它將軟件劃分為不同的邏輯單元,即“層”。每一層都包含一組高度內聚的模塊,提供特定的服務,并且其使用是單向的。通過分層,軟件被劃分為多個獨立的分區(qū),每個分區(qū)都暴露一個公開的接口。

在分層架構中,每一層都扮演著特定的角色和職責。例如,展現層專門負責處理用戶界面相關的事務。這種明確的角色和職責劃分,使得構建高效的系統(tǒng)變得簡單明了。

此外,分層架構還是一種技術性的分區(qū)方式,而非領域性的。它由組件而非領域來組成,這意味著不同層之間的交互更加清晰和簡潔。

最后,分層架構中的每一層都被明確標記為封閉或開放。封閉層意味著請求必須經過它下面的層次才能傳遞到下一層,從而保證了請求不會跳過任何層次。這種設計使得系統(tǒng)更加穩(wěn)健和可預測。


超詳細解析!嵌入式開發(fā)中的三種程序構架

4)潛在問題

采用分層架構雖然有助于提高系統(tǒng)的模塊化和可維護性,但也可能面臨性能方面的挑戰(zhàn)。在高性能應用程序中,由于業(yè)務請求需要經過架構中的多層處理,這可能會降低響應效率。此外,分層架構的實施還可能增加系統(tǒng)的初期成本和整體復雜性。

5)適用范圍

盡管存在上述潛在問題,分層架構仍然是一種非常有用的設計模式。對于小型或簡單的應用程序而言,這種模式能夠有效地幫助開發(fā)者明確模塊間的職責和邊界,從而簡化開發(fā)和維護過程。因此,在適當的情況下,我們應該考慮采用分層架構來構建高效、可維護的軟件系統(tǒng)。


超詳細解析!嵌入式開發(fā)中的三種程序構架

許多系統(tǒng)的執(zhí)行結構都采用了邏輯組件的分組方式,這些分組被稱作“層”。在分布式部署的環(huán)境中,經常需要將系統(tǒng)的基礎設施拆分成不同的子集。這就引出了一個問題:如何合理地將系統(tǒng)分割成多個計算上獨立、又通過通信媒介相連的軟件和硬件組件?然而,這種分割方式也面臨一些挑戰(zhàn),包括前期投入的大量成本和系統(tǒng)整體復雜性的增加。盡管如此,管道-過濾器(pipe-filter)架構在軟件架構中仍是一種常見的模式,它為這類問題提供了有效的解決方案。


超詳細解析!嵌入式開發(fā)中的三種程序構架

1)背景

在許多系統(tǒng)中,離散數據流從輸入到輸出的轉換是一個核心需求。由于這類轉換在實踐中經常重復出現,因此將其模塊化并創(chuàng)建成可復用的組件,是提高效率和靈活性的理想選擇。

2)挑戰(zhàn)

為了實現這種模塊化,系統(tǒng)需要被分割成松耦合的組件,這些組件之間通過簡單通用的交互機制進行連接。這樣的設計使得組件能夠靈活地組合與復用,同時支持并行的執(zhí)行方式。

3)架構解析

管道-過濾器架構為此類需求提供了一種解決方案。在這種架構中,管道充當了過濾器之間的通信通道。每個管道都是非定向和點對點的,它們接受來自一個源的輸入,并直接將輸出傳遞給另一個源,從而確保了數據流的高效傳輸。

此外,該架構還定義了四種關鍵角色:producer(或source)作為過程的起點,transformer(或map)負責對數據進行轉換,tester(或reduce)用于測試條件,而consumer(或sink)則作為終點處理數據。

4)局限性

盡管管道-過濾器架構具有諸多優(yōu)點,但它也有其適用范圍。對于需要高度交互性的系統(tǒng)來說,這種架構可能不太適合。此外,過多的解析和反解析操作也可能導致性能損失,并增加編寫過濾器的復雜性。

5)應用場景

管道-過濾器架構在各種應用程序中都有廣泛的應用,特別是那些需要簡化單項處理任務的系統(tǒng)。通過合理運用這種架構,可以有效地提高系統(tǒng)的可維護性、靈活性和性能。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉