版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ICS国际标准分类号
CCS中国标准文献分类号
团体标准
T/CESXXXXXXX
电力智能终端硬件抽象层接口技术规范
Technicalspecificationforhardwareabstractionlayersoftwareandinterfaceof
smartelectricpowerterminalunit
XXXX-XX-XX发布XXXX-XX-XX实施
中国电工技术学会发布
T/CESXXX—XXXX
电力智能终端硬件抽象层接口技术规范
1范围
本文件规定了电力智能终端硬件抽象层接口调用框架、设计要求及接口定义。
本文件适用于电力智能终端(以下简称“终端”)硬件抽象层的开发和使用。
2规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文
件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T11457—2016信息技术软件工程术语
GB/T16262.1—2006信息技术抽象语法记法(ASN.1)第1部分:基本记法规范
GB/T17626.30电磁兼容试验和测量技术电能质量测试方法
GB/T17966—2000微处理器系统的二进制浮点运算
GB/T20272—2019信息安全技术操作系统安全技术要求
DL/T645—2007多功能电能表通信协议
DL/T790.6—2010采用配电线载波系统的配电自动化第6部分:A-XDR编码规则
Q/GDW10376.2—2019电力用户用电信息采集系统通信协议第2部分:集中器本地通信模块接
口协议
Q/GDW11778—2017面向对象的用电信息数据交换协议
3术语和定义
下列术语和定义适用于本文件。
3.1
硬件抽象层hardwareabstractlayer
位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬
件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。
3.2
文件系统filesystem
操作系统用于明确磁盘或分区上的文件的方法和数据结构,既指磁盘上组织文件的方法,也指用
于存储文件的磁盘或分区。
4符号、代号和缩略语
下列符号、代号和缩略语适用于本文件。
API:应用程序编程接口(applicationprogramminginterface)
HAL:硬件抽象层(hardwareabstractlayer)
LED:发光二极管(lightemittingdiode)
RTC:实时时钟(realtimeclock)
USB:通用串行总线(universalserialbus)
WDT:看门狗(watchdogtimer)
5HAL接口调用框架
HAL接口调用框架要求如下:
1
T/CESXXX—XXXX
a)应作为设备驱动和系统调用的一个封装;
b)应由系统接口、设备操作接口组成;
c)应在操作系统中以动态库的形式为上层应用软件提供统一的调用接口,上层应用软件不必知道
下层的具体实现,见图1。
图1HAL接口调用框架图
6HAL设计要求
6.1HAL职责
HAL应隐藏不同嵌入式操作系统和硬件设备的具体实现细节,为各类应用软件提供标准化调用接
口。
6.2HAL设计原则
HAL具体设计原则如下:
a)应向前兼容,可扩增HAL的API,但不能减少;
b)应统一定义系统API,适配各种嵌入式操作系统基础调用接口,满足上层应用软件开发需求;
c)应统一定义设备操作API,对应的驱动程序负责将这些操作调用映射到实际的硬件;
d)应保持API风格一致;
e)设备节点是对设备的抽象,应保证所有设备节点都以文件的形式存放在/dev目录下,应用软件
通过设备节点名称访问设备。
6.3HAL约束条件
HAL具体约束条件如下:
2
T/CESXXX—XXXX
a)应以动态库的形式随系统发布;
b)应保证设备驱动至少实现open,close,read,write,ioctl操作;
c)设备节点所在路径应统一定义为:/dev/。
7HAL接口定义
7.1HAL对外接口定义
HAL框架对外提供接口如下:
a)应具备系统函数调用接口;
b)应具备设备节点操作接口。
7.2HAL系统函数调用接口
7.2.1内存管理
系统内存管理的接口见表1,定义详情见附录A.1。
表1系统内存管理接口列表
序号接口名称接口描述
1hal_malloc内存分配
2hal_realloc内存调整
3hal_free内存释放
7.2.2进程管理
系统进程管理的接口见表2,定义详情见附录A.2。
表2系统进程管理接口列表
序号接口名称接口描述
1hal_fork_create创建进程
2hal_fork_exit终止进程
3hal_fork_exec运行可执行文件
4hal_fork_getpid获取进程标识
5hal_fork_waitpid等待进程终止
7.2.3信号量
系统信号量的接口见表3,定义详情见附录A.3。
表3系统信号量接口列表
序号接口名称接口描述
1hal_semaphore_create创建信号量
2hal_semaphore_destroy销毁信号量
3hal_semaphore_post发送信号量
4hal_semaphore_wait等待信号量
7.2.4线程管理
3
T/CESXXX—XXXX
系统线程管理的接口见表4,定义详情见附录A.4。
表4系统线程管理接口列表
序号接口名称接口描述
1hal_thread_create创建线程
2hal_thread_detach设置线程分离
3hal_thread_delete删除线程
7.2.5互斥锁
系统互斥锁的接口见表5,定义详情见附录A.5。
表5系统互斥锁接口列表
序号接口名称接口描述
1hal_mutex_create创建互斥锁
2hal_mutex_destroy销毁互斥锁
3hal_mutex_lock锁上互斥锁
4hal_mutex_unlock解锁互斥锁
7.2.6文件管理
系统文件管理的接口见表6,定义详情见附录A.6。
表6系统文件管理接口列表
序号接口名称接口描述
1hal_file_open打开文件
2hal_file_close关闭文件
3hal_file_read读文件
4hal_file_write写文件
5hal_file_seek移动文件指针
7.2.7时间管理
系统时间管理的接口见表7,定义详情见附录A.7。
表7系统时间管理接口列表
序号接口名称接口描述
1hal_timer_create创建计时器
2hal_timer_delete删除计时器
3hal_timer_start启动计时器
4hal_timer_stop停止计时器
5hal_get_time_ms获取系统当前时间,单位毫秒
6hal_sleep_ms休眠,单位毫秒
4
T/CESXXX—XXXX
7.2.8套接字(socket)
套接字(socket)操作接口见表8,定义详情见附录A.8。
表8套接字(socket)操作接口列表
序号接口名称接口描述
1hal_socket_open建立套接字
2hal_socket_close关闭套接字
3hal_socket_write向socket写数据
4hal_socket_read从socket读数据
5hal_socket_connect连接远程主机
7.2.9系统应用
系统应用的接口见表9,定义详情见附录A.9。
表9系统应用接口列表
序号接口名称接口描述
1hal_snprintf格式化字符串
2hdl_printf打印信息
7.3HAL设备节点操作接口
7.3.1设备节点操作接口
设备节点操作接口见表10。
表10设备节点操作接口列表
序号接口名称接口描述
1hal_device_open打开设备节点
2hal_device_close关闭设备节点
3hal_device_read设备节点读数据
4hal_device_write设备节点写数据
5hal_device_set设置设备节点参数
7.3.2设备节点命名和接口详情
7.3.2.1RS485
设备节点名称为:
485-n:“/dev/ttyRSn”,n为整数(0-255)。
接口定义详情见附录A.10。
7.3.2.2载波
设备节点名称为:
“/dev/ttyPLCn”,n为整数(0-255)。
接口定义详情见附录A.11。
5
T/CESXXX—XXXX
7.3.2.34G
设备节点名称为:
“/dev/ttyLTEn”,n为整数(0-255)。
接口定义详情见附录A.12。
7.3.2.4蓝牙
设备节点名称为:
“/dev/ttyBTn”,n为整数(0-255)。
接口定义详情见附录A.13。
7.3.2.5LED
设备节点名称为:
“/dev/ledn”,n为整数(0-255)。
接口定义详情见附录A.14。
7.3.2.6WDT
设备节点名称为:
“/dev/watchdog”。
接口定义详情见附录A.15。
6
T/CESXXX—XXXX
附录A
(资料性附录)
HAL对外接口定义
A.1内存管理接口定义
内存管理接口定义详情见表A.1。
表A.1内存管理接口定义详情表
序号接口名称接口定义
/**
*@brief内存分配
*@param[in]size:分配大小
1内存分配
*@return成功返回内存首地址;失败返回NULL
*/
void*hal_malloc(unsignedintsize);
/**
*@brief内存调整
*@param[in]ptr:内存地址
2内存调整*@param[in]size:调整大小
*@return成功返回内存首地址;失败返回NULL
*/
void*hal_realloc(void*ptr,unsignedintsize);
/**
*@brief内存释放
*@param[in]ptr:内存地址
3内存调整
*@return无
*/
voidhal_free(void*ptr);
A.2进程管理接口定义
进程管理接口定义详情见表A.2。
表A.2进程管理接口定义详情表
序号接口名称接口定义
/**
*@brief创建进程
*@param[in]:无
1创建进程*@return成功返回0;失败返回错误码
*/
pid_thal_fork_create(void);
/**
*@brief终止进程
*@param[in]status:进程状态
2终止进程*@return:无
*/
voidhal_fork_exit(intstatus);
7
T/CESXXX—XXXX
/**
*@brief运行可执行文件
*@param[in]path:可执行文件路径
*@param[in]arg:参数
3运行可执行文件*@param[in]...:参数
*@return成功返回0;失败返回错误码
*/
inthal_fork_exec(constchar*path,constchar*arg,...);
/**
*@brief获取进程标识
*@param[in]:无
4获取进程标识*@return成功返回当前进程标识;失败返回错误码
*/
pid_thal_fork_getpid(void);
/**
*@brief等待进程终止
*@param[in]pid:进程标识
*@param[in]status:进程状态
5等待进程终止*@param[in]options:操作码
*@return成功返回子进程标识;失败返回错误码
*/
pid_thal_fork_waitpid(pid_tpid,int*status,intoptions);
A.3信号量接口定义
信号量接口定义详情见表A.3。
表A.3信号量接口定义详情表
序号接口名称接口定义
/**
*@brief创建信号量
*@param[in]无
1创建信号量*@return成功返回信号量对象地址;失败返回NULL
*/
void*hal_semaphore_create(void);
/**
*@brief销毁信号量
*@param[in]sem:信号量对象
2销毁信号量*@return:成功返回0;失败返回错误码
*/
inthal_semaphore_destroy(void*sem);
/**
*@brief发送信号量
*@param[in]sem:信号量对象
3发送信号量*@return:成功返回0;失败返回错误码
*/
inthal_semaphore_post(void*sem);
8
T/CESXXX—XXXX
/**
*@brief等待信号量
*@param[in]sem:信号量对象
超时时间
4等待信号量*@param[in]timeout_ms:
*@return:成功返回0;失败返回错误码
*/
inthal_semaphore_wait(void*sem,unsignedinttimeout_ms);
A.4线程管理接口定义
线程管理接口定义详情见表A.4。
表A.4线程管理接口定义详情表
序号接口名称接口定义
/**
*@brief创建线程
*@param[in]thread_handle:线程标识
*@param[in]work_routine:线程调用函数
调用函数参数
1创建线程*@param[in]arg:
*@return:成功返回0;失败返回错误码
*/
inthal_thread_create(void**thread_handle,void
*(*work_routine)(void*),void*arg);
/**
*@brief设置线程分离
*@param[in]thread_handle:线程标识
2设置线程分离*@return:成功返回0;失败返回错误码
*/
inthal_thread_detach(void*thread_handle);
/**
*@brief删除线程
*@param[in]thread_handle:线程标识
3删除线程*@return:成功返回0;失败返回错误码
*/
inthal_thread_delete(void*thread_handle);
A.5互斥锁接口定义
互斥锁接口定义详情见表A.5。
表A.5互斥锁接口定义详情表
序号接口名称接口定义
/**
*@brief创建互斥锁
*@param[in]:无
1创建互斥锁*@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定义为文件打开形态
r打开只读文件;
r+打开可读写的文件;
w打开只写文件;
w+打开可读写文件;
a以附加的方式打开只写文件;
a+以附加方式打开可读写的文件;
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等
1打开文件
组合,加入b字符用来告诉函数库打开的文件为二进制文件,而非纯文字
文件。
*@brief打开文件
*@param[in]path:文件路径
*@param[in]mode:打开形态
*@return:成功返回文件指针;失败返回NULL
*/
FILE*hal_file_open(constchar*path,constchar*mode);
/**
*@brief关闭文件
*@param[in]stream:文件指针
2关闭文件*@return:成功返回0;失败返回错误码
*/
inthal_file_close(FILE*stream);
10
T/CESXXX—XXXX
/**
*@brief读文件
*@param[in]buff:读缓存
*@param[in]len:读最大字节数
3读文件*@param[in]stream:文件指针
*@return:成功返回读字节数;失败返回错误码
*/
inthal_file_read(void*buff,intlen,FILE*stream);
/**
*@brief写文件
*@param[in]buff:写缓存
*@param[in]len:写最大字节数
4写文件*@param[in]stream:文件指针
*@return:成功返回写字节数;失败返回错误码
*/
inthal_file_write(void*buff,intlen,FILE*stream);
/**
*@brief参数whence定义为文件指针移动位置
SEEK_SET从距文件开头offset位移量为新的读写位置;
SEEK_CUR以目前的读写位置往后增加offset个位移量;
SEEK_END将读写位置指向文件尾后再增加offset个位移量。
*@brief移动文件指针
5移动文件指针*@param[in]stream:文件指针
*@param[in]offset:移动数量
*@param[in]whence:移动位置
*@return:成功返回0;失败返回错误码
*/
inthal_file_seek(FILE*stream,intoffset,intwhence);
A.7时间管理接口定义
时间管理接口定义详情见表A.7。
表A.7时间管理接口定义详情表
序号接口名称接口定义
/**
*@brief创建计时器
*@param[in]func:回调函数
回调函数参数
1创建计时器*@param[in]user_data:
*@return:成功返回定时器对象地址;失败返回NULL
*/
void*hal_timer_create(void(*func)(void*),void*user_data);
/**
*@brief删除计时器
*@param[in]timer:定时器对象
2删除计时器*@return:成功返回0;失败返回错误码
*/
inthal_timer_delete(void*timer);
11
T/CESXXX—XXXX
/**
*@brief启动计时器
*@param[in]timer:定时器对象
启动计时器
3*@return:成功返回0;失败返回错误码
*/
inthal_timer_start(void*timer);
/**
*@brief停止计时器
*@param[in]timer:定时器对象
停止计时器
4*@return:成功返回0;失败返回错误码
*/
inthal_timer_stop(void*timer);
/**
*@brief获取系统当前时间,单位毫秒
*@param[in]:无
5获取系统当前时间*@return:成功返回当前时间戳;失败返回错误码
*/
int64hal_get_time_ms(void);
/**
*@brief休眠,单位毫秒
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年天津医科大学临床医学院招考聘用管理单位笔试遴选500模拟题附带答案详解
- 2025年大学白求恩第一医院公共实验平台招考聘用管理单位笔试遴选500模拟题附带答案详解
- 2025年国家电网许继集团第二批招聘历年管理单位笔试遴选500模拟题附带答案详解
- 2025年国家林业和草原局机关服务局招聘社会在职人员6人历年管理单位笔试遴选500模拟题附带答案详解
- 2025年四川达州从渠县西部志愿者中招聘乡镇事业单位工作人员7人管理单位笔试遴选500模拟题附带答案详解
- 2025年四川绵阳游仙区下半年事业单位公开招聘12人历年管理单位笔试遴选500模拟题附带答案详解
- 2025年四川省雅安经济开发区财政局招聘财政投资评审中心人员1人历年管理单位笔试遴选500模拟题附带答案详解
- 2025年四川省泸州市纳溪区事业单位招聘125人历年管理单位笔试遴选500模拟题附带答案详解
- 2025年四川省成都市城市管理委员会所属7家事业单位招聘46人历年管理单位笔试遴选500模拟题附带答案详解
- 2023年山东省滨州市公开招聘警务辅助人员(辅警)笔试专项训练题试卷(2)含答案
- DB41T2781-2024公路大厚度水泥稳定碎石基层施工技术规程
- 报关税费代缴服务合同
- 小学体育新课标培训
- 2024年应急预案知识考试题库及答案(共60题)
- 2024湖南株洲攸县城关国家粮食储备库员工招聘2人历年高频难、易错点500题模拟试题附带答案详解
- Python试题库(附参考答案)
- 有关于企业的调研报告范文(10篇)
- 重庆市康德卷2025届高一上数学期末检测模拟试题含解析
- 水泵与水泵站(水利)
- 《从百草园到三味书屋》阅读理解题
- 全球实验室仪器耗材国际品牌简介
评论
0/150
提交评论