Linux多核飞控是一种基于多核处理器构建的飞控系统,用于控制飞行器的飞行。这种飞控系统使用Linux操作系统作为主要的控制平台,可以支持多个处理器核心同时工作,以实现更高的性能和更快的响应速度。
Linux通常用于具有较高计算量和较大内存需求的系统,而FreeRTOS通常用于较小的嵌入式系统,其主要任务是对实时性要求高的任务进行调度。
飞控系统通常需要同时处理多个传感器数据,进行实时控制和导航等操作,因此需要多核支持。Linux可以通过多线程运行在多个CPU核心上,而FreeRTOS可以使用其多核调度器进行多核调度。
因此,在飞控系统中,可以使用Linux作为主操作系统,在处理高计算量和大内存需求的任务时使用多核支持。同时,在实时控制和导航等需要高实时性的任务中,可以使用FreeRTOS运行在不同核心上,并使用其多核支持进行调度。
对于集成了A7 将 M4处理器的多核cpu的STM32xxx系统来说,软件架构如下:
Remoteproc 是通用远程处理框架部分,其作用是:
1)A7 将 M4 固件映像的代码段和数据段加载到 M4 内存中,以便就地执行程序;
2)解析固件资源表以设置关联的资源(固件中各个段的起始地址和大小等信息,Virtio
设备特性、vring 地址、大小和对齐信息);
3)控制 M4 内核固件的启动和关闭;
4)为与 M4 的通信建立 RPMsg 通信通道;
5)提供监视和调试远程服务(使用 sysfs 和 debugfs 文件系统,这两个文件系统在开发板的 Linux 文件系统中已经默认配置好了,可开机即用)。
stm32_rproc 是远程处理器(M4 内核)的驱动程序,其作用是:
1)向 Remoteproc 框架注册供应商特定的功能(如回调函数部分);
2)处理和 M4 关联的平台资源(例如寄存器,看门狗,复位,时钟和存储器);
3)通过邮箱框架(Mailbox)将通知转发到 M4。
以上所说的固件就是 M4 的可执行文件,如 MDK 下编译好的.axf 文件或 STM32CubeIDE
下编译好的.elf 文件。A7 称为主处理器,M4 称为协处理器或远程处理器,主处理器先启动,
再引导协处理器启动。
Linux多核飞控系统通常包括以下组件:
1.多核处理器A7主处理器:用于计算和执行各种控制和导航任务。
2.传感器:用于检测飞行器的位置、速度、方向等参数。
3.执行机构:包括电机、舵机等设备,用于控制飞行器的运动算法的M4协处理器。
4.通信模块:用于与地面控制站或其他设备进行通信。
Linux多核飞控系统的优点包括:
1.更高的计算能力和响应速度。
2.更好的可扩展性和灵活性。
3.更好的软件开发和调试工具支持。
4.更好的可重构性和可维护性。
总之,Linux多核飞控系统是一种高性能、灵活、可扩展和易维护的飞控系统,可以为飞行器提供更好的控制和导航能力。