System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及处理器,具体涉及一种基于多核嵌入式处理器的多任务并行处理方法。
技术介绍
1、目前,公知的嵌入式平台下的多任务运行方法如本申请人在中国申请的专利技术专利,专利号为cn111538579b的一种嵌入式平台下的多任务运行方法,公开了在进入c语言main函数后,通过子函数调用的方式搭建任务环境并进行任务调度的方法,此方法无需在进入main函数之前对cpu启动代码进行任何修改。上述方法无法适用多核嵌入式处理器,需要进行重新设计,以保障该方法的前瞻性。
技术实现思路
1、本专利技术提供了一种基于多核嵌入式处理器的多任务并行处理方法,解决了目前公知技术中的嵌入式平台多任务处理方法无法适用多核处理器的问题。
2、本专利技术的技术方案如下:
3、一种基于多核嵌入式处理器的多任务并行方法,本方法通过c语言main函数中调用子函数的方式实现;
4、在内存中为每一个待执行任务分配独立的栈空间,使各任务在执行过程中互不干扰,且每个cpu核心可访问任一栈空间;
5、为实现任务管理,本方法设有任务数据记录模块,任务数据记录模块用于存储待执行任务的基本信息,且每个任务数据记录模块对应一个栈空间;基本信息的内容包括任务函数入口地址、任务对应的栈的起始地址、任务对应的栈的结束地址以及可运行该任务的cpu核心编号;基本信息是一种用于初始化cpu寄存器的寄存器信息;
6、为管理任务数据记录模块,本方法设有任务队列,任务队列包括与cpu核心编号一一
7、为实现各核心间的相互协调,本方法设有调度交互区域,调度交互区域是内存中的一处数据存储空间,可供任一cpu核心访问,且每个核心在协调交互区域具有该核心的专用空间;专用空间用于更新本核心的交互状态以及更新任务数据记录模块的地址;交互状态包括任务待切换状态、任务选择完成状态以及任务运行中状态;
8、为实现多核嵌入式处理器的多任务并行,本方法设计3个运行函数,包括任务数据记录模块初始化函数、任务注册函数及任务调度函数;
9、任务数据记录模块初始化函数用于清除任务数据记录模块的有效信息、将任务数据记录模块置入空闲队列以及清空调度交互区域;
10、任务注册函数可基于任务的需求向任务数据记录模块写入任务的基本信息并更新对应栈空间;
11、任务调度函数可利用调度交互区域终止cpu核心中正在执行的任务而执行其他任务;任务调度函数包括任务存取子函数以及任务选择子函数,任务存取子函数与任务选择子函数通过调度交互区域进行通信协作;
12、基于任务数据记录模块、任务队列、调度交互区域以及运行函数实现多核处理器的多任务并行处理的具体步骤为:
13、s01)选定负责任务调度的cpu核心作为主控核,剩余的cpu核心为主控核的从属核;在运行任务调度函数时,主控核可运行任务存取子函数和任务选择子函数,从属核仅可运行任务存取子函数;
14、s02)在主控核的main函数中调用任务数据记录模块初始化函数,以清除任务数据记录模块的有效信息并将位于工作队列中的任务数据记录模块全部置入空闲队列,同时清空调度交互区域,以将各cpu核心的在调度交互区域的专用空间的交互状态置为任务待切换状态;
15、s03)在从属核的程序的main函数中调用任务存取子函数,任务存取子函数与调度区域反复通信直至从属核在调度交互区域的专用空间的交互状态置为任务选择完成状态;
16、s04)在主控核的main函数中调用任务注册函数,并将任务函数入口地址、可运行该任务的cpu核心编号作为参数传入任务注册函数、任务注册函数从空闲队列中取出一个任务数据记录模块填入该任务的基本信息;注册函数将该任务数据记录模块置入任务数据记录模块所对应的cpu核心的工作队列的头部,同时在该任务数据记录模块对应的栈空间中,按照cpu寄存器出栈要求写入基本信息;
17、s05)若需多任务同步运行,则重复执行步骤s04)直至所有任务注册完毕;
18、s06)在主控核的main函数中调用任务选择子函数,依次查询调度交互区域中各cpu核心的专用空间的交互状态,从处于任务待切换状态的cpu核心的工作队列的起始位置开始获取任务数据记录模块,将此任务数据记录模块的地址更新至调度交互区域的专用空间,并将交互状态置为任务选择完成状态;任务选择子函数依次查询并更新完各cpu核心的专用空间的交互状态后,调用任务存取子函数向下执行步骤;
19、s07)运行在各个cpu核心的任务存取子函数与调度交互区域通信获取cpu核心在各自专用空间的交互状态信息,当交互状态变为任务选择完成状态后,根据专用空间中的任务数据记录模块地址获取任务的基本信息,并在专用空间更新交互状态为任务进行中状态,然后将任务数据记录模块对应的栈空间内保存的寄存器信息加载至cpu核心从而启动此任务;
20、进一步地,若步骤s06)中未查询到该cpu核心的工作队列中有任务数据记录模块,则从其他cpu核心的工作队列中摘取任务数据记录模块并加载至本cpu核心的工作队列后重复步骤s06)。
21、进一步地,从属核所执行的任务需暂停执行时,调用任务存取子函数;任务存取子函数将本cpu核心中寄存器信息保存至该任务所对应的栈空间中;任务存取子函数将调度交互区域中本cpu核心的专用空间的交互状态置为任务待切换状态,并监控交互状态且停止其他工作,直至监控的交互状态置为任务选择完成状态时,执行步骤s07)。
22、进一步地,主控核所执行的任务需暂停执行时,先调用任务存取子函数,将本cpu核心的寄存器信息保存至该任务所对应的栈空间中,并将调度交互区域中本cpu核心对应的专用空间的交互状态置为任务待切换状态;然后调用任务选择子函数依次扫描调度交互区域中各cpu核心的专用空间的交互状态;当发现专用空间的交互状态为任务待切换状态时,则从此专用空间对应的cpu核心的工作队列中选取当前任务的后一个任务数据记录模块,将此任务数据记录模块的地址更新至调度交互区域的专用空间,并将交互状态置为任务选择完成状态,然后再次调用任务存取子函数执行步骤s07)。
23、进一步地,在从专用空间对应的cpu核心的工作队列中选取当前任务的后一个任务数据记录模块时,若当前任务位于工作队列的队尾,则回到工作队列的头部选取第一个任务。
24、进一步地,在从专用空间对应的cpu核心的工作队列中未发现任务数据记录模块时,可从其他cpu核心的工作队列中摘取任务数据记录模块至本cpu核心的工作队列中,摘取时,需确认任务数据记录模块中的本cpu核心编号是否属于可运行该任务的cpu核心编号。
25、进一步地,在从专用空间对应的cpu核心的工作队列中未发现任何可匹配的任务数据记录模块时,任务选择子函数对本cpu核心对应的专用本文档来自技高网...
【技术保护点】
1.一种基于多核嵌入式处理器的多任务并行方法,其特征在于,本方法通过C语言main函数中调用子函数的方式实现;
2.根据权利要求1所述的一种基于多核嵌入式处理器的多任务并行方法,其特征在于,
3.根据权利要求1所述的一种基于多核嵌入式处理器的多任务并行方法,其特征在于,
4.根据权利要求1所述的一种基于多核嵌入式处理器的多任务并行方法,其特征在于,
5.根据权利要求4所述的一种基于多核嵌入式处理器的多任务并行方法,其特征在于,
6.根据权利要求5所述的一种基于多核嵌入式处理器的多任务并行方法,其特征在于,
7.根据权利要求6所述的一种基于多核嵌入式处理器的多任务并行方法,其特征在于,
8.根据权利要求7所述的一种基于多核嵌入式处理器的多任务并行方法,其特征在于,
9.根据权利要求1所述的一种基于多核嵌入式处理器的多任务并行方法,其特征在于,
10.根据权利要求1所述的一种基于多核嵌入式处理器的多任务并行方法,其特征在于,
【技术特征摘要】
1.一种基于多核嵌入式处理器的多任务并行方法,其特征在于,本方法通过c语言main函数中调用子函数的方式实现;
2.根据权利要求1所述的一种基于多核嵌入式处理器的多任务并行方法,其特征在于,
3.根据权利要求1所述的一种基于多核嵌入式处理器的多任务并行方法,其特征在于,
4.根据权利要求1所述的一种基于多核嵌入式处理器的多任务并行方法,其特征在于,
5.根据权利要求4所述的一种基于多核嵌入式处理器的多任务并行方法,其特...
【专利技术属性】
技术研发人员:唐汉钊,粟汝发,乔子龙,王宇,徐源长,王璞,曹成,
申请(专利权)人:山东华芯半导体有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。