版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
ICS國際標(biāo)準(zhǔn)分類號
CCS中國標(biāo)準(zhǔn)文獻(xiàn)分類號
團(tuán)體標(biāo)準(zhǔn)
T/CESXXX-XXXX
電力智能終端硬件抽象層接口技術(shù)規(guī)范
Technicalspecificationforhardwareabstractionlayersoftwareandinterfaceof
smartelectricpowerterminalunit
XXXX-XX-XX發(fā)布XXXX-XX-XX實(shí)施
中國電工技術(shù)學(xué)會發(fā)布
T/CESXXX—XXXX
電力智能終端硬件抽象層接口技術(shù)規(guī)范
1范圍
本文件規(guī)定了電力智能終端硬件抽象層接口調(diào)用框架、設(shè)計(jì)要求及接口定義。
本文件適用于電力智能終端(以下簡稱“終端”)硬件抽象層的開發(fā)和使用。
2規(guī)范性引用文件
下列文件對于本文件的應(yīng)用是必不可少的。凡是注日期的引用文件,僅注日期的版本適用于本文
件。凡是不注日期的引用文件,其最新版本(包括所有的修改單)適用于本文件。
GB/T11457—2016信息技術(shù)軟件工程術(shù)語
GB/T16262.1—2006信息技術(shù)抽象語法記法(ASN.1)第1部分:基本記法規(guī)范
GB/T17626.30電磁兼容試驗(yàn)和測量技術(shù)電能質(zhì)量測試方法
GB/T17966—2000微處理器系統(tǒng)的二進(jìn)制浮點(diǎn)運(yùn)算
GB/T20272—2019信息安全技術(shù)操作系統(tǒng)安全技術(shù)要求
DL/T645—2007多功能電能表通信協(xié)議
DL/T790.6—2010采用配電線載波系統(tǒng)的配電自動化第6部分:A-XDR編碼規(guī)則
Q/GDW10376.2—2019電力用戶用電信息采集系統(tǒng)通信協(xié)議第2部分:集中器本地通信模塊接
口協(xié)議
Q/GDW11778—2017面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議
3術(shù)語和定義
下列術(shù)語和定義適用于本文件。
3.1
硬件抽象層hardwareabstractlayer
位于操作系統(tǒng)內(nèi)核與硬件電路之間的接口層,其目的在于將硬件抽象化。它隱藏了特定平臺的硬
件接口細(xì)節(jié),為操作系統(tǒng)提供虛擬硬件平臺,使其具有硬件無關(guān)性,可在多種平臺上進(jìn)行移植。
3.2
文件系統(tǒng)filesystem
操作系統(tǒng)用于明確磁盤或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu),既指磁盤上組織文件的方法,也指用
于存儲文件的磁盤或分區(qū)。
4符號、代號和縮略語
下列符號、代號和縮略語適用于本文件。
API:應(yīng)用程序編程接口(applicationprogramminginterface)
HAL:硬件抽象層(hardwareabstractlayer)
LED:發(fā)光二極管(lightemittingdiode)
RTC:實(shí)時(shí)時(shí)鐘(realtimeclock)
USB:通用串行總線(universalserialbus)
WDT:看門狗(watchdogtimer)
5HAL接口調(diào)用框架
HAL接口調(diào)用框架要求如下:
1
T/CESXXX—XXXX
a)應(yīng)作為設(shè)備驅(qū)動和系統(tǒng)調(diào)用的一個(gè)封裝;
b)應(yīng)由系統(tǒng)接口、設(shè)備操作接口組成;
c)應(yīng)在操作系統(tǒng)中以動態(tài)庫的形式為上層應(yīng)用軟件提供統(tǒng)一的調(diào)用接口,上層應(yīng)用軟件不必知道
下層的具體實(shí)現(xiàn),見圖1。
圖1HAL接口調(diào)用框架圖
6HAL設(shè)計(jì)要求
6.1HAL職責(zé)
HAL應(yīng)隱藏不同嵌入式操作系統(tǒng)和硬件設(shè)備的具體實(shí)現(xiàn)細(xì)節(jié),為各類應(yīng)用軟件提供標(biāo)準(zhǔn)化調(diào)用接
口。
6.2HAL設(shè)計(jì)原則
HAL具體設(shè)計(jì)原則如下:
a)應(yīng)向前兼容,可擴(kuò)增HAL的API,但不能減少;
b)應(yīng)統(tǒng)一定義系統(tǒng)API,適配各種嵌入式操作系統(tǒng)基礎(chǔ)調(diào)用接口,滿足上層應(yīng)用軟件開發(fā)需求;
c)應(yīng)統(tǒng)一定義設(shè)備操作API,對應(yīng)的驅(qū)動程序負(fù)責(zé)將這些操作調(diào)用映射到實(shí)際的硬件;
d)應(yīng)保持API風(fēng)格一致;
e)設(shè)備節(jié)點(diǎn)是對設(shè)備的抽象,應(yīng)保證所有設(shè)備節(jié)點(diǎn)都以文件的形式存放在/dev目錄下,應(yīng)用軟件
通過設(shè)備節(jié)點(diǎn)名稱訪問設(shè)備。
6.3HAL約束條件
HAL具體約束條件如下:
2
T/CESXXX—XXXX
a)應(yīng)以動態(tài)庫的形式隨系統(tǒng)發(fā)布;
b)應(yīng)保證設(shè)備驅(qū)動至少實(shí)現(xiàn)open,close,read,write,ioctl操作;
c)設(shè)備節(jié)點(diǎn)所在路徑應(yīng)統(tǒng)一定義為:/dev/。
7HAL接口定義
7.1HAL對外接口定義
HAL框架對外提供接口如下:
a)應(yīng)具備系統(tǒng)函數(shù)調(diào)用接口;
b)應(yīng)具備設(shè)備節(jié)點(diǎn)操作接口。
7.2HAL系統(tǒng)函數(shù)調(diào)用接口
7.2.1內(nèi)存管理
系統(tǒng)內(nèi)存管理的接口見表1,定義詳情見附錄A.1。
表1系統(tǒng)內(nèi)存管理接口列表
序號接口名稱接口描述
1hal_malloc內(nèi)存分配
2hal_realloc內(nèi)存調(diào)整
3hal_free內(nèi)存釋放
7.2.2進(jìn)程管理
系統(tǒng)進(jìn)程管理的接口見表2,定義詳情見附錄A.2。
表2系統(tǒng)進(jìn)程管理接口列表
序號接口名稱接口描述
1hal_fork_create創(chuàng)建進(jìn)程
2hal_fork_exit終止進(jìn)程
3hal_fork_exec運(yùn)行可執(zhí)行文件
4hal_fork_getpid獲取進(jìn)程標(biāo)識
5hal_fork_waitpid等待進(jìn)程終止
7.2.3信號量
系統(tǒng)信號量的接口見表3,定義詳情見附錄A.3。
表3系統(tǒng)信號量接口列表
序號接口名稱接口描述
1hal_semaphore_create創(chuàng)建信號量
2hal_semaphore_destroy銷毀信號量
3hal_semaphore_post發(fā)送信號量
4hal_semaphore_wait等待信號量
7.2.4線程管理
3
T/CESXXX—XXXX
系統(tǒng)線程管理的接口見表4,定義詳情見附錄A.4。
表4系統(tǒng)線程管理接口列表
序號接口名稱接口描述
1hal_thread_create創(chuàng)建線程
2hal_thread_detach設(shè)置線程分離
3hal_thread_delete刪除線程
7.2.5互斥鎖
系統(tǒng)互斥鎖的接口見表5,定義詳情見附錄A.5。
表5系統(tǒng)互斥鎖接口列表
序號接口名稱接口描述
1hal_mutex_create創(chuàng)建互斥鎖
2hal_mutex_destroy銷毀互斥鎖
3hal_mutex_lock鎖上互斥鎖
4hal_mutex_unlock解鎖互斥鎖
7.2.6文件管理
系統(tǒng)文件管理的接口見表6,定義詳情見附錄A.6。
表6系統(tǒng)文件管理接口列表
序號接口名稱接口描述
1hal_file_open打開文件
2hal_file_close關(guān)閉文件
3hal_file_read讀文件
4hal_file_write寫文件
5hal_file_seek移動文件指針
7.2.7時(shí)間管理
系統(tǒng)時(shí)間管理的接口見表7,定義詳情見附錄A.7。
表7系統(tǒng)時(shí)間管理接口列表
序號接口名稱接口描述
1hal_timer_create創(chuàng)建計(jì)時(shí)器
2hal_timer_delete刪除計(jì)時(shí)器
3hal_timer_start啟動計(jì)時(shí)器
4hal_timer_stop停止計(jì)時(shí)器
5hal_get_time_ms獲取系統(tǒng)當(dāng)前時(shí)間,單位毫秒
6hal_sleep_ms休眠,單位毫秒
4
T/CESXXX—XXXX
7.2.8套接字(socket)
套接字(socket)操作接口見表8,定義詳情見附錄A.8。
表8套接字(socket)操作接口列表
序號接口名稱接口描述
1hal_socket_open建立套接字
2hal_socket_close關(guān)閉套接字
3hal_socket_write向socket寫數(shù)據(jù)
4hal_socket_read從socket讀數(shù)據(jù)
5hal_socket_connect連接遠(yuǎn)程主機(jī)
7.2.9系統(tǒng)應(yīng)用
系統(tǒng)應(yīng)用的接口見表9,定義詳情見附錄A.9。
表9系統(tǒng)應(yīng)用接口列表
序號接口名稱接口描述
1hal_snprintf格式化字符串
2hdl_printf打印信息
7.3HAL設(shè)備節(jié)點(diǎn)操作接口
7.3.1設(shè)備節(jié)點(diǎn)操作接口
設(shè)備節(jié)點(diǎn)操作接口見表10。
表10設(shè)備節(jié)點(diǎn)操作接口列表
序號接口名稱接口描述
1hal_device_open打開設(shè)備節(jié)點(diǎn)
2hal_device_close關(guān)閉設(shè)備節(jié)點(diǎn)
3hal_device_read設(shè)備節(jié)點(diǎn)讀數(shù)據(jù)
4hal_device_write設(shè)備節(jié)點(diǎn)寫數(shù)據(jù)
5hal_device_set設(shè)置設(shè)備節(jié)點(diǎn)參數(shù)
7.3.2設(shè)備節(jié)點(diǎn)命名和接口詳情
7.3.2.1RS485
設(shè)備節(jié)點(diǎn)名稱為:
485-n:“/dev/ttyRSn”,n為整數(shù)(0-255)。
接口定義詳情見附錄A.10。
7.3.2.2載波
設(shè)備節(jié)點(diǎn)名稱為:
“/dev/ttyPLCn”,n為整數(shù)(0-255)。
接口定義詳情見附錄A.11。
5
T/CESXXX—XXXX
7.3.2.34G
設(shè)備節(jié)點(diǎn)名稱為:
“/dev/ttyLTEn”,n為整數(shù)(0-255)。
接口定義詳情見附錄A.12。
7.3.2.4藍(lán)牙
設(shè)備節(jié)點(diǎn)名稱為:
“/dev/ttyBTn”,n為整數(shù)(0-255)。
接口定義詳情見附錄A.13。
7.3.2.5LED
設(shè)備節(jié)點(diǎn)名稱為:
“/dev/ledn”,n為整數(shù)(0-255)。
接口定義詳情見附錄A.14。
7.3.2.6WDT
設(shè)備節(jié)點(diǎn)名稱為:
“/dev/watchdog”。
接口定義詳情見附錄A.15。
6
T/CESXXX—XXXX
附錄A
(資料性附錄)
HAL對外接口定義
A.1內(nèi)存管理接口定義
內(nèi)存管理接口定義詳情見表A.1。
表A.1內(nèi)存管理接口定義詳情表
序號接口名稱接口定義
/**
*@brief內(nèi)存分配
*@param[in]size:分配大小
1內(nèi)存分配
*@return成功返回內(nèi)存首地址;失敗返回NULL
*/
void*hal_malloc(unsignedintsize);
/**
*@brief內(nèi)存調(diào)整
*@param[in]ptr:內(nèi)存地址
2內(nèi)存調(diào)整*@param[in]size:調(diào)整大小
*@return成功返回內(nèi)存首地址;失敗返回NULL
*/
void*hal_realloc(void*ptr,unsignedintsize);
/**
*@brief內(nèi)存釋放
*@param[in]ptr:內(nèi)存地址
3內(nèi)存調(diào)整
*@return無
*/
voidhal_free(void*ptr);
A.2進(jìn)程管理接口定義
進(jìn)程管理接口定義詳情見表A.2。
表A.2進(jìn)程管理接口定義詳情表
序號接口名稱接口定義
/**
*@brief創(chuàng)建進(jìn)程
*@param[in]:無
1創(chuàng)建進(jìn)程*@return成功返回0;失敗返回錯誤碼
*/
pid_thal_fork_create(void);
/**
*@brief終止進(jìn)程
*@param[in]status:進(jìn)程狀態(tài)
2終止進(jìn)程*@return:無
*/
voidhal_fork_exit(intstatus);
7
T/CESXXX—XXXX
/**
*@brief運(yùn)行可執(zhí)行文件
*@param[in]path:可執(zhí)行文件路徑
*@param[in]arg:參數(shù)
3運(yùn)行可執(zhí)行文件*@param[in]...:參數(shù)
*@return成功返回0;失敗返回錯誤碼
*/
inthal_fork_exec(constchar*path,constchar*arg,...);
/**
*@brief獲取進(jìn)程標(biāo)識
*@param[in]:無
4獲取進(jìn)程標(biāo)識*@return成功返回當(dāng)前進(jìn)程標(biāo)識;失敗返回錯誤碼
*/
pid_thal_fork_getpid(void);
/**
*@brief等待進(jìn)程終止
*@param[in]pid:進(jìn)程標(biāo)識
*@param[in]status:進(jìn)程狀態(tài)
5等待進(jìn)程終止*@param[in]options:操作碼
*@return成功返回子進(jìn)程標(biāo)識;失敗返回錯誤碼
*/
pid_thal_fork_waitpid(pid_tpid,int*status,intoptions);
A.3信號量接口定義
信號量接口定義詳情見表A.3。
表A.3信號量接口定義詳情表
序號接口名稱接口定義
/**
*@brief創(chuàng)建信號量
*@param[in]無
1創(chuàng)建信號量*@return成功返回信號量對象地址;失敗返回NULL
*/
void*hal_semaphore_create(void);
/**
*@brief銷毀信號量
*@param[in]sem:信號量對象
2銷毀信號量*@return:成功返回0;失敗返回錯誤碼
*/
inthal_semaphore_destroy(void*sem);
/**
*@brief發(fā)送信號量
*@param[in]sem:信號量對象
3發(fā)送信號量*@return:成功返回0;失敗返回錯誤碼
*/
inthal_semaphore_post(void*sem);
8
T/CESXXX—XXXX
/**
*@brief等待信號量
*@param[in]sem:信號量對象
超時(shí)時(shí)間
4等待信號量*@param[in]timeout_ms:
*@return:成功返回0;失敗返回錯誤碼
*/
inthal_semaphore_wait(void*sem,unsignedinttimeout_ms);
A.4線程管理接口定義
線程管理接口定義詳情見表A.4。
表A.4線程管理接口定義詳情表
序號接口名稱接口定義
/**
*@brief創(chuàng)建線程
*@param[in]thread_handle:線程標(biāo)識
*@param[in]work_routine:線程調(diào)用函數(shù)
調(diào)用函數(shù)參數(shù)
1創(chuàng)建線程*@param[in]arg:
*@return:成功返回0;失敗返回錯誤碼
*/
inthal_thread_create(void**thread_handle,void
*(*work_routine)(void*),void*arg);
/**
*@brief設(shè)置線程分離
*@param[in]thread_handle:線程標(biāo)識
2設(shè)置線程分離*@return:成功返回0;失敗返回錯誤碼
*/
inthal_thread_detach(void*thread_handle);
/**
*@brief刪除線程
*@param[in]thread_handle:線程標(biāo)識
3刪除線程*@return:成功返回0;失敗返回錯誤碼
*/
inthal_thread_delete(void*thread_handle);
A.5互斥鎖接口定義
互斥鎖接口定義詳情見表A.5。
表A.5互斥鎖接口定義詳情表
序號接口名稱接口定義
/**
*@brief創(chuàng)建互斥鎖
*@param[in]:無
1創(chuàng)建互斥鎖*@return:成功返回互斥鎖句柄;失敗返回NULL
*/
void*hal_mutex_create(void);
9
T/CESXXX—XXXX
/**
*@brief銷毀互斥鎖
*@param[in]mutex:互斥鎖句柄
2銷毀互斥鎖*@return:成功返回0;失敗返回錯誤碼
*/
inthal_mutex_destroy(void*mutex);
/**
*@brief鎖上互斥鎖
*@param[in]mutex:互斥鎖句柄
3鎖上互斥鎖*@return:成功返回0;失敗返回錯誤碼
*/
inthal_mutex_lock(void*mutex);
/**
*@brief解鎖互斥鎖
*@param[in]mutex:互斥鎖句柄
4解鎖互斥鎖*@return:成功返回0;失敗返回錯誤碼
*/
inthal_mutex_unlock(void*mutex);
A.6文件管理接口定義
文件管理接口定義詳情見表A.6。
表A.6文件管理接口定義詳情表
序號接口名稱接口定義
/**
*@brief字符串mode定義為文件打開形態(tài)
r打開只讀文件;
r+打開可讀寫的文件;
w打開只寫文件;
w+打開可讀寫文件;
a以附加的方式打開只寫文件;
a+以附加方式打開可讀寫的文件;
上述的形態(tài)字符串都可以再加一個(gè)b字符,如rb、w+b或ab+等
1打開文件
組合,加入b字符用來告訴函數(shù)庫打開的文件為二進(jìn)制文件,而非純文字
文件。
*@brief打開文件
*@param[in]path:文件路徑
*@param[in]mode:打開形態(tài)
*@return:成功返回文件指針;失敗返回NULL
*/
FILE*hal_file_open(constchar*path,constchar*mode);
/**
*@brief關(guān)閉文件
*@param[in]stream:文件指針
2關(guān)閉文件*@return:成功返回0;失敗返回錯誤碼
*/
inthal_file_close(FILE*stream);
10
T/CESXXX—XXXX
/**
*@brief讀文件
*@param[in]buff:讀緩存
*@param[in]len:讀最大字節(jié)數(shù)
3讀文件*@param[in]stream:文件指針
*@return:成功返回讀字節(jié)數(shù);失敗返回錯誤碼
*/
inthal_file_read(void*buff,intlen,FILE*stream);
/**
*@brief寫文件
*@param[in]buff:寫緩存
*@param[in]len:寫最大字節(jié)數(shù)
4寫文件*@param[in]stream:文件指針
*@return:成功返回寫字節(jié)數(shù);失敗返回錯誤碼
*/
inthal_file_write(void*buff,intlen,FILE*stream);
/**
*@brief參數(shù)whence定義為文件指針移動位置
SEEK_SET從距文件開頭offset位移量為新的讀寫位置;
SEEK_CUR以目前的讀寫位置往后增加offset個(gè)位移量;
SEEK_END將讀寫位置指向文件尾后再增加offset個(gè)位移量。
*@brief移動文件指針
5移動文件指針*@param[in]stream:文件指針
*@param[in]offset:移動數(shù)量
*@param[in]whence:移動位置
*@return:成功返回0;失敗返回錯誤碼
*/
inthal_file_seek(FILE*stream,intoffset,intwhence);
A.7時(shí)間管理接口定義
時(shí)間管理接口定義詳情見表A.7。
表A.7時(shí)間管理接口定義詳情表
序號接口名稱接口定義
/**
*@brief創(chuàng)建計(jì)時(shí)器
*@param[in]func:回調(diào)函數(shù)
回調(diào)函數(shù)參數(shù)
1創(chuàng)建計(jì)時(shí)器*@param[in]user_data:
*@return:成功返回定時(shí)器對象地址;失敗返回NULL
*/
void*hal_timer_create(void(*func)(void*),void*user_data);
/**
*@brief刪除計(jì)時(shí)器
*@param[in]timer:定時(shí)器對象
2刪除計(jì)時(shí)器*@return:成功返回0;失敗返回錯誤碼
*/
inthal_timer_delete(void*timer);
11
T/CESXXX—XXXX
/**
*@brief啟動計(jì)時(shí)器
*@param[in]timer:定時(shí)器對象
啟動計(jì)時(shí)器
3*@return:成功返回0;失敗返回錯誤碼
*/
inthal_timer_start(void*timer);
/**
*@brief停止計(jì)時(shí)器
*@param[in]timer:定時(shí)器對象
停止計(jì)時(shí)器
4*@return:成功返回0;失敗返回錯誤碼
*/
inthal_timer_stop(void*timer);
/**
*@brief獲取系統(tǒng)當(dāng)前時(shí)間,單位毫秒
*@param[in]:無
5獲取系統(tǒng)當(dāng)前時(shí)間*@return:成功返回當(dāng)前時(shí)間戳;失敗返回錯誤碼
*/
int64hal_get_time_ms(void);
/**
*@brief休眠,單位毫秒
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合作協(xié)議合同范本大全
- 鮑溫樣丘疹病病因介紹
- 2023房屋租賃協(xié)議書樣本6篇
- 2025工廠轉(zhuǎn)讓協(xié)議書
- 2024-2025學(xué)年山東省濱州市無棣縣青島版二年級上冊期中考試數(shù)學(xué)試卷(原卷版)-A4
- 2023年天津市十二區(qū)重點(diǎn)學(xué)校高考語文二模試卷
- 重慶2020-2024年中考英語5年真題回-教師版-專題03 短文填空
- 激勵與約束對基層衛(wèi)生改革的幾點(diǎn)思考課件
- 2024-2025食醋行業(yè)發(fā)展現(xiàn)狀及未來趨勢報(bào)告
- PLC控制技術(shù)考試模擬題+參考答案
- 2023年盛京銀行校園招聘人員筆試歷年難、易錯考點(diǎn)試題含答案解析-1
- 小學(xué)五年級語文修改病句方法
- 草甘膦安全技術(shù)說明書(msds)
- 體育心理學(xué)(第三版)PPT全套教學(xué)課件
- 初中生物趣味知識競賽PPT
- 2023年山東省魯信投資控股集團(tuán)招聘筆試參考題庫附帶答案詳解
- 旅游規(guī)劃與開發(fā)電子教案
- 辦公場所5S管理標(biāo)識標(biāo)準(zhǔn)辦公室5S管理內(nèi)容與定置標(biāo)準(zhǔn)
- 企業(yè)組織結(jié)構(gòu)的常見類型和其利弊
- 2023年八年級上冊語文教學(xué)活動 八年級語文組活動記錄優(yōu)秀(六篇)
- 危重病人的轉(zhuǎn)運(yùn)與交接課件
評論
0/150
提交評論