MCAL配置-Cdd_Ipc

打开Cdd_Ipc配置界面Outline窗口,分为CddIpcGeneral、CddIpcVirtIoConfig、CddIpcProcIDs和CddIpcCommChannels四个部分,需要依次配置。

  1. CddIpcGeneral配置基本选项,如下:

CddDevErrorDetect  决定是否使用Det_ReportError汇报错误,是否做额外参数检查
CddIrqType  中断类型选择:CAT2
NewMsgNtfyFunc  CddIpc消息有两类,分别是消息和控制消息;该选项是新消息的通知函数;需要按照驱动声明的原型定义出来;
NewControlMsgNtfyFunc  新的控制消息通知函数;需要按照驱动声明的原型定义出来;
CddIpcOsCounterRef  超时Counter用到的时钟源,OS提供配置项;
CddIpcOSCounterId 超时Counter用到的时钟源;
CddIpcDeviceVariant  选择TDA4不同的处理器型号,J721E或者J7200
CddVersionInfoApi  

Cdd_IpcGetVersionInfo是否可用

CddIpcAnnounceApi  

Cdd_IpcAnnounce是否可用,该Api用来发送控制消息;

CddIsInitDoneApi  

Cdd_IpcIsInitDone是否可用,该Api用来查询Ipc模块是否初始化成功;

CddDeinitApi  Cdd_IpcDeinit是否可用
CddRegisterReadBackApi  

Cdd_IpcRegisterReadBack是否可用

CddGetMsgMaxSizeApi  

Cdd_IpcGetMaxMsgSize是否可用

2. CddIpcVirtIoConfig配置VirtIO的地址和对齐方式,也就是和其他核共享的内存空间定义:

VertIoRingAddr 共享空间的起始地址,每个核心的配置必须相同,否则无法通信;
VertIoRingSize 共享空间的大小;
VertIoObjSize 对齐字节数,VRing对齐

 3. CddIpcProcIDs选择哪个CPU跑当前配置,有哪些CPU参与通讯;

 当前CPU选择MCU1_0;

 位于Outline->CddIpcProcIDs->RemoteProcID,列出参与IPC通讯的CPU编号,无顺序要求;

4. CddIpcCommChannels配置通讯通道;

位于Outline->CddIpcCommChs;

 每一条记录是一条通讯链路,调用Cdd_IpcSendMsg,Cdd_IpcReceiveMsg、Cdd_IpcAnnounce等函数时使用的参数chId对应表中CommId列;每条链路需要提供以下信息:

CommId 如上描述,对应chId
LocalEp 本地CPU的消息ID
RemoteEp 远端CPU的消息ID
RemoteProcID  远端CPU的编号
MaxNumMsgQueued 本地缓存消息条数,固定256条
MaxMsgSize 消息字节数限制,固定最大512字节

5. 使用:

调用初始化函数:Cdd_IpcInit();

查询是否初始化成功:Cdd_IpcIsInitDone();

发送控制消息:Cdd_IpcAnnounce(pbuf, chId);pbuf是控制消息的buffer,以'\0'作为结尾的字符串(因此消息内部不应该包含0x0,否则发送不完全),chId是第4节配置的CommId;

发送消息:Cdd_IpcSendMsg(chId, pbuf, bufLen);chId是第4节配置的CommId,pbuf是数据buffer,bufLen代表要发送数据的字节数;

当收到消息时,中断会触发一系列处理流程,最终回调第1节配置的函数NewMsgNtfyFunc、NewControlMsgNtfyFunc中;可根据需要在该函数中调用Cdd_IpcReceiveMsg和Cdd_IpcReceiveCtrlMsg进行接收;

Cdd_IpcReceiveMsg(chId, pbuf, bufLen);chId是NewMsgNtfyFunc回调传入的chId,bufLen是本地提供消息拷贝的buffer长度,如小于接收消息长度会报错,接收完成为收到字符数。

Cdd_IpcReceiveCtrlMsg(pRemoteProcId, pRemoteEndPt, pBuf, bufLen); pRemoteProcId是传出参数,携带CoreId信息,bufLen传出控制消息长度,固定值;pRemoteEndPt为传出参数,固定值。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值