索喜相机之IPCU

1.ipcu概述

IPCU,Inter Process Communication Unit。内部处理器通讯单元,CPU之间使用IPCU相互通信。IPCU看起来像MailBox,使用共享内存进行大型数据交换。共有16个IPCU通道,每个通道实现不同的通讯功能。IPCU的使用分为应用层和RTOS层,两者通过共享内存一发一收,用于照片数据、码流数据、命令数据、cate命令等数据传输。

索喜芯片是一款多核的构架,LINUX和RTOS运行在不同的核上。RTOS负责拍照及码流输出,实时性要求高;LINUX层负责业务的数据输出,实时性要求相对低一点点。RTOS与LINUX系统分别对IPCU硬件时行了功能实现,RTOS用mailbox来表示IPCU的16个通道,LINUX使用snrtos设备名来定义IPCU的16个通道,两者的连接是共享内存,通过读写共享内存来实现两者数据的发送与接收。

整体通讯框图如下:

2.Ipcu APP端

IPCU应用层主要分为四种传输类型。命令、抓拍流、视频流、消息事件;其中命令使用0和1通道,0为收1为发。抓拍流使用8和9通道,视频流使用6和7通道,消息事件使用10和11通道。使用方法为打开相应的通道,发送通道填充好发送的结构体,接收通道定义好回调函数,以便数据到来后自行运行调用。

应用层IPCU发送流程。应用层有一个IPCU的发送线程,用来排队发送IPCU指令。主要用来发送cate指令与相机交互,如设置分辩率、帧率、拍照等。发送线程收到需要发送的数据时,会通过内核的IOCTL命令IPCU_IOCTL_SENDMSG向RTOS发送数据;

应用层IPCU接收流程。应用层同样有一个IPCU的接收线程,通过不断轮询内核的IOCTL命令IPCU_IOCTL_RECVMSG,发现有数据后通过IPCU 的ID调用相应的回调函数,处理完后发送应答完毕的回复消息,通知RTOS处理完成;

应用层框图如下:

3.Ipcu RTOS端

相应地,IPCU RTOS层也对应应用层的四种传输类型。命令、抓拍流、视频流、消息事件;其中应用层的发对应RTOS层的收,应用层的收对应RTOS的发。两者遥相呼应,形成一个IPCU通讯的完整链路。应用层发送的数据到达共享内存,RTOS从共享处取应用层发来的数据,以达到的通讯目的。反之亦然。使用方法为打开相应的通道,发送通道填充好发送的结构体,接收通道定义好回调函数,由IPCU接收任务轮询,以便数据到来后及时获取。

RTOS层IPCU发送流程。RTOS层有一个封装好的底层发送函数,发送时需时把发送结构体填充,再使用底层函数发送;实际上就是把要发送的数据写入IPCU的数据寄存器,以达到发送目的;

RTOS层IPCU接收流程。与应用层一样,有一个IPCU的接收任务,通过不断轮询IPCU的ID,发现有数据后通过IPCU 的ID调用相应的回调函数;

RTOS层框图如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值