图 4 所示为 rpmsg 通道和端点抽象及其使用情况。rpmsg 组件与 remoteproc 协同建立并管理主机与远程环境之间的 rpmsg 通信通道。一旦主机上的 remoteproc 启动远程环境,远程环境上的 rpmsg 就会发送名称服务公告。收到名称服务公告后,主机会注册已宣布的 rpmsg 器件,并建立 rpmsg 通道。通道建立后,在两侧调用由 rpmsg 通道创建的回调,通知主机和远程应用通道已建立。
此时,主机和远程环境可利用分别针对分块和不分块传输请求的 rpmsg_sendxx API 和 rpmsg_trysendxx API 相互传输数据。当远程环境调用 remoteproc_resource_deinit 时,由 rpmsg 通道删除的回调向主机应用通知该事件,以平稳终止基于 rpmsg 的通信链路。在远程环境无法响应的情况下,主机可选择使用 remoteproc_shutdown API 异步地关闭远程处理器。图 5 中的伪代码段给出了在主机环境中 rpmsg API 与 remoteproc API 的协同使用情况。