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

國產銀河麒麟操作系統V10和星光麒麟V1.0操作系統如何選擇?

云服務器選擇什么操作系統好?
deepin操作系統介紹

如何在windows上emulate不同操作系統
linux是實時系統還是分時操作系統
linux操作系統安裝步驟 linux操作系統的特點及組成
面向功能安全應用的汽車開源操作系統解決方案

工控機支持什么操作系統
簡單認識RTOS實時操作系統
Windows操作系統是什么?它有哪些特點?

嵌入式實時操作系統:Intewell操作系統與VxWorks操作系統有啥區別

評論