從單片機(jī)到嵌入式,需要學(xué)習(xí)的知識
從單片機(jī)到嵌入式,我們應(yīng)該了解什么?關(guān)于這個問題,在昨天的內(nèi)容《從單片機(jī)到嵌入式,需要學(xué)點啥?(上篇)》,我們了解了C語言、單片機(jī)、CPU、按鍵、代碼。今天了解一下μC/OS-II操作系統(tǒng)和總線這兩部分。
本文引用地址:http://www.ex-cimer.com/article/201708/363487.htm操作系統(tǒng)認(rèn)識初步——μC/OS-II
本節(jié)我們將對ucosII操作系統(tǒng)有個初步的認(rèn)識,主要是從下面2個方面進(jìn)行講解:
1.UCOSII操作系統(tǒng)的簡介
2.UCOSII操作系統(tǒng)組成部分
一、UCOSII操作系統(tǒng)的簡介:
μC/OS-II 是一種基于優(yōu)先級的搶占式多任務(wù)實時操作系統(tǒng),包含了實時內(nèi)核、任務(wù)管理、時間管理、任務(wù)間通信同步(信號量,郵箱,消息 隊列)和內(nèi)存管理等功能。它可以使各個任務(wù)獨立工作,互不干涉,很容易實現(xiàn)準(zhǔn)時而且無誤執(zhí)行,使實時應(yīng)用程序的設(shè)計和擴(kuò)展變得容易,使應(yīng)用程序的設(shè)計過程大為減化。
μC /OS-II是一個完整的、可移植、可固化、可裁剪的占先式實時多任務(wù)內(nèi)核。μC/OS-II絕大部分的代碼是用ANSI的C語言編寫的,包含一小部分匯編代碼,使之可供不同架構(gòu)的微處理器使用。至今,從8位到64位,μC/OS-II已在超過40種不同架構(gòu)上的微處理器上運行。μC/OS-II已經(jīng)在世界范圍內(nèi)得到廣泛應(yīng)用,包括很多領(lǐng)域, 如手機(jī)、路由器、集線器、不間斷電源、飛行器、醫(yī)療設(shè)備及工業(yè)控制上。實際上,μC/OS-II已經(jīng)通過了非常嚴(yán)格的測試,并且得到了美國航空管 理局(Federal Aviation Administration)的認(rèn)證,可以用在飛行器上。這說明μC/OS-II是穩(wěn)定可靠的,可用于與人性命攸關(guān)的安全緊要(safety critical)系統(tǒng)。除此以外,μC/OS-II 的鮮明特點就是源碼公開,便于移植和維護(hù)。
二、UCOSII操作系統(tǒng)組成部分:
μC/OS-II可以大致分成核心、任務(wù)處理、時間處理、任務(wù)同步與通信,CPU的移植等5個部分。
1) 核心部分(OSCore.c)
是操作系統(tǒng)的處理核心,包括操作系統(tǒng)初始化、操作系統(tǒng)運行、中斷進(jìn)出的前導(dǎo)、時鐘節(jié)拍、任務(wù)調(diào)度、事件處理等多部分。能夠維持系統(tǒng)基本工作的部分都在這里。
2) 任務(wù)處理部分(OSTask.c)
任務(wù)處理部分中的內(nèi)容都是與任務(wù)的操作密切相關(guān)的。包括任務(wù)的建立、刪除、掛起、恢復(fù)等等。因為μC/OS-II是以任務(wù)為基本單位調(diào)度的,所以這部分內(nèi)容也相當(dāng)重要。
3) 時鐘部分(OSTime.c)
μC/OS-II中的最小時鐘單位是timetick(時鐘節(jié)拍)。任務(wù)延時等操作是在這里完成的。
4) 任務(wù)同步和通信部分
為事件處理部分,包括信號量、郵箱、郵箱隊列、事件標(biāo)志等部分;主要用于任務(wù)間的互相聯(lián)系和對臨界資源的訪問。
5) 與CPU的接口部分
是指μC/OS-II針對所使用的CPU的移植部分。由于μC/OS-II是一個通用性的操作系統(tǒng),所以對于關(guān)鍵問題上的實現(xiàn),還是需要根據(jù)具體CPU的具體內(nèi)容和要求作相應(yīng)的移植。這部分內(nèi)容由于牽涉到SP等系統(tǒng)指針,所以通常用匯編語言編寫。主要包括中斷級任務(wù)切換的底層實現(xiàn)、任務(wù)級任務(wù)切換的底層實現(xiàn)、時鐘節(jié)拍的產(chǎn)生和處理、中斷的相關(guān)處理部分等內(nèi)容。
有了上面基礎(chǔ),是不是感覺操作系統(tǒng)也不是那么深奧了!
總線,你知多少?
本節(jié)我們主要是從下面6個方面進(jìn)行講解:
1.總線的簡單介紹
2.總線的原理
3.總線的特征
4.總線的分類
5.總線的技術(shù)指標(biāo)
6.傳輸數(shù)據(jù)可靠性
一、總線的簡單介紹:
其實現(xiàn)實生活中也有很多總線的影子。比如從A地到B地,只能通過船來渡河,并且船一次只能承載一個人,這時候,如果大家蜂擁而上,那么大家都會掉到河里去,輕則都去不了,重則出現(xiàn)死亡。這時,我們可以通過分時來實行,比如多少點是誰坐船過去,人之間的先后順序如何排序等。這就不知道不覺中運用了總線的時分系統(tǒng)傳輸性質(zhì)。
隨著網(wǎng)絡(luò)的發(fā)展,現(xiàn)在總線不僅僅局限于時分。還有頻分系統(tǒng)、相分系統(tǒng)和碼分系統(tǒng)等。只要認(rèn)真分析,抓住本質(zhì)東西,總線不是大家想象的那么難理解。
二、總線原理
如果說主板(Mother Board)是一座城市,那么總線就像是城市里的公共汽車(bus),能按照固定行車路線,傳輸來回不停運作的比特(bit)。這些線路在同一時間內(nèi)都僅能負(fù)責(zé)傳輸一個比特。因此,必須同時采用多條線路才能傳送更多數(shù)據(jù),而總線可同時傳輸?shù)臄?shù)據(jù)數(shù)就稱為寬度(width),以比特為單位,總線寬度愈大,傳輸性能就愈佳??偩€的帶寬(即單位時間內(nèi)可以傳輸?shù)目倲?shù)據(jù)數(shù))為:總線帶寬 = 頻率 x 寬度(Bytes/sec)。當(dāng)總線空閑(其他器件都以高阻態(tài)形式連接在總線上)且一個器件要與目的器件通信時,發(fā)起通信的器件驅(qū)動總線,發(fā)出地址和數(shù)據(jù)。其他以高阻態(tài)形式連接在總線上的器件如果收到(或能夠收到)與自己相符的地址信息后,即接收總線上的數(shù)據(jù)。發(fā)送器件完成通信,將總線讓出(輸出變?yōu)楦咦钁B(tài))。
目前最常見的主要有時分多路復(fù)用、頻分多路復(fù)用和碼分多路復(fù)用等。
1.時分多路復(fù)用(TDMA)
時分復(fù)用是將信道按時間加以分割成多個時間段,不同來源的信號會要求在不同的時間段內(nèi)得到響應(yīng),彼此信號的傳輸時間在時間坐標(biāo)軸上是不會重疊。
2.頻分多路復(fù)用(FDMA)
頻分復(fù)用就是把信道的可用頻帶劃分成若干互不交疊的頻段,每路信號經(jīng)過頻率調(diào)制后的頻譜占用其中的一個頻段,以此來實現(xiàn)多路不同頻率的信號在同一信道中傳輸。而當(dāng)接收端接收到信號后將采用適當(dāng)?shù)膸V波器和頻率解調(diào)器等來恢復(fù)原來的信號。
3.碼分多路復(fù)用(CDMA)
碼分多路復(fù)用是所被傳輸?shù)男盘柖紩懈髯蕴囟ǖ臉?biāo)識碼或地址碼,接收端將會根據(jù)不同的標(biāo)識碼或地址碼來區(qū)分公共信道上的傳輸信息,只有標(biāo)識碼或地址碼完全一致的情況下傳輸信息才會被接收。
總線的通信協(xié)議
對于總線的學(xué)習(xí),了解其通訊協(xié)議是整個過程中最關(guān)鍵的一步,所有介紹總線技術(shù)的資料都會花很大的篇幅來描述其協(xié)議,特別是ISO/OSI的那七層定義。其實要了解一種總線的協(xié)議,最主要的就是去了解總線的幀數(shù)據(jù)每一位所代表的特性和意義,總線各節(jié)點間有效數(shù)據(jù)的收發(fā)都是通過各節(jié)點對幀數(shù)據(jù)位或段的判斷和確信來得以實現(xiàn)。
如圖1所示是常見的I2C總線上傳輸?shù)囊蛔止?jié)數(shù)據(jù)的數(shù)據(jù)幀,其總線形式是由數(shù)據(jù)線SDA和時鐘SCL構(gòu)成的雙線制串行總線,并接在總線上的電路模塊即可作為發(fā)送器(主機(jī))又可作為接收器(從機(jī))。幀數(shù)據(jù)中除了控制碼(包括從機(jī)標(biāo)識碼和訪問地址碼)與數(shù)據(jù)碼外還包括起始信號、結(jié)束信號和應(yīng)答信號。
起始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)。
控制碼:用來選澤操作目標(biāo)與對象,即接通需要控制的電路,確定控制的種類對象。在讀期間,也即SCL時鐘線處于時鐘脈沖高電平時,SDA上的數(shù)據(jù)位不會跳變。
數(shù)據(jù)碼:是主機(jī)向從機(jī)發(fā)送的具體的有用的數(shù)據(jù)(如對比度、亮度等)和信息。在讀期間,SDA上的數(shù)據(jù)位不會跳變。
應(yīng)答信號:接收方收到8bit數(shù)據(jù)后,向發(fā)送方發(fā)出特定的低電平。讀/寫的方向與其它數(shù)據(jù)位正好相反,也即是由從機(jī)寫出該低電平,主機(jī)來讀取該低電平。
結(jié)束信號:SCL為高電平時,SDA由低電平向高電平跳變表示數(shù)據(jù)幀傳輸結(jié)束。
當(dāng)然不同的總線其數(shù)據(jù)位或段的定義肯定不同,但依據(jù)同樣的原理可以更快的去了解它的協(xié)議的特性和特點。雖然其信息幀的大小不一,但具體的某一數(shù)據(jù)位或數(shù)據(jù)段都類似于本文所提及的I2C總線,會依據(jù)它的協(xié)議的要求來定義它所達(dá)標(biāo)的意義和功能。
三、總線的特征
由于總線是連接各個部件的一組信號線。通過信號線上的信號表示信息,通過約定不同信號的先后次序即可約定操作如何實現(xiàn)。
總線的特性如下
(1)物理特性:
物理特性又稱為機(jī)械特性,指總線上部件在物理連接時表現(xiàn)出的一些特性,如插頭與插座的幾何尺寸、形狀、引腳個數(shù)及排列順序等。
(2)功能特性:
功能特性是指每一根信號線的功能,如地址總線用來表示地址碼。數(shù)據(jù)總線用來表示傳輸?shù)臄?shù)據(jù),控制總線表示總線上操作的命令、狀態(tài)等。
(3)電氣特性:
電氣特性是指每一根信號線上的信號方向及表示信號有效的電平范圍,通常,由主設(shè)備(如CPU)發(fā)出的信號稱為輸出信號(OUT),送入主設(shè)備的信號稱為輸入信號(IN)。通常數(shù)據(jù)信號和地址信號定義高電平為邏輯1、低電平為邏輯0,控制信號則沒有俗成的約定,如WE表示低電平有有效、Ready表示高電平有效。不同總線高電平、低電平的電平范圍也無統(tǒng)一的規(guī)定,通常與TTL是相符的。
(4)時間特性:
時間特性又稱為邏輯特性,指在總線操作過程中每一根信號線上信號什么時候有效,通過這種信號有效的時序關(guān)系約定,確保了總線操作的正確進(jìn)行。
為了提高計算機(jī)的可拓展性,以及部件及設(shè)備的通用性,除了片內(nèi)總線外,各個部件或設(shè)備都采用標(biāo)準(zhǔn)化的形式連接到總線上,并按標(biāo)準(zhǔn)化的方式實現(xiàn)總線上的信息傳輸。而總線的這些標(biāo)準(zhǔn)化的連接形式及操作方式,統(tǒng)稱為總線標(biāo)準(zhǔn)。如ISA、PCI、USB總線標(biāo)準(zhǔn)等,相應(yīng)的,采用這些標(biāo)準(zhǔn)的總線為ISA總線、PCI總線、USB總線等。
四、總線的分類
總線按功能和規(guī)范可分為五大類型:
數(shù)據(jù)總線(Data Bus):在CPU與RAM之間來回傳送需要處理或是需要儲存的數(shù)據(jù)。
地址總線(Address Bus):用來指定在RAM(Random Access Memory)之中儲存的數(shù)據(jù)的地址。
控制總線(Control Bus):將微處理器控制單元(Control Unit)的信號,傳送到周邊設(shè)備,一般常見的為 USB Bus和1394 Bus。
擴(kuò)展總線(Expansion Bus):可連接擴(kuò)展槽和電腦。
局部總線(Local Bus):取代更高速數(shù)據(jù)傳輸?shù)臄U(kuò)展總線。
按照傳輸數(shù)據(jù)的方式劃分,可以分為串行總線和并行總線。
串行總線中,二進(jìn)制數(shù)據(jù)逐位通過一根數(shù)據(jù)線發(fā)送到目的器件;并行總線的數(shù)據(jù)線通常超過2根。常見的串行總線有SPI、I2C、USB及RS232等。
按照時鐘信號是否獨立,可以分為同步總線和異步總線。
同步總線的時鐘信號獨立于數(shù)據(jù),而異步總線的時鐘信號是從數(shù)據(jù)中提取出來的。SPI、I2C是同步串行總線,RS232采用異步串行總線。
五、總線的技術(shù)指標(biāo)
1、總線的帶寬(總線數(shù)據(jù)傳輸速率)
總線的帶寬指的是單位時間內(nèi)總線上傳送的數(shù)據(jù)量,即每鈔鐘傳送MB的最大穩(wěn)態(tài)數(shù)據(jù)傳輸率。與總線密切相關(guān)的兩個因素是總線的位寬和總線的工作頻率,它們之間的關(guān)系:
總線的帶寬=總線的工作頻率*總線的位寬/8
或者 總線的帶寬=(總線的位寬/8 )/總線周期
2、總線的位寬
總線的位寬指的是總線能同時傳送的二進(jìn)制數(shù)據(jù)的位數(shù),或數(shù)據(jù)總線的位數(shù),即32位、64位等總線寬度的概念??偩€的位寬越寬,每秒鐘數(shù)據(jù)傳輸率越大,總線的帶寬越寬。
3、總線的工作頻率
總線的工作時鐘頻率以MHZ為單位,工作頻率越高,總線工作速度越快,總線帶寬越寬。
六、傳輸數(shù)據(jù)可靠性
可靠性是評定總線最關(guān)鍵的參數(shù),沒有可靠性,傳輸?shù)臄?shù)據(jù)都是錯誤的信息,便就失去了總線的實際意義。為了提高總線的可靠性,通常采用的措施有:
采用數(shù)據(jù)幀發(fā)送前發(fā)送器對總線進(jìn)行偵聽,只有偵聽到總線處于空閑狀態(tài)下時才可向總線傳送數(shù)據(jù)幀,這樣避免了不同節(jié)點的數(shù)據(jù)沖突。
采用雙絞線差分信號來傳送數(shù)據(jù),以降低單線的電壓升降幅度,減小信號的邊沿產(chǎn)生的高次諧波。
適當(dāng)?shù)淖寯?shù)據(jù)的邊沿具有一定的斜坡。
增加匹配電阻和電容等來減少總線上信號的發(fā)射和平衡總線上的分布電容等。
采用合適的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和屏蔽技術(shù)等來減少受其他信號的干擾。
還有就是在軟件上通過數(shù)字濾波、數(shù)據(jù)校驗糾錯等措施來提高數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
看了上面的是不是對總線沒有那么陌生了,感覺總線沒有那么恐怖了!
評論