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

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

3天内不再提示

关于自动生成的代码支持的硬件平台介绍

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

自动生成的代码支持哪些硬件平台?前面我们提到了Target Support Package,今天我们再来看看另外两处引发这个问题的地方。

M配置参数中的硬件实施

硬件实施(Hardware Implementation)设置里给出了代码生成支持的各种处理器,如下图所示,我们可以选择Freescale的MPC 55xx系列的单片机,也可以选择Infineon的TriCore等等,从这个列表来看,基本上涵盖了我们平时可以接触到的大多数单片机。

关于自动生成的代码支持的硬件平台介绍

不过,产品开发过程中,不少公司会跟半导体公司同步,使用半导体公司开发过程中的最新单片机,也有的时候,我们在使用一些比较小众的单片机,这样一来,这个列表就可能难以做到面面俱到。所以就有用户做翻遍了这个列表依然没有找到自己使用的芯片之后,会跟我们抱怨代码生成不支持他们使用的单片机。

我们来仔细看一下这个列表,在我们选中一款处理器之后Device details下面都有哪些内容,首先是Number of bits,这里给出了各种数据类型对应的字长,比如char,short,float,double,pointer等,不同的单片机这些数据可能是不同的,比如,对于C语言中的数据类型char,多数情况下都会定义为8个位,而TI的C2000系列的MCU却把char定义为16个位。long就更是多种多样了,有的处理器里被定义为32bits,也有的被定义为64bits,TI的C6000 DSP里long是40bits。代码生成之后,在rtwtypes.h文件里会有这些基本数据类型的定义。如下所示:

typedef signed char int8_T;

typedef unsigned charuint8_T;

typedef shortint16_T;

typedef unsigned shortuint16_T;

typedef intint32_T;

typedef unsigned intuint32_T;

typedef floatreal32_T;

typedef doublereal64_T;

Largest atomic size,最大原子尺寸,定义了整型的最大原子尺寸,同时也给出是否支持浮点类型以及单精度、双精度浮点的选项。

还有一些,类似于字节顺序之类的选项,用以选择Little Endian还是Big Endian。

如果能从上述列表中找到我们正在使用的处理器,在代码生成之前有必要将这个选项设置成跟我们一致的处理器。如果这个列表中找不到呢?是否就意味着代码生成不支持你们的处理器呢?

答案是否定的,我们可以注意一下,在Device vendor下拉菜单的最下面可以找到Custom Processor选项,我们已经知道,针对不同的处理器,在生成的代码里,有必要做出区分的也就是各种类型的字长、是否支持浮点等设置,既然如此,对于列表中不存在的处理器,只需要在选中Custom Processor之后做一些相关设置即可。

如下图,在选择了Custom Processor之后,前面我们提到的各种信息都变成可编辑状态。

通过人为设置这些选项,可以满足那些列表中不存在的处理器的要求,所以从这个意义上来讲,代码生成工具支持所有处理器,即便是在现有列表里找不到的处理器,也可以通过自己定制的方式定制字长等信息,实现对这款处理器的支持。

关于自动生成的代码支持的硬件平台介绍

M配置参数中的代码替换选项

在配置参数里,还有一个可能引起用户困惑的地方,那就是代码替换选项(Code Replacement)。在有些版本的MATLAB里面,配置参数:

Configuration Parameters > Code Generation > Interface > Code replacement library

选项里,也列出了不少处理器,下图是来自于MATLAB R2016b的选项。

这里我们看到了一些ARM处理器,TI的某些处理器等等:

关于自动生成的代码支持的硬件平台介绍

这个选项的目的是为了实现代码优化,比如,通常我们做除法运算都是通过除法运算符“/”实现,x/y实现x除以y的运算,而有的半导体厂商可能通过专门的除法运算接口,比如divide(x, y),通过这个接口运算,编译之后的代码在速度上可能会比x/y更快。

半导体公司如果提供类似一些指令级的优化,通常可以通过代码替换的方式实现,以刚才提到的除法运算为例,如果半导体公司对某些运算做了优化,并封装成库文件的形式,在代码生成之后,生成的代码里就没有“/”实现的除法运算,而是通过divide()实现。

除了半导体公司可能提供这类优化之外,用户也可以自己做类似的优化,对于一些运算量很大的运算,我们经常使用查表的方式实现,比如,算法中有sine运算,但速度可能难以满足我们的要求,在工程上,我们通常使用查表的方式实现sine运算,我们也可以通过制作代码替换库,并让算法代码中不出现标准数学库里的sin()运算,而是my_sine()等自己定义的由查表实现的运算。

当然,如果我们对速度没有要求,我们可以无视这个代码替换选项。

不管替换与否,我们不难看出:

从这个层面上,代码生成工具也是支持所有处理器的。

很多人关心生成的代码是否支持某某处理器的疑问,基本上是来自于上述三个原因吧。

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

    关注

    68

    文章

    18182

    浏览量

    221893
  • 代码
    +关注

    关注

    30

    文章

    4548

    浏览量

    66608
收藏 人收藏

    评论

    相关推荐

    SC171开发套件V1 硬件平台介绍及使用

    课程类别 课程名称 视频课程时长 视频课程链接 课件链接 硬件 硬件平台介绍 6分29秒 https://t.elecfans.com/v/25510.html *附件:
    发表于 04-01 10:35

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

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

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

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

    simulink自动生成ROS代码

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

    开发者福利!一文入门亚马逊云科技基于机器学习的代码生成器Amazon CodeWhisperer

    Amazon CodeWhisperer介绍 Amazon CodeWhisperer是亚马逊云科技出品的一款基于机器学习的通用代码生成器,可实时提供代码建议。类似Cursor和Git
    的头像 发表于 09-18 14:22 605次阅读
    开发者福利!一文入门亚马逊云科技基于机器学习的<b class='flag-5'>代码</b><b class='flag-5'>生成</b>器Amazon CodeWhisperer

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

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

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

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

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

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

    使用VVAS调用HLS生成硬件加速器的主要流程

    本篇博客介绍 VVAS 框架所支持调用的 H/W(HLS) 内核。 H/W 内核指的是使用 HLS 工具生成的在 FPGA 部分执行的硬件功能模块。
    的头像 发表于 08-04 11:00 357次阅读
    使用VVAS调用HLS<b class='flag-5'>生成</b><b class='flag-5'>硬件</b>加速器的主要流程

    自动驾驶:硬件平台

    驾驶代码开发完毕后,在仿真系统内运行,测试是否可以实现目标。 硬件在环 硬件在环是基于必要的硬件平台。在第一步的软件仿真结束后,将所有的仿
    发表于 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