CN113253978A - 嵌入式软件开发方法、模型、电子设备和介质 - Google Patents
嵌入式软件开发方法、模型、电子设备和介质 Download PDFInfo
- Publication number
- CN113253978A CN113253978A CN202011641334.9A CN202011641334A CN113253978A CN 113253978 A CN113253978 A CN 113253978A CN 202011641334 A CN202011641334 A CN 202011641334A CN 113253978 A CN113253978 A CN 113253978A
- Authority
- CN
- China
- Prior art keywords
- program
- memory
- interface function
- module
- internal interface
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种嵌入式软件开发方法、模型、电子设备和介质。本申请中嵌入式软件开发方法包括:将嵌入式软件划分为多个功能模块,所述多个功能模块包括初始化模块、驱动模块和业务程序模块三种类型;对所述多个功能模块分别进行软件开发操作,所述每个功能模块独立创建工程;每个所述功能模块的程序提供内部接口函数,所述内部接口函数的指针存储于在预设字段内存地址,以使所述其他功能模块根据所述内部接口函数的指针调用内部接口函数,实现所述多个功能模块之间的通信。
Description
技术领域
本发明涉及嵌入式软件技术领域,尤其是涉及一种嵌入式软件开发方法、模型、电子设备和介质。
背景技术
对于小型的嵌入式软件,一般对应功能简单的微控制单元(MicrocontrollerUnit,MCU),仅需一名工程师开发维护;对于中型的嵌入式软件,一般对应中等复杂度的中央处理器(Central Processing Unit,CPU),一名工程师难以应对,此时就需要二名或以上工程师开发维护;二人协作相对简单,各负责一半功能,有疑点二人及时沟通也无大碍,遇有重大问题二人同时面对解决也不难。
但对于较大型的嵌入式软件,一般对应高复杂度的CPU,此时必定需要多名工程师共同开发和维护,多人协作的软件开发,可使用嵌入式操作系统,基于平台级别的嵌入式操作系统进行软件开发会便利很多,但往往忽略了实时性的问题;使用嵌入式操作系统的软件开发方法无法满足设备运行的实时性和快速性需求高的应用场景。
发明内容
本申请提供了一种嵌入式软件开发方法、模型、电子设备和介质。
第一方面,提供了一种嵌入式软件开发方法,包括:
将嵌入式软件划分为多个功能模块,所述多个功能模块包括初始化模块、驱动模块和业务程序模块三种类型;
对所述多个功能模块分别进行软件开发操作,所述每个功能模块独立创建工程;每个所述功能模块的程序提供内部接口函数,所述内部接口函数的指针存储于在预设字段内存地址,以使所述其他功能模块根据所述内部接口函数的指针调用内部接口函数,实现所述多个功能模块之间的通信。
在一种可选的实施方式中,所述初始化模块包括Boot程序,所述驱动模块包括全局管理和驱动程序,所述业务程序模块包括至少一个业务程序。
在一种可选的实施方式中,所述全局管理和驱动程序包括:主调程序和驱动程序;
所述主调程序用于调用各个所述业务程序;
所述驱动程序包括:GPIO、定时器、PWM、输入捕获、ADC、DAC、UART、SPI、USB、CAN、LAN、电机驱动、换向器控制、传感器控制的驱动程序;
所述全局管理和驱动程序提供的内部接口函数包括所述驱动程序的接口函数,用于所述业务程序调用。
在一种可选的实施方式中,所述业务程序提供的内部接口函数至少包括一个主接口函数和一个初始化接口函数,所述主接口函数和所述初始化接口函数用于所述全局管理和驱动程序调用所述业务程序的功能。
在一种可选的实施方式中,所述对所述多个功能模块分别进行软件开发操作包括:
所述每个功能模块的工程根据内存分散加载文件使用内存区域,所述每个功能模块的工程所使用的所述内存区域之间不重叠。
在一种可选的实施方式中,所述Boot程序与所述全局管理和驱动程序具有全局内存访问权限;
所述每个功能模块的工程根据内存分散加载文件使用内存区域,包括:
所述全局管理和驱动程序在调用所述业务程序的内部接口函数时,向所述业务程序传递内存信息,所述内存信息包括内存首地址和内存长度;
所述业务程序根据所述内存首地址和所述内存长度获取目标内存使用。
在一种可选的实施方式中,所述方法应用于多核芯片,所述多核芯片包括多个处理单元;
所述多个处理单元中的第一处理单元用于独立维护一个工程;
所述多个处理单元中的第二处理单元用于维护各个所述业务程序对应的工程。
第二方面,提供了一种嵌入式软件开发模型,包括功能模块:初始化模块、驱动模块和业务程序模块,其中:
所述初始化模块包括Boot程序,所述驱动模块包括全局管理和驱动程序,所述业务程序模块包括至少一个业务程序;
每个所述功能模块对应于在软件开发中创建的一个独立工程;所述每个功能模块的程序提供内部接口函数,所述内部接口函数的指针存储于在预设字段内存地址,以使所述其他功能模块根据所述内部接口函数的指针调用内部接口函数,实现所述多个功能模块之间的通信。
第三方面,提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如第一方面及其任一种可能的实现方式的步骤。
第四方面,提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如上述第一方面及其任一种可能的实现方式的步骤。
本申请通过将嵌入式软件划分为多个功能模块,所述多个功能模块包括初始化模块、驱动模块和业务程序模块三种类型;对所述多个功能模块分别进行软件开发操作,所述每个功能模块独立创建工程;每个所述功能模块的程序提供内部接口函数,所述内部接口函数的指针存储于在预设字段内存地址,以使所述其他功能模块根据所述内部接口函数的指针调用内部接口函数,实现所述多个功能模块之间的通信,将嵌入式软件划分为多个功能模块,可看作多个小型嵌入式软件,独立建立工程开发,通过配置的内部函数接口实现各模块之间的通信,不需要采用操作系统平台即可以实现分工协作开发,提高了大型嵌入式软件开发的整体效率,降低了后续维护难度,满足设备运行的实时性和快速性需求。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1为本申请实施例提供的一种嵌入式软件开发方法的流程示意图;
图2为本申请实施例提供的一种通信接口设置示意图;
图3为本申请实施例提供的一种嵌入式软件开发模型的结构示意图;
图4为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面结合本申请实施例中的附图对本申请实施例进行描述。
请参阅图1,图1是本申请实施例提供的一种嵌入式软件开发方法的流程示意图,如图1所示,该方法可包括:
101、将嵌入式软件划分为多个功能模块,上述多个功能模块包括初始化模块、驱动模块和业务程序模块三种类型。
嵌入式软件与嵌入式系统是密不可分的,嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序4个部分组成,用于实现对其他设备的控制、监视或管理等功能。嵌入式软件就是基于嵌入式系统设计的软件,它也是计算机软件的一种,同样由程序及其文档组成,是嵌入式系统的重要组成部分。本申请实施例中把在一个CPU里面运行的程序称为一个嵌入式软件;对于高复杂度,需要多人协作开发完成的软件,可称为大型嵌入式软件。本申请实施例对CPU类型不做限制,比如STM32F7。
不同于通用计算机和工作站上的软件开发工程,一个嵌入式软件的开发过程具有很多特点和不确定性。其中最重要的一点是软件跟硬件的紧密耦合特性。由于嵌入式系统的灵活性和多样性,这样就给软件设计人员带来了极大地困难:第一,在软件设计过程中过多地考虑硬件,给开发和调试都带来了很多不便;第二,如果所有的软件工作都需要在硬件平台就绪之后进行,自然就延长了整个的系统开发周期。
本申请实施例中,上述嵌入式软件可以称为主控程序,将一个大型嵌入式软件划分为三类功能模块,包括初始化模块、驱动模块和业务程序模块。其中,每种功能模块分配对应内存,存储相应的程序。
在一种实施方式中,上述初始化模块包括Boot程序(L1),上述驱动模块包括全局管理和驱动程序(L2),上述业务程序模块包括至少一个业务程序(L3)。如果业务程序比较复杂,可以设计多个业务程序,各个业务程序分别存储在内存的不同区域。
具体的,上述Boot程序,主要用于引导和更新全局管理和驱动程序、业务程序等等;Boot程序功能比较单一,仅作最简单的功能,就是用来升级后续程序;Boot程序一般在项目前期开发完毕后,后期就不需要维护了。上述全局管理和驱动程序主要负责实现CPU底层各类功能的驱动程序,调用各个业务程序,以及对CPU作总体管理。上述业务程序可以有多个,是在整个主控软件里面需要实现的业务功能,可以根据需要进行设置。
102、对上述多个功能模块分别进行软件开发操作,上述每个功能模块独立创建工程;每个上述功能模块的程序提供内部接口函数,上述内部接口函数的指针存储于在预设字段内存地址,以使上述其他功能模块根据上述内部接口函数的指针调用内部接口函数,实现上述多个功能模块之间的通信。
具体的,本申请实施例中每个功能模块可以看作一个中小型嵌入式软件,每个功能模块设置相应的内部接口函数,可以与其他功能模块进行通信,各个功能模块各自创建工程,可独立开发和维护,共同遵守通信接口协议。每个功能模块的程序可对应不同的内存地址。
本申请实施例将大型嵌入式软件划分为初始化模块、驱动模块和业务程序模块三种类型,具体可按以下架构划分:Boot程序(L1)、全局管理和驱动程序(L2)、业务程序1(A1)、业务程序2(A2)、...,举例来讲,可以参见以下表1所示的一种模块内存划分示意表:
表1
如上述表1所示,上述起始地址为指定的内存存储起始地址,对应的尺寸即为分配的内存空间大小;初始化模块包括Boot程序(L1),驱动模块包括全局管理和驱动程序(L2)、业务程序模块包括业务程序1(A1)、业务程序2(A2)...,根据上述起始地址和尺寸为各个程序分配内存,即各个程序按照指定内存有序存储在不同区域,保证程序运行的稳定性。
由于把整个主控程序划分出了若干独立的模块化程序,因此需要定义通信接口,以此来实现各模块之间的通信。本申请实施例中描述的内部通信接口可以是函数调用(如以C语言描述),即各程序都提供若干个内部接口函数,供其他程序调用。
在一种实施方式中,上述内部接口函数至少具有以下入口参数:
a、源程序模块ID,b、目的程序模块ID,c、传递数据的长度,d、传递数据的起始地址;具体可以用C语言描述如下:
int SendToMe(int SrcId,int DesId,int length,void*pData),
其中,int SrcId,int DesId,int length,void*pData分别表示上述a、b、c、d参数。
各程序将自身提供的内部接口函数的指针放在本段固定的内存地址即上述预设字段内存地址,不可随意变更,从而其他程序需要引用其内部函数接口时,可以按照约定正确地获取其接口函数地址(预设字段内存地址),从而实现正确的调用。
在一种实施方式中,上述全局管理和驱动程序可包括:主调程序和驱动程序;
上述主调程序用于调用各个业务程序;
上述驱动程序可包括:GPIO、定时器、PWM、输入捕获、ADC、DAC、UART、SPI、USB、CAN、LAN、电机驱动、换向器控制、传感器控制的驱动程序等等;
上述全局管理和驱动程序提供的内部接口函数可以包括上述驱动程序的接口函数。其中,全局管理和驱动程序可仅负责实现驱动程序,而无需负责驱动程序所关联的业务,同时提供前述各类驱动程序的接口,供业务程序调用。
在一种可选的实施方式中,上述业务程序提供的内部接口函数至少包括一个主接口函数和一个初始化接口函数,上述主接口函数和上述初始化接口函数用于上述全局管理和驱动程序调用上述业务程序的功能。
上述业务程序是在整个主控软件里需要实现的业务功能,如果整个业务功能较为复杂,可以按需细分为多个业务程序,比如包括业务程序A1、A2、...。在本申请实施例中,业务程序开发者可以不关注驱动实现,不需要对CPU有深刻理解,通过模块划分,各部分开发要求更明确,可以对各部分程序进行针对性的开发。
图2为本申请实施例提供的的一种通信接口设置示意图。如图2所示,大型嵌入式软件划分为Boot程序(L1)、全局管理和驱动程序(L2),和两个业务程序(A1、A2)。其中例举了L2程序和A1、A2程序所提供的内部接口类型,以及对应的接口函数。此处仅作示意,本申请实施例对内部接口函数的数量、类型和具体函数不做限制。
其中,L2程序实现了整个嵌入式软件的主调函数,该主调函数具体可以表示为:
可以理解为,在应用中程序整体运行的流程为:在设备上电复位后,先跳转到L1程序,即Boot程序运行若干秒后,若无升级请求,则跳转到L2程序运行,L2程序通过主调函数启动和运行整个大型嵌入式软件。
在一种可选的实施方式中,上述对上述多个功能模块分别进行软件开发操作包括:
51、上述每个功能模块的工程根据内存分散加载文件使用内存区域,上述每个功能模块的工程所使用的上述内存区域之间不重叠。
具体的,在同一CPU中,存储器是共享的,因为前述各模块各自独立创建工程,且L2程序和各业务程序是同时运行的,涉及到内存同时访问的问题,为了解决此类问题,可以预先设置内存分散加载文件,使各独立工程使用内存分散加载文件,即各工程使用独立的内存区域,相互之间不重叠使用。
在一种可选的实施方式中,上述Boot程序与上述全局管理和驱动程序具有全局内存访问权限;
上述步骤51可包括:
上述全局管理和驱动程序在调用上述业务程序的内部接口函数时,向上述业务程序传递内存信息,上述内存信息包括内存首地址和内存长度;
上述业务程序根据上述内存首地址和上述内存长度获取目标内存使用。
本申请实施例中可以约定:仅L1和L2程序具有全局内存访问权限,即可以用全局内存;各业务程序不定义全局变量;
L2程序在调用各业务程序的内部接口函数时,可以分别传递一个内存首地址和内存长度给各个业务程序,各业务程序以此获得内存使用。可以理解为,在L2程序定义N个数组,传递给N个业务程序使用。
本申请实施例中为了描述方便,涉及特定的CPU、特定的内存地址,对此并非本专利的限定,即本申请实施例中所描述的嵌入式软件开发架构和方法,不限于前述的CPU型号、内存大小、业务功能划分等等。
在一种实施方式中,上述方法可应用于多核芯片,上述多核芯片包括多个处理单元;
上述多个处理单元中的第一处理单元用于独立维护一个工程;
上述多个处理单元中的第二处理单元用于维护各个上述业务程序对应的工程。
本申请实施例提供一种大型嵌入式软件的开发架构和方法,通过特定的模块划分和接口调用,对多人协作开发作出清晰的边界定义,以防出现多人协作目标不统一、进度不统一导致的问题;可以提高大型嵌入式软件开发的工作效率,减少后期维护难度。
一般的大型嵌入式软件可带有嵌入式操作系统,基于平台级别的开发较为便利,但基于操作系统的开发,往往忽略了实时性的问题;对于实时性、快速性要求高的应用场景,嵌入式操作系统却不合适,比如在金融设备领域的嵌入式软件,需要兼有实时性和快速性要求。
而本申请实施例中的嵌入式软件开发方法适用于金融领域的大型嵌入式软件开发,可以不采用操作系统,对裸跑的大型嵌入式软件实现分工协作开发,满足整个金融设备运行的实时性和快速性需求。
如前述实施例所述,本申请实施例中的嵌入式软件开发方法可以基于单核芯片实现。随着金融设备的逐步发展,用户对金融设备的快速性普遍期待更高的响应度,因此基于不同的硬件平台,可有不同的实施方法。
金融设备领域的实时性需求,激发出硬件平台的多样性。该嵌入式软件开发方法还可应用于包含多个处理单元的多核芯片,上述处理单元可以包括处理内核如CPU,还可包括协处理器(Control Law Accelerator,CLA)、可编程逻辑器件(Field ProgrammableGate Array,FPGA)等,此处不做限制。
在一种具体的实施方式中,可以采用DSP处理器实现本申请实施例中的方法。DSP处理器是一种高速率的MCU,一般集成了2个CPU核和2个CLA,其中CLA1从属CPU1,CLA2从属CPU2。
具体的,本申请实施例中对于双核+2个CLA的处理器,可以用CLA对金融设备的促动器作基本控制:如电机驱动、换向器驱动、传感器采样等,各CLA按需各自负责部分功能;用CPU1实现对芯片外部的所有通信基础、对CLA1的触发控制和接收CPU2的通信请求;用CPU2实现各业务逻辑功能和对CLA2的触发控制。根据本申请实施例提供的方法,可以将各个不同的业务功能划分为N个功能模块,各自开发和维护,存储在不同的内存区域。如此,根据芯片的固有属性,CPU1、CLA1、CLA2可各自独立维护一个工程,共同遵守相互之间的通信定义;CPU2按业务功能划分若干个工程,具体可通过前述方法实施,此处不再赘述。
在另一种具体的实施方式中,可以采用SoC芯片实现本申请实施例中的方法。SoC芯片是一种集成电路的芯片,集成了CPU核和FPGA,一般包含2个CPU核和1个FPGA。
具体的,本申请实施例中对于双核+FPGA的芯片,也支持上述方法的实施。具体的,可以用FPGA实现对金融设备的促动器的基本控制,FPGA能够并行完成对速度、精度要求高的促动器作到精准控制;而用CPU1实现对芯片外部的所有通信基础、对内部FPGA的触发控制和接收CPU2的通信请求;用CPU2实现各业务逻辑功能。根据本申请实施例提供的方法,可以将各个不同的业务功能划分为N个功能模块,各自开发和维护,存储在不同的内存区域。如此,根据SoC芯片的固有属性,CPU1和FPGA可各自独立维护一个工程,CPU2按需划分各自独立的N个工程。
其中,需要指出的是:对于上述具体应用场景所描述的两类芯片,CPU1和CPU2并不特指,CLA1和CLA2也不特指;即对于多核芯片,没有从属关系的内核,本申请实施例对其功能划分不做限制;没有从属关系的协处理器之间,本申请实施例对其功能划分不做限制。
本申请实施例的嵌入式软件开发方法可以应用于金融设备领域,提供了一种界限较为清晰的软件开发协作方法,结合不同的芯片或处理器灵活实施,可以解决在金融设备领域中多人共同维护一套工程出现进度不同步、代码不统一的问题,各功能模块创建独立的工程,耦合性低,模块程序之间按接口协议进行通信,共同协作完成大型嵌入式软件的总体功能;提高了大型嵌入式软件开发的整体效率,降低了后续维护难度。
基于上述嵌入式软件开发方法实施例的描述,本申请实施例还公开了一种嵌入式软件开发模型。请参见图3所示的一种嵌入式软件开发模型的结构示意图,其中嵌入式软件开发模型300包括功能模块:初始化模块310、驱动模块320和业务程序模块330,其中:
所述初始化模块310包括Boot程序,所述驱动模块320包括全局管理和驱动程序,所述业务程序模块330包括至少一个业务程序;
其中,每个所述功能模块对应于在软件开发中创建的一个独立工程;所述每个功能模块的程序提供内部接口函数,所述内部接口函数的指针存储于在预设字段内存地址,以使所述其他功能模块根据所述内部接口函数的指针调用内部接口函数,实现所述多个功能模块之间的通信。
根据本申请的一个实施例,图1所示的方法所涉及的各个步骤均可以是由图3所示的嵌入式软件开发模型300中的各个模块执行的,此处不再赘述。
基于上述方法实施例的描述,本申请实施例还提供一种电子设备。请参见图4,该电子设备400至少包括处理器401、输入设备402、输出设备403以及计算机存储介质404。其中,电子设备内的处理器401、输入设备402、输出设备403以及计算机存储介质404可通过总线或其他方式连接。
计算机存储介质404可以存储在电子设备的存储器中,上述计算机存储介质404用于存储计算机程序,上述计算机程序包括程序指令,上述处理器401用于执行上述计算机存储介质404存储的程序指令。处理器401(或称CPU(Central Processing Unit,中央处理器))是电子设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能;在一个实施例中,本申请实施例上述的处理器401可以用于进行一系列的处理,包括如图2所示实施例中方法等等。
本申请实施例还提供了一种计算机存储介质(Memory),上述计算机存储介质是电子设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括电子设备中的内置存储介质,当然也可以包括电子设备所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了电子设备的操作系统。并且,在该存储空间中还存放了适于被处理器401加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。
在一个实施例中,可由处理器401加载并执行计算机存储介质中存放的一条或多条指令,以实现上述实施例中的相应步骤;具体实现中,计算机存储介质中的一条或多条指令可以由处理器401加载并执行图2中方法的任意步骤,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所显示或讨论的相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者通过该计算机可读存储介质进行传输。该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是只读存储器(read-onlymemory,ROM),或随机存储存储器(random access memory,RAM),或磁性介质,例如,软盘、硬盘、磁带、磁碟、或光介质,例如,数字通用光盘(digital versatile disc,DVD)、或者半导体介质,例如,固态硬盘(solid state disk,SSD)等。
Claims (10)
1.一种嵌入式软件开发方法,其特征在于,包括:
将嵌入式软件划分为多个功能模块,所述多个功能模块包括初始化模块、驱动模块和业务程序模块三种类型;
对所述多个功能模块分别进行软件开发操作,所述每个功能模块独立创建工程;每个所述功能模块的程序提供内部接口函数,所述内部接口函数的指针存储于在预设字段内存地址,以使所述其他功能模块根据所述内部接口函数的指针调用内部接口函数,实现所述多个功能模块之间的通信。
2.根据权利要求1所述的方法,其特征在于,所述初始化模块包括Boot程序,所述驱动模块包括全局管理和驱动程序,所述业务程序模块包括至少一个业务程序。
3.根据权利要求2所述的方法,其特征在于,所述全局管理和驱动程序包括:主调程序和驱动程序;
所述主调程序用于调用各个所述业务程序;
所述驱动程序包括:GPIO、定时器、PWM、输入捕获、ADC、DAC、UART、SPI、USB、CAN、LAN、电机驱动、换向器控制、传感器控制的驱动程序;
所述全局管理和驱动程序提供的内部接口函数包括所述驱动程序的接口函数,用于所述业务程序调用。
4.根据权利要求3所述的方法,其特征在于,所述业务程序提供的内部接口函数至少包括一个主接口函数和一个初始化接口函数,所述主接口函数和所述初始化接口函数用于所述全局管理和驱动程序调用所述业务程序的功能。
5.根据权利要求2所述的方法,其特征在于,所述对所述多个功能模块分别进行软件开发操作包括:
所述每个功能模块的工程根据内存分散加载文件使用内存区域,所述每个功能模块的工程所使用的所述内存区域之间不重叠。
6.根据权利要求5所述的方法,其特征在于,所述Boot程序与所述全局管理和驱动程序具有全局内存访问权限;
所述每个功能模块的工程根据内存分散加载文件使用内存区域,包括:
所述全局管理和驱动程序在调用所述业务程序的内部接口函数时,向所述业务程序传递内存信息,所述内存信息包括内存首地址和内存长度;
所述业务程序根据所述内存首地址和所述内存长度获取目标内存使用。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述方法应用于多核芯片,所述多核芯片包括多个处理单元;
所述多个处理单元中的第一处理单元用于独立维护一个工程;
所述多个处理单元中的第二处理单元用于维护各个所述业务程序对应的工程。
8.一种嵌入式软件开发模型,其特征在于,包括功能模块:初始化模块、驱动模块和业务程序模块,其中:
所述初始化模块包括Boot程序,所述驱动模块包括全局管理和驱动程序,所述业务程序模块包括至少一个业务程序;
每个所述功能模块对应于在软件开发中创建的一个独立工程;所述每个功能模块的程序提供内部接口函数,所述内部接口函数的指针存储于在预设字段内存地址,以使所述其他功能模块根据所述内部接口函数的指针调用内部接口函数,实现所述多个功能模块之间的通信。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述的嵌入式软件开发方法的步骤。
10.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述的嵌入式软件开发方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011641334.9A CN113253978A (zh) | 2020-12-31 | 2020-12-31 | 嵌入式软件开发方法、模型、电子设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011641334.9A CN113253978A (zh) | 2020-12-31 | 2020-12-31 | 嵌入式软件开发方法、模型、电子设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113253978A true CN113253978A (zh) | 2021-08-13 |
Family
ID=77180714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011641334.9A Pending CN113253978A (zh) | 2020-12-31 | 2020-12-31 | 嵌入式软件开发方法、模型、电子设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113253978A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113765935A (zh) * | 2021-09-17 | 2021-12-07 | 展讯通信(深圳)有限公司 | 通信方法及装置、可读存储介质、应用处理器、终端 |
CN116431107A (zh) * | 2023-03-14 | 2023-07-14 | 芜湖市桀蒲网络科技有限公司 | 一种基于大数据的软件模块划分方法及系统 |
-
2020
- 2020-12-31 CN CN202011641334.9A patent/CN113253978A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113765935A (zh) * | 2021-09-17 | 2021-12-07 | 展讯通信(深圳)有限公司 | 通信方法及装置、可读存储介质、应用处理器、终端 |
CN113765935B (zh) * | 2021-09-17 | 2023-09-12 | 展讯通信(深圳)有限公司 | 通信方法及装置、可读存储介质、应用处理器、终端 |
CN116431107A (zh) * | 2023-03-14 | 2023-07-14 | 芜湖市桀蒲网络科技有限公司 | 一种基于大数据的软件模块划分方法及系统 |
CN116431107B (zh) * | 2023-03-14 | 2023-12-29 | 芜湖市桀蒲网络科技有限公司 | 一种基于大数据的软件模块划分方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106445576B (zh) | 主机板及其计算机实现方法及非暂态计算机可读储存装置 | |
RU2639693C1 (ru) | Способ обработки ресурса, операционная система и устройство | |
AU734920B2 (en) | Modifiable partition boot record for a computer memory device | |
US8185901B2 (en) | Parsing an application to find serial and parallel data segments to minimize migration overhead between serial and parallel compute nodes | |
US20150356049A1 (en) | Assigning processors to memory mapped configuration | |
US11003429B1 (en) | Compile-time scheduling | |
US10761822B1 (en) | Synchronization of computation engines with non-blocking instructions | |
CN107957965B (zh) | 服务质量序数修改 | |
CN103645945A (zh) | 一种虚拟网卡的自动探测及驱动加载方法 | |
CN113253978A (zh) | 嵌入式软件开发方法、模型、电子设备和介质 | |
US11175919B1 (en) | Synchronization of concurrent computation engines | |
CN114398172A (zh) | 资源配置方法、装置、电子设备及计算机可读存储介质 | |
CN103842980B (zh) | 用于协议中立织物的方法、系统和装置 | |
CN113687868A (zh) | 设备固件启动方法、装置及电子设备 | |
US7484083B1 (en) | Method, apparatus, and computer-readable medium for utilizing BIOS boot specification compliant devices within an extensible firmware interface environment | |
US9734103B2 (en) | Systems and methods for transforming a central processing unit (CPU) socket into a memory and/or input/output (I/O) expander | |
CN108459906B (zh) | 一种vcpu线程的调度方法及装置 | |
US7831803B2 (en) | Executing multiple instructions multiple date (‘MIMD’) programs on a single instruction multiple data (‘SIMD’) machine | |
EP3633507B1 (en) | Technologies for secure and efficient native code invocation for firmware services | |
US10922146B1 (en) | Synchronization of concurrent computation engines | |
CN102193804B (zh) | 一种单板驱动的加载方法和通信设备 | |
EP2817714B1 (en) | Hiding logical processors from an operating system on a computer | |
CN105094870A (zh) | 64位Linux操作系统兼容32位应用软件的方法 | |
CN104714843B (zh) | 多内核操作系统实例支持多处理器的方法及装置 | |
US20130173901A1 (en) | Multi-processor computer systems and methods |
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 |