0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

自动生成的代码支持的硬件平台的简介

MATLAB 来源:djl 作者:董淑成 2019-09-17 10:08 次阅读

你们自动生成的代码都支持哪些MCU

这是这几年最经常被问到的几个问题之一了,我向来的回答是:

代码生成工具生成的是标准C代码,支持所有的MCU或者DSP

既然答案如此明确,干嘛还要来写这篇文章?

回答问题前,我们先看看为什么会有这么多人提及这个问题。

M曾经的Target Support Package

我敢说很多人提到这个问题是因为MATLAB曾经有一个的工具箱,叫做Target Support Package,简称TSP,这个产品从MATLAB R2011a开始不再单独销售。不过,对于习惯了汽车行业这种嵌入式软件开发的工程师,这些支持包,可能只能用作过家家了,因为汽车行业的软件是下面这个样子的:

自动生成的代码支持的硬件平台的简介

即便是我们不使用AUTOSAR架构,差别也主要在于是否有RTE上,其他的部分该有的都会有的。

我们再来看一下TSP这个工具包有什么功能,下面这幅图是MATLAB R2012b里面TI C2000的TSP模块库:

自动生成的代码支持的硬件平台的简介

这个模块库里有AD、有数字IO,有PWM输出,有比较寄存器,还有各类通信端口的收发模块等等,我们可以假想有这样一个模型:

自动生成的代码支持的硬件平台的简介

模型中,AD模块有了,在生成的代码中,有读取AD转换数据的C接口函数,AD转换得到的数据经过Algorithm部分的运算,获得期望的PWM输出信号的占空比,后面的PWM模块会根据这个占空比的数值产生PWM信号。

看起来好像非常不错的样子,不过我们想,就AD转换或者PWM输出这类底层驱动软件,对于一个做单片机的工程师来讲,这点工作量并不大,并且,对于同一款单片机,最底层的驱动软件通常非常稳定,不会像应用层软件那样需要频繁变更。

也就是说,TSP给我们节省的时间非常有限。

时间上不能节省太多倒还不是最大的问题。最大的问题是,这部分软件在Simulink环境下没法仿真,如果架构设计不好,这会直接导致整个模型的可验证性变差。

如果为了节省那么一点微不足道的时间,而导致整个模型的可验证性变差,得不偿失。

另外,还有不少客户试图自己开发TSP,这往往连节省微不足道的时间的好处都没了,因为开发TSP也算得上对Simulink做深度定制了,通常需要用户熟悉TLC编程,熟悉S-Function,并且,无论是TLC还是S-Function都没有便利的调试环境,这对于开发以及后期维护TSP都带来了非常大的困难。

所以,我对Simulink模型设计的建议是:

能在Simulink环境下仿真的部分,可以通过Simulink实现,对于单片机底层这类没法在Simulink下仿真的软件,不应该打包到Simulink环境下。

MTSP是否一无是处?

前面我们说过,这个工具从2011年开始已经不再单独销售,但并未寿终正寝。最新版的MATLAB的标准产品中已经看不到这个产品,不过,如果你一定要找,还是可以通过添加硬件支持包的方式找到各式各样的硬件支持包,并且相对以前的TSP,硬件支持包不仅提供了很多MCU的驱动模块,而且还提供了很多热门硬件的支持,比如Arduino,Raspberry Pi等,如下图示:

自动生成的代码支持的硬件平台的简介

对于完全没有嵌入式软件开发经验的大、中学生或者工程师,如果想做嵌入式系统上实现某些算法,而又没有精力去学习嵌入式系统,的确可以借助TSP,通过Simulink实现算法,并最快的做目标处理器上验证这些算法,这也是不错的选择。

但是对于产品开发,TSP在很多行业是行不通的。

M不该有的误解

或许因为TSP的存在,让很多人产生如下误解:

MATLAB没提供TSP的单片机就等于MATLAB代码生成不支持这款单片机

基于模型的嵌入式软件设计一定要有TSP作为支持,没有TSP支持,就没法进行基于模型的嵌入式软件设计

这两种误解是没有道理的,我们应该参照AUTOSAR架构,做应用层软件开发或者策略实现部分的模型开发中使用模型。

如果我们仔细观察一下AUTOSAR的软件架构,我们发现,基础软件部分,除了MCAL层之外,还有ECU 抽象层、协议栈、操作系统等基础软件,并且这部分软件远比MCAL复杂,如果使用TSP,基础软件中除了MCAL之外的软件怎么实现?这是一个问题,不需要答案,只为更加明确TSP做汽车电子产品软件开发中没有价值。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3427

    浏览量

    128213
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66736
收藏 人收藏

    评论

    相关推荐

    Cognizant推出支持生成式人工智能的新平台

    Cognizant,全球领先的信息技术服务公司,近日宣布推出一个革命性的平台——Cognizant Flowsource,旨在为企业提供下一代软件工程解决方案。该平台专注于生成式人工智能(gen AI)的应用,致力于加速软件开发
    的头像 发表于 02-03 16:11 446次阅读

    DC2100B/A能不能支持MATLAB/simulink自动代码生成

    1、硬件方面,微控制器是主要有几种,计算能力如何,可以支持类似MPC的算法吗?能不能扩展DSP的控制器? 2、软件方面,能不能支持MATLAB/simulink自动
    发表于 01-11 06:56

    单片机代码自动生成器程序

    单片机代码自动生成器是一种能够帮助开发人员快速生成单片机代码的工具。它利用了现代计算机技术和算法,能够根据用户提供的输入和需求,
    的头像 发表于 01-08 14:12 706次阅读

    simulink自动生成ROS代码

    当我们用simulink完成控制程序的搭建后,我们期望下一次可以直接对ROS进行控制,而不是每次都需要启动matlab和simulink,因此我们可以使用simulink的代码生成器,生成ROS
    的头像 发表于 11-15 17:53 333次阅读
    simulink<b class='flag-5'>自动</b><b class='flag-5'>生成</b>ROS<b class='flag-5'>代码</b>

    IBM watsonx Code Assistant 现已全面上市:以生成式 AI 赋能代码生成,加速企业应用现代化

    (纽交所股票代码:IBM)日前正式推出 watsonx Code Assistant,这是一个由生成式 AI 支持代码生成助手,可帮助企业
    的头像 发表于 11-01 10:05 236次阅读
    IBM watsonx Code Assistant 现已全面上市:以<b class='flag-5'>生成</b>式 AI 赋能<b class='flag-5'>代码</b><b class='flag-5'>生成</b>,加速企业应用现代化

    利用Simulink自动生成STM32串口代码

    功能:利用Simulink自动生成STM32串口代码,在Keil中编译后直接下载到主芯片,实现串口通讯的功能。
    的头像 发表于 10-25 17:04 1032次阅读
    利用Simulink<b class='flag-5'>自动</b><b class='flag-5'>生成</b>STM32串口<b class='flag-5'>代码</b>

    编程变得简单:在代码生成中利用自动化机器人的力量

    编程一直以来都是一项需要深入学习和不断提升的技能。然而,随着自动化机器人的出现,编程正在变得越来越简单。利用自动化机器人的力量,我们能够快速生成代码,提高开发效率,让编程变得更加容易和
    的头像 发表于 08-21 08:08 444次阅读
    编程变得简单:在<b class='flag-5'>代码</b><b class='flag-5'>生成</b>中利用<b class='flag-5'>自动</b>化机器人的力量

    编程变得简单:在代码生成中利用自动化机器人的力量

    编程一直以来都是一项需要深入学习和不断提升的技能。然而,随着自动化机器人的出现,编程正在变得越来越简单。利用自动化机器人的力量,我们能够快速生成代码,提高开发效率,让编程变得更加容易和
    的头像 发表于 08-18 13:36 607次阅读

    智能语音开放平台选哪家,启英泰伦提供硬件、软件一体化开发服务

    词后,将文本提交至平台,1分钟快速生成语言模型。支持中、英、日、韩等语种,支持命令词任意更改,更改命令词后,直接重新提交平台
    发表于 08-17 14:00

    机友分享|ESP8266+机智云平台实现APP控制舵机旋转

    及 APP生成等。 具体开发流程为在机智云平台开发者界面创建产品和小程序;将GAgent固件烧入WiFi模组;平台自动生成MCU方案
    的头像 发表于 08-09 19:25 3093次阅读
    机友分享|ESP8266+机智云<b class='flag-5'>平台</b>实现APP控制舵机旋转

    MBD的Simulink使用技巧:详解代码生成中的模型与代码(2)

    上一篇文章中提到,生成嵌入式代码,必须选择定步长求解器。实际中,生成嵌入式代码几乎不会使用Simulink模型库中的连续模型,往往需要通过最简单的离散模块来实现算法模型。
    的头像 发表于 07-13 15:13 2954次阅读
    MBD的Simulink使用技巧:详解<b class='flag-5'>代码</b><b class='flag-5'>生成</b>中的模型与<b class='flag-5'>代码</b>(2)

    自动驾驶:硬件平台

    驾驶代码开发完毕后,在仿真系统内运行,测试是否可以实现目标。 硬件在环 硬件在环是基于必要的硬件平台。在第一步的软件仿真结束后,将所有的仿
    发表于 06-01 16:28 0次下载
    <b class='flag-5'>自动</b>驾驶:<b class='flag-5'>硬件</b><b class='flag-5'>平台</b>

    如何使用RSA硬件加速能多快生成2048bit的密钥?

    先生, 平台:imx6ul BSP:L4.1.15_ 2.0.0_ GA的补丁 功能:CAAM加速中的RSA 2048位密钥生成 需要支持: 我指的是下面链接中的三个补丁, 然后RSA加速,发现
    发表于 05-06 08:05

    Simulink自动代码生成电机控制:基于Keil软件集成

    嵌入式软件开发包含应用层和底层,目前基于模型的开发软件架构总结为以下几种: 1.应用层全模型生成,底层手写代码 这种方法比较灵活,底层代码可以找芯片厂的Demo程序,也可以自己开发,通信协议可以
    发表于 05-05 14:51 8次下载
    Simulink<b class='flag-5'>自动</b><b class='flag-5'>代码</b><b class='flag-5'>生成</b>电机控制:基于Keil软件集成

    stmf303用STM32CubeMX自动生成硬件SPI代码的问题

    我用STM32CubeMX自动生成硬件SPI代码,其中接收函数如下:HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi
    发表于 05-01 10:06