• Linux ARM平台开发系列讲解(IPCF异核通信) 2.11.2 IPCF异核通信框架分析


    1. 概述

    IPCF软件包包含共享内存上的通信驱动程序,支持自动存储免费存储西风和裸金属

    2. 源码下载地址

    https://source.codeaurora.org/external/autobsps32/ipcf/ipc-shm/
    
    • 1

    3. IPCF驱动程序架构

    • 共享内存通用的实现,与HW和操作系统无关;
    • HW抽象组件:抽象在各种HWIP模块(MSCMINTC…);
    • 操作系统抽象组件:用于通用操作系统服务的与操作系统无关的API
    • IPCF系统架构图如下:
      在这里插入图片描述

    4. IPCF驱动数据交互流程

    4.1 IPCF驱动程序缓冲区管理

    • 非托管通道数据流:(类似于POSIXShM)缓冲区管理被禁用,并且应用程序拥有整个通道内存;例如:视频流或非关键数据交换。每个应用程序都拥有一半的通道内存。IPCF非托管通道数据流如下:
      在这里插入图片描述

    • 托管通道数据流:内存被分成缓冲区池,缓冲区管理由驱动程序控制;例如:CAN转发或flash更新。可以同时处理多个数据流。IPCF管理的通道数据流如下:
      在这里插入图片描述

    4.2 IPCF驱动程序支持以下核间通知方法

    • intercore interrupts (硬件通知)
    • polling method (通过轮询发送和接收由用户管理)

    IPCF驱动程序通过中断合并技术减少了接收中断的开销,避免了风暴中断。当一个接收中断被触发时,该代码禁用该中断,处理接收FIFO中的所有缓冲区描述符,然后重新启用该中断。具体流程如下:

    在这里插入图片描述

    5. IPCF驱动共享内存Kernel程序分析

    Linux IPCF共享内存内核驱动程序支持通过共享内存与运行在同一处理器的不同核心上的RTOS进行通信。该驱动程序伴随着一个示例应用程序,该应用程序也是一个树外内核模块,它演示了与RTOS应用程序的乒乓信息通信(更多细节请参阅示例目录中的自述文件)。驱动程序和示例应用程序被集成为NXP AutoLinuxBSP中的树外内核模块。这个Linux驱动程序的源代码发布在source.codeaurora.org上。

    5.1 从Code Aurora获取NXP Auto Linux内核和IPCF驱动

    • Linux内核
    git clone https://source.codeaurora.org/external/autobsps32/linux/
    
    • 1
    • IPCF源码
    git clone https://source.codeaurora.org/external/autobsps32/ipcf/ipc-shm/
    
    • 1

    5.2 切换内核和IPCF驱动版本

    我这里内核使用的是bsp30.0版本的源码,下载后记得切换分支

    • 查看所有分支
    git branch -a
    
    • 1

    在这里插入图片描述

    • 切换IPCFbsp30.0版本驱动
    git checkout -b remotes/origin/release/bsp30.0
    
    • 1

    在这里插入图片描述

    5.3 编译IPCF驱动模块

    目录结构如下,ipcf驱动和Linux内核源码目录在同一路径
    在这里插入图片描述

    • 设置环境变量和交叉编译工具链
    export ARCH=arm64
    export CROSS_COMPILE=aarch64-none-linux-gnu-
    export PATH=$PATH:/home/zhang/linux/02_s32g274a/01_tools/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin
    
    • 1
    • 2
    • 3
    • 编译模块
    make -C ./ipc-shm/sample KERNELDIR=$PWD/linux modules
    
    • 1

    在这里插入图片描述

    返回总目录

  • 相关阅读:
    【每日一读】Sampling Multiple Nodes in Large Networks: Beyond Random Walks
    VoLTE题库(含解析)-中高级必看
    Playwright for Python:鉴权Authentication
    [毕业设计] 基于单片机的智能快递柜设计与实现 - stm32 物联网
    Java应用程序性能分析与调优实践
    STM32MP157F-DK2 使用体验
    工信部:杭州亚运会开幕式首创 5G 超密组网方案,场馆网络无缝覆盖
    【汇编】内存中字的存储、用DS和[address]实现字的传送、DS与数据段
    openGauss本地Centos7.6单机安装和简单应用
    2022年高教社杯全国大学生数学建模竞赛-【比赛规则篇】比赛规则及比赛指导
  • 原文地址:https://blog.csdn.net/DSMGUOGUO/article/details/125483862