1. 時間操作簡介
在應用開發中,特別是設計日記記錄功能中,經常涉及時間戳的操作,時間戳可直觀的體現程序的運行時間,運行效率。
1.1 查看系統時間(鐘)
查看系統時間命令如下所示。

* date命令查看的是系統時間(UTC+時區),當前設置為CST,即北京時間;
1.2 設置系統時間(鐘)
設置系統時間有兩種方法,可【手動設置時間】以及【NTP設置時間】。
【手動設置時間】:通過date命令可以設置系統時間,設置格式為“yyyy-MM-dd HH:mm:ss”。

* 如有RTC時:設置系統時間之后,還需要輸入“hwclock -w”來寫入硬件RTC時間。
* 修改時間一般需要管理員權限,若非管理員用戶,需加上“sudo”
【NTP設置時間】:NTP就是網絡時間同步協議。通過在互聯網上的校時服務器對板卡按照一定規律(不同的ntp-client策略會不一樣)進行自動校時。
1.3 RTC時鐘設置
本文著重介紹系統時間,RTC部分(如有)請參考閱讀《外設接口使用說明/RTC》。
1.4 時區與校時服務
時區:【系統時鐘】和【RTC時鐘】用的都是UTC時間,不同地區所使用的時間,還需要考慮上時區的影響。
校時服務:【系統時鐘】除了可以被手動操作外,校時服務也會影響系統時鐘。
關于【時區設置】和【校時服務】,EASY-EAI-Nano-TB可以參考《應用筆記/自動校時與時區設置》一文進行操作。更詳細的交互作用機制,可參考《系統時間管理介紹》。
1.5 系統運行時長
查看系統從上電到命令執行的運行信息。

uptime打印的信息分別如下:
當前服務器時間;
當前服務器運行時長;
當前用戶數;
當前的負載均衡,load average;
2. 快速上手
2.1 開發環境準備
如果您初次閱讀此文檔,請閱讀《入門指南/開發環境準備/Easy-Eai編譯環境準備與更新》,并按照其相關的操作,進行編譯環境的部署。
在PC端Ubuntu系統中執行run腳本,進入EASY-EAI編譯環境,具體如下所示。
cd ~/develop_environment ./run.sh 2204

2.2 源碼下載以及例程編譯
在EASY-EAI編譯環境下創建存放源碼倉庫的管理目錄:
cd /opt mkdir EASY-EAI-Toolkit cd EASY-EAI-Toolkit
通過git工具,在管理目錄內克隆遠程倉庫
git clone https://github.com/EASY-EAI/EASY-EAI-Toolkit-1126B.git

注:
* 此處可能會因網絡原因造成卡頓,請耐心等待。
* 如果實在要在gitHub網頁上下載,也要把整個倉庫下載下來,不能單獨下載本實例對應的目錄。
進入到對應的例程目錄執行編譯操作,具體命令如下所示:
cd EASY-EAI-Toolkit-1126B/Demos/common-system_opt/ ./build.sh
注:
* 由于依賴庫部署在板卡上,因此交叉編譯過程中必須保持/mnt掛載。

2.3 例程運行
通過串口調試或ssh調試,進入板卡后臺,定位到例程部署的位置,如下所示:
cd /userdata/Demo/common-system_opt

運行例程命令如下所示:
2.4 運行效果
執行效果如下所示。

API的詳細說明,以及API的調用(本例程源碼),詳細信息見下方說明。
3. 時間操作API說明
3.1 引用方式
EASY EAI api庫位于本倉庫的easyeai-api目錄中。為方便客戶在本地工程中直接調用我們的EASY EAI api庫,此處列出工程中需要鏈接的庫以及頭文件等,方便用戶直接添加。

API源代碼路徑為EASY-EAI-Toolkit-1126B/easyeai-api/common/system_opt/。用戶可通過源代碼了解接口實現,甚至可對源碼進行修改。
3.2 獲取時間戳(調試使用)
獲取時間戳函數用于獲取秒、毫秒、微秒,函數原型如下所示。
uint64_t get_timeval_us(); uint64_t get_timeval_ms(); uint64_t get_timeval_s();
具體介紹如下所示。

3.3 系統延時(基于nanosleep)
nanosleep一旦被調用,線/進程就進入 TASK_INTERRUPTIBLE 狀態,直到線/進程被喚醒,就回到 TASK_RUNNIN 狀態。TASK_INTERRUPTIBLE 是可以被 [信號] 和 [wake_up()] 喚醒的,當信號到來時,進程會被設置為“可運行”。
對線/進程進行秒、毫秒、微秒級別的延時,函數原型如下所示。
uint32_t osTask_usDelay(uint32_t us); uint32_t osTask_msDelay(uint32_t ms); uint32_t osTask_sDelay(uint32_t s);
具體介紹如下所示。

3.4 系統延時(基于usleep)
對線/進程進行秒、毫秒、微秒級別的延時,函數原型如下所示。
uint32_t msleep(uint32_t ms);
具體介紹如下所示。

3.5 獲取時間
獲取當前系統時間,其值表示從CUT(Coordinated Universal Time)時間1970年1月1日00:00:00到當前時刻的秒數。函數原型如下所示。
int get_time_stamp();
具體描述如下所示。

3.6 獲取系統日期,系統時間
獲取系統日期,系統時間函數原型如下。
void get_system_date_time(uint32_t *curDate, uint32_t *curTime);
具體描述如下所示。

3.7 設置系統日期,系統時間
設置系統日期,系統時間的操作函數原型如下所示。
void set_system_date_time(int year, int mon, int day, int hour, int min, int second);
具體描述如下所示。

4. API測試案例
示例代碼路徑為EASY-EAI-Toolkit-1126B/Demos/common-system_opt/test-timepara-opt.c。
-
人工智能
+關注
關注
1819文章
50238瀏覽量
266634 -
開發板
+關注
關注
26文章
6375瀏覽量
120150 -
瑞芯微
+關注
關注
27文章
824瀏覽量
54623 -
EASY-EAI靈眸科技
+關注
關注
4文章
84瀏覽量
3710 -
RV1126B
+關注
關注
0文章
72瀏覽量
229
發布評論請先 登錄
瑞芯微(EASY EAI)RV1126B 音頻輸入
瑞芯微(EASY EAI)RV1126B PWM使用
瑞芯微(EASY EAI)RV1126B 音頻輸出
【EASY EAI Nano-TB(RV1126B)開發板試用】+初識篇
【EASY EAI Nano-TB(RV1126B)開發板試用】命令行功能測試-shell腳本進行IO控制-燈閃
【EASY EAI Nano-TB(RV1126B)開發板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目
【EASY EAI Nano-TB(RV1126B)開發板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈按鈕項目
請問各位大佬,如何解決,瑞芯微 RV1126B 使用 mpp 自帶工具 調試時,內核直接報錯崩潰!
【EASY EAI Nano-TB(RV1126B)開發板試用】+1、開箱上電
【EASY EAI Nano-TB(RV1126B)開發板試用】介紹、系統安裝
RV1126系列選型指南:從RV1126到RV1126B,一文看懂升級差異
【免費試用】EASY EAI Nano-TB(RV1126B)開發套件評測
替代升級實錘!實測RV1126B,CPU性能吊打RV1126
瑞芯微(EASY EAI)RV1126B 人體關鍵點識別
瑞芯微(EASY EAI)RV1126B 系統操作-時間參數
評論