MCAL配置-Cdd_Ipc
打开Cdd_Ipc配置界面Outline窗口,分为CddIpcGeneral、CddIpcVirtIoConfig、CddIpcProcIDs和CddIpcCommChannels四个部分,需要依次配置。
- 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为传出参数,固定值。
MCAL配置-Cdd_Ipc相关推荐
- 软解码方案之-DSADC结果中断和时间戳中断MCAL配置实现
电机软解码方案系列 软解码方案之-DSADC结果中断和时间戳中断MCAL配置实现 前言 目前新能源汽车行业电机控制器中旋变软解码方案应用比较普遍,楼主最近做了电机控制器AUTOSAR架构项目,对软解码 ...
- 基于英飞凌TC397芯片Mcal配置之Can模块的配置
随着这几年汽车嵌入式软件的迅速发展,芯片的升级也是在不断进行中,本人从事汽车嵌入式工作,目前使用的是英飞凌TC397,鉴于网上对这个芯片的使用介绍比较少,所以想把自己开发Mcal的工程中的一些小经验分 ...
- S32K14x MCAL配置之PORT
一.简介 本文主要介绍如何使用EB配置MCAL的PORT模块.PORT模块主要负责初始化各个IO口,并分配好对应的外设功能. 二.模块配置 S32K14x一共有5个PORT,分别是PORTA.PORT ...
- MCAL_VADC配置
一.平台条件 1) 单片机型号:TC234L 2) MCAL_Autosar版本:4.0.3 3) MCAL配置软件: DaVinci Configurator 5.18.29 4) SWC配置软件: ...
- 使用S32DS集成S32K的MCAL
一.软件准备 前往恩智浦官网下载MCAL软件包.EB Tresos .以及S32DS IDE: 以下软件均有NXP免费提供,但需注册账号获取 S32DS IDE下载 EB Tresos以及MCAL下载 ...
- NXP智能驾驶软件系统
NXP智能驾驶软件系统 ADAS和高度自动驾驶 汽车解决方案 市场领先的ADAS解决方案 先进的驾驶员辅助系统(ADAS)提供了安全的.日益自动化的驾驶体验,这将重塑出行关系.自动驾驶技术将很快让乘客 ...
- 不要再被Python洗脑了,来看看这个吧......
最近我们一直被人工智能.Python等各种文章洗脑,文章都在写这些编程语言发展前景比较大,薪资待遇比较高,人才比较稀缺,所以很多人都在争相学习Python.人工智能. 其实有一个前景很好,待遇又比较好 ...
- 小猫爪:S32K3学习笔记02-S32K3之FlexCAN
S32K3学习笔记02-S32K3之FlexCAN 1 前言 2 CAN协议简介 2.5 CAN资源介绍 3 FlexCAN简介 3.1 MB(邮箱)系统 3.1.1 正常模式下 3.1.2 激活了C ...
- 小猫爪:S32K3学习笔记05-S32K3之ADC
小猫爪:S32K3学习笔记05-S32K3之ADC 1 前言 2 资源简介 3 ADC功能详解 3.1 ADC mux-mode channels 3.2 ADC内部框架 3.3 时钟源 3.4 通道 ...
- 小猫爪:S32K3学习笔记10-S32K3之EIM和ERM
小猫爪:S32K3学习笔记10-S32K3之EIM和ERM 1 前言 2 EIM(Error Injection Module) 3 ERM(Error Reporting Module) 4 MCA ...
最新文章
- 技师学院计算机老师,技师学院计算机教学课堂改革探索论文
- python手机版怎么用-怎么用手机编写Python程序?
- 用dedecms自定义表单创建简易自助预约系统
- WPF--TextBlock的ToolTip附加属性
- webpack4.x 模块化浅析-CommonJS 1
- python中ttk详解_Python 中的Property 动态属性和特性详解
- 数据安全超级守护进程
- Symantec清除工具 CleanWipe_14.3.558.1000
- PMBOK第六版学习笔记
- 数据分析5大软件Excel、SAS、R、SPSS、Python优势分析
- Firefox扩展IE Tab Plus内置功能导致浏览所有网页加载superfish.com脚本
- 查询在st1公司于2018年制作的电影中出演的影星
- 让我们自己来破解命运外挂999
- pytorch学习随手记
- L1-030 一帮一 (15分) “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生
- HTML最给力的入门教程
- matlab整流桥和电感怎么连接,整流桥四脚接法实物图手把手教学
- 程序员 面试如何介绍自己
- 千里独行Thousands of miles to ride alone
- Java 集合经典面试题。少侠,我看你骨骼惊奇,是难得的代码奇才,来看了我的博客那岂不是如虎添翼?