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