CN109871274B - 一种嵌入式环境应用的多任务构造及处理方法 - Google Patents
一种嵌入式环境应用的多任务构造及处理方法 Download PDFInfo
- Publication number
- CN109871274B CN109871274B CN201910146036.3A CN201910146036A CN109871274B CN 109871274 B CN109871274 B CN 109871274B CN 201910146036 A CN201910146036 A CN 201910146036A CN 109871274 B CN109871274 B CN 109871274B
- Authority
- CN
- China
- Prior art keywords
- task
- code
- directory
- data
- construction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
一种嵌入式环境应用的多任务构造及处理方法,将各个不同任务模块的代码通过编译指令放置在不同的起始地址;在系统中设置一个任务目录,使任务目录中的每个目录项对应一个任务;目录项包含指向任务起始地址的指针和任务的活动状态位;代码包括支持代码和任务代码,支持代码中的调度策略进行循环调度或者以某种时间或优先级进行调度,预先将不同的调度策略编码实现,再根据外部命令进行切换,通过对目录项的活动状态位进行设置,停止或开启相应任务的执行;增加新的任务时,向任务目录中注入新的任务代码,新的任务代码优先放置在空闲的存储空间,根据编译指导命令产生定位代码,新的任务代码有计划的覆盖已有的任务。本发明提升了嵌入式系统性能。
Description
技术领域
本发明属于计算机软件领域,具体涉及一种嵌入式环境应用的多任务构造及处理方法。
背景技术
嵌入式模块或系统一般在设备研制完成后,其功能是固定的,但是有时候希望嵌入式系统能够根据需要调整处理策略或增加新的处理功能。比如,调整嵌入式测量模块不同数据类型的处理方法和策略,远程测控系统经常要监控和测量很多路不同性质的信号和数据,在工作过程中,要改变测量和处理方法、增加新的或停止已有的测量测量和处理方法。如果不同的测量和处理使用不同的任务模块实现,这就需要改变任务的执行策略或注入新的任务。
发明内容
本发明的目的在于针对上述现有技术中的问题,提供一种嵌入式环境应用的多任务构造及处理方法,能够根据需要通过外部命令更改任务的执行情况,调整多个任务的执行顺序,停止或开启某些任务的执行,并且通过注入新的任务代码增加任务。
为了实现上述目的,本发明采用的技术方案为:将各个不同任务模块的代码通过编译指令放置在不同的起始地址;在系统中设置一个任务目录,使任务目录中的每个目录项对应一个任务;目录项包含指向任务起始地址的指针和任务的活动状态位;
所述的代码包括支持代码和任务代码,支持代码中的调度策略根据任务的需要进行循环调度或者以某种时间或优先级进行调度,预先将不同的调度策略编码实现,然后根据外部命令进行切换,通过对目录项的活动状态位进行设置,停止或开启相应任务的执行;
增加新的任务时,向任务目录中注入新的任务代码,新的任务代码优先放置在空闲的存储空间,根据编译指导命令产生定位代码,新的任务代码有计划的覆盖已有的任务。
所述的支持代码包括初始化、通信支持、调度策略、中断处理以及flash擦写的服务代码。
任务在运行中访问两部分存储空间,分别是代码空间和数据空间;所述的代码空间为掉电能够保持的片内FLASH存储器,所述的数据空间为片内RAM。支持代码和任务代码的变量初始化放在片内FLASH存储器,临时数据编译放在片内RAM的堆栈。
首先通过一个独立的函数实现一个任务,在编译前将函数编译的目标代码起始地址设置为目标存储器的地址,运行中需要的变量定义成函数的局部变量;对于需要在任务之间传递结果数值的变量,在函数外定义成静态变量;在运行中,函数的局部变量在堆栈中临时开辟存储单元,函数执行完成之后即行撤销;对于静态变量,从数据存储器的低地址起开始分配。在定义新任务静态变量前,首先定义系统中已使用的静态变量,跨过系统使用过的静态存储单元。嵌入式环境为MCS-8051单片机系统,编译过程中以Keil开发环境作为设置环境菜单。
根据外部通信需要应用的情况定义交互协议,交互协议能够区分命令数据、新任务代码数据或者采集的结果数据,对于加载的程序代码在数据帧中明确加载地址以及数据长度。
与现有技术相比,本发明具有如下的有益效果:以函数形式实现不同任务,通过编译指导命令将不同任务生成代码放置在已知的不同起始地址上。并且通过任务目录调用不同任务,任务目录的活动位可以通过外部命令修改,使任务停止或投入运行。本发明首先定义一组固定的静态变量用于在任务之间传递信息,每个新加入的任务需要相同的静态变量定义,能够在新的位置或覆盖原有的任务增加新任务。本发明实现了通过外部命令更改任务的执行情况,停止或开启某些任务的执行,通过注入新的任务代码增加任务,提升了嵌入式系统性能。
附图说明
图1本发明静态代码组成结构框图;
图2执行代码的存储器映射示意图;
图3本发明针对多任务代码的功能框图。
具体实施方式
下面结合附图对本发明做进一步的详细说明。
参见图1,本发明嵌入式环境应用的多任务构造及处理方法将各个不同的任务模块的代码通过编译指令放置在不同起始地址,在系统中设置一个任务目录,每个目录项对应一个任务,目录项包含指向任务起始地址的指针和任务的活动状态位。任务目录包含在调度策略中。
程序代码可分为两部分,支持代码和任务代码,支持代码包括初始化、通信支持、调度策略、中断处理以及flash擦写等服务,任务代码用于完成具体的任务,不同的设计有不同的要求,比如各种类型的数据采集、数据加载、数据处理、开关量控制等等。
调度策略可以根据任务的需要进行循环调度或者以某种时间或优先级进行调度,可以预先将不同的调度策略编码实现,然后根据外部命令进行切换。设置一个任务目录,目录在编程中一般用结构数组实现,每个目录项对应一个任务,目录项中有一个任务活动状态标志,通过将标志设置为不活动使对应的任务不参与调度,即关闭某些任务的执行。
为了增加新的任务,需要注入新的任务代码,新任务代码优先放置在空闲的FLASH存储空间,也可有计划的覆盖已有的任务。为了使新编译的任务代码放置在希望的起始位置,程序代码中应有必要的编译指导命令,使生产合适定位的代码。
参见图2,任务在运行中需要访问两部分存储空间,一部分是代码空间,通常是掉电能够保持的片内FLASH存储器,另一部分是数据空间,通常是片内RAM。
支持代码和任务代码的变量初始化应放在FLASH,为了使各部分程序代码一般存放在掉电可以保持的片内FLASH,运行中需要更改的数据放置在RAM,子程序的临时数据编译时放在堆栈,堆栈也位于RAM,一般从RAM区的顶部向下生长。
为了使新编译生成的任务代码与FLASH存储器内已有的代码能够协调运行,首先应以一个独立的函数实现(可以有嵌套子函数)实现一个任务,编译前通过适当的设置(Keil开发环境是设置环境菜单,其它有通过命令文件等)将函数编译的目标代码起始地址设置为目标存储器的地址。运行中需要的变量应该定义成函数的局部变量,对于需要在任务之间传递的结果数值的变量,比如采集的结果数据,应该在函数外定义成静态变量。在运行中,函数的局部变量在堆栈中临时开辟存储单元,函数执行完之后即行撤销。所以局部变量对任务之间的执行没有影响。对于静态变量,从数据存储器的低地址起开始分配,为了使新加入的任务对静态变量的引用不致出现混乱,在定义新任务静态变量前,应首先定义系统中已经使用的静态变量,以此跨过系统使用过的静态存储单元。根据外部通信需要应用的情况定义适当的交互协议,交互协议应该能够区分命令数据、新任务代码数据或者采集的结果数据等,对于加载的程序代码应在数据帧中明确加载地址、数据长度等,如图3所示。
本发明通过将任务放置在已知位置,设置任务目录,通过任务目录对各个任务进行调用,通过响应外部命令修改任务活动位改变任务的活动状态,通过静态变量在各个任务之间传递信息,通过在新的位置或者覆盖原有任务增加新的任务。
以上所述仅为本发明的较佳实施例,并不用以对本发明做任何形式上的限定,本领域技术人员应当理解的是,在不脱离本发明精神和原则的条件下,本发明还可以进行若干修改或简单替换,这些修改及替换也均落入由所提交权利要求划定的范围之内。
Claims (6)
1.一种嵌入式环境应用的多任务构造及处理方法,其特征在于:将各个不同任务模块的代码通过编译指令放置在不同的起始地址;在系统中设置一个任务目录,使任务目录中的每个目录项对应一个任务;目录项包含指向任务起始地址的指针和任务的活动状态位;
所述的代码包括支持代码和任务代码,所述的支持代码包括初始化、通信支持、调度策略、中断处理以及flash擦写的服务代码,任务代码用于完成具体的任务;支持代码中的调度策略根据任务的需要进行循环调度或者以某种时间或优先级进行调度,预先将不同的调度策略编码实现,然后根据外部命令进行切换,通过对目录项的活动状态位进行设置,停止或开启相应任务的执行;
增加新的任务时,向任务目录中注入新的任务代码,新的任务代码优先放置在空闲的存储空间,根据编译指导命令产生定位代码,新的任务代码有计划的覆盖已有的任务;
首先通过一个独立的函数实现一个任务,在编译前将函数编译的目标代码起始地址设置为目标存储器的地址,运行中需要的变量定义成函数的局部变量;对于需要在任务之间传递结果数值的变量,在函数外定义成静态变量;在运行中,函数的局部变量在堆栈中临时开辟存储单元,函数执行完成之后即行撤销;对于静态变量,从数据存储器的低地址起开始分配。
2.根据权利要求1所述嵌入式环境应用的多任务构造及处理方法,其特征在于:任务在运行中访问两部分存储空间,分别是代码空间和数据空间;所述的代码空间为掉电能够保持的片内FLASH存储器,所述的数据空间为片内RAM。
3.根据权利要求2所述嵌入式环境应用的多任务构造及处理方法,其特征在于:支持代码和任务代码的变量初始化放在片内FLASH存储器,临时数据编译放在片内RAM的堆栈。
4.根据权利要求1所述嵌入式环境应用的多任务构造及处理方法,其特征在于:在定义新任务静态变量前,首先定义系统中已使用的静态变量,跨过系统使用过的静态存储单元。
5.根据权利要求1所述嵌入式环境应用的多任务构造及处理方法,其特征在于:嵌入式环境为MCS-8051单片机系统,编译过程中以Keil开发环境作为设置环境菜单。
6.根据权利要求1所述嵌入式环境应用的多任务构造及处理方法,其特征在于:根据外部通信需要应用的情况定义交互协议,交互协议能够区分命令数据、新任务代码数据或者采集的结果数据,对于加载的程序代码在数据帧中明确加载地址以及数据长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910146036.3A CN109871274B (zh) | 2019-02-27 | 2019-02-27 | 一种嵌入式环境应用的多任务构造及处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910146036.3A CN109871274B (zh) | 2019-02-27 | 2019-02-27 | 一种嵌入式环境应用的多任务构造及处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109871274A CN109871274A (zh) | 2019-06-11 |
CN109871274B true CN109871274B (zh) | 2022-12-13 |
Family
ID=66919364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910146036.3A Active CN109871274B (zh) | 2019-02-27 | 2019-02-27 | 一种嵌入式环境应用的多任务构造及处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109871274B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110928662B (zh) * | 2019-11-28 | 2022-09-09 | 国网信息通信产业集团有限公司 | 一种面向微服务架构的分布式定时任务调度器 |
CN111625341A (zh) * | 2020-06-04 | 2020-09-04 | 广州西山居世游网络科技有限公司 | 一种任务调度管理方法以及装置 |
CN114648869B (zh) * | 2022-03-10 | 2023-03-14 | 东方电子股份有限公司 | 一种电力保护测控装置遥控指令操作方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840355A (zh) * | 2003-02-18 | 2010-09-22 | 微软公司 | 用于增强协处理器性能的系统和方法 |
CN102063325A (zh) * | 2011-01-06 | 2011-05-18 | 哈尔滨工业大学 | 一种嵌入51系列单片机的多任务实时操作系统的实现方法 |
CN103488536A (zh) * | 2013-09-29 | 2014-01-01 | 华为技术有限公司 | 任务调度方法、装置及操作系统 |
EP3399412A1 (en) * | 2017-05-04 | 2018-11-07 | Robert Bosch GmbH | Method and apparatus for scheduling tasks to a cyclic schedule |
-
2019
- 2019-02-27 CN CN201910146036.3A patent/CN109871274B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840355A (zh) * | 2003-02-18 | 2010-09-22 | 微软公司 | 用于增强协处理器性能的系统和方法 |
CN102063325A (zh) * | 2011-01-06 | 2011-05-18 | 哈尔滨工业大学 | 一种嵌入51系列单片机的多任务实时操作系统的实现方法 |
CN103488536A (zh) * | 2013-09-29 | 2014-01-01 | 华为技术有限公司 | 任务调度方法、装置及操作系统 |
EP3399412A1 (en) * | 2017-05-04 | 2018-11-07 | Robert Bosch GmbH | Method and apparatus for scheduling tasks to a cyclic schedule |
Non-Patent Citations (3)
Title |
---|
"An Improved Task Scheduling Algorithm in Embedded Systems";Xiong Yumei et al.;《2010 Third International Symposium on Intelligent Information Technology and Security Informatics》;20101231;第682-685页 * |
"基于FPGA的TT数据发送调度机制设计及仿真";杨宏志 等;《机械工程与自动化》;20180228;第103-106页 * |
"嵌入式系统中基于DAG的容错调度算法设计";唐利红 等;《信息技术》;20151231;第138-146页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109871274A (zh) | 2019-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109871274B (zh) | 一种嵌入式环境应用的多任务构造及处理方法 | |
EP2378413B1 (en) | Methods and systems to implement non-ABI conforming features across unseen interfaces | |
CN103729210B (zh) | 一种实现一个刷机包支持多种制式智能终端的方法及装置 | |
CN112650539B (zh) | 面向异构众核处理器的动态链接运行支撑方法 | |
CN101668283A (zh) | 一种手机嵌入式系统中动态加载的方法 | |
CN105589729A (zh) | 一种基于嵌入式虚拟机的动态编译的方法及装置 | |
CN102073538A (zh) | 实时运转时间系统以及此运转时间系统功能性模块 | |
CN105204871A (zh) | 一种插件式开发方法和装置 | |
CN111142421A (zh) | 工程装置、工程装置的控制方法以及存储介质 | |
CN100375029C (zh) | 存储器配置系统与方法 | |
TWI603265B (zh) | 積體電路射頻 | |
CN117032118A (zh) | 基于工业物联网的软plc系统 | |
CN103631585A (zh) | 一种用于开发应用程序的方法及系统 | |
CN106127092A (zh) | 一种cos系统应用剥离的智能卡及其工作方法 | |
CN105893098A (zh) | 智能卡应用平台装载、应用程序安装及运行的方法及系统 | |
CN110990018B (zh) | 一种嵌入式系统的编译方法及编译系统 | |
CN104678875B (zh) | 一种变频器配置方法及变频器配置系统 | |
CN104102491A (zh) | 单片机实时任务与耗时任务并行执行的实现方法和系统 | |
CN109932997B (zh) | 一种可编程逻辑控制器内核系统 | |
CN106354486A (zh) | nand flash设备管理的方法和系统 | |
CN105912393A (zh) | 禁止bios系统部分功能的方法、装置及计算机 | |
KR102276696B1 (ko) | 집적 회로 무선장치 | |
CN107038038B (zh) | 一种运行大容量usim小应用程序的方法 | |
CN111221535B (zh) | 线程分配方法、服务器及计算机可读存储介质 | |
CN108776594B (zh) | 适用于处理器实时控制的软件编程及其汇编链接方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |