CN112148364A - 一种嵌入式微内核操作系统分区链接方法及系统 - Google Patents
一种嵌入式微内核操作系统分区链接方法及系统 Download PDFInfo
- Publication number
- CN112148364A CN112148364A CN202011004893.9A CN202011004893A CN112148364A CN 112148364 A CN112148364 A CN 112148364A CN 202011004893 A CN202011004893 A CN 202011004893A CN 112148364 A CN112148364 A CN 112148364A
- Authority
- CN
- China
- Prior art keywords
- partition
- memory
- microkernel
- partitions
- link
- 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.)
- Granted
Links
- 238000005192 partition Methods 0.000 title claims abstract description 176
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000008569 process Effects 0.000 claims abstract description 47
- 239000003292 glue Substances 0.000 claims abstract description 42
- 238000004458 analytical method Methods 0.000 claims description 18
- 238000013507 mapping Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 10
- 238000009826 distribution Methods 0.000 claims description 5
- 230000001172 regenerating effect Effects 0.000 claims description 5
- 238000012360 testing method Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 8
- 238000003860 storage Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000009776 industrial production Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种嵌入式微内核操作系统分区链接方法及系统,通过读取用户对系统属性的高层次描述,生成胶水代码,调用编译器对微内核、守护进程和各个分区的源文件进行编译以生成目标文件;链接器对各个分区编译生成的目标文件进行两次试链接,生成目标文件,可以大大降低在微控制器平台上微内核部署的难度。使用本技术无需事先预估各个分区所占空间的大小,而是可以由工具链在应用编写完成后自行决定;所需的建立分区以及分区中内核对象的胶水代码是自动生成的,无需人工手动编写,降低了发生错误的几率。
Description
技术领域
本公开涉及嵌入式系统领域,具体涉及一种嵌入式微内核操作系统分区链接方法及系统,适用于复杂的微内核操作系统在微控制器上的部署。
背景技术
随着工业4.0和物联网的兴起,传感器-执行器网络被用于交通、生活和工业生产的方方面面。由于这些领域的业务逻辑本身非常复杂,因此传感器-执行器网络的规模很快增加。这使得增加安全边界和进行隔离变成必要的事情,因此在单片机上部署微内核是有必要的。然而,由于单片机并不具备内存管理单元而仅仅具备内存保护单元,因此在单片机上部署微内核时需要静态决定内核和各个分区的链接位置。部分单片机的内存保护单元还具备一些限制,诸如起始位置必须对齐到区域大小,区域大小必须是2的方次等等,这无疑大大增加了静态决定内核和各个分区链接位置的难度。
分区是保护区域,每个保护区域由一组MPU寄存器配置描述,记录了允许被该保护区域访问的存储器。一个保护区域内可以有一个或多个线程。
现有的链接方法大概有如下几种:
1.由人手动决定各个分区的链接位置。这种方法需要人手工分析各个分区的可能大小,并且静态地指定它们。然而,这大大增加了人的工作量,而且由于每个软件分区的大小在编译时往往为未知,因此在决定地址时往往需要反复分配地址和编译链接,直到找到正确的组合为止。
2.静态地决定每个分区的大小。也即操作系统无视用户应用程序的需求,先入为主地将芯片的资源划分为几个分区,用户设计应用程序时则必须适应这几个分区的大小。如果用户的初始应用程序无法适配进这几个分区,那么就必须再次适配。
3.将分区的建立完全推迟到系统运行时决定,并且通过语言运行时虚拟机的方式提供分区保护。这种方法提供了高灵活性,但语言运行时虚拟机本身的开销在微控制器上往往不可接受。
发明内容
为了解决上述问题,本公开提供一种嵌入式微内核操作系统分区链接方法及系统,通过读取用户对系统属性的高层次描述,生成胶水代码,调用编译器对微内核、守护进程和各个分区的源文件进行编译以生成目标文件。链接器对各个分区编译生成的目标文件进行两次试链接,从中取得微内核、守护进程和各个分区的大小,包括其代码段大小及数据段大小,生成目标文件,如果本次链接中没有发生溢出,则本次链接结果有效,输出链接的二进制映像文件。
为了实现上述目的,根据本公开的一方面,提供一种嵌入式微内核操作系统分区链接方法,所述方法包括以下步骤:
所述方法的开发机端包括:系统需求分析模块、编译器、内存分配器模块和链接器,微控制器端则包括微内核和守护进程。其中,实质意义上的微内核只有一个,守护进程可以有一个或者多个。
S100:系统需求分析模块读取用户对系统属性的高层次描述,所述高层次描述包括分区数量、各个分区的内核对象资源以及所选定的微控制器平台等,并生成各个分区的内核对象列表,然后再由内核对象列表生成为各个分区创建这些内核对象的在微内核启动时或守护进程启动时调用的胶水代码;
S200:系统需求分析模块生成各个分区中的内核对象所对应的代码,比如如果该分区中有线程对象,那么就在该分区中生成各个线程对象的空函数体,等待用户填充;
生成各个分区中的内核对象所对应的代码的方法为:根据各个内核对象的参数和系统的API,生成对系统API进行调用的代码,并填充入待创建的内核对象的参数。
S300:用户编写各个分区的代码,并确认其正确;
用户编写各个分区的代码,并确认其正确的代码,即符合用户需求,或符合用户的业务逻辑的代码。
S400:内存分配器模块第一次调用编译器对微内核、守护进程和各个分区的源文件进行编译以生成目标文件;链接器对各个分区编译生成的目标文件进行第一次试链接,从中取得微内核、守护进程和各个分区的大小,包括其代码段大小及数据段大小;
S500:内存分配器模块通过内存分配算法分配内核模块、守护进程和各个分区的确切链接地址,其地址必须符合内存保护单元提供的一些约束,包括但不限于最小内存粒度、内存对齐粒度以及内存段起始地址必须对齐于内存段长度等;
S600:内存分配器模块生成为各个分区建立内存保护区域的胶水代码;这些代码在微内核启动时或守护进程启动时调用;
生成为各个分区建立内存保护区域的胶水代码的方法为:由于胶水代码实际上就是生成各个分区中的内核对象对应的代码的别称,是一段根据内核对象的固定参数,依次调用系统API设立保护域或者内核对象的代码。
S700:内存分配器模块第二次调用编译器对各个分区的源文件进行编译,生成目标文件。链接器对各个分区编译生成的目标文件进行第二次试链接,如果本次链接中没有发生溢出,则本次链接结果有效,输出最终组装过后的、可以烧写进MCU的二进制映像文件;
S800:如果本次链接中发生了溢出,则重新获取微内核、守护进程和各个分区的大小并重新生成胶水代码并进行编译链接,若此时最终链接通过则输出最终组装过后的二进制映像文件;如果未能通过则向用户报告链接失败以及微内核、守护进程和各个分区的大小。
其中,大小为微内核、守护进程和各个分区在存储器占用空间。
进一步地,在S800中,重新获取各个分区的大小的方法为:链接器对各个分区编译生成的目标文件进行第一次试链接,从中取得微内核、守护进程和各个分区的大小,包括其代码段大小及数据段大小(即步骤S400)。
进一步地,在S800中,重新生成胶水代码并进行编译链接的方法为:内存分配器模块通过内存分配算法分配内核模块、守护进程和各个分区的确切链接地址,其地址必须符合内存保护单元提供的一些约束,包括但不限于最小内存粒度、内存对齐粒度以及内存段起始地址必须对齐于内存段长度等;内存分配器模块生成为各个分区建立内存保护区域的胶水代码;这些代码在微内核启动时或守护进程启动时调用;(即迭代执行步骤S500和S600直到链接中没有发生溢出即最终链接通过)。
进一步地,在S500中,所述内存分配算法包括但不限于Buddy算法、CMA算法、slab算法。
本发明还提供了一种嵌入式微内核操作系统分区链接系统,所述系统包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在链接系统的开发机端和微控制器端;所述开发机端包括:系统需求分析模块、内存分配器模块、编译器和链接器,所述微控制器端则包括微内核和守护进程,在这些模块的各自单元中:
其中,系统需求分析模块,包括以下单元:
参数读取单元,用于读取用户对系统属性的高层次描述;
内核对象读取单元,用于生成各个分区的内核对象列表;
胶水代码生成单元,用于由内核对象列表生成为各个分区创建这些内核对象的在微内核启动时或守护进程启动时调用的胶水代码;
内核对象代码生成单元,用于生成各个分区中的内核对象所对应的代码;
其中,内存分配器模块,包括以下单元:
编译单元,用于调用编译器对微内核、守护进程和各个分区的源文件进行编译以生成目标文件;
试链接单元,用于对各个分区编译生成的目标文件进行链接,从中取得微内核、守护进程和各个分区的大小,包括其代码段大小及数据段大小;
地址分配单元,用于通过内存分配算法分配内核模块、守护进程和各个分区的确切链接地址;
内存保护胶水代码单元,用于生成为各个分区建立内存保护区域的胶水代码;
映像文件输出单元,用于在本次链接中没有发生溢出的情况下,输出链接的二进制映像文件;
分区参数获取单元,用于在本次链接中发生了溢出的情况下,获取各个分区的大小;
错误报告单元,用于向用户输出链接失败以及微内核、守护进程和各个分区的大小。
本公开的有益效果为:本发明提供一种嵌入式微内核操作系统分区链接方法及系统,可以大大降低在微控制器平台上微内核部署的难度。首先,使用本技术无需事先预估各个分区所占空间的大小,而是可以由工具链在应用编写完成后自行决定;第二,所需的建立分区以及分区中内核对象的胶水代码是自动生成的,无需人工手动编写,降低了发生错误的几率。最后,本发明中的胶水代码在自动生成完成后会编译链接两次,因为这些胶水代码本身有可能会增加或者改变分区的大小使得原先确定的分区地址不再有效,两次链接则可以使这种变化也被反馈到分区生成中去,最终生成有效的二进制映像文件。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本公开的上述以及其他特征将更加明显,本公开附图中相同的参考标号表示相同或相似的元素,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,在附图中:
图1所示为一种嵌入式微内核操作系统分区链接方法的流程图;
图2所示为一种嵌入式微内核操作系统分区链接系统结构图。
具体实施方式
以下将结合实施例和附图对本公开的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本公开的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图1所示为根据本公开的一种嵌入式微内核操作系统分区链接方法的流程图,下面结合图1来阐述根据本公开的实施方式的一种嵌入式微内核操作系统分区链接方法。
本公开提出一种嵌入式微内核操作系统分区链接方法,具体包括以下步骤:
所述方法的开发机端包括:系统需求分析模块、编译器、内存分配器模块和链接器,微控制器端则包括微内核和守护进程。其中,实质意义上的微内核只有一个,守护进程可以有一个或者多个。
S100:系统需求分析模块读取用户对系统属性的高层次描述,所述高层次描述包括分区数量、各个分区的内核对象资源以及所选定的微控制器平台等,并生成各个分区的内核对象列表,然后再由内核对象列表生成为各个分区创建这些内核对象的在微内核启动时或守护进程启动时调用的胶水代码;
S200:系统需求分析模块生成各个分区中的内核对象所对应的代码,比如如果该分区中有线程对象,那么就在该分区中生成各个线程对象的空函数体,等待用户填充;
S300:用户编写各个分区的代码,并确认其正确;用户编写各个分区的代码,并确认其正确的代码,即符合用户需求,或符合用户的业务逻辑的代码。
生成各个分区中的内核对象所对应的代码的方法为:根据各个内核对象的参数和系统的API,生成对系统API进行调用的代码,并填充入待创建的内核对象的参数。
S400:内存分配器模块第一次调用编译器对微内核、守护进程和各个分区的源文件进行编译以生成目标文件。链接器对各个分区编译生成的目标文件进行第一次试链接,从中取得微内核、守护进程和各个分区的大小,包括其代码段大小及数据段大小;
S500:内存分配器模块通过内存分配算法分配内核模块、守护进程和各个分区的确切链接地址,其地址必须符合内存保护单元提供的一些约束,包括但不限于最小内存粒度、内存对齐粒度以及内存段起始地址必须对齐于内存段长度等;
S600:内存分配器模块生成为各个分区建立内存保护区域的胶水代码。这些代码在微内核启动时或守护进程启动时调用;
其中,胶水代码实际上就是生成各个分区中的内核对象对应的代码的别称,是一段固定参数,挨个调用系统API设立保护域或者内核对象的代码。
S700:内存分配器模块第二次调用编译器对各个分区的源文件进行编译,生成目标文件。链接器对各个分区编译生成的目标文件进行第二次试链接,如果本次链接中没有发生溢出,则本次链接结果有效,输出最终组装过后的、可以烧写进MCU的二进制映像文件;
S800:如果本次链接中发生了溢出,则重新获取微内核、守护进程和各个分区的大小并重新生成胶水代码并进行编译链接,若此时最终链接通过则输出最终组装过后的二进制映像文件;如果未能通过则向用户报告链接失败以及微内核、守护进程和各个分区的大小。
进一步地,在S800中,重新获取各个分区的大小的方法为:链接器对各个分区编译生成的目标文件进行第一次试链接,从中取得微内核、守护进程和各个分区的大小,包括其代码段大小及数据段大小(即步骤S400)。
进一步地,在S800中,重新生成胶水代码并进行编译链接的方法为:内存分配器模块通过内存分配算法分配内核模块、守护进程和各个分区的确切链接地址,其地址必须符合内存保护单元提供的一些约束,包括但不限于最小内存粒度、内存对齐粒度以及内存段起始地址必须对齐于内存段长度等;内存分配器模块生成为各个分区建立内存保护区域的胶水代码;这些代码在微内核启动时或守护进程启动时调用;(即迭代执行步骤S500和S600直到链接中没有发生溢出即最终链接通过)。
进一步地,在S500中,所述内存分配算法包括但不限于Buddy算法、CMA算法、slab算法。
本实施给出一个非常简要的具体实施例,阐述该方法如何根据用户给出的高层次描述编译和链接整个系统。
(实施例1)某公司的产品具备两个分区A和B,以及微内核K和守护进程D。在分区A中有4个线程,在分区B中有2个线程。
1.该公司的系统设计师将分区A和B中的系统资源告知系统需求分析模块,同时指定微控制器平台M,该平台具有512kB程序存储器和256kB数据存储器;
2.系统需求分析模块分析系统设计师的输入,并确定A分区中有4个线程,B分区中有2个线程,并生成相应的创建这些线程的胶水代码供守护进程D在系统启动时调用;
3.系统需求分析模块生成分区A和B的源代码,其中分区A的源代码中具备4个线程的空函数,分区B的源代码中具备2个线程的空函数;
4.该公司的设计师填充分区A和分区B的源代码后调用内存分配器。
5.内存分配器对微内核K、守护进程D、分区A和分区B进行编译和初步链接后发现,微内核K需要32kB程序存储器和32kB数据存储器,守护进程D需要48kB程序存储器和48kB数据存储器,分区A需要64kB程序存储器和64kB数据存储器,分区B需要32kB程序存储器和32kB数据存储器。
内存分配器确认:
微内核K的程序存储器范围为0-32kB,数据存储器范围为0-32kB;
守护进程D的程序存储器范围为32-80kB,数据存储器范围为32-80kB;
分区A的程序存储器范围为80-144kB,数据存储器范围为80-144kB;
分区B的程序存储器范围为144-176kB,数据存储器范围为144-176kB。
进一步,确认程序存储器以及数据存储器均未超标,而且各个存储区域的起始地址和大小都不违背该微控制器的内存保护单元的约束。
之后,内存分配器生成创建这些分区的胶水代码,供守护进程D在系统创建时调用。
6.内存分配器重新编译链接该系统,但发现由于多加入了生成分区的胶水代码,守护进程D现在需要64kB程序存储器和32kB数据存储器。因此各个软件模组的链接位置需要更改,胶水代码需要重新生成。
内存分配器重新确认:
微内核K的程序存储器范围为0-32kB,数据存储器范围为0-32kB;
守护进程D的程序存储器范围为32-96kB,数据存储器范围为32-80kB;
分区A的程序存储器范围为96-160kB,数据存储器范围为80-144kB;
分区B的程序存储器范围为160-192kB,数据存储器范围为144-176kB。
进一步,确认程序存储器以及数据存储器均未超标,而且各个存储区域的起始地址和大小都不违背该微控制器的内存保护单元的约束。
之后,内存分配器生成创建这些分区的胶水代码,供守护进程D在系统创建时调用。
7.内存分配器重新编译链接本系统,发现链接通过,并输出最终可以用于刷写入微控制器的系统映像。
至此,整个链接流程完成。
(实施例2)假设链接在第7步失败,内存分配器将向用户报告存储器已经用尽,待用户调整应用程序代码降低消耗后再次执行此流程。
本公开的实施例提供的一种嵌入式微内核操作系统分区链接系统,如图2所示为本公开的一种嵌入式微内核操作系统分区链接系统结构图,该实施例的一种嵌入式微内核操作系统分区链接系统包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种嵌入式微内核操作系统分区链接系统实施例中的步骤。
所述系统包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在链接系统的开发机端和微控制器端;所述开发机端包括:系统需求分析模块、编译器、内存分配器模块和链接器,所述微控制器端则包括微内核和守护进程,在这些模块的各自单元中:
其中,系统需求分析模块,包括以下单元:
参数读取单元,用于读取用户对系统属性的高层次描述;
内核对象读取单元,用于生成各个分区的内核对象列表;
胶水代码生成单元,用于由内核对象列表生成为各个分区创建这些内核对象的在微内核启动时或守护进程启动时调用的胶水代码;
内核对象代码生成单元,用于生成各个分区中的内核对象所对应的代码;
其中,内存分配器模块,包括以下单元:
编译单元,用于调用编译器对微内核、守护进程和各个分区的源文件进行编译以生成目标文件;
试链接单元,用于对各个分区编译生成的目标文件进行链接,从中取得微内核、守护进程和各个分区的大小,包括其代码段大小及数据段大小;
地址分配单元,用于通过内存分配算法分配内核模块、守护进程和各个分区的确切链接地址;
内存保护胶水代码单元,用于生成为各个分区建立内存保护区域的胶水代码;
映像文件输出单元,用于在本次链接中没有发生溢出的情况下,输出二进制链接的映像文件;
分区参数获取单元,用于在本次链接中发生了溢出的情况下,获取各个分区的大小;
错误报告单元,用于向用户输出链接失败以及微内核、守护进程和各个分区的大小。
所述一种嵌入式微内核操作系统分区链接系统可以运行于桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备中。所述一种嵌入式微内核操作系统分区链接系统,可运行的系统可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述例子仅仅是一种嵌入式微内核操作系统分区链接系统的示例,并不构成对一种嵌入式微内核操作系统分区链接系统的限定,可以包括比例子更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述一种嵌入式微内核操作系统分区链接系统还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述一种嵌入式微内核操作系统分区链接系统运行系统的控制中心,利用各种接口和线路连接整个一种嵌入式微内核操作系统分区链接系统可运行系统的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述一种嵌入式微内核操作系统分区链接系统的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
尽管本公开的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,而是应当将其视作是通过参考所附权利要求考虑到现有技术为这些权利要求提供广义的可能性解释,从而有效地涵盖本公开的预定范围。此外,上文以发明人可预见的实施例对本公开进行描述,其目的是为了提供有用的描述,而那些目前尚未预见的对本公开的非实质性改动仍可代表本公开的等效改动。
Claims (4)
1.一种嵌入式微内核操作系统分区链接方法,其特征在于,所述方法包括以下步骤:
S100:系统需求分析模块读取用户对系统属性的高层次描述;
S200:系统需求分析模块生成各个分区中的内核对象所对应的代码;
S300:用户编写各个分区的代码,并确认其正确;
S400:内存分配器模块第一次调用编译器对微内核、守护进程和各个分区的源文件进行编译以生成目标文件;链接器对各个分区编译生成的目标文件进行第一次试链接,从中取得微内核、守护进程和各个分区的大小;
S500:内存分配器模块通过内存分配算法分配内核模块、守护进程和各个分区的确切链接地址;
S600:内存分配器模块生成为各个分区建立内存保护区域的胶水代码;
S700:内存分配器模块第二次调用编译器对各个分区的源文件进行编译,生成目标文件;链接器对各个分区编译生成的目标文件进行第二次试链接,如果本次链接中没有发生溢出,则本次链接结果有效,输出链接的二进制映像文件;
S800:如果本次链接中发生了溢出,则重新获取微内核、守护进程和各个分区的大小并重新生成胶水代码并进行编译链接,若此时最终链接通过则输出最终组装过后的二进制映像文件;如果未能通过则向用户报告链接失败以及微内核、守护进程和各个分区的大小。
2.根据权利要求1所述的一种嵌入式微内核操作系统分区链接方法,其特征在于,所述方法运行在开发机端和微控制器端,所述方法的开发机端包括:系统需求分析模块、编译器、内存分配器模块和链接器,微控制器端则包括微内核和守护进程;其中,微内核只有一个,守护进程可以有一个或者多个。
3.根据权利要求1所述的一种嵌入式微内核操作系统分区链接方法,其特征在于,在步骤S100中,所述高层次描述包括分区数量、各个分区的内核对象资源以及所选定的微控制器平台等,并生成各个分区的内核对象列表,然后再由内核对象列表生成为各个分区创建这些内核对象的在微内核启动时或守护进程启动时调用的胶水代码。
4.一种嵌入式微内核操作系统分区链接系统,其特征在于,所述系统包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在链接系统的开发机端和微控制器端;所述开发机端包括:系统需求分析模块、内存分配器模块、编译器和链接器,所述微控制器端则包括微内核和守护进程,在这些模块的各自单元中:
其中,系统需求分析模块,包括以下单元:
参数读取单元,用于读取用户对系统属性的高层次描述;
内核对象读取单元,用于生成各个分区的内核对象列表;
胶水代码生成单元,用于由内核对象列表生成为各个分区创建这些内核对象的在微内核启动时或守护进程启动时调用的胶水代码;
内核对象代码生成单元,用于生成各个分区中的内核对象所对应的代码;
其中,内存分配器模块,包括以下单元:
编译单元,用于调用编译器对微内核、守护进程和各个分区的源文件进行编译以生成目标文件;
试链接单元,用于对各个分区编译生成的目标文件进行链接,从中取得微内核、守护进程和各个分区的大小,包括其代码段大小及数据段大小;
地址分配单元,用于通过内存分配算法分配内核模块、守护进程和各个分区的确切链接地址;
内存保护胶水代码单元,用于生成为各个分区建立内存保护区域的胶水代码;
映像文件输出单元,用于在本次链接中没有发生溢出的情况下,输出二进制链接的映像文件;
分区参数获取单元,用于在本次链接中发生了溢出的情况下,获取各个分区的大小;
错误报告单元,用于向用户输出链接失败以及微内核、守护进程和各个分区的大小。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2019110104974 | 2019-10-18 | ||
CN201911010497 | 2019-10-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112148364A true CN112148364A (zh) | 2020-12-29 |
CN112148364B CN112148364B (zh) | 2024-02-06 |
Family
ID=73897748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011004893.9A Active CN112148364B (zh) | 2019-10-18 | 2020-09-21 | 一种嵌入式微内核操作系统分区链接方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148364B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130086563A1 (en) * | 2011-10-03 | 2013-04-04 | International Business Machines Corporation | Compiling code for an enhanced application binary interface (abi) with decode time instruction optimization |
CN103092759A (zh) * | 2013-01-28 | 2013-05-08 | 电子科技大学 | 一种嵌入式环境下的代码动态性能剖析器 |
CN109343937A (zh) * | 2018-10-07 | 2019-02-15 | 张维加 | 一种跨设备部署的分布式计算系统 |
CN110069261A (zh) * | 2019-05-11 | 2019-07-30 | 肖银皓 | 一种嵌入式软件的可配置分区方法及系统 |
-
2020
- 2020-09-21 CN CN202011004893.9A patent/CN112148364B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130086563A1 (en) * | 2011-10-03 | 2013-04-04 | International Business Machines Corporation | Compiling code for an enhanced application binary interface (abi) with decode time instruction optimization |
CN103092759A (zh) * | 2013-01-28 | 2013-05-08 | 电子科技大学 | 一种嵌入式环境下的代码动态性能剖析器 |
CN109343937A (zh) * | 2018-10-07 | 2019-02-15 | 张维加 | 一种跨设备部署的分布式计算系统 |
CN110069261A (zh) * | 2019-05-11 | 2019-07-30 | 肖银皓 | 一种嵌入式软件的可配置分区方法及系统 |
Non-Patent Citations (1)
Title |
---|
欧阳湘臻: "一种安全关键的嵌入式实时操作系统内核设计", 《计算机工程》, vol. 45, no. 7, pages 75 - 85 * |
Also Published As
Publication number | Publication date |
---|---|
CN112148364B (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10338956B2 (en) | Application profiling job management system, program, and method | |
KR102059705B1 (ko) | 적응식 이식가능 라이브러리 | |
Pérez et al. | Simplifying programming and load balancing of data parallel applications on heterogeneous systems | |
US20150301809A1 (en) | Wholesale Replacement of Specialized Classes | |
JP6027021B2 (ja) | アジャイル通信演算子 | |
CN110059456B (zh) | 代码保护方法、代码保护装置、存储介质与电子设备 | |
TW201820131A (zh) | 進程管理方法及裝置 | |
CN109196476B (zh) | 共享垃圾收集器的不同类型图之间的无缝高性能互操作性 | |
CN112905472A (zh) | 内核调试系统及方法 | |
CN110825499A (zh) | 基于统一容器云平台的安全隔离的实现方法及装置 | |
Stilkerich et al. | Tailor‐made JVMs for statically configured embedded systems | |
CN112882694A (zh) | 一种程序编译方法、装置、电子设备及可读存储介质 | |
US11036527B2 (en) | Class splitting in object-oriented environments | |
CN109558121B (zh) | 接口驱动程序的开发方法、装置、设备及存储介质 | |
US10268461B2 (en) | Global data flow optimization for machine learning programs | |
US8769498B2 (en) | Warning of register and storage area assignment errors | |
CN113900704A (zh) | 应用程序安装包的发布方法、装置、可读介质及电子设备 | |
CN114691188A (zh) | 兼容性评估方法、装置、设备及存储介质 | |
CN117573338A (zh) | 一种资源分配方法、装置及电子设备 | |
CN117034821A (zh) | 用于芯片设计前端仿真验证的回归验证方法及介质 | |
Kienberger et al. | Parallelizing highly complex engine management systems | |
US20230409417A1 (en) | Automated generation of application programming interfaces for microservices | |
CN112148364B (zh) | 一种嵌入式微内核操作系统分区链接方法及系统 | |
CN111880803B (zh) | 一种应用于多平台的软件构建方法及装置 | |
CN114174983B (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 |