1. 時(shí)間操作簡介
在應(yīng)用開發(fā)中,特別是設(shè)計(jì)日記記錄功能中,經(jīng)常涉及時(shí)間戳的操作,時(shí)間戳可直觀的體現(xiàn)程序的運(yùn)行時(shí)間,運(yùn)行效率。EASY EAI orin-nano評(píng)估套件對(duì)時(shí)間的操作如下所示。
1.1 查看時(shí)間
查看系統(tǒng)時(shí)間命令如下所示。date命令查看的是時(shí)區(qū)時(shí)間(通過網(wǎng)絡(luò)校時(shí)),當(dāng)前設(shè)置為CST,即北京時(shí)間。hwclock是查看硬件RTC時(shí)間(EASY EAI orin-nano默認(rèn)沒有RTC,此處讀取錯(cuò)誤),通常以格林威治時(shí)間(GMT)為標(biāo)準(zhǔn)。
1.2 設(shè)置時(shí)間
設(shè)置系統(tǒng)時(shí)間有兩種方法,可直接設(shè)置以及NTP設(shè)置。
通過date命令可以設(shè)置系統(tǒng)時(shí)間,設(shè)置格式為“yyyy-MM-dd HH:mm:ss”,設(shè)置系統(tǒng)時(shí)間之后,若有外接RTC模塊,還需要輸入“hwclock -w”來寫入硬件RTC時(shí)間。
sudo date -s "2025-01-20 14:47:02" sudo hwclock -w

NTP全稱為網(wǎng)絡(luò)時(shí)間同步協(xié)議,可以通過網(wǎng)絡(luò)上的時(shí)間服務(wù)器來同步本地ARM板的系統(tǒng)時(shí)間。EASY EAI orin-nano采用ntpd服務(wù)來進(jìn)行網(wǎng)絡(luò)校時(shí),若要采用手動(dòng)校時(shí),則需先停掉該校時(shí)服務(wù)。
1.3 系統(tǒng)時(shí)區(qū)設(shè)置
在新建日志文件時(shí),可能由于ARM板本身的時(shí)區(qū)與當(dāng)?shù)夭灰恢拢瑢?dǎo)致日志的時(shí)間與PC的時(shí)間不一致。EASY EAI orin-nano的時(shí)區(qū)相關(guān)目錄與文件如下所示。
路徑 | 描述 |
/usr/share/zoneinfo/* | zoneinfo時(shí)區(qū)模塊文件,保存各個(gè)地區(qū)的時(shí)區(qū)文件 |
/etc/localtime | 本地機(jī)器的時(shí)區(qū)文件,實(shí)際是zoneinfo時(shí)區(qū)模塊文件中的其中一個(gè) |
/etc/timezone | 本地機(jī)器的時(shí)區(qū)文件,用于給應(yīng)用層直接讀取 |
設(shè)置系統(tǒng)時(shí)區(qū)命令如下所示。首先從zoneinfo目錄中選擇想要的時(shí)區(qū)文件,替換掉/etc/localtime文件,然后把/etc/timezone修改為目標(biāo)地區(qū),最后需要復(fù)位評(píng)估板,此時(shí)觀察系統(tǒng)即可看到時(shí)區(qū)設(shè)置成功。
替換/etc/localtime后的時(shí)區(qū)
1.4 系統(tǒng)運(yùn)行時(shí)長
查看系統(tǒng)從上電到命令執(zhí)行的運(yùn)行信息。
uptime打印的信息分別如下:
當(dāng)前服務(wù)器時(shí)間;
當(dāng)前服務(wù)器運(yùn)行時(shí)長;
當(dāng)前用戶數(shù);
當(dāng)前的負(fù)載均衡,load average;
2. 快速上手
如果您初次閱讀此文檔,請(qǐng)閱讀:《入門指南/源碼管理及編程介紹/源碼工程管理》,按需管理自己工程源碼(注:此文檔必看,并建議采用【遠(yuǎn)程掛載管理】方式,否則有代碼丟失風(fēng)險(xiǎn)!!!)。
2.1 源碼工程下載
先在PC虛擬機(jī)定位到nfs服務(wù)目錄,再在目錄中創(chuàng)建存放源碼倉庫的管理目錄:
cd ~/nfsroot mkdir GitHub cd GitHub
再通過git工具,在管理目錄內(nèi)克隆遠(yuǎn)程倉庫(需要設(shè)備能對(duì)外網(wǎng)進(jìn)行訪問)
git clone https://github.com/EASY-EAI/EASY-EAI-Toolkit-3576.git

注:
* 此處可能會(huì)因網(wǎng)絡(luò)原因造成卡頓,請(qǐng)耐心等待。
* 如果實(shí)在要在gitHub網(wǎng)頁上下載,也要把整個(gè)倉庫下載下來,不能單獨(dú)下載本實(shí)例對(duì)應(yīng)的目錄。
2.2 開發(fā)環(huán)境搭建
通過adb shell進(jìn)入板卡開發(fā)環(huán)境,如下圖所示。
通過以下命令,把nfs目錄掛載上nfs服務(wù)器。
mount -t nfs -o nolock : /home/orin-nano/Desktop/nfs/

2.3 例程編譯
然后定位到nfs的掛載目錄,再在目錄中創(chuàng)建存放源碼倉庫的管理目錄:
cd /home/orin-nano/Desktop/nfs/GitHub
進(jìn)入到對(duì)應(yīng)的例程目錄執(zhí)行編譯操作,具體命令如下所示:
cd EASY-EAI-Toolkit-3576/Demos/common-system_opt/ ./build.sh

2.4 例程運(yùn)行及效果
執(zhí)行下方命令,運(yùn)行示例程序:
./Release/test-timepara-opt
執(zhí)行效果如下所示。
API的詳細(xì)說明,以及API的調(diào)用(本例程源碼),詳細(xì)信息見下方說明。
3. 時(shí)間操作API說明
3.1 引用方式
EASY EAI api庫位于本倉庫的easyeai-api目錄中。為方便客戶在本地工程中直接調(diào)用我們的EASY EAI api庫,此處列出工程中需要鏈接的庫以及頭文件等,方便用戶直接添加。
描述 | CMake寫法 | Makefile寫法 |
api.cmake | ${common_root}/system_opt/api.cmake | 無 |
頭文件目錄 | ${SYSTEM_OPT_INCLUDE_DIRS} | -I ../../easyeai-api/common/system_opt |
源文件目錄 | ${SYSTEM_OPT_SOURCE_DIRS} | ../../easyeai-api/common/system_opt |
庫文件目錄 | 無 | 無 |
庫鏈接參數(shù) | ${SYSTEM_OPT_LIBS} | 無 |
API源代碼路徑為EASY-EAI-Toolkit-3576/easyeai-api/common/system_opt/。用戶可通過源代碼了解接口實(shí)現(xiàn),甚至可對(duì)源碼進(jìn)行修改。
3.2 獲取時(shí)間戳(調(diào)試使用)
獲取時(shí)間戳函數(shù)用于獲取秒、毫秒、微秒,函數(shù)原型如下所示。
uint64_t get_timeval_us(); uint64_t get_timeval_ms(); uint64_t get_timeval_s();
具體介紹如下所示。
函數(shù)名:get_timeval_us()、get_timeval_ms()、get_timeval_s() | |
頭文件 | easyeai-api/common/system_opt/system_opt.h |
輸入?yún)?shù) | 無 |
返回值 | 時(shí)間戳,分別為:微秒級(jí)、毫秒級(jí)、秒級(jí) |
注意事項(xiàng) | 無 |
3.3 系統(tǒng)延時(shí)(基于nanosleep)
nanosleep一旦被調(diào)用,線/進(jìn)程就進(jìn)入 TASK_INTERRUPTIBLE 狀態(tài),直到線/進(jìn)程被喚醒,就回到 TASK_RUNNIN 狀態(tài)。TASK_INTERRUPTIBLE 是可以被 [信號(hào)] 和 [wake_up()] 喚醒的,當(dāng)信號(hào)到來時(shí),進(jìn)程會(huì)被設(shè)置為“可運(yùn)行”。
對(duì)線/進(jìn)程進(jìn)行秒、毫秒、微秒級(jí)別的延時(shí),函數(shù)原型如下所示。
uint32_t osTask_usDelay(uint32_t us); uint32_t osTask_msDelay(uint32_t ms); uint32_t osTask_sDelay(uint32_t s);
具體介紹如下所示。
函數(shù)名:osTask_usDelay()、osTask_msDelay()、osTask_sDelay() | |
頭文件 | easyeai-api/common/system_opt/system_opt.h |
輸入?yún)?shù) | 延時(shí)時(shí)長,分別為:微秒級(jí)、毫秒級(jí)、秒級(jí) |
返回值 | 線/進(jìn)程被意外喚醒后,還剩余未執(zhí)行的延時(shí)時(shí)長。 |
注意事項(xiàng) | 無 |
3.4 系統(tǒng)延時(shí)(基于usleep)
對(duì)線/進(jìn)程進(jìn)行秒、毫秒、微秒級(jí)別的延時(shí),函數(shù)原型如下所示。
uint32_t msleep(uint32_t ms);
具體介紹如下所示。
函數(shù)名:msleep() | |
頭文件 | easyeai-api/common/system_opt/system_opt.h |
輸入?yún)?shù) | 延時(shí)時(shí)長,毫秒級(jí) |
返回值 | 線/進(jìn)程被意外喚醒后,還剩余未執(zhí)行的延時(shí)時(shí)長。 |
注意事項(xiàng) | 還可使用系統(tǒng)提供的usleep和sleep進(jìn)行微秒級(jí)和秒級(jí)延時(shí) |
3.5 獲取時(shí)間
獲取當(dāng)前系統(tǒng)時(shí)間,其值表示從CUT(Coordinated Universal Time)時(shí)間1970年1月1日00:00:00到當(dāng)前時(shí)刻的秒數(shù)。函數(shù)原型如下所示。
int get_time_stamp();
具體描述如下所示。
函數(shù)名:get_time_stamp() | |
頭文件 | easyeai-api/common/system_opt/system_opt.h |
輸入?yún)?shù) | 無 |
返回值 | 時(shí)間戳,秒級(jí) |
注意事項(xiàng) | 無 |
3.6 獲取系統(tǒng)日期,系統(tǒng)時(shí)間
獲取系統(tǒng)日期,系統(tǒng)時(shí)間函數(shù)原型如下。
void get_system_date_time(uint32_t *curDate, uint32_t *curTime);
具體描述如下所示。
函數(shù)名:get_system_date_time() | |
頭文件 | easyeai-api/common/system_opt/system_opt.h |
輸入?yún)?shù) | curDate:年月日排列保存變量 |
curTime:時(shí)分秒排列保存變量 | |
返回值 | 無 |
注意事項(xiàng) | 無 |
3.7 設(shè)置系統(tǒng)日期,系統(tǒng)時(shí)間
設(shè)置系統(tǒng)日期,系統(tǒng)時(shí)間的操作函數(shù)原型如下所示。
void set_system_date_time(int year, int mon, int day, int hour, int min, int second);
具體描述如下所示。
函數(shù)名:set_system_date_time() | |
頭文件 | easyeai-api/common/system_opt/system_opt.h |
輸入?yún)?shù) | year:年 |
mon:月 | |
day:日 | |
hour:時(shí) | |
min:分 | |
second:秒 | |
返回值 | 無 |
注意事項(xiàng) | 注意ntp校時(shí)會(huì)把此函數(shù)設(shè)置的時(shí)間覆蓋掉 |
4. API測試案例
示例代碼路徑為EASY-EAI-Toolkit-3576/Demos/common-system_opt/test-timepara-opt.c。
審核編輯 黃宇
-
rk3576
+關(guān)注
關(guān)注
1文章
173瀏覽量
718
發(fā)布評(píng)論請(qǐng)先 登錄
【米爾RK3576開發(fā)板評(píng)測】+項(xiàng)目名稱【米爾RK3576開發(fā)板評(píng)測】一個(gè)視頻和你共同認(rèn)識(shí)一下米爾RK3576開發(fā)板
米爾RK3576和RK3588怎么選?-看這篇就夠了
【米爾RK3576開發(fā)板評(píng)測】+項(xiàng)目名稱值得購買的米爾RK3576開發(fā)板
探索 RK3576 方案:卓越性能與靈活框架,誠邀開發(fā)定制合作!
適配多種系統(tǒng),米爾瑞芯微RK3576核心板解鎖多樣化應(yīng)用
RK3576 vs RK3588:為何越來越多的開發(fā)者轉(zhuǎn)向RK3576?
Mpp支持RK3576么
RK這2款旗艦芯片RK3588 PK RK3576,誰是最優(yōu)選
新品體驗(yàn) | RK3576開發(fā)板

RK3576單板發(fā)布倒計(jì)時(shí):RK3399與RK3576對(duì)比

RK3588與RK3576區(qū)別解析

RK3576有多強(qiáng)?實(shí)測三屏八攝像頭輕松搞定

評(píng)論