CN117688017A - 一种适配autosar标准的保护区地址自动更新方法及装置 - Google Patents
一种适配autosar标准的保护区地址自动更新方法及装置 Download PDFInfo
- Publication number
- CN117688017A CN117688017A CN202311522150.4A CN202311522150A CN117688017A CN 117688017 A CN117688017 A CN 117688017A CN 202311522150 A CN202311522150 A CN 202311522150A CN 117688017 A CN117688017 A CN 117688017A
- Authority
- CN
- China
- Prior art keywords
- operating system
- address
- system application
- code
- memory
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000012545 processing Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 20
- 238000003860 storage Methods 0.000 claims description 20
- 230000002159 abnormal effect Effects 0.000 claims description 13
- 238000013507 mapping Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 10
- 238000005192 partition Methods 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 4
- 230000006399 behavior Effects 0.000 claims description 3
- 238000011084 recovery Methods 0.000 claims description 3
- 239000000284 extract Substances 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 9
- 230000007246 mechanism Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 238000000638 solvent extraction Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供一种适配AUTOSAR标准的保护区地址自动更新方法及装置,包括:当调度实体时,获取下一个执行体所属的操作系统应用程序的唯一标识;根据唯一标识,判断下一个执行体与当前执行体是否属于同一个操作系统应用;若不属于同一个操作系统应用,根据唯一标识获取下一个执行体所属的操作系统应用的可信程度;若下一个执行体所属的操作系统应用的可信程度为非可信,或者下一个执行体所属的操作系统应用的可信程度为可信,且其处于受保护的可信状态时,采用动态地址获取方式获取目标保护区的地址,根据目标保护区的地址进行保护区的切换,并更新操作系统应用程序相应的保护集。本发明提供的方法能够动态获取保护区地址,灵活性高,开发效率高。
Description
技术领域
本发明涉及车辆电子技术领域,尤其涉及一种适配AUTOSAR标准的保护区地址自动更新方法及装置。
背景技术
汽车开放系统架构(AUTomotive Open SystemArchitecture,AUTOSAR)致力于为汽车工业开发一个开放的、标准化的软件架构。AUTOSAR架构有利于车辆电子系统软件的交换与更新,并为高效管理愈来愈复杂的车辆电子、软件系统提供了基础。此外,AUTOSAR在确保产品及服务质量的同时,提高了成本效率。目前已经有大量汽车搭载了符合AUTOSAR标准的汽车电子控制单元(Electronic Control Unit,ECU),AUTOSAR已经成为未来汽车电子架构的重要发展方向。
如图1所示,为AUTOSAR的分层结构示意图。汽车嵌入式系统软件自上而下分别为应用软件层(Application Software Layer,ASW)、运行时环境(Runtime Environment,RTE)、基础软件层(Basic Software Layer,BSW)和微控制器(Microcontroller)。每层保持独立性,每一层只能调用下一层的接口,并为其上一层提供接口。其中,基础软件层BSW又可分别四层,即服务层(Servives Layer)、ECU抽象层(ECUAbstraction Layer)、微控制器抽象层(MicrocontrollerAbstraction Layer,MACL)和复杂驱动(Complex Drivers)。其中,服务层提供操作系统功能、车辆网络通信及管理服务、存储管理(NVRAM管理)等。
AUTOSAR OS(Operating System,操作系统)是整个AUTOSAR框架中重要的组成部分,为实时应用提供了所有基本服务,包括中断处理、调度、系统时间和时钟同步、本地消息处理、以及错误检测机制。所有服务都隐藏在良好定义的应用程序编程接口(ApplicationProgramming Interface,API)之后,应用与OS和通信层的连接只通过API。
如图2所示,AUTOSAR OS包含6大基础对象:计数器(Counter)、警报(Alarm)、调度表(Schedule Table)、任务(Task)、中断(ISRs)和资源(Resource)。这6个基本对象必须归属于一个操作系统应用(OS Application),便于理解的,可以认为OS Application是上述6个基本对象的容器。归属于同一个OS Application的基本对象可以互相访问,来自其他OSApplication的基本对象则需要通过配置来限制性访问。
在AUTOSAR标准中,提出了4种可伸缩类型(Scalability Class,SC)用于适配不同复杂度和功能的软件,分别为SC1、SC2、SC3和SC4。其中SC3和SC4明确提出了存储保护的要求,用于保障车载嵌入式操作系统和应用的内存安全。因此,符合AUTOSAR要求的操作系统存储保护机制成为保障AUTOSAR OS安全运行的重要环节。
由于AUTOSAR软件规范并没有在存储保护机制相关程序的实现方面做出较为具体的规范,因此不同厂商的保护机制略有不同。现有的存储保护机制是通过在保护机制的源代码中使用大量宏定义区手动定义不同OS Application的起始地址,在切换保护区时,通过前面定义好的宏定义进行切换。但该方案需要用户方对当前芯片内存结构和系统存储分布具有深入了解,经常出现难以定位和排查的错误。除此之外,如果内存结构发生改变,需要重新手动定位相应的地址并逐条进行修改,极大降低了程序的灵活性和开发效率。
发明内容
鉴于此,本发明实施例提供了一种适配AUTOSAR标准的保护区地址自动更新方法及装置,以消除或改善现有技术中存在的一个或更多个缺陷,解决现有存储保护机制易出现难以定位、难以排查的错误,以及当内存结构发生改变,需要重新手动定位相应的地址并逐条进行修改,灵活性差,开发效率低的问题。
一方面,本发明提供了一种适配AUTOSAR标准的保护区地址自动更新方法,所述方法包括以下步骤:
当调度实体时,获取下一个执行体所属的操作系统应用程序的唯一标识;所述实体包括任务和中断;
根据所述唯一标识,判断下一个执行体与当前执行体是否属于同一个操作系统应用;
若不属于同一个操作系统应用,根据所述唯一标识获取下一个执行体所属的操作系统应用的可信程度;其中,所述可信程度包括可信和非可信;
若下一个执行体所属的操作系统应用的可信程度为非可信,或者下一个执行体所属的操作系统应用的可信程度为可信,且其处于受保护的可信状态时,采用动态地址获取方式获取目标保护区的地址,根据所述目标保护区的地址进行保护区的切换,并更新下一个执行体所属的操作系统应用程序相应的保护集;
其中,所述动态地址获取方式包括在链接文件中使用通配符确定所述目标保护区的地址范围,并在所述地址范围相应的开始和结尾位置使用预设符号分别设置首标记和尾标记,将所述首标记和所述尾标记以全局变量的形式引入操作系统代码中,通过获取所述全局变量的地址,动态获取所述目标保护区的地址;其中,所述链接文件由内存映射生成,包括内存布局信息;所述操作系统代码由用户前端配置信息与基础代码结合得到;所述保护集包括读、写和执行权限。
在本发明的一些实施例中,当下一个执行体所属的操作系统应用的可信程度为可信,且其不处于受保护的可信状态时,所述方法还包括:
当前执行体所属的操作系统应用的可信程度为非可信,或者当前执行体所属的操作系统应用的可信程度为可信,且其处于受保护的可信状态时,采用所述动态地址获取方式更新所述保护区地址。
在本发明的一些实施例中,所述操作系统代码由用户前端配置信息与后端代码结合得到,还包括:
在执行保护区地址自动更新方法之前,用户预先通过前端界面配置所述操作系统应用的相关信息;所述相关信息包括所述操作系统应用的可信程度,内核、任务、中断与操作系统应用的所属关系;
配置信息以格式化配置文件的形式进行存储并传输至后端代码;
所述后端代码解析所述配置文件,使用Freemarker模板引擎提取所述配置文件的内容并嵌入到用于生成目标代码的模板中,转换并生成目标代码,将所述目标代码与基础代码进行结合,生成所述操作系统代码。
在本发明的一些实施例中,所述方法还包括:
以所述操作系统应用为单位构建操作系统分区模型,将操作系统内核与所述操作系统应用之间、不同操作系统应用之间进行隔离,并基于AUTOSAR标准,将所述内存区域划分为可信区域和非可信区域;其中,所述可信区域用于存放所述操作系统内核和可信操作系统应用的信息,所述非可信区域用于存放非可信操作系统应用的信息。
在本发明的一些实施例中,所述链接文件由内存映射生成,还包括:
将内存在所述操作系统代码中通过不同的命名进行定义与区分;
通过宏定义将各内存分配的关键字转换为编译器特定的输入段划分命令;
所述编译器进行编译,并根据宏定义信息映射生成链接脚本;
根据所述链接脚本生成符合预定内存布局的可执行的链接文件。
在本发明的一些实施例中,还包括通知并处理在宏转换过程中出现的错误。
在本发明的一些实施例中,所述方法还包括:
当检测到有应用程序非法访问时,禁止访问行为并记录异常参数。
操作系统根据所述异常参数判断异常类型,根据所述异常类型调用预设函数进行处理,并反馈处理方式;
所述操作系统根据反馈的处理方式进行相应处理。
在本发明的一些实施例中,所述预设函数为ProtectionHook函数,还包括:
用户在所述ProtectionHook函数中定义错误处理策略,并根据所述错误处理策略进行处理;所述错误处理策略包括记录日志和恢复操作。
另一方面,本发明提供一种适配AUTOSAR标准的保护区地址自动更新装置,包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现如上文中提及的任意一项所述方法的步骤。
另一方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中提及的任意一项所述方法的步骤。
本发明的有益效果至少是:
本发明提供一种适配AUTOSAR标准的保护区地址自动更新方法及装置,包括:当调度实体时,获取下一个执行体所属的操作系统应用程序的唯一标识;根据唯一标识,判断下一个执行体与当前执行体是否属于同一个操作系统应用;若不属于同一个操作系统应用,根据唯一标识获取下一个执行体所属的操作系统应用的可信程度;若下一个执行体所属的操作系统应用的可信程度为非可信,或者下一个执行体所属的操作系统应用的可信程度为可信,且其处于受保护的可信状态时,采用动态地址获取方式获取目标保护区的地址,根据目标保护区的地址进行保护区的切换,并更新操作系统应用程序相应的保护集。本发明提供的方法为车载嵌入式操作系统的存储安全提供保障,同时,避免手动获取地址的繁杂操作,动态获取保护区地址,错误率低,灵活性高,开发效率高。
进一步的,相较于手动获取地址,动态的自动获取地址能够减少内存碎片,提高内存利用率;由于地址是在运行时动态获取的,因此代码可以在不同的硬件平台和系统配置下运行,无需修改内存地址,可移植性好;当内存布局发生变化时,无需修改代码中的地址,内存管理库或操作系统会负责处理内存分配和释放,维护简单;动态获取地址可以根据实际需求在运行时调整内存分配,从而实现内存资源的优化,灵活性高。
本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明一实施例中AUTOSAR的分层结构示意图。
图2为本发明一实施例中操作系统内核中操作系统应用基本对象关系示意图。
图3为本发明一实施例中适配AUTOSAR标准的保护区地址自动更新方法的步骤示意图。
图4为本发明一实施例中前端配置和代码生成的流程示意图
图5为本发明一实施例中内存分区结构示意图。
图6为本发明一实施例中内存映射关系示意图。
图7为本发明一实施例中执行体切换示意图。
图8为本发明一实施例中适配AUTOSAR标准的保护区地址自动更新方法的流程示意图。
图9为本发明一实施例中保护集设置示意图。
图10为本发明一实施例中异常处理流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
在下文中,将参考附图描述本发明的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。
这里需要强调的是,在下文中提及的各步骤标记并不是对各步骤先后顺序的限定,而应当理解为可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
为了解决现有存储保护机制易出现难以定位、难以排查的错误,以及当内存结构发生改变,需要重新手动定位相应的地址并逐条进行修改,灵活性差,开发效率低的问题,本发明提出了一种适配AUTOSAR标准的保护区地址自动更新方法,如图3所示,该方法包括以下步骤S101~S104:
步骤S101:当调度实体时,获取下一个执行体所属的操作系统应用程序的唯一标识。其中,实体包括任务和中断。
步骤S102:根据唯一标识,判断下一个执行体与当前执行体是否属于同一个操作系统应用。
步骤S103:若不属于同一个操作系统应用,根据唯一标识获取下一个执行体所属的操作系统应用的可信程度。其中,可信程度包括可信和非可信。
步骤S104:若下一个执行体所属的操作系统应用的可信程度为非可信,或者下一个执行体所属的操作系统应用的可信程度为可信,且其处于受保护的可信状态时,采用动态地址获取方式获取目标保护区的地址,根据目标保护区的地址进行保护区的切换,并更新下一个执行体所属的操作系统应用程序相应的保护集。
其中,动态地址获取方式包括在链接文件中使用通配符确定所述目标保护区的地址范围,并在地址范围相应的开始和结尾位置使用预设符号分别设置首标记和尾标记,将首标记和尾标记以全局变量的形式引入操作系统代码中,通过获取全局变量的地址,动态获取目标保护区的地址。其中,链接文件由内存映射生成,包括内存布局信息;操作系统代码由用户前端配置信息与基础代码结合得到;保护集包括读、写和执行权限。
在步骤S101之前,即执行适配AUTOSAR标准的保护区地址自动更新方法之前还包括预先进行的前端配置、代码生成和内存分区三部分。
前端配置:考虑到由于操作系统的代码复杂度较大,如果由用户直接在代码层面进行功能配置,除了会降低开发的效率外,还需要大量的成本去进行后期的运行维护,如果操作不当,还会危害整个系统的正常运行。因此,在本发明中采用前端配置的方式,结合后续代码生成,在降低用户使用门槛的同时还能够保持系统的安全性。
在一些实施例中,根据AUTOSAR标准,计数器、警报、任务等在内的一系列相关资源都是以操作系统应用(OS Application)为载体组织在一起的,因此,用户可以通过前端界面配置当前操作系统应用的相关信息,并将配置信息以格式化配置文件的形式进行存储。其中,相关信息至少包括操作系统应用的可信程度,内核、任务、中断与操作系统应用的所属关系。格式化配置文件通常是一种结构化的文本文件,它包含了用户在前端界面中进行的配置信息。该文件可以使用常见的配置文件格式,如XML、JSON或INI文件等。
示例性的,通过将配置信息存储为格式化配置文件,可以实现持久化存储,并且可以在需要时方便地读取和修改配置。这样用户可以根据需要对操作系统应用进行灵活的配置和管理,而不需要在每次启动系统时重新进行配置。同时,将配置信息存储为格式化配置文件还可以方便地进行版本控制、备份和共享,以及在不同的开发和部署环境中进行配置的重用。
代码生成:前端配置完成后,将配置文件传输至后端代码,后端代码对配置文件进行解析,使用预设模板引擎提取配置文件的内容,转换并生成目标代码,将目标代码与基础代码(已有代码)进行结合,生成操作系统代码。
模板引擎可以提供灵活的变量替换和逻辑控制功能,使生成的目标代码能够根据配置信息进行自定义。在一些实施例中,预设模板引擎为Freemarker模板引擎,通过Freemarker模板引擎,后端代码将解析得到的配置信息嵌入到用于生成目标代码的模板中,以生成目标代码。
在一些实施例中,生成的操作系统代码可以进行编译操作。编译过程会将代码翻译为计算机等处理器可执行的形式,以供运行时执行。
如图4所示,为前端配置和代码生成的流程示意图。
内存分区:在本发明中,以操作系统应用为单位构建操作系统分区模型,将操作系统内核与操作系统应用之间、不同操作系统应用之间进行隔离。在此基础上,基于背景技术提及的AUTOSAR OS SC3的存储保护要求,可以进一步地将内存区域划分为可信区域和非可信区域;其中,可信区域用于存放操作系统内核和可信操作系统应用的信息,非可信区域用于存放非可信操作系统应用的信息。如图5所示,为内存分区结构示意图。
AUTOSAR标准已经为内存映射提供了标准化机制,其中,内存部分可以在操作系统应用的代码中进行定义,通过不同的名称进行区分。进一步的,可以根据需求进行多重映射,在多重映射的过程中实现聚合,即多个起始段最终映射为一个目标端。
在一些实施例中,对于操作系统,使用Os_MemMap.h和MemMap.h进行命名映射和转换。MemMap.h文件通过宏定义实现一种机制,将各种内存分配的关键字转换为编译器特定的输入段划分命令。MemMap.h最终会映射到链接脚本上,通过指定的链接脚本生成符合预定内存布局的可执行文件。具体的,如图6所示:
将内存在操作系统代码中通过不同的命名进行定义与区分,如OS-Application1代码(xx1.h xx1.c)和OS-Application2代码(xx2.h xx2.c),每个OS-Application代码包含代码段、数据段和堆栈段。
通过宏定义将各内存分配的关键字转换为编译器特定的输入段划分命令,如应用1代码段、应用2代码段、应用1数据段、应用2数据段、应用1堆栈段和应用2堆栈段。
编译器进行编译,并根据宏定义信息映射生成链接脚本。
根据链接脚本生成符合预定内存布局的可执行的链接文件。
在一些实施例中,在进行宏转换过程中,基于MemMap.h文件实现的机制还可以通知并处理在宏转换过程中出现的错误。
基于以上前端配置、代码生成和内存分区的基础,便可以实现保护区的动态更新。
根据AUTOSAR规范,不同可信程度的操作系统应用具有不同的访问权限。保护区动态更新是在任务切换或中断调用时实现。每个任务和中断都隶属于唯一的操作系统应用,因此任务和中断之间正确的切换是保证操作系统应用之间相互隔离和转换的关键。不同的任务或者中断有可能从属于具有不同访问权限的操作系统应用,因此在进行调度与切换的过程中需要检查当前任务或者中断所属的操作系统应用,如果该操作系统应用与当前操作系统应用的权限不同,则需要在任务或者中断切换的同时也进行保护区和保护集的切换。如图7所示,为执行体切换示意图。
保护区是一段连续的地址空间,可以为其指定访问权限。保护区可以分为数据保护区和代码保护区两种类型,其中数据保护区用于指定数据访问权限,代码保护区用于指定代码访问权限,访问权限定义了保护区允许访问的类型。访问类型包括数据读(DataRead)、数据写(DataWrite)和指令获取(Instruction Fetch)。
在一些实施例中,结合AUTOSAR规范的操作系统应用权限划分,本发明将权限相同的部分放入同一个保护区内进行保护。
具体的,适配AUTOSAR标准的保护区地址自动更新方法流程如图8所示:
在步骤S101中,当调度实体时,即发生任务切换或中断调用时,操作系统会获取下一个执行体所属的操作系统应用程序的唯一标识。
在步骤S102中,根据唯一标识,判断下一个执行体与当前执行体是否属于同一个操作系统应用,若下一个执行体与当前执行体属于同一个操作系统应用,则不需要进行保护区和保护集的切换更新。
在步骤S103中,若下一个执行体与当前执行体不属于同一个操作系统应用,则根据唯一标识获取下一个执行体所属的操作系统应用的可信程度。其中,操作系统应用的可信程度包括可信和非可信两种。
在步骤S104中,若下一执行体所属的操作系统应用的可信程度为非可信,则需要进行保护区和保护集的切换更新;若下一执行体所属的操作系统应用的可信程度为可信,再判断其是否处于受保护的可信状态,即判断Trust_With_Protection==TRUE,其中,TRUE表示处于受保护的可信状态,若下一执行体所属的操作系统应用处于受保护的可信状态,则需要进行保护区和保护集的切换更新。其中,可信状态中包括有处于受保护的可信状态和完全可信状态两种。
在一些实施例中,基于步骤S101~S103,且在S104中判断得到下一个执行体所属的操作系统应用的可信程度为可信,且其不处于受保护的可信状态时,再判断当前执行体所属的操作系统应用的可信程度,若当前执行体所属的操作系统应用的可信程度为非可信,则需要进行保护区和保护集的切换更新;若当前执行体所属的操作系统应用的可信程度为可信,再判断当前执行体所属的操作系统应用是否处于受保护的可信状态,即判断Trust_With_Protection==TRUE,若处于受保护的可信状态,则需要进行保护区和保护集的切换更新,若不处于受保护的可信状态,则不需要进行保护区和保护集的切换更新。
目前广泛使用的保护区切换方式是使用C语言中的宏定义去手动规定不同保护区的范围,在进行切换时直接进行匹配。此种方法虽然简单,但是需要用户十分熟悉当前芯片的架构和地址分布,如果地址定义错误,则会给操作系统的运行造成难以估量的损失。因此,在本发明中,采用动态获取地址的方式来代替前文提到的宏定义方式,以进行保护区的切换,具体的:
动态获取地址需要对上文基于内存映射得到的链接文件进行简单改造,首先使用通配符确定目标保护区的地址范围,在此基础上,在对应区域的开始和结尾处通过预设符号(如点号)获取当前位置的方式,分别设置首标记和尾标记,首标记和尾标记最终以全局变量的形式应用到操作系统代码中,当需要进行保护区切换时,通过获取全局变量的地址,获取目标区域的起始地址,从而进行保护区的切换。使用动态获取地址的方式后,相关地址的定义、获取和使用,均能够通过前端配置、代码生成和编译器之间的相互配合自动完成动态适配。
在一些实施例中,可以在链接文件中使用PROVIDE关键字,为每一个程序段创建标志开始和结束的全局变量。在源程序中使用&符号获取对应变量的地址,然后进行使用。需要注意的是,由于不同编译器的优化逻辑不同,因此在编写链接文件时可以使用KEEP关键字来避免编译器进行优化从而造成地址获取错误。
实现保护区的切换后,相应更新下一执行体所属的操作系统应用的保护集。如图9所示,为保护集的设置示意图。保护集是一系列权限的集合,包括读、写和执行权限。在任意给定时刻,在所有的保护集中有且仅有一个是生效的,当前运行的任务或者中断服务程序会根据当前生效的保护集进行合法性检查。若要实现存储保护功能,需要对不同类型的操作系统应用分配不同权限的保护集,保护集也会随着任务或中断的切换进行动态调整。
在一些实施例中,本发明提供的适配AUTOSAR标准的保护区地址自动更新方法还包括访问控制和异常处理功能。
根据背景技术提及的AUTOSAR OS SC3存储保护要求,可信和非可信两种类型的操作系统应用对于不同的内存空间的访问权限也有所差异。
在一些实施例中,当检测到有应用程序非法访问时,如试图越界访问非法地址时,存储保护机制会禁止其访问行为,并记录下当前发生的异常参数,如错误类型等信息。将异常参数传输给操作系统,操作系统根据异常参数判断异常类型,进入相应的处理行动Trap中。在处理行动中,根据异常类型,调用预设函数进行处理,并反馈处理方式,以免造成更大的损失。具体的异常处理流程如图10所示。
在一些实施例中,预设函数选用ProtectionHook函数,用户可以在ProtectionHook函数中定义具体的错误处理策略,以避免造成更大损失。其中,错误处理策略可以包括记录日志、恢复操作等处理。
AUTOSAR OS关于错误类型有明确的定义和说明,具体内容如表1所示。
表1
在一些实施例中,在程序尝试非法访问时会触发异常机制,当异常机制传入的参数为E_OS_PROTECTION_MEMORY时,说明当前异常类型为存储保护异常。同时,还可以通过异常机制的应用程序编程接口API获取操作系统内核ID、应用ID、中断ID或任务ID、Trap数据等信息。
在一些实施例中,ProtectionHook函数是系统提供给用户配置的错误处理决策,该函数能够返回用户配置的错误处理代码,要求操作系统接下来的错误处理方式。该函数执行完成后,操作系统能够根据其返回值来进一步做出相应的处理。其中,有效的处理代码及说明如表2所示。
表2
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现适配AUTOSAR标准的保护区地址自动更新方法的步骤。
与上述方法相应地,本发明还提供了一种设备,该设备包括计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该设备实现如前所述方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述边缘计算服务器部署方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(RAM)、内存、只读存储器(ROM)、EPROM、EEPROM、寄存器、软盘、硬盘、可移动存储盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
综上所述,本发明提供一种适配AUTOSAR标准的保护区地址自动更新方法及装置,包括:当调度实体时,获取下一个执行体所属的操作系统应用程序的唯一标识;根据唯一标识,判断下一个执行体与当前执行体是否属于同一个操作系统应用;若不属于同一个操作系统应用,根据唯一标识获取下一个执行体所属的操作系统应用的可信程度;若下一个执行体所属的操作系统应用的可信程度为非可信,或者下一个执行体所属的操作系统应用的可信程度为可信,且其处于受保护的可信状态时,采用动态地址获取方式获取目标保护区的地址,根据目标保护区的地址进行保护区的切换,并更新操作系统应用程序相应的保护集。本发明提供的方法为车载嵌入式操作系统的存储安全提供保障,同时,避免手动获取地址的繁杂操作,动态获取保护区地址,错误率低,灵活性高,开发效率高。
进一步的,相较于手动获取地址,动态的自动获取地址能够减少内存碎片,提高内存利用率;由于地址是在运行时动态获取的,因此代码可以在不同的硬件平台和系统配置下运行,无需修改内存地址,可移植性好;当内存布局发生变化时,无需修改代码中的地址,内存管理库或操作系统会负责处理内存分配和释放,维护简单;动态获取地址可以根据实际需求在运行时调整内存分配,从而实现内存资源的优化,灵活性高。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种适配AUTOSAR标准的保护区地址自动更新方法,其特征在于,所述方法包括以下步骤:
当调度实体时,获取下一个执行体所属的操作系统应用程序的唯一标识;所述实体包括任务和中断;
根据所述唯一标识,判断下一个执行体与当前执行体是否属于同一个操作系统应用;
若不属于同一个操作系统应用,根据所述唯一标识获取下一个执行体所属的操作系统应用的可信程度;其中,所述可信程度包括可信和非可信;
若下一个执行体所属的操作系统应用的可信程度为非可信,或者下一个执行体所属的操作系统应用的可信程度为可信,且其处于受保护的可信状态时,采用动态地址获取方式获取目标保护区的地址,根据所述目标保护区的地址进行保护区的切换,并更新下一个执行体所属的操作系统应用程序相应的保护集;
其中,所述动态地址获取方式包括在链接文件中使用通配符确定所述目标保护区的地址范围,并在所述地址范围相应的开始和结尾位置使用预设符号分别设置首标记和尾标记,将所述首标记和所述尾标记以全局变量的形式引入操作系统代码中,通过获取所述全局变量的地址,动态获取所述目标保护区的地址;其中,所述链接文件由内存映射生成,包括内存布局信息;所述操作系统代码由用户前端配置信息与基础代码结合得到;所述保护集包括读、写和执行权限。
2.根据权利要求1所述的适配AUTOSAR标准的保护区地址自动更新方法,其特征在于,当下一个执行体所属的操作系统应用的可信程度为可信,且其不处于受保护的可信状态时,所述方法还包括:
当前执行体所属的操作系统应用的可信程度为非可信,或者当前执行体所属的操作系统应用的可信程度为可信,且其处于受保护的可信状态时,采用所述动态地址获取方式更新所述保护区地址。
3.根据权利要求1所述的适配AUTOSAR标准的保护区地址自动更新方法,其特征在于,所述操作系统代码由用户前端配置信息与后端代码结合得到,还包括:
在执行保护区地址自动更新方法之前,用户预先通过前端界面配置所述操作系统应用的相关信息;所述相关信息包括所述操作系统应用的可信程度,内核、任务、中断与操作系统应用的所属关系;
配置信息以格式化配置文件的形式进行存储并传输至后端代码;
所述后端代码解析所述配置文件,使用Freemarker模板引擎提取所述配置文件的内容并嵌入到用于生成目标代码的模板中,转换并生成目标代码,将所述目标代码与基础代码进行结合,生成所述操作系统代码。
4.根据权利要求1所述的适配AUTOSAR标准的保护区地址自动更新方法,其特征在于,所述方法还包括:
以所述操作系统应用为单位构建操作系统分区模型,将操作系统内核与所述操作系统应用之间、不同操作系统应用之间进行隔离,并基于AUTOSAR标准,将所述内存区域划分为可信区域和非可信区域;其中,所述可信区域用于存放所述操作系统内核和可信操作系统应用的信息,所述非可信区域用于存放非可信操作系统应用的信息。
5.根据权利要求4所述的适配AUTOSAR标准的保护区地址自动更新方法,其特征在于,所述链接文件由内存映射生成,还包括:
将内存在所述操作系统代码中通过不同的命名进行定义与区分;
通过宏定义将各内存分配的关键字转换为编译器特定的输入段划分命令;
所述编译器进行编译,并根据宏定义信息映射生成链接脚本;
根据所述链接脚本生成符合预定内存布局的可执行的链接文件。
6.根据权利要求5所述的适配AUTOSAR标准的保护区地址自动更新方法,其特征在于,还包括通知并处理在宏转换过程中出现的错误。
7.根据权利要求1所述的适配AUTOSAR标准的保护区地址自动更新方法,其特征在于,所述方法还包括:
当检测到有应用程序非法访问时,禁止访问行为并记录异常参数。
操作系统根据所述异常参数判断异常类型,根据所述异常类型调用预设函数进行处理,并反馈处理方式;
所述操作系统根据反馈的处理方式进行相应处理。
8.根据权利要求7所述的适配AUTOSAR标准的保护区地址自动更新方法,其特征在于,所述预设函数为ProtectionHook函数,还包括:
用户在所述ProtectionHook函数中定义错误处理策略,并根据所述错误处理策略进行处理;所述错误处理策略包括记录日志和恢复操作。
9.一种适配AUTOSAR标准的保护区地址自动更新装置,包括处理器和存储器,其特征在于,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现如权利要求1至8中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311522150.4A CN117688017B (zh) | 2023-11-15 | 2023-11-15 | 一种适配autosar标准的保护区地址自动更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311522150.4A CN117688017B (zh) | 2023-11-15 | 2023-11-15 | 一种适配autosar标准的保护区地址自动更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117688017A true CN117688017A (zh) | 2024-03-12 |
CN117688017B CN117688017B (zh) | 2024-07-05 |
Family
ID=90127524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311522150.4A Active CN117688017B (zh) | 2023-11-15 | 2023-11-15 | 一种适配autosar标准的保护区地址自动更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117688017B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440176A (zh) * | 2013-09-13 | 2013-12-11 | 北京经纬恒润科技有限公司 | 一种实时操作系统中内存的保护方法及装置 |
CN108021823A (zh) * | 2017-12-04 | 2018-05-11 | 北京元心科技有限公司 | 基于可信执行环境无痕运行应用程序的方法、装置和终端 |
JP2019049928A (ja) * | 2017-09-12 | 2019-03-28 | 日立オートモティブシステムズ株式会社 | 電子制御装置及び電子制御装置の制御方法 |
CN109947673A (zh) * | 2019-03-26 | 2019-06-28 | 北京经纬恒润科技有限公司 | 一种内存保护方法、保护装置及单片机 |
CN111400702A (zh) * | 2020-03-24 | 2020-07-10 | 上海瓶钵信息科技有限公司 | 一种虚拟化的操作系统内核保护方法 |
CN115544585A (zh) * | 2022-09-23 | 2022-12-30 | 支付宝(杭州)信息技术有限公司 | 一种动态配置安全内存的方法、设备、装置及存储介质 |
CN115826938A (zh) * | 2022-01-29 | 2023-03-21 | 宁德时代新能源科技股份有限公司 | 实时操作系统的生成、使用方法及装置、电子设备、介质 |
-
2023
- 2023-11-15 CN CN202311522150.4A patent/CN117688017B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440176A (zh) * | 2013-09-13 | 2013-12-11 | 北京经纬恒润科技有限公司 | 一种实时操作系统中内存的保护方法及装置 |
JP2019049928A (ja) * | 2017-09-12 | 2019-03-28 | 日立オートモティブシステムズ株式会社 | 電子制御装置及び電子制御装置の制御方法 |
CN108021823A (zh) * | 2017-12-04 | 2018-05-11 | 北京元心科技有限公司 | 基于可信执行环境无痕运行应用程序的方法、装置和终端 |
CN109947673A (zh) * | 2019-03-26 | 2019-06-28 | 北京经纬恒润科技有限公司 | 一种内存保护方法、保护装置及单片机 |
CN111400702A (zh) * | 2020-03-24 | 2020-07-10 | 上海瓶钵信息科技有限公司 | 一种虚拟化的操作系统内核保护方法 |
CN115826938A (zh) * | 2022-01-29 | 2023-03-21 | 宁德时代新能源科技股份有限公司 | 实时操作系统的生成、使用方法及装置、电子设备、介质 |
CN115544585A (zh) * | 2022-09-23 | 2022-12-30 | 支付宝(杭州)信息技术有限公司 | 一种动态配置安全内存的方法、设备、装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
燕立明: "汽车电子操作系统存储保护机制的设计与实现", 《中国优秀硕士学位论文全文数据库工程科技Ⅱ辑(月刊)》, no. 01, 15 January 2014 (2014-01-15) * |
Also Published As
Publication number | Publication date |
---|---|
CN117688017B (zh) | 2024-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20050120347A1 (en) | Script generation engine | |
US6139198A (en) | System and method for enabling tracing of program execution in an object-oriented system | |
US11556348B2 (en) | Bootstrapping profile-guided compilation and verification | |
US20060209328A1 (en) | Systems and methods that facilitate selective enablement of a device driver feature(s) and/or application(s) | |
US20090048993A1 (en) | Implementation of operating system securing | |
Gold et al. | KVM/370 in retrospect | |
CN114021176B (zh) | 一种SELinux动态授权的方法及系统 | |
CN117688017B (zh) | 一种适配autosar标准的保护区地址自动更新方法及装置 | |
CN107168719A (zh) | 应用程序运行方法、装置、终端及计算机可读存储介质 | |
US20080184258A1 (en) | Data processing system | |
CN108573153B (zh) | 一种车载操作系统及其使用方法 | |
CN110414218A (zh) | 内核检测方法、装置、电子设备及存储介质 | |
Gao et al. | Applying Aspect-Orientation in Designing Security Systems: A Case Study. | |
CN116521217A (zh) | 一种基于autosar工具快速配置bsw的方法、系统及储存介质 | |
US20070150729A1 (en) | Apparatus and method to limit access to selected sub-program in a software system | |
CN112596823B (zh) | 安全管控方法、装置及电子设备 | |
US20070083860A1 (en) | SKU determination mechanism and API | |
CN110569644B (zh) | 调用请求的处理、功能函数的调用方法、装置及设备 | |
CN112783573A (zh) | 多个自定义服务的SELinux策略配置系统及方法 | |
US20200050491A1 (en) | Processing system and method of executing functions | |
Goebel et al. | Performance and Freedom From Interference-a contradiction in embedded automotive multi-core applications? | |
CN116880857B (zh) | 一种跨区块链引擎的智能合约生成方法及系统 | |
Dörr et al. | Pattern-Based Information Flow Control for Safety-Critical On-Chip Systems | |
WO2023093134A1 (zh) | 系统资源分配代码的生成方法、装置、电子设备和介质 | |
WO2009083734A1 (en) | Typed application deployment |
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 |