MBD开发方式中几种无法覆盖C语言用法的情况

本文探讨了MBD开发中C/C++语言的几种特殊用法难题,如多bit位位域、union联合体和指针处理,以及Simulink在内存操作和类型转换上的局限。作者分享了应对策略和Simulink在汽车电子开发背景下的局限性。
摘要由CSDN通过智能技术生成

MBD开发方式中几种无法覆盖C语言用法的情况

MBD开发方式是一种嵌入式开发的新的方法,并配有相关的工具链,在实践过程中,发现有几种C/C++语言的用法无法通过代码生成。
1.多bit位的位域变量,位域可以有效减少对物理空间的使用,在Simulink中,可以配置一个总线,然后总线中,将变量设置为布尔数据类型,代码生成后,可以生成1bit的位域,可以通过存储模块进行读取写入操作;但是,没有多bit位的位域变量,目前找到一种解决的办法,多位位域变量分成多个1bit位的位域,然后做一个定制化的sfunction模块,或者m函数,从整形转换为多个布尔变量输出,接入总线;如图:
在这里插入图片描述

2.union联合体,在memory设置中,如果强制将struct设置为union,将直接提示触及了simulink关键字,代码生成不通过,同理,总线也不能命名;除非重新做一个m函数,在代码生成后,将某个总线名称改过来,这个有点搞笑;
3.指针变量,在定制化block中,我们可以在TLC脚本中,写入一个指针变量作为参数的C函数,在模块输出中,选择输出地址作为函数的输入参数,则可以使用指针变量了,但是还没有发现直接定义一个pointer类型的变量;
此外,新版本的simulink已经支持了字符串变量,这个在以前版本中也是个很难解决的事。可以发现simulink作为MBD开发工具有一定的局限性,涉及内存的操作还不够给力,这可能是MBD开发方式最早源于汽车电子开发有关,不同于消费类电子,汽车电子往往选择的芯片内存冗余很多,关注点在控制逻辑的开发。
以上心得,请多指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值