米尔电子
直播中

jf_50393217

4年用户 182经验值
擅长:可编程逻辑 嵌入式技术
私信 关注
[技术]

【米尔-TIAM62开发板-接替335x-试用评测】2、remote processor (RPROC) frameworkk架构介绍

remote processor (RPROC) framework架构介绍

Remote Processor (RPROC) 框架是 Linux 内核中的一个框架,用于在系统中多个处理器之间进行通信和协调,包括远程处理器。它提供了一组 API 和机制,用于管理和控制在远程处理器上执行的代码。

RPROC 框架提供以下功能:

  1. 加载和引导固件:它支持将固件映像加载和引导到远程处理器,使其能够独立执行代码。
  2. 处理器间通信(通过RPMsg):它提供了本地处理器和远程处理器之间的通信和同步机制,允许进行数据和控制消息的交换。
  3. 电源管理:它允许对远程处理器进行电源管理,包括开启和关闭处理器,并管理其工作状态。
  4. 监视和调试服务:提供远程处理器的运行状态,提供远程处理器的调试信息。

通过框架图理解RPROC

由于TI的文档里并没有提到这部分的内容,我们借用一下Stm32的图来看一下。

image.png

正如上图所示,我们在用户层可以通过debugfs和sysfs,对MCU核心进行管理操作,例如开启,停止MCU核心,也可以给MCU加载固件,查看运行状态,查看调试信息等等内容。

而这些功能,则是通过remoteproc这个框架来完成的,一般异构核心之间,可以通过共享内存或者mailbox进行信息交互。

通过实战学习remoteproc框架的功能

1、显示远程核心名称,我们可以通过以下命令,列出当前识别到的远程核心

head /sys/class/remoteproc/remoteproc*/name

image.png

可以看到米尔这个板子上,一共识别到4个远程核心,第一个就是M4核心,第二个是上一节提到的R5核心,第3和第4个pru核心就不大清楚了,TI文档上也提到过这两个核心,具体是什么功能我就没了解过。

2、开启和停止核心,我们可以通过向sysfs,也就是/sys/class/remoteproc/remoteproc0/state这个文件,写入stop和start字符串,实现对M4核心的控制。

echo "stop" > /sys/class/remoteproc/remoteproc0/state
image.png

3、通过修改firmware属性,修改MCU核心加载的固件名称

echo "uart_echo.out" > /sys/class/remoteproc/remoteproc0/firmware

image.png

可以看到M4核心的固件已经顺利启动了,我们查看mcu的uart0串口,也可以看到对应的程序的启动信息。

image.png

由于目前remoteproc的相关资料并不多,我想继续了解对应的内容,还需要花费更多的时间来学习。

回帖(1)

jf_01801880

2024-3-6 17:33:57
过来学习一下,大佬写的不错。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分