一种基于CortexM的master-slaves软件分离编译、加载、运行方法技术

技术编号:36880011 阅读:16 留言:0更新日期:2023-03-15 21:04
本申请提供一种基于Cortex M的master

【技术实现步骤摘要】
一种基于Cortex M的master

slaves软件分离编译、加载、运行方法


[0001]本专利技术属于嵌入式软件领域,具体涉及一种基于Cortex M的master

slaves软件分离编译、加载、运行方法。

技术介绍

[0002]传统的嵌入式软件开发过程中,当多个软件开发团队共同完成一项复杂软件时,各个团队独立开发所负责的软件功能模块,最后通过软件集成,形成一个综合软件。
[0003]各个团队开发的软件功能模块,在软件开发时,当软件模块间存在互相调用时,例如软件模块A调用软件模块B的API,当不具备软件模块B时,软件模块A无法独立编译,一定程度的增加了软件开发周期。
[0004]各个团队协同开发软件,在软件集成时,可以白盒形式集成,即集成的对象是软件源代码,但不利于各团队间的商业机密保护;也可以黑盒形式集成,即集成的对象是Lib,但Lib无法直接调试,增加软件开发调试难度。

技术实现思路

[0005]本专利技术的目的是:为了有效解决Cortex M平台下,多个软件团队在软件开发、集成、调试的诸多问题,针对嵌入式软件的特点,本专利技术提供了一种基于Cortex M的master

slaves软件分离编译、加载、运行方法,可有效提高该平台下嵌入式软件模块间互操作能力,并可支撑嵌入式软件的开发、集成、调试工作。
[0006]技术方案:一种基于Cortex M的master

slaves软件分离编译、加载、运行方法,方法包括:
[0007]步骤100:根据master软件、slave软件对Flash资源需求,并为各软件留有空间余量,分别确定master软件、slave软件Flash空间;
[0008]步骤200:根据master软件、slave软件对Ram、TCM资源的需求,并为各软件留有空间余量,确定master软件、slave软件的Ram、TCM空间;
[0009]步骤300:Cortex M平台的Vector偏移地址28、32分别挂接上电加载API指针和公共API指针;
[0010]步骤400:master软件完成硬件初始化,及程序加载;
[0011]步骤500:master软件和slave软件上电初始化;
[0012]步骤600:slave软件加载,及公共API指针挂接;
[0013]步骤700:master软件根据slave公共API头文件,实例化slave软件公共API,并调用;
[0014]步骤800:slave软件根据master软件和其它slave软件的公共API头文件,实例化master软件和其它slave软件公共API,并调用。
[0015]进一步的,步骤100具体包括:
[0016]步骤101:master软件必须在Flash的偏移地址0开始,根据master软件对Flash资源的需求,并留有空间余量,为其分配Flash偏移地址0~(addr_1

1);
[0017]步骤102:各个slave软件,依次根据slave软件对Flash资源的需求,并留有对应的slave空间余量,分配Flash空间;
[0018]进一步的,步骤200具体包括:
[0019]步骤201:master软件至少在Ram、TCM中的一个存储空间中规划运行空间。
[0020]步骤202:m个slave软件分别至少在Ram、TCM中的一个存储空间中规划运行空间。
[0021]进一步的,300具体包括:
[0022]步骤301:master软件没有上电加载API,master软件Vector偏移地址28写0;master软件Vector偏移地址32挂接master公共API指针;
[0023]步骤302:slave软件的Vector偏移地址28挂接slave软件上电加载API指针;slave软件Vector偏移地址32挂接slave公共API指针。
[0024]进一步的,步骤400具体包括:
[0025]步骤401:master软件完成对Cortex M平台的CPUCore、Clock Tree、Bus的硬件初始化;
[0026]步骤402:master软件完成将存储在所述Flash空间的软件代码段和数据段,加载到所述Ram空间、TCM空间。
[0027]进一步的,步骤500具体包括:
[0028]步骤501:将master软件提供的公共API,保存到独立的Master公共API头文件中;
[0029]步骤502:将master软件提供的公共API,挂接到Vector偏移地址32上;
[0030]步骤503:master软件调用各slave软件的Vector偏移地址28上软件上电加载API指针,完成slave软件上电加载。
[0031]进一步的,步骤600包括:
[0032]步骤601:slave软件完成将存储在所述Flash空间的软件代码段和数据段,上电加载到所述Ram空间、TCM空间;
[0033]步骤602:将slave软件提供的公共API,保存到独立的slave公共API头文件中;
[0034]步骤603:将slave软件对外开发的API,挂接到Vector偏移地址32上。
[0035]进一步的,步骤700包括:
[0036]步骤701:master软件使用slave公共API头文件,将各slave软件提供的公共API实例化;
[0037]步骤702:master软件调用实例化后的slave软件公共API,完成slave软件vector跳转并执行.
[0038]进一步的,步骤800包括:
[0039]步骤801:slave软件使用master公共API头文件和其他slave公共API头文件,将master软件、其它slave软件提供的API实例化;
[0040]步骤802:slave软件调用实例化后的master软件API,完成master软件vector跳转并执行;
[0041]步骤803:slave软件调用实例化后的slave软件API,完成slave软件vector跳转并执行。
[0042]本专利技术提供一种基于Cortex M的master

slaves软件分离编译、加载、运行方法,该方法通过约束各个软件编译、运行空间,使得各个软件能独立运行、加载,互不干扰;该方法通过约束公共API调用方式,大大增强各软件之间的互操作性,方便软件调试,并且能切实保护各个软件团队间的商业机密。
附图说明
[0043]图1是本专利技术提供的master

slave软件Flash部署示意图;
[0044]图2是本专利技术提供的master

slave软件运行时RAM部署示意图;
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Cortex M的master

slaves软件分离编译、加载、运行方法,其特征在于,方法包括:步骤100:根据master软件、slave软件对Flash资源需求,并为各软件留有空间余量,分别确定master软件、slave软件Flash空间;步骤200:根据master软件、slave软件对Ram、TCM资源的需求,并为各软件留有空间余量,确定master软件、slave软件的Ram、TCM空间;步骤300:Cortex M平台的Vector偏移地址28、32分别挂接上电加载API指针和公共API指针;步骤400:master软件完成硬件初始化,及程序加载;步骤500:master软件和slave软件上电初始化;步骤600:slave软件加载,及公共API指针挂接;步骤700:master软件根据slave公共API头文件,实例化slave软件公共API,并调用;步骤800:slave软件根据master软件和其它slave软件的公共API头文件,实例化master软件和其它slave软件公共API,并调用。2.根据权利要求1所述的方法,其特征在于,步骤100具体包括:步骤101:master软件必须在Flash的偏移地址0开始,根据master软件对Flash资源的需求,并留有空间余量,为其分配Flash偏移地址0~(addr_1

1);步骤102:各个slave软件,依次根据slave软件对Flash资源的需求,并留有对应的slave空间余量,分配Flash空间。3.根据权利要求1所述的方法,其特征在于,步骤200具体包括:步骤201:master软件至少在Ram、TCM中的一个存储空间中规划运行空间。步骤202:m个slave软件分别至少在Ram、TCM中的一个存储空间中规划运行空间。4.根据权利要求1所述的方法,其特征在于,300具体包括:步骤301:master软件没有上电加载API,master软件Vector偏移地址28写0;master软件Vector偏移地址32挂接master公共API指针;步骤302:slave软件的V...

【专利技术属性】
技术研发人员:回永利刘武鲁昊鹏曹新强杨佳君秦万强王逸尘
申请(专利权)人:中国航空工业集团公司西安飞行自动控制研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1