SynthOS 是一種軟件工具,用于創(chuàng)建定制的、優(yōu)化的應用特定操作系統(tǒng) (ASOS)。使用項目文件中指定的系統(tǒng)約束和配置信息,SynthOS 分析應用程序和驅動程序代碼,并生成包含原始用戶代碼和運行特定 ASOS 要求所需的所有代碼的源代碼。
SynthOS 生成的 ASOS 是一個高效的多任務內核,可以從低端系統(tǒng)中引入新功能,尤其是小型 8 位或 16 位低速處理器,并使其能夠用于高級物聯網設備,同時提供安全性,便攜性和低功耗。由此產生的 ASOS 是一種 unikernel 形式,一種占用空間小、單一地址空間的系統(tǒng),它越來越受歡迎,可以直接在虛擬機管理程序或裸機系統(tǒng)上高效運行。
Kinoma Create,如圖 1 所示,是一個用于連接設備和物聯網的硬件和軟件原型系統(tǒng),基于 Marvell 的 PXA166 處理器。Kinoma Create 旨在與連接環(huán)境中的外部硬件和傳感器一起工作。
圖 1: Kinoma Create 硬件和接口
為了將 Kinoma Create 連接到外部硬件,系統(tǒng)背面有一個 50 針接口;這些引腳專用于固定功能。該系統(tǒng)還在前面有兩個相同的 8 引腳接頭,如表 1 中定義,每個 8 位由兩個 8 位 Microchip PIC 16 MCU 之一控制,這些 8 位 Microchip PIC 16 MCU 作為通用 I/O (GPIO) 處理器運行。使用與這些 GPIO 通信的內置 Front Pin 應用程序將這些引腳的功能動態(tài)分配給物理引腳。該項目的目標是為兩個 GPIO 開發(fā)代碼,這些 GPIO 可以同時運行多個 I/O 接口,不會丟失數據,但仍適合 PIC 15 MCU 的 4 KB 閃存和 256 字節(jié) RAM。
前面板接口上的任何引腳都可以支持表中所示的功能。
表 1: Kinoma Create Front Pin 功能
硬件架構
硬件架構如圖 2 所示。PIC16 是一款小巧但功能強大的 MCU,具有復雜的接口和配置設置。Kinoma Create 使用兩個 PIC16F1508 微控制器,每個都具有以下特性:
· 中檔指令集:48 條指令,16 層堆棧
· 閃存程序存儲器:4 KB
· RAM:256字節(jié)
· 振蕩器:16 MHz
· PWM:四個獨立
· DAC:5位
· 定時器:2個8位,1個16位
控制器的時鐘來自內部 16 MHz 時鐘。在 4 個周期/命令下,它相當于 4 MIPS。與主處理器的通信通過硬件 I 2 C 接口進行。
圖 2: SynthOS-Kinoma 創(chuàng)建項目框圖
軟件架構
鑒于 PIC16 處理器在內存空間和處理速度方面的限制,SynthOS 適合該項目。SynthOS 創(chuàng)建的 ASOS 在內存使用、處理器能力和速度方面非常高效。它對于像 Kinoma Create 中使用的 Microchip 設備這樣的小型 MCU 也很有用。SynthOS 允許在 C 中編寫代碼。當一個任務需要調用另一個任務或等待另一個任務完成時,會插入 SynthOS 識別的特殊代碼行,稱為“原語”。
然后在所有任務代碼上運行 SynthOS,將每個任務的適當信號量和標志插入到代碼中的適當位置。SynthOS 還創(chuàng)建了任務管理代碼來安排任務并管理相關的標志和信號量。SynthOS-Kinoma Create Project 的軟件架構如圖 3 所示。
圖 3: SynthOS-Kinoma Create Project 軟件功能框圖
系統(tǒng)初始化
System Init 模塊在上電、復位和任何其他初始化條件時設置系統(tǒng)配置和硬件配置。I 2 C 主機通信模塊是系統(tǒng)中的主要任務。它與主機通信,從中獲取配置信息和數據,并在響應主機請求時發(fā)回數據。它使用 PIC 的集成 I 2 C 機制。來自主機的數據分為兩類:沒有約束的數據和需要根據一組允許值進行驗證的數據。后面的數據被保存到一組影子寄存器中,并在影子寄存器模塊中處理。
從主機發(fā)送的一些數據會使系統(tǒng)進入不穩(wěn)定狀態(tài)或與其他數據發(fā)生沖突。此類數據保存在影子寄存器模塊中的一組影子寄存器中,并與相應寄存器的允許值進行比較。只有在驗證為允許值后才會加載到寄存器中并在系統(tǒng)中生效。如果系統(tǒng)在影子寄存器的數據中檢測到錯誤,它不會將該數據加載到相應的寄存器中,但會指示錯誤。
模擬輸入和 A/D 模塊處理模擬輸入。該模塊使用 PIC 的內部 10 位模數轉換器并將數據存儲在主機可以通過 I 2 C 接口檢索的寄存器中。
數字 I/O 端口管理器
數字 I/O 端口管理器模塊處理數字 I/O 端口狀態(tài)和 I/O。此功能在此模塊和其他一些模塊之間劃分。在驗證設置之間沒有沖突(例如,同時定義為電源和接地的引腳)之后,在影子寄存器模塊中將引腳設置為電源、接地或 NC。
PWM 端口管理器模塊控制脈寬調制 (PWM) 輸出,并在中斷服務程序 (ISR) 中執(zhí)行。PWM 使用兩個寄存器定義,第一個定義周期時間,第二個定義周期時間內信號為高電平的時間段。PWM 機制依靠定時器中斷來生成所需的波形。由于 PIC 的功能有限,系統(tǒng)僅限于三個 PWM 輸出。
在帶外圍設備的 I 2 C 模塊中,PIC 是 I 2 C 網絡上的主設備。時鐘和數據由 PIC 通過旋轉引腳上的位來模擬 I 2 C 協(xié)議生成。如果需要,系統(tǒng)可以發(fā)送單字節(jié)數據消息或進行緩沖區(qū)傳輸。
中斷服務程序 (ISR)
PIC 的有限功能和中斷支持架構需要偏離標準的帶有 SynthOS 的 ISR 實現。PIC 實際上只有一個中斷向量,所有中斷都指向同一個地址。檢測活動中斷并做出響應是固件的責任。該架構要求固件在退出 ISR 和重置中斷標志之前支持中斷。出于這個原因,該系統(tǒng)在 ISR 中執(zhí)行主機 I 2 C 和 PWM 以最小化代碼大小并最大化性能。
ASOS 管理系統(tǒng)的不同任務并讓它們并行運行,從而實現更高的效率。SynthOS 將任務定義為 Init Task、Loop Task、Call Task 或 ISR,并且必須在項目文件中指定系統(tǒng)中的每種任務類型。我們創(chuàng)建了一個項目文件來指定每個任務的類型及其屬性,例如任務的優(yōu)先級和頻率,所有這些都顯示在清單中。
圖 4:顯示 SynthOS-Kinoma Create 項目文件的清單。
接下來,我們將描述 SynthOS-Kinoma 創(chuàng)建項目的任務。初始化任務在軟件初始化期間執(zhí)行一次。由于這個實現相對簡單,并且由于內存限制,我們將所有系統(tǒng)初始化都移到了一個任務中。該任務包括系統(tǒng)配置、中斷設置和變量初始化。
循環(huán)任務
循環(huán)任務由 ASOS 使用 SynthOS 項目文件中選擇的調度程序定義的算法定期執(zhí)行。由于 PIC 的內存有限,我們在這個項目中只使用 Loop Tasks,這也簡化了配置文件和 SynthOS 生成的調度程序。
I 2 C Master 任務管理與主機在 I2C 總線上的通信。影子任務通過使用影子寄存器驗證來自主機處理器的信息,并且只有在影子寄存器中的數據被驗證后才更新系統(tǒng)配置和數據。
模擬輸入任務在后臺運行,從主機指定的端口讀取模擬輸入并將其保存在共享內存中。調用任務是不執(zhí)行的,除非它是由正在執(zhí)行的任務專門啟動的。在這個實現中,我們沒有使用任何調用任務。
中斷服務程序在中斷發(fā)生時執(zhí)行,就像在典型的嵌入式系統(tǒng)中一樣。系統(tǒng)中的 ISR 或者是用于 PWM 的定時器中斷,它根據主機處理器定義的占空比管理 PWM 時序,或者是管理與主機處理器通信的 I 2 C 主機中斷。
使用 SynthOS 實現系統(tǒng)后,GPIO 可以按預期工作,允許多個 I/O 同時運行而不會丟失任何數據,支持多個 A/D 和數字 I/O、多達四個 PWM,以及一個 I 2 C 接口八個引腳,僅由一個 PIC MCU 支持。考慮到功能,系統(tǒng)內存利用率在 3360 字節(jié)閃存(82% 利用率)和 198 字節(jié) RAM(77% 利用率)下非常高效。
審核編輯:郭婷
-
處理器
+關注
關注
68文章
19372瀏覽量
230434 -
寄存器
+關注
關注
31文章
5358瀏覽量
120775 -
定時器
+關注
關注
23文章
3253瀏覽量
115067
發(fā)布評論請先 登錄
相關推薦
評論