行頻率,即 98MHz,同時定時器使用 CPU 運行頻率的 12 分頻,即 8MHz;
TINIUX 操作系統(tǒng) ticks 運行頻率通過預(yù)置文件“OSPreset.h”中的宏定義 SETOS_TICK_RATE_HZ 來配置。在系統(tǒng)啟動時,通過 FitCPU.c 文件中的 FitSetupTimerInterrupt()函數(shù),配置芯片指 定的寄存器,使系統(tǒng)時鐘(中斷)參數(shù)生效;
注:在官方示例中,我們通常配置 ticks 頻率為 1000Hz,這個 ticks 頻率主要便于對系統(tǒng)的性 能測試;對于運行主頻不高的 MCS‐51 單片機(jī)系列,適當(dāng)降低 TINIUX 系統(tǒng) ticks 頻率,運行 效率會更高。
5.3 TINIUX資源配置
‐對于嵌入式系統(tǒng)來說,內(nèi)存都是比較寶貴的資源,因此一般的程序都會嚴(yán)格管理內(nèi)存使用, TINIUX 也一樣,需要使用多大的內(nèi)存,可以根據(jù)實際的 task 數(shù)量、信號量、互斥鎖、timer、 消息隊列、鏈表等內(nèi)容的數(shù)量來決定的(根據(jù)各自的結(jié)構(gòu)體大小以及數(shù)量計算),總的內(nèi)存 池的大小由系統(tǒng)宏定義 OSTOTAL_HEAP_SIZE 來確定。
‐TINIUX 中的內(nèi)存使用可以通過參數(shù)預(yù)置文件“OSPreset.h”進(jìn)行配置。在系統(tǒng)預(yù)置文件中使 用宏定義SETOS_TOTAL_HEAP_SIZE 來確定內(nèi)存池的大小,并以此來管理任務(wù)、信號量、消息 隊列等等資源的創(chuàng)建。
‐對于 MCS‐51 單片機(jī),運行效率高的 RAM 空間一般在 256 字節(jié),擴(kuò)展的 XRAM 空間會稍大, TINIUX 系統(tǒng)在啟動時,處于掛起及休眠狀態(tài)的任務(wù)或分配到 XRAM 空間,只有當(dāng)前運行的任 務(wù)會分配到 RAM 空間。同時為了減少對 XRAM 空間的占用,推薦裁剪掉信號量、互斥鎖、 timer、消息隊列等功能模塊,只啟用系統(tǒng)內(nèi)輕量級的同步信號與同步消息功能。
6 移植其他內(nèi)核的芯片
‐ 目前 TINIUX 官方已經(jīng)支持 MCS‐51/8051 8052 等系列的芯片,用戶若需移植 TINIUX 到其他 內(nèi)核的芯片時,需要在 CPU下添加一個芯片所屬系列的目錄,并且在該新增加的目錄下添 加 FitType.h、FitCPU.h、FitCPU.c 等文件,或根據(jù)開發(fā)平臺(SDCC,keil,IAR 等)的要求, 添加相應(yīng)的匯編文件。FitType.h 文件主要根據(jù)平臺的特點定義 TINIUX 系統(tǒng)的數(shù)據(jù)類型, FitCPU.c 文件主要定義系統(tǒng) ticks 中斷,SVC 中斷,中斷鎖定,task 調(diào)度及調(diào)度時寄存器的保 存與恢復(fù)等。
‐ 目前 TINIUX 官方適配了 MCS‐51/8051 8052 等系列的芯片移植文件,其中 8051 系列的移植 文件使用了傳統(tǒng) 51 定時器Timer0 的模式 1,具有 16 位寬,但無法自動重載,系統(tǒng)會自動 根據(jù) ticks 頻率設(shè)置 timer0 重載起點。此種定時器模式的優(yōu)點是適用于大多數(shù) 51/52 等系列 的單片機(jī),但是會導(dǎo)致系統(tǒng)時間漂移。目前很多芯片生產(chǎn)廠商都優(yōu)化了 Timer0 的功能,若 具有 16 位寬并且具有自動重載的模式,建議用戶配置使用,或者使用其他 Timer 定時器。
‐ 目前 TINIUX 官方提供的 8052 芯片移植文件使用了 52 單片機(jī)中標(biāo)準(zhǔn)的 Timer2 定時器,具有 16 位寬,并且具備自動重載功能,這樣系統(tǒng) ticks 精度會更高;只是在配置 Timer2 時使用了 C8051 等芯片特有的寄存器“SFRPAGE”,若用戶使用的平臺具有 52 單片機(jī)標(biāo)準(zhǔn)的 Timer2定時器,卻沒有“SFRPAGE”寄存器,則可以直接注釋掉對該寄存器的配置再使用。
7 其他說明
‐ 對于 RAM 較小的芯片,請參照參數(shù)預(yù)置文件“OSPreset.h”中的注釋進(jìn)行適當(dāng)調(diào)整,通過 宏定義關(guān)閉不必要的功能模塊,否則有可能會出現(xiàn)編譯失敗的問題。
‐ TINIUX 官方網(wǎng)站提供了一些已經(jīng)創(chuàng)建好了的示例工程,移植到新的開發(fā)板(芯片)時可參考 這些示例工程。