异核通信(3):remoteproc(Qualcomm)
一. 作用
作用:现代soc通常是AMP架构,可能会运行不同的OS(Linux or rtos)。
remoteproc提供了一个upstream框架来管理协处理器的生命周期(加载固件、启动、关闭),同时抽象出硬件差异,因此不需要复制整个驱动程序。将core、platform、以及高通device的driver区分开来。
二. Remoteproc architecture
(见文档图2-1)
用户空间通过/sys/class/remoteproc/remoteroc*来访问设备,
1.remoteproc core为核心,和subdevices以及remoteproc platform之间交互
2. sysmon, glink, ssr作为remoteproc subdevices
三. 代码分析
这里依然是采用经典的结构,参考的是common/drivers/remoteproc/qcom_q6v5_pas.c: device ->platform -> core
(1)device:比如像adsp, 在每个开发板上可能都会有,这时我们在设备树写好,通过of_match_table和probe识别就行,这里还附加了data属性指向device特定的初始化数据或者函数
(2)platform: different soc, 比如Qualcomm和Mediatek, 再或者即使是Qualcomm, 相同的芯片也会搭载在不同的开发板上:platform_driver, 包括probe,remove,driver(name, of_match_table)
(3)core:代码就是内核提供的
比如adsp设备,通过adsp platform driver,再到remoteproc core;cdsp等同理
#Linux##内核#