?

基于指針數組的高精度UCOSII軟件定時器改進方案

2021-09-26 13:12曾春,蔡陽,孫周,胡杰
電腦知識與技術 2021年20期
關鍵詞:物聯網嵌入式

曾春,蔡陽,孫周,胡杰

摘要:stm32是目前應用最廣泛的單片機之一,具有低功耗、高性能等優點。移植了UCOSII之后的單片機,相比于“裸機”,具有操作靈活,實時性良好的優點。本文針對傳統軟件定時器維護方式,提出了一種基于運行態數組的軟件定時器改進方案,和空閑定時器控制塊鏈表指針相比,支持隨機訪問定時器數據;和定時器控制塊數組相比,運行期綁定成員變量,更加靈活;和定時器輪相比,更加直觀、方便操作和理解。缺點是內存浪費,對于固定的系統來說,當一個操作系統燒進下位機,不會產生復雜而且龐大的數據,這可能不會產生較大的影響。

關鍵詞:UCOSII;軟件定時器;stm32;物聯網;運行態;嵌入式

中圖分類號:TP316? ? ? ? ?文獻標識碼:A

文章編號:1009-3044(2021)20-0014-06

Improvement Scheme of High-precision UCOSII Software Timer Based on Pointer Array

ZE|NG Chun, CAI Yang, SUN Zhou, HU Jie

(School of Computer Science, University of Yangtse, Jingzhou 434000, China)

Abstract: STM32 is one of the most widely used single chip microcontrollers at present. It has the advantages of low power consumption and high performance. After transplanting UCOSII MCU, compared with "bare machine", it has flexible operation and good real-time performance. Aiming at the traditional maintenance mode of software timer, this paper proposes an improved scheme of software timer based on running state array, which supports random access to timer data compared with free timer control block list pointer, and binds member variables more flexibly in running time than timer control block array. It is more intuitive and convenient to operate and understand compared with timer wheel. The disadvantage is memory waste. For a fixed system, when an operating system burns into the lower computer, it will not produce complex and huge data, This may not have a major impact.

Key words: UCOSII; software timers; stm32; iot; operating state ;embedded system

UCOSII由美國Jean J. Labrosse設計而成,具有開源、實時性、穩定性、對處理器要求不高等特點[1],一個操作系統的實時性是指該系統的時鐘信號能夠準確的定時,同時各處的時鐘能夠在不同的場合比如ns、us級達到一致。數據的實時性在如今的科技時代起了非常重要的作用,移植了UCOSII后的STM32F107ZET6具有了強大的浮點運算能力,能夠精確處理各項從具有狀態變化的設備傳遞過來數據,而且UCOSII中的軟件定時器能夠精準地控制各項任務的時間,具有良好的數據實時性。但是傳統的實時操作系統雖然力求內存占用量小,卻忽視了靈活操作各項實時數據的功能,因此,本文采用了基于指針數組的數據結構,改進了傳統對于軟件定時器的維護方式,內存影響可以忽略不計,指針數組意為存放指針的數組,每個數組元素中存放的是指針。

UCOSII為一個開源系統,在任務同步與通信上提供了信號量、消息隊列和消息郵箱功能[2],另外還能進行時間處理、CPU移植等功能。正是由于其開源并且功能多使得這方面的研究非常廣泛。改變定時器的維護方式,也就是改變其存在于操作系統的數據結構,可以更加多樣化實現對智能設備的數據實時操作,比如有時我們希望通過不斷修改定時器的值來實現對于步進電機的計算機數控,以便得到理想的結果,有的系統采用外部計數脈沖方式,實時監測車針在各個相位的運動位置[3],這就需要用到高精度的實時操作系統來實現相應功能。

1 軟件定時器基礎知識

單片機內部都擁有能夠通過對時鐘脈沖的計數實現定時的硬件定時器,但數量有限,于是便有了軟件定時器,它基于硬件定時器的定時中斷利用軟件方法來實現,定時更長,使用更靈活[4]。51單片機特便是航天器中的C51軟件定時器會出現甚至同時出現以下問題:中斷沖突下定時器操作錯誤,非中斷沖突下定時器操作錯誤和定時器時間碼讀取錯誤[5]。而移植了操作系統后的stm32單片機功能就比51單片機強大了很多。UCOSII從V2.8.3版本(包括UCOSIII)以后加入了軟件定時器,這使得UCOSII的功能更加完善。而且相比于硬件定時器,軟件定時器的開銷更小,成本更低,不用擔心硬件損耗的問題,遇到問題,直接可以在軟件層面解決??梢赃@么理解,軟件定時器就是一個硬件定時器的驅動,這個驅動是可以根據任務需要進行一些更改的,嵌入式的核心就在于對中間件等驅動程序的編寫,并不在于創造全新的一種固定的算法,而是依賴于已經存在的硬件,根據具體情景靈活開發。

猜你喜歡
物聯網嵌入式
搭建基于Qt的嵌入式開發平臺
嵌入式軟PLC在電鍍生產流程控制系統中的應用
基于高職院校物聯網技術應用人才培養的思考分析
中國或成“物聯網”領軍者
Altera加入嵌入式視覺聯盟
倍福 CX8091嵌入式控制器
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合