ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
編譯器 RTS 庫在 time.h 中支持兩個低級別時間相關(guān)標(biāo)準(zhǔn) C 函數(shù):
clock_t clock(void);time_t time(time_t *timer);time() 函數(shù)會返回掛鐘時間。clock() 函數(shù)會返回自程序開始執(zhí)行以來經(jīng)過的時鐘周期數(shù);它與掛鐘時間完全無關(guān)。
這些函數(shù)的默認(rèn)實(shí)現(xiàn)要求程序在 CCS 或支持 CIO 系統(tǒng)調(diào)用協(xié)議的類似工具下運(yùn)行。如果 CIO 不可用,而您需要使用這些函數(shù)中的其中一個,則您必須提供針對相應(yīng)函數(shù)的自有定義。
clock() 函數(shù)會返回自程序開始執(zhí)行以來經(jīng)過的時鐘周期數(shù)。這類信息可能存在于器件內(nèi)的寄存器中,但位置會因平臺而異。編譯器的 RTS 庫提供了采用 CIO 系統(tǒng)調(diào)用協(xié)議來與 CCS 進(jìn)行通信的實(shí)現(xiàn)方案,這將確定如何為此器件計算正確的值。
如果 CCS 不可用,您必須提供一種有關(guān) clock() 函數(shù)的實(shí)現(xiàn)方案來從器件中的相應(yīng)位置收集時鐘周期信息。
time() 函數(shù)會返回從 epoch 到現(xiàn)在的真實(shí)時間(以秒為單位)。
很多嵌入式系統(tǒng)中沒有內(nèi)部現(xiàn)實(shí)時鐘,因此程序需要通過外部來源發(fā)現(xiàn)時間。編譯器的 RTS 庫提供了一種實(shí)現(xiàn)方案,利用 CIO 系統(tǒng)調(diào)用協(xié)議來與 CCS 進(jìn)行通信,從而提供真實(shí)時間。
如果 CCS 不可用,您必須提供一種有關(guān) time() 函數(shù)的實(shí)現(xiàn)方案來從一些其他來源查找時間。如果程序在操作系統(tǒng)中運(yùn)行,該操作系統(tǒng)應(yīng)該提供一種有關(guān) time() 的實(shí)現(xiàn)方案。
time() 函數(shù)會返回從 epoch 到現(xiàn)在的秒數(shù)。在 POSIX 系統(tǒng)中,epoch 定義為自 1970 年 1 月 1 日 UTC 午夜零點(diǎn)到現(xiàn)在的秒數(shù)。不過,C 標(biāo)準(zhǔn)不需要任何特定的 epoch,并且 time() 的默認(rèn) TI 版本使用不同的 epoch:1900 年 1 月 1 日 UTC-6 (CST) 午夜零點(diǎn)。例外,默認(rèn)的 TI time_t 類型為 32 位類型,而 POSIX 系統(tǒng)通常使用 64 位 time_t 類型。
RTS 庫提供了一種有關(guān) time() 函數(shù)的非默認(rèn)實(shí)現(xiàn)方案,在該實(shí)現(xiàn)中,epoch 為 1970 年 1 月 1 日 UTC 午夜零點(diǎn),time_t 類型為 64 位,也就是 __type64_t 的 typedef。
如果您的代碼采用原始時間值,則您可以通過以下方式之一來處理 epoch 問題:
| __time32_t | __time64_t | |
|---|---|---|
| Epoch (start) | 1900 年 1 月 1 日 CST-0600 | 1970 年 1 月 1 日 UTC-0000 |
| 結(jié)束日期 | 2036 年 2 月 7 日 06:28:14 | 292277026596 年 |
| 符號 | 無符號,因此不能表示 epoch 之前的日期。 | 帶符號,因此可以表示 epoch 之前的日期。 |