2023电力智能终端硬件抽象层接口技术规范_第1页
2023电力智能终端硬件抽象层接口技术规范_第2页
2023电力智能终端硬件抽象层接口技术规范_第3页
2023电力智能终端硬件抽象层接口技术规范_第4页
2023电力智能终端硬件抽象层接口技术规范_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电力智能终端硬件抽象层接口技术规范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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论