如今,運行實時操作系統(RTOS)的大型32位單片機(MCU)和微處理器(MPU)日益普及。不過,如果使用一個大型單片機處理復雜的應用,可能會在執行小型后臺處理任務時遇到CPU資源方面的問題,這些任務雖然并不復雜,但十分耗時。8位和16位MCU等小型器件可用于減輕32位器件的工作負荷。
試想一下這樣一個示例:將一個32位MCU用于控制汽車的非安全功能,如娛樂系統、環境照明和空調。此32位器件必須對其資源進行分配,以便處理與這些功能相關的所有任務。這樣的任務還包括測量駕駛室內多個點的溫度、打開/關閉空調系統、更新圖形顯示、處理用戶輸入、調整照明條件和播放音樂。即使對于大型32位器件,這些工作量也過于繁重。
但是,如果32位器件將部分任務負荷轉移給幾乎不需要監控的子處理器,每個子處理器僅負責處理其中的1或2個任務,那么這些任務會更易于管理。這可以釋放主處理器上的CPU資源,從而降低軟件的復雜性,同時提高性能并縮短執行時間。
這種解決方案與單片機中的外設有異曲同工之妙。外設是專用硬件的小型模塊,可以添加新功能(例如運算放大器或模數轉換器),也可以減少執行給定功能時CPU必須承擔的工作量。在某些情況下,初始化后,外設可獨立于CPU運行。
為了說明外設的優勢,我們以產生脈寬調制(PWM)信號為例。要在沒有專用外設的情況下產生PWM,只需將I/O線設為高電平,等待一定數量的周期后,將其設為低電平,再等待一段時間,然后重復操作。這會占用大量CPU周期,并且對于某些功能(如RTOS)來說,難以可靠地執行。相比之下,PWM外設允許CPU在執行其他任務的同時設置所需的波形參數。
本文中介紹的第一個示例說明了減輕CPU密集型任務負荷的優勢。在該案例中,使用了一個8位MCU來創建I/O擴展器。I/O擴展器并不復雜;然而,由于需要頻繁處理中斷,因此它們會占用大量的CPU時間。通過使用專用MCU來完成這項任務,大型32位器件可以減少I/O使用和需要處理的中斷次數。此外,I/O擴展器的功能集可在軟件中設置,因此支持針對應用進行定制和調整。
本文中的第二個示例以創建獨立于CPU運行的電壓頻率(V/F)轉換器為例,展示了獨立于內核的外設的性能。在這個示例中,CPU的唯一功能是初始化外設并將調試打印消息發送到UART。在大型系統中,當V/F在后臺運行時,CPU可以執行另一個簡單的任務。
I/O擴展器
使用8位MCU創建I/O擴展器的最大好處是提高靈活性。I/O擴展器ASIC的功能集已嵌入到器件中,而MCU可基于其執行的軟件定義其行為。這種靈活性使基于MCU的版本能夠滿足最終應用的需求。
實現高級I/O擴展器
在器件內部,高級I/O擴展器在基于查找表的結構上運行。在讀取或寫入之前,會發送一個虛擬地址。該地址與單片機上的寄存器無關——僅特定于查找表。這意味著,可以透明地添加不在單片機硬件寄存器中的功能。此外,還可以針對特定用途,輕松地重新排列表格中的條目。這種結構的另一個優勢是,能夠向查找表添加權限。例如,要創建一個只讀寄存器,只需省略查找表的寫條目即可。
這種較為復雜的結構也適用于非標準功能?!癕EM OP”功能允許MCU將其當前的通用輸入和輸出(GPIO)配置保存或加載到存儲器中。
器件中的存儲器存儲
MEM OP也可以將GPIO配置重置為編譯時設置的參數。
注:并非所有字段均可用于所有操作
MEM OP的功能
此外,也可以選擇將單片機設置為在上電時加載保存的設置。如果已使能,單片機會嘗試加載配置0中的設置。如果配置執行校驗和驗證失敗,則MCU將恢復為編譯時常數。如果不需要,可以在軟件中禁用此功能。
該解決方案的要點
基于MCU的解決方案的優勢在于出色的靈活性。與市場上的ASIC不同,我們可以為MCU配置特定于應用場景的非標準功能。此應用程序針對通用PIC16F15244系列MCU開發。
如需深入了解該實現或想要試用該示例,請參見源資源庫中的README文件。此外,還提供帶有Arduino的高級I/O擴展器的演示。
-
單片機
+關注
關注
6043文章
44621瀏覽量
638611 -
操作系統
+關注
關注
37文章
6896瀏覽量
123753
發布評論請先 登錄
相關推薦
評論