Remote Processor (RPROC) 框架是 Linux 内核中的一个框架,用于在系统中多个处理器之间进行通信和协调,包括远程处理器。它提供了一组 API 和机制,用于管理和控制在远程处理器上执行的代码。
RPROC 框架提供以下功能:
由于TI的文档里并没有提到这部分的内容,我们借用一下Stm32的图来看一下。
正如上图所示,我们在用户层可以通过debugfs和sysfs,对MCU核心进行管理操作,例如开启,停止MCU核心,也可以给MCU加载固件,查看运行状态,查看调试信息等等内容。
而这些功能,则是通过remoteproc这个框架来完成的,一般异构核心之间,可以通过共享内存或者mailbox进行信息交互。
1、显示远程核心名称,我们可以通过以下命令,列出当前识别到的远程核心
head /sys/class/remoteproc/remoteproc*/name
可以看到米尔这个板子上,一共识别到4个远程核心,第一个就是M4核心,第二个是上一节提到的R5核心,第3和第4个pru核心就不大清楚了,TI文档上也提到过这两个核心,具体是什么功能我就没了解过。
2、开启和停止核心,我们可以通过向sysfs,也就是/sys/class/remoteproc/remoteproc0/state这个文件,写入stop和start字符串,实现对M4核心的控制。
echo "stop" > /sys/class/remoteproc/remoteproc0/state
3、通过修改firmware属性,修改MCU核心加载的固件名称
echo "uart_echo.out" > /sys/class/remoteproc/remoteproc0/firmware
可以看到M4核心的固件已经顺利启动了,我们查看mcu的uart0串口,也可以看到对应的程序的启动信息。
由于目前remoteproc的相关资料并不多,我想继续了解对应的内容,还需要花费更多的时间来学习。
更多回帖