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

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

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

0、前言

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

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

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

1、軟件架構(gòu)存在的意義

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

2、深入介紹三種不同的程序架構(gòu)

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

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

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

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

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

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

01.

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

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

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

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

首先,它無法充分利用處理器資源,因?yàn)槊看沃粓?zhí)行一個(gè)任務(wù),其他任務(wù)處于掛起狀態(tài)。其次,任務(wù)之間無法靈活共享資源,容易造成資源浪費(fèi)和效率低下。在一些對實(shí)時(shí)性要求較高的場景中,這種架構(gòu)無法滿足要求。

02.

時(shí)間片法

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

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

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

03.

操作系統(tǒng)

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

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

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

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

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

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

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


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

1)背景

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

2)挑戰(zhàn)

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

3)解決方案

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

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

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

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


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

4)潛在問題

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

5)適用范圍

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


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

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


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

1)背景

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

2)挑戰(zhàn)

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

3)架構(gòu)解析

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

此外,該架構(gòu)還定義了四種關(guān)鍵角色:producer(或source)作為過程的起點(diǎn),transformer(或map)負(fù)責(zé)對數(shù)據(jù)進(jìn)行轉(zhuǎn)換,tester(或reduce)用于測試條件,而consumer(或sink)則作為終點(diǎn)處理數(shù)據(jù)。

4)局限性

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

5)應(yīng)用場景

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

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

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

關(guān)鍵字: 驅(qū)動(dòng)電源

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

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

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

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

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

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

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

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

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

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

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

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

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

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

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

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉