基于制造技术

技术编号:39720438 阅读:7 留言:0更新日期:2023-12-17 23:26
本发明专利技术涉及嵌入式技术领域,尤其涉及一种基于

【技术实现步骤摘要】
基于MCU应用程序动态加载方法、设备及其介质


[0001]本专利技术涉及嵌入式
,尤其涉及一种基于
MCU
应用程序动态加载方法

设备及其介质


技术介绍

[0002]随着人工智能技术的发展,微控制器
(MCU

Microcontroller Unit)
也在不断变得更加重要

微控制器是一种门电路的集成电路,常用于控制和管理电子设备,可用于实现人工智能
(AI)
系统的复杂功能

[0003]目前,
MCU
开发的应用程序加载方法一般采用
bootloader
程序
(
引导程序
)
加载
App
的方式,由
bootlaoder
从存储系统中读取新版本
App
的二进制文件,将二进制文件写入到内部指定
Flash
空间后跳转到
App
程序入口处执行
App
程序

在该方法中,
bootloader
跳转到
App

MCU
便不再执行
bootloader
所在
flash
空间的代码,存在
flash
空间的浪费


App
代码中同时包含操作系统和应用程序,体积较大,在只更新应用程序功能的情况下仍然需要将操作系统和应用程序一并加载,实现效率低

[0004]随着嵌入式技术的发展,还将在存储资源较丰富的
MCU
上实现基于解析
elf
文件的应用程序动态加载方法,该方法中内核主机程序通过解析存储系统中
elf
格式的
App
文件,将
App
代码搬运至
RAM
中重定向后执行
App
程序

由于
App
代码在
RAM
中执行,故该方法仅适合
MPU(Microprocessor Unit
,微处理器
)
或存储资源较丰富的
MCU
,对于存在存储资源紧张的
MCU
,无法实现应用程序动态加载,适用性低


技术实现思路

[0005]本专利技术要解决的技术问题是:为了解决现有技术中
MCU
的应用程序动态加载方法存在存储资源浪费

实现效率低以及适用性低的技术问题,本专利技术提供一种基于
MCU
应用程序动态加载方法,所需存储资源少,且减少了
APP
代码尺寸,提高了
MCU
存储的空间利用率,避免了对于存在存储资源紧张的
MCU
,无法实现应用程序动态加载的问题,适用性高

[0006]本专利技术解决其技术问题所采用的技术方案是:一种基于
MCU
应用程序动态加载方法,所述方法包括:
[0007]构建
App
程序动态加载特性,生成
App
二进制文件;
[0008]通过内核主机程序动态加载所述
App
二进制文件,执行所述
APP
程序;
[0009]所述
App
程序调用所述内核主机服务函数,完成所述
App
程序的动态加载

[0010]进一步,具体地,构建
App
程序动态加载特性包括以下步骤:
[0011]S11
,使能
App
代码编译器的只读数据位置无关和读写数据位置无关特性;
[0012]S12
,使能
App
代码链接器的只读节区位置无关和读写节区位置无关特性;
[0013]S13
,移除所述
App
程序中的
OS
内核组件代码

协议栈组件代码以及
C
库组件代码;
[0014]S14
,重新定义
C
库初始化函数,定义后的
C
库初始化函数仅执行跳转至
main
函数指令;
[0015]S15
,定义所述
App
程序的入口函数,所述入口函数用以首先执行所述
App
程序读写数据加载操作,然后执行步骤
S14
中定义的
C
库初始化函数;
[0016]S16
,将步骤
S15
中定义的
App
入口函数设置为
App
代码入口;
[0017]S17
,添加所述
App
二进制文件的前导信息,前导信息包含
App
代码长度
、App
读写数据区长度以及
App
代码入口函数;
[0018]S18
,将步骤
S17
中的所述
App
二进制文件的前导信息放置在执行区域的首部;
[0019]S19
,使能编译器的
ARM/Thumb
代码互联支持特性,生成新的
App
二进制文件

[0020]进一步,具体地,在步骤编
S11
中,所述
App
代码编译器包括
C
语言编译器和汇编语言编译器

[0021]进一步,具体地,通过内核主机程序动态加载所述
App
二进制文件包括以下步骤:
[0022]S21
,启动
MCU
,运行内核主机程序,由内核主机程序从外部存储系统获取所述
App
二进制文件;
[0023]S22
,解析所述
App
二进制文件,获取所述
App
二进制文件的前导信息;
[0024]S23
,基于所述
App
二进制文件的前导信息,将所述
App
二进制文件内容写入
MCU
内部相应的
flash
空间;
[0025]S24
,基于所述
App
二进制文件的前导信息申请动态内存空间,所述动态内存空间为
App
程序的读写数据区;
[0026]S25
,将申请到的动态内存空间首地址赋值给所述
MCU

R9
寄存器;
[0027]S本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于
MCU
应用程序动态加载方法,其特征在于,所述方法包括:构建
App
程序动态加载特性,生成
App
二进制文件;通过内核主机程序动态加载所述
App
二进制文件,执行所述
APP
程序;所述
App
程序调用所述内核主机服务函数,完成所述
App
程序的动态加载
。2.
如权利要求1所述的基于
MCU
应用程序动态加载方法,其特征在于,构建
App
程序动态加载特性包括以下步骤:
S11
,使能
App
代码编译器的只读数据位置无关和读写数据位置无关特性;
S12
,使能
App
代码链接器的只读节区位置无关和读写节区位置无关特性;
S13
,移除所述
App
程序中的
OS
内核组件代码

协议栈组件代码以及
C
库组件代码;
S14
,重新定义
C
库初始化函数,定义后的
C
库初始化函数仅执行跳转至
main
函数指令;
S15
,定义所述
App
程序的入口函数,所述入口函数用以首先执行所述
App
程序读写数据加载操作,然后执行步骤
S14
中定义的
C
库初始化函数;
S16
,将步骤
S15
中定义的
App
入口函数设置为
App
代码入口;
S17
,添加所述
App
二进制文件的前导信息,前导信息包含
App
代码长度
、App
读写数据区长度以及
App
代码入口函数;
S18
,将步骤
S17
中的所述
App
二进制文件的前导信息放置在执行区域的首部;
S19
,使能编译器的
ARM/Thumb
代码互联支持特性,生成新的
App
二进制文件
。3.
如权利要求2所述的基于
MCU
应用程序动态加载方法,其特征在于,在步骤编
S11
中,所述
App
代码编译器包括
C
语言编译器和汇编语言编译器
。4.
如权利要求2所述的基于
MCU
应用程序动态加载方法,其特征在于,通过内核主机程序动态加载所述
App
二进制文件包括以下步骤:
S21
,启动
MCU
,运行内核主机程序,由内核主机程序从外部存储系统获取所述
App
二进制文件;
S22
...

【专利技术属性】
技术研发人员:朱明勋袁凤培王小松郝永亮李继云周意吴晨赵立厂谢国军刘丰祯胡文涛张一波卓敏敏张兴华陈辉周远朱前伟张亚军
申请(专利权)人:中煤科工集团常州研究院有限公司
类型:发明
国别省市:

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

1