NXP的IPCF

NXP视频:S32G-VNP-RDB2参考设计的IPCF支持_NXP 半导体

IPCF通信原理:

ipc-shm的操作:比如cpu1要给cpu2传输数据:

  • cpu1就先把数据拷贝到共享内存空间,然后再设置一个标志,cpu2检测到这个标志就会触发中断,并且在中断读取共享内存空间的数据。
  • 当cpu2读写完这个数据之后,就会同步到cpu1的内存,并将状态改为可读写状态,同步到cpu1.

消息队列;环形,buffer descripter来维护两个OS之间的通信。

OS1上的内存池(共享内存):OS1发送的时候ipc_shm_acquire_buf()【即从共享内存拿一片数据】,然后发送数据【往共享内存写数据】,并同步到这片内存到OS2的共享内存。

产生中断通知对端OS。

OS2收到中断:拷贝OS1调用ipc_shm_acquire_buf()操作的共享内存的数据,释放这片共享内存pc_shm_release_buf(),并同步到OS1的共享内存。

  • 编译ipcf源码,编译生成驱动

  • 下载源码

git clone https://source.codeaurora.org/external/autobsps32/ipcf/ipc-shm

make 生成ko,然后通过insmod 加载这个ko驱动到kernel, 在调用ipcf的接口。

  • 查看 readme.txt,如下操作测试

Running the application
=======================
1. If sample was built manually, copy ipc-shm-dev.ko and ipc-shm-sample.ko in
   rootfs

2. Boot Linux: see section "How to boot" from Auto Linux BSP user manual.

3. Insert IPCF kernel modules after Linux boot::

    insmod /lib/modules/`uname -r`/extra/ipc-shm-dev.ko
    insmod /lib/modules/`uname -r`/extra/ipc-shm-sample.ko

4. Clear the kernel log::

    dmesg -c > /dev/null

5. Send 10 ping messages to remote OS and display output from kernel log::

    echo 10 > /sys/kernel/ipc-shm-sample/ping
    dmesg -c

6. Repeat previous step with different number of messages

7. Unload the modules::

    rmmod ipc-shm-sample ipc-shm-dev

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值