【技术实现步骤摘要】
基于消息订阅与派发的嵌入式软件任务间通信方法及系统
[0001]本专利技术涉及嵌入式设备软件
,并且更具体地,涉及一种基于消息订阅与派发的嵌入式软件任务间通信方法及系统。
技术介绍
[0002]嵌入式软件中,随着应用软件功能多样化及复杂化,常采用功能模块化的开发方法,使不同的任务相互独立解耦,嵌入式软件任务间数据交互构成了整个嵌入式软件系统。当前嵌入式软件任务间通信主要方法有基于实时操作系统(FreeRTOS、UC/OS
‑
II)的信号量、队列、事件组等方法、基于嵌入式linux操作系统的信号量、互斥量、队列、共享内存、消息邮箱等方法。
[0003]基于实时操作系统(FreeRTOS、UC/OS
‑
II等)或嵌入式linux系统的任务间通信方法需要移植对应的操作系统到嵌入式设备上,增大了嵌入式软件的内存及磁盘等资源。现有技术方案需依赖操作系统软件架构,任务间通信方式不能灵活裁剪,不易在嵌入式设备上推广应用。
[0004]因此,需要一种基于消息订阅与派发的嵌入式软件任务
【技术保护点】
【技术特征摘要】
1.一种基于消息订阅与派发的嵌入式软件任务间通信方法,其特征在于,所述方法包括:嵌入式软件初始化时,每个任务模块调用消息注册函数对需要订阅的消息进行注册,以确定消息管理链表;当产生消息时,消息发送函数基于所述消息管理链表将所述消息分别放置于订阅该消息的目标任务模块的消息队列中;每个目标任务模块的消息处理函数按照预设的任务执行周期处理对应的消息队列中存放的消息,以实现嵌入式软件任务间的通信。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:定义消息类型、任务模块接口、消息接口、每个任务模块的名称和编号以及每个任务模块需要订阅的消息内容。3.根据权利要求1所述的方法,其特征在于,所述消息队列中的数据包括:消息队列头、消息队列尾、消息队列个数CFG_MSG_MAX和每个息队列可缓存消息的最大个数CFG_MSG_SIZE;其中,CFG_MSG_MAX表示任务模块的个数,一个任务模块对应一个消息队列,CFG_MSG_SIZE表示一个任务模块可最多缓存的消息个数。4.根据权利要求1所述的方法,其特征在于,所述消息管理链表,包括:一个消息允许被订阅的最大次数CFG_MESSAGE_SUBSCRIBE_MAX、所述消息管理链表管理的最大消息个数CFG_MESSAGE_TYPE_MAX。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:当任一个目标任务模块对应的消息队列中的任一个消息被读取进行处理后,将该任一个消息在该任一个目标任务模块对应的消息队列中删除。6.一种基于消息订阅与派发的嵌入式软件任务间通信系统,其特...
【专利技术属性】
技术研发人员:翟峰,许斌,梁晓兵,赵兵,陈昊,申洪涛,李智虎,李保丰,曹永峰,许海清,杜新纲,陶鹏,吕英杰,周晖,孔令达,史轮,付义伦,李飞,潘卫红,何宝灵,徐萌,冯云,赵英杰,秦煜,张辰,卢艳,许岳楼,白宇,周琪,袁泉,王楠,郑旖旎,
申请(专利权)人:国家电网有限公司国网河北省电力有限公司营销服务中心,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。