




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
電力智能終端硬件抽象層接口技術規范II目 次前言 II112范引文件 13語定義 14號代和略語 15HAL口用16HAL計26.1HAL職責 2HAL設原則 2HAL約條件 27HAL口3HAL對接定義 3HAL系函調3HAL設節操5附錄資性錄)HAL外口7附錄規性錄)接口誤定義 2011電力智能終端硬件抽象層接口技術規范下列文件對于本文件的應用是必不可少的。凡是注日期的引用文件,僅注日期的版本適用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改單)適用于本文件。GB/T11457—2016信息技術軟件工程術語GB/T16262.1—2006 息技術 象法法(ASN.1)第1部:記法GB/T17626.30電磁兼容試驗和測量技術電能質量測試方法GB/T17966—2000 GB/T20272—2019DL/T790.6—2010 6A-XDRQ/GDW10376.2—2019電力用戶用電信息采集系統通信協議第2部分:集中器本地通信模塊接口協議Q/GDW11778—2017下列術語和定義適用于本文件。3.1硬件抽象層hardwareabstractlayer位于操作系統內核與硬件電路之間的接口層,其目的在于將硬件抽象化。它隱藏了特定平臺的硬件接口細節,為操作系統提供虛擬硬件平臺,使其具有硬件無關性,可在多種平臺上進行移植。3.2文件系統filesystem操作系統用于明確磁盤或分區上的文件的方法和數據結構,既指磁盤上組織文件的方法,也指用于存儲文件的磁盤或分區。下列符號、代號和縮略語適用于本文件。API:應用程序編程接口(applicationprogramminginterface)HAL:硬件抽象層(hardwareabstractlayer)LED:發光二極管(lightemittingdiode)RTC:實時時鐘(realtimeclock)USB:通用串行總線(universalserialbus)WDT:看門狗(watchdogtimer)HALHAL接口調用框架要求如下:22。圖1 HAL接口調框圖HALHAL職責HAL設計原則HAL具體設計原則如下:的API HAL約束條件HAL具體約束條件如下:33。HALHALHAL框架對外提供接口如下:HAL系統內存管理的接口見表1,定義詳情見附錄A.1。表1 系內管接列表序號接口名稱接口描述1hal_malloc內存分配2hal_realloc內存調整3hal_free內存釋放系統進程管理的接口見表2,定義詳情見附錄A.2。表2 系進管接列表序號接口名稱接口描述1hal_fork_create創建進程2hal_fork_exit終止進程3hal_fork_exec運行可執行文件4hal_fork_getpid獲取進程標識5hal_fork_waitpid等待進程終止系統信號量的接口見表3,定義詳情見附錄A.3。表3 系信量口表序號接口名稱接口描述1hal_semaphore_create創建信號量2hal_semaphore_destroy銷毀信號量3hal_semaphore_post發送信號量4hal_semaphore_wait等待信號量44系統線程管理的接口見表4,定義詳情見附錄A.4。表4 系線管接列表序號接口名稱接口描述1hal_thread_create創建線程2hal_thread_detach設置線程分離3hal_thread_delete刪除線程系統互斥鎖的接口見表5,定義詳情見附錄A.5。表5 系互鎖口表序號接口名稱接口描述1hal_mutex_create創建互斥鎖2hal_mutex_destroy銷毀互斥鎖3hal_mutex_lock鎖上互斥鎖4hal_mutex_unlock解鎖互斥鎖系統文件管理的接口見表6,定義詳情見附錄A.6。表6 系文管接列表序號接口名稱接口描述1hal_file_open打開文件2hal_file_close關閉文件3hal_file_read讀文件4hal_file_write寫文件5hal_file_seek移動文件指針系統時間管理的接口見表7,定義詳情見附錄A.7。表7 系時管接列表序號接口名稱接口描述1hal_timer_create創建計時器2hal_timer_delete刪除計時器3hal_timer_start啟動計時器4hal_timer_stop停止計時器5hal_get_time_ms獲取系統當前時間,單位毫秒6hal_sleep_ms休眠,單位毫秒55(socket)套接字(socket)操作接口見表8,定義詳情見附錄A.8。表8 套字(socket)作接列表序號接口名稱接口描述1hal_socket_open建立套接字2hal_socket_close關閉套接字3hal_socket_write向socket寫數據4hal_socket_read從socket讀數據5hal_socket_connect連接遠程主機系統應用的接口見表9,定義詳情見附錄A.9。表9 系應接列表序號接口名稱接口描述1hal_snprintf格式化字符串2hdl_printf打印信息HAL設備節點操作接口見表10。表10 備點作列表序號接口名稱接口描述1hal_device_open打開設備節點2hal_device_close關閉設備節點3hal_device_read設備節點讀數據4hal_device_write設備節點寫數據5hal_device_set設置設備節點參數7.3.2.1 RS485設備節點名稱為:-。設備節點名稱為:-。664G-。設備節點名稱為:-。LED設備節點名稱為:-。WDT設備節點名稱為:“/dev/watchdog”。接口定義詳情見附錄A.15。77附 錄 A(資料性附錄)HAL對外接口定義內存管理接口定義詳情見表A.1。表A.1 內管接義詳序號接口名稱接口定義1內存分配/**@brief內存分配@param[in]size:分配大小@returnNULL*/void*hal_malloc(unsignedintsize);2內存調整/**@brief內存調整@param[inptr:內存地址@param[in]size:調整大小@returnNULL*/void*hal_realloc(void*ptr,unsignedintsize);3內存調整/**@brief內存釋放@param[inptr:內存地址@return無*/voidhal_free(void*ptr);進程管理接口定義詳情見表A.2。表A.2 進管接義詳序號接口名稱接口定義1創建進程/**@brief創建進程@param[in]:無@return0*/pid_thal_fork_create(void);2終止進程/**@brief終止進程@param[instatus:@return:無*/voidhal_fork_exit(intstatus);883運行可執行文件/**@brief運行可執行文件@param[inpath:@param[in]arg:參數@param[in]...:參數@return0*/inthal_fork_exec(constchar*path,constchar*arg,...);4獲取進程標識/**@brief獲取進程標識@param[in]:無@return*/pid_thal_fork_getpid(void);5等待進程終止/**@brief等待進程終止@param[inpid:進程標識@param[in]status:進程狀態@param[in]options:操作碼@return*/pid_thal_fork_waitpid(pid_tpid,int*status,intoptions);信號量接口定義詳情見表A.3。表A.3 信量口詳情表序號接口名稱接口定義1創建信號量/**@brief創建信號量@param[in]無@returnNULL*/void*hal_semaphore_create(void);2銷毀信號量/**@brief銷毀信號量@param[insem:@return0*/inthal_semaphore_destroy(void*sem);3發送信號量/**@brief發送信號量@param[insem:@return0*/inthal_semaphore_post(void*sem);994等待信號量/**@brief等待信號量@param[insem:@param[in]timeout_ms:@return:0*/inthal_semaphore_wait(void*sem,unsignedinttimeout_ms);線程管理接口定義詳情見表A.4。表A.4 線管接義詳序號接口名稱接口定義1創建線程/**@brief創建線程@param[inthread_handle:線程標識@param[in]work_routine:線程調用函數@param[in]arg:@return:0*/inthal_thread_create(void**thread_handle,void*(*work_routine)(void*),void*arg);2設置線程分離/**@brief設置線程分離@param[inthread_handle:線程標識@return:0*/inthal_thread_detach(void*thread_handle);3刪除線程/**@brief刪除線程@param[inthread_handle:線程標識@return:0*/inthal_thread_delete(void*thread_handle);互斥鎖接口定義詳情見表A.5。表A.5 互鎖口詳情表序號接口名稱接口定義1創建互斥鎖/**@brief創建互斥鎖@param[in無@return:NULL*/void*hal_mutex_create(void);10102銷毀互斥鎖/**@brief銷毀互斥鎖@param[inmutex:@return:0*/inthal_mutex_destroy(void*mutex);3鎖上互斥鎖/**@brief鎖上互斥鎖@param[inmutex:@return:0*/inthal_mutex_lock(void*mutex);4解鎖互斥鎖/**@brief解鎖互斥鎖@param[inmutex:@return:0*/inthal_mutex_unlock(void*mutex);文件管理接口定義詳情見表A.6。表A.6 文管接義詳序號接口名稱接口定義1打開文件/***@brief字符串mode定義為文件打開形態r打開只讀文件;r+打開可讀寫的文件;w打開只寫文件;w+打開可讀寫文件;a以附加的方式打開只寫文件;a+以附加方式打開可讀寫的文件;上述的形態字符串都可以再加一個b字符,如rb、w+b或ab+等組合,加入b字符用來告訴函數庫打開的文件為二進制文件,而非純文字文件。@brief打開文件@param[inpath:文件路徑@param[in]mode:打開形態@return:NULL*/FILE*hal_file_open(constchar*path,constchar*mode);2關閉文件/**@brief關閉文件@param[in]stream:@return:0*/inthal_file_close(FILE*stream);11113讀文件/**@brief讀文件@param[inbuff:讀緩存@param[in]len:@param[in]stream:@return:成功返回讀字節數;失敗返回錯誤碼*/inthal_file_read(void*buff,intlen,FILE*stream);4寫文件/**@brief寫文件@param[inbuff:寫緩存@param[in]len:@param[in]stream:@return:成功返回寫字節數;失敗返回錯誤碼*/inthal_file_write(void*buff,intlen,FILE*stream);5移動文件指針/***@brief參數whence定義為文件指針移動位置SEEK_SET從距文件開頭offset位移量為新的讀寫位置;SEEK_CUR以目前的讀寫位置往后增加offset個位移量;SEEK_END將讀寫位置指向文件尾后再增加offset個位移量。@brief移動文件指針@param[instream:@param[in]offset:移動數量@param[in]whence:@return:0*/inthal_file_seek(FILE*stream,intoffset,intwhence);時間管理接口定義詳情見表A.7。表A.7 時管接義詳序號接口名稱接口定義1創建計時器/**@brief創建計時器@param[infunc:回調函數@param[in]user_data:@return:NULL*/void*hal_timer_create(void(*func)(void*),void*user_data);2刪除計時器/**@brief刪除計時器@param[intimer:@return:0*/inthal_timer_delete(void*timer);12123啟動計時器/**@brief啟動計時器@param[intimer:@return:0*/inthal_timer_start(void*timer);4停止計時器/**@brief停止計時器@param[intimer:@return:0*/inthal_timer_stop(void*timer);5獲取系統當前時間/**@brief@param[in無@return:成功返回當前時間戳;失敗返回錯誤碼*/int64hal_get_time_ms(void);6休眠/**@brief休眠,單位毫秒@param[inms:休眠時間@return:無*/voidhal_sleep_ms(unsignedintms);socketsocket套接字接口定義詳情見表A.8。表A.8 socket接接定義情表序號接口名稱接口定義1建立套接字/**@brief建立套接字@param[in無@return:socket句柄;失敗返回錯誤碼*/inthal_socket_open(void);2關閉套接字/**@brief關閉套接字@param[insockfd:socket句柄@return:0*/inthal_socket_close(intsockfd);3向socket寫數據/**@briefsocket寫數據@param[insockfd:socket句柄@param[in]send_buff:@param[in]send_len:@return:成功返回寫數據長度;失敗返回錯誤碼13134從socket讀數據/**@briefsocket讀數據@param[insockfd:socket句柄@param[in]recv_buff:@param[in]recv_len:@return:成功返回讀數據長度;失敗返回錯誤碼*/inthal_socket_read(intsockfd,unsignedchar*recv_buff,unsignedintrecv_len);5連接遠程主機/**@brief連接遠程主機@param[insockfd:socket句柄@param[in]server:主機地址@param[in]port:主機端口@return:0*/inthal_socket_connect(intsockfd,constchar*server,constintport);系統應用接口定義詳情見表A.9。表A.9 系應接義詳序號接口名稱接口定義1格式化字符串/**@brief格式化字符串@param[instr:@param[in]len:@param[in]fmt:@param[in]格式化內容@return:成功返回格式化字符串長度;失敗返回錯誤碼*/inthal_snprintf(char*str,constintlen,constchar*fmt,...);2打印信息/**@brief打印信息@param[infmt:字符串格式@param[in]打印內容@return:無*/voidhal_printf(constchar*fmt,...);RS485RS485模塊接口定義詳情見表A.10。表A.10 RS485模接定義情表序號接口名稱接口定義14141打開設備節點/***@briefintflags,不能同時出現但是必須有一種出現O_RDWR:只讀模式只寫模式O_RDWR: 可讀可寫模@brief打開設備節點@param[indev_name:@param[inflags:@return*/inthal_device_open(char*dev_name,intflags);2關閉設備節點/**@brief關閉設備節點@param[in]fd:設備描述符@return:0*/inthal_device_close(intfd);3設備節點讀數據/**@brief讀設備數據@param[in]fd:@param[out]buf:@param[in]len:@return*/inthal_device_read(intfd,unsignedchar*buf,intlen);4設備節點寫數據/**@brief向設備節點寫數據@param[in]fd:設備描述符@param[in]buf:寫緩存區@param[in]len:@return*/inthal_device_write(intfd,unsignedchar*buf,intlen);5設置設備節點參數/**@brief設置設備參數@param[in]fd:設備描述@param[in]dev_type@param[in]devattr@return00值*/inthal_device_set(intfd,intdev_type,void*devattr);載波模塊接口定義詳情見表A.11。表A.11 波塊接義詳序號接口名稱接口定義15151打開設備節點/***@briefintflags,不能同時出現但是必須有一種出現O_RDWR:只讀模式只寫模式O_RDWR: 可讀可寫模@brief打開設備節點@param[indev_name:@param[inflags:@return*/inthal_device_open(char*dev_name,intflags);2關閉設備節點/**@brief關閉設備節點@param[in]fd:設備描述符@return:0*/inthal_device_close(intfd);3設備節點讀數據/**@brief讀設備數據@param[in]fd:@param[out]buf:@param[in]len:@return*/inthal_device_read(intfd,unsignedchar*buf,intlen);4設備節點寫數據/**@brief向設備節點寫數據@param[in]fd:設備描述符@param[in]buf:寫緩存區@param[in]len:@return*/inthal_device_write(intfd,unsignedchar*buf,intlen);5設置設備節點參數/**@brief設置設備參數@param[in]fd:設備描述@param[in]dev_type@param[in]devattr@return00值*/inthal_device_set(intfd,intdev_type,void*devattr);4G4G模塊接口定義詳情見表A.12。表A.12 4G塊口詳情表序號接口名稱接口定義16161打開設備節點/***@briefintflags,不能同時出現但是必須有一種出現O_RDWR:只讀模式只寫模式O_RDWR: 可讀可寫模@brief打開設備節點@param[indev_name:@param[inflags:@return*/inthal_device_open(char*dev_name,intflags);2關閉設備節點/**@brief關閉設備節點@param[in]fd:設備描述符@return:0*/inthal_device_close(intfd);3設備節點讀數據/**@brief讀設備數據@param[in]fd:@param[out]buf:@param[in]len:@return*/inthal_device_read(intfd,unsignedchar*buf,intlen);4設備節點寫數據/**@brief向設備節點寫數據@param[in]fd:設備描述符@param[in]buf:寫緩存區@param[in]len:@return*/inthal_device_write(intfd,unsignedchar*buf,intlen);5設置設備節點參數/**@brief設置設備參數@param[in]fd:設備描述@param[in]dev_type@param[in]devattr@return00值*/inthal_device_set(intfd,intdev_type,void*devattr);藍牙模塊接口定義詳情見表A.13。表A.13 牙塊接義詳序號接口名稱接口定義17171打開設備節點/***@briefintflags,不能同時出現但是必須有一種出現O_RDWR:只讀模式只寫模式O_RDWR: 可讀可寫模@brief打開設備節點@param[indev_name:@param[inflags:@return*/inthal_device_open(char*dev_name,intflags);2關閉設備節點/**@brief關閉設備節點@param[in]fd:設備描述符@return:0*/inthal_device_close(intfd);3設備節點讀數據/**@brief讀設備數據@param[in]fd:@param[out]buf:@param[in]len:@return*/inthal_device_read(intfd,unsignedchar*buf,intlen);4設備節點寫數據/**@brief向設備節點寫數據@param[in]fd:設備描述符@param[in]buf:寫緩存區@param[in]len:@return*/inthal_device_write(intfd,unsignedchar*buf,intlen);5設置設備節點參數/**@brief設置設備參數@param[in]fd:設備描述@param[in]dev_type@param[in]devattr@return00值*/inthal_device_set(intfd,intdev_type,void*devattr);LEDLED模塊接口定義詳情見表A.14。表A.14 LED塊口義詳序號接口名稱接口定義18181打開設備節點/***@briefintflags,不能同時出現但是必須有一種出現O_RDWR:只讀模式只寫模式O_RDWR: 可讀可寫模@brief打開設備節點@param[indev_name:@param[inflags:@return*/inthal_device_open(char*dev_name,intflags);2關閉設備節點/**@brief關閉設備節點@param[in]fd:設備描述符@return:0*/inthal_device_close(intfd);3設備節點讀數據/**@brief讀設備數據@param[in]fd:@param[out]buf:@param[in]len:@return*/inthal_device_read(intfd,unsignedchar*buf,intlen);4設備節點寫數據/**@brief向設備節點寫數據@param[in]fd:設備描述符@param[in]buf:寫緩存區@param[in]len:@return*/inthal_device_write(intfd,unsignedchar*buf,intlen);5設置設備節點參數/**@brief設置設備參數@param[in]fd:設備描述@param[in]dev_type@param[i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西南交通大學希望學院《食品加工綜合實訓》2023-2024學年第二學期期末試卷
- 仰恩大學《阿拉伯語辯論與演講》2023-2024學年第二學期期末試卷
- 四川省涼山州會東中學2025年高二下化學期末達標測試試題含解析
- 太原理工大學《地基處理課程設計》2023-2024學年第二學期期末試卷
- 天津市靜海區重點中學2024-2025學年高二生物第二學期期末學業水平測試試題含解析
- 山東省菏澤市鄄城縣第一中學2025屆高二物理第二學期期末學業質量監測試題含解析
- 腰椎間盤突出患者護理查房
- 初中實驗考試題及答案
- 漢得信息java面試題及答案
- 德州郵政面試題及答案
- 2025-2030中國共享單車服務行業市場現狀供需分析及投資評估規劃分析研究報告
- 舜宇校招面試題目及答案
- 2024年直播電商高質量發展報告
- 【MOOC答案】《大學籃球(四)》(華中科技大學)章節作業期末慕課答案
- 2025年FRM金融風險管理師考試專業試卷(真題)預測與解析
- 圖像分割與目標檢測結合的醫學影像分析框架-洞察闡釋
- 煙臺汽車工程職業學院《藥理學實驗方法學》2023-2024學年第一學期期末試卷
- 2025年上海市安全員-B證(項目負責人)考試題及答案
- 2025-2030瀝青市場投資前景分析及供需格局研究研究報告
- 智能財務導論 課件全套 陳俊 第1-12章 智能財務的發展 -數智時代的會計倫理
- 招聘輔導員能力測評題目試題及答案
評論
0/150
提交評論