一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种AMP系统引导和配置的方法与流程

2022-11-09 22:12:49 来源:中国专利 TAG:

一种amp系统引导和配置的方法
技术领域
1.本发明涉及嵌入式技术领域,具体涉及一种amp系统引导和配置的方法。


背景技术:

2.随着cpu芯片设计和制造的发展,cpu的性能越来越高,cpu的核心数也越来越多。对于多cpu核心,在多核处理芯片上的操作系统体系结构主要有两种:smp: (symmetric multi-processing) 对称多处理器amp: (asymmetric multi-processing) 非对称多处理器smp系统由一个操作系统管理所有cpu核心,所有处理器共享系统总线和资源,由操作系统负责任务的调度和管理。
3.amp系统是指不同的cpu运行不同的操作系统,每个系统相互独立,共享系统总线和外设。在amp系统中,各个核心如何分配,运行什么系统(或裸机),资源如何分配,都与特定的业务务求有关,因此系统复杂多变,amp系统主要用于高实时性要求或高安全性要求的场景。
4.smp系统的引导由bootload和操作系统内核负责,引导过程和引导方式比较简单,但对于amp系统,由于系统的组成复杂多变,引导和配置方式也会变得复杂。
5.常见的smp系统的启动方式同amp系统的启动流程一样,先以smp方式启动非实时性系统(如linux),非实时性系统启动后再启动其他系统。这种启动方式的启动速度慢,且无法保证实时系统的安全性,如果主操作系统崩溃,从操作系统也无法正常运行。


技术实现要素:

6.针对现有技术中的上述不足,本发明提供的一种amp系统引导和配置的方法解决了现有amp系统启动速度慢、实时系统安全性低的问题。
7.为了达到上述发明目的,本发明采用的技术方案为:提供一种amp系统引导和配置的方法,其包括以下步骤:s1、选择一个cpu核运行bootloader;s2、通过bootloader将主操作系统程序二进制镜像从非易失存储器加载到内存中;s3、通过bootloader将命令等待程序二进制镜像从非易失存储器加载到内存中;s4、通过bootloader启动一个cpu核运行主操作系统;s5、通过主操作系统根据业务需要创建业务处理线程,并创建从操作系统引导线程;s6、通过从操作系统引导线程加载和解析资源配置文件,并将从操作系统二进制镜像从非易失存储器加载至内存;s7、通过主操作系统的引导线程修改命令等待程序的内容,实现启动命令下发;s8、通过其他cpu核运行命令等待程序,使相应cpu核跳转到从操作系统的入口地
址,启动从操作系统,完成amp系统引导和配置。
8.进一步地,步骤s1的具体方法为:通过设备上电使第一个cpu核运行bootloader,使剩余cpu核处于复位或睡眠状态。
9.进一步地,步骤s4的具体方法为:通过bootloader设置一个cpu核的入口地址为主操作系统二进制镜像加载到内存的地址,使该cpu核运行主操作系统。
10.进一步地,步骤s6中资源配置文件采用toml格式且存放在非易失存储器上,记载有主操作系统的配置参数、从操作系统的引导参数,以及资源分配参数。
11.进一步地,步骤s7中命令等待程序包括:status字段,用于记录命令执行状态;当status字段的值为0时,表示无执行命令;当status字段的值为1时,表示存在待执行命令;status字段的初始值为0;cmd字段,用于记录命令码;当命令码的值为1时,表示需要启动从操作系统;当命令码的值为0时,表示无需启动从操作系统;cmd字段的初始值为0;entry字段,用于记录其他cpu核的入口地址,即从操作系统二进制镜像加载到内存的地址;参数记录字段,用于记录从操作系统启动参数。
12.进一步地,步骤s7的具体方法为:通过主操作系统的引导线程向entry字段写入入口地址、向参数记录字段写入从操作系统启动参数,将status字段的值和cmd字段的值均修改为1。
13.进一步地,步骤s8的具体方法包括以下子步骤:s8-1、通过bootloader控制除运行主操作系统的cpu核外的所有cpu核读取当前status字段的值;s8-2、判断当前status字段的值是否为1,若是则进入步骤s8-3;否则返回步骤s8-1;s8-3、通过当前entry字段获取入口地址,通过当前参数记录字段获取从操作系统启动参数,通过汇编跳转指令使相应cpu核跳转到入口地址并启动从操作系统,完成amp系统引导和配置。
14.本发明的有益效果为:1、本方法将主操作系统作为实时操作系统率先启动,将任意其他操作系统作为从操作系统。主操作系统启动后可根据业务需要,创建业务处理线程,立即开始处理实时业务。且由于主操作系统是实时系统,因此从上电到处理实时业务所用的时间很短,可在3秒内启动主操作系统,执行实时业务。
15.2、本方法在启动过程保留传统bootloader,如u-boot,bootloader除了系统引导的基本功能外,还提供调试、升级等功能,而且方便系统的移植和实现。
16.3、当从操作系统崩溃时不会影响主操作系统的运行,因此本方法的主操作系统具有很高的安全性。
17.4、本方法通过配置文件控制各个系统的资源和引导过程,可适配不同的应用场景,灵活性好。
18.5、本方法不需要增加额外的硬件,可以方便地在原smp系统硬件上应用本方法,即实现在smp系统中运行amp系统。
附图说明
19.图1为本方法的流程示意图。
具体实施方式
20.下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
21.如图1所示,该amp系统引导和配置的方法包括以下步骤:s1、选择一个cpu核运行bootloader;s2、通过bootloader将主操作系统程序二进制镜像从非易失存储器加载到内存中;s3、通过bootloader将命令等待程序二进制镜像从非易失存储器加载到内存中;s4、通过bootloader启动一个cpu核运行主操作系统;s5、通过主操作系统根据业务需要创建业务处理线程,并创建从操作系统引导线程;s6、通过从操作系统引导线程加载和解析资源配置文件,并将从操作系统二进制镜像从非易失存储器加载至内存;s7、通过主操作系统的引导线程修改命令等待程序的内容,实现启动命令下发;s8、通过其他cpu核运行命令等待程序,使相应cpu核跳转到从操作系统的入口地址,启动从操作系统,完成amp系统引导和配置。
22.步骤s1的具体方法为:通过设备上电使第一个cpu核运行bootloader,使剩余cpu核处于复位或睡眠状态。
23.步骤s4的具体方法为:通过bootloader设置一个cpu核的入口地址为主操作系统二进制镜像加载到内存的地址,使该cpu核运行主操作系统。
24.步骤s6中资源配置文件采用toml格式且存放在非易失存储器上,记载有主操作系统的配置参数、从操作系统的引导参数(如从操作系统的镜像文件名,从操作系统的启动参数),以及资源分配参数(串口,spi等分配给哪个系统)。
25.如表1所示,命令等待程序包括:status字段,用于记录命令执行状态;当status字段为idle(即值为0)时,表示无执行命令;当status字段为request(即值为1)时,表示存在待执行命令;status字段的初始值为0;cmd字段,用于记录命令码;当命令码为boot(即值为1)时,表示需要启动从操作系统;当命令码的值为0时,表示无需启动从操作系统;cmd字段的初始值为0;entry字段,用于记录其他cpu核的入口地址,即从操作系统二进制镜像加载到内存的地址;
参数记录字段(p0、p1、p2和p3),用于记录从操作系统启动参数。
26.表1步骤s7的具体方法为:通过主操作系统的引导线程向entry字段写入入口地址、向参数记录字段写入从操作系统启动参数,将status字段的值和cmd字段的值均修改为1。
27.步骤s8的具体方法包括以下子步骤:s8-1、通过bootloader控制除运行主操作系统的cpu核外的所有cpu核读取当前status字段的值;s8-2、判断当前status字段的值是否为1,若是则进入步骤s8-3;否则返回步骤s8-1;s8-3、通过当前entry字段获取入口地址,通过当前参数记录字段获取从操作系统启动参数,通过汇编跳转指令使相应cpu核跳转到入口地址并启动从操作系统,完成amp系统引导和配置。
28.在具体实施过程中,本方法涉及的amp系统包含cpu、内存和非容失存储器,cpu至少有2个核心,各个核心可以共享内存外部接口;非容失存储器中包含bootloader、主操作系统程序、所有从操作系统程序、资源配置文件,以及命令等待程序。主操作系统作为实时操作系统。
29.在本发明的一个实施例中,命令等待程序会为每个运行其的cpu核预分配一段内存空间,该内存空间中用来存放状态、命令和参数,也即status字段、cmd字段、entry字段和参数记录字段。当从操作系统二进制镜像从非易失存储器加载至内存后,除运行主操作系统的cpu核外的所有cpu核可以循环读取命令等待程序中内存空间的内容,通过检测内存空间中的命令数据来判读是否有命令需要运行,由于内存空间在多个cpu核上是共享的,因此运行命令等待程序的cpu核可以修改内存空间内容,实现命令发送。
30.主操作系统的引导线程根据硬件资源分配配置修改从操作系统的引导参数,实现多个操作系统的资源分配;其中资源分配用来描述硬件资源(如串口,spi,i2c控制器)分配给哪个操作系统;修改从操作系统的引导参数和从系统的启动配置,根据资源分配,启用或禁用相关的硬件资源。对于linux系统,可以通过修改设备树的方式实现多个操作系统的资源分配。
31.由linux和rtos构成的amp系统内容如下:[linux]
# 内核和设备树的文件名kernel = "zimage"dtb = "test.dtb"# kernel_addr = 0x48000000 # linux内核镜像加载地址# dtb_addr = 0x49feb000 # 设备树加载地址# linux内核启动参数# root参数会自动根据启动设备来指定,如果指定了,则使用# 这里配置的值bootargs = "console=ttys0,115200"[rtos]# 串口终端使用的uart设备和波特率console = "uart4"baudrate = 115200# 为rtos分配硬件资源[rtos.devices]#uart1 = { pinmux="pa" } # pinmux: pa#uart2 = { pinmux="pa" } # pinmux: pa/pi#uart3 = { pinmux="pg" } # pinmux: pg/phuart4 = { pinmux="pg" } # pinmux: pg/phuart5 = { pinmux="ph" } # pinmux: ph/pi#uart6 = { pinmux="pa" } # pinmux: pa/pi#uart7 = { pinmux="pa" } # pinmux: pa/pi#spi0 = { pinmux="pc" } # pinmux: pc/pi#spi1 = { pinmux="pa" } # pinmux: pa/pispi2 = { pinmux="pb" } # pinmux: pb/pc#spi3 = { pinmux="pa" } # pinmux: pa综上所述,本发明可在3秒内启动主操作系统,执行实时业务,当从操作系统崩溃时不会影响主操作系统的运行,因此本方法的主操作系统具有很高的安全性。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献