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

    文章

    19091

    浏览量

    228776
  • 代码
    +关注

    关注

    30

    文章

    4719

    浏览量

    68211
收藏 人收藏

    评论

    相关推荐

    如何自动生成verilog代码

    介绍几种自动生成verilog代码的方法。
    的头像 发表于 11-05 11:45 119次阅读
    如何<b class='flag-5'>自动</b><b class='flag-5'>生成</b>verilog<b class='flag-5'>代码</b>

    代码解析工具与自动化流程图生成解决方案

      摘要:CasePlayer2是一款强大的源代码解析工具,专门设计用于分析ANSI C、C、C++以及汇编语言源代码,并自动化地生成流程图等文件。该工具集成了多种功能,包括MISRA
    的头像 发表于 10-10 13:40 115次阅读

    汽车异构硬件平台开发如何进行静态代码分析

    随着汽车软件开发复杂度的提升,异构硬件平台的应用已成为必然趋势。多编译器环境的引入不仅是技术发展的自然产物,更是解决日益增长的功能需求和技术挑战的有效途径。在此背景下,Helix QAC 作为一款
    的头像 发表于 10-09 16:15 423次阅读
    汽车异构<b class='flag-5'>硬件</b><b class='flag-5'>平台</b>开发如何进行静态<b class='flag-5'>代码</b>分析

    万界星空科技AI低代码平台:重塑数字化创新边界

    万界星空科技的AI低代码平台通过可视化开发界面、丰富的组件库和模块库、配置与定制功能、集成与扩展能力、自动化与生成器工具以及智能分析与决策支持
    的头像 发表于 09-28 16:13 192次阅读
    万界星空科技AI低<b class='flag-5'>代码</b><b class='flag-5'>平台</b>:重塑数字化创新边界

    新的 MathWorks 硬件支持支持从 MATLAB 和 Simulink 模型到高通 Hexagon 神经处理单元架构的自动代码生成

    新的硬件支持包不仅无需耗时的手写代码优化和验证,还支持处理器在环测试 MathWorks 今天宣布,推出针对 Qualcomm® Hexagon™ 神经处理单元(NPU)的
    的头像 发表于 09-23 11:59 200次阅读

    关于Makefile自动生成-autotools的使用

    的Makefile并非日常任务,但遇见需要构建大型软件项目时,利用工具自动生成Makefile就显得尤为关键。接下来,我们将重点介绍一款自动化构建工具——Autoto
    的头像 发表于 07-25 15:50 1440次阅读
    <b class='flag-5'>关于</b>Makefile<b class='flag-5'>自动</b><b class='flag-5'>生成</b>-autotools的使用

    ISEDA首发!大语言模型生成代码到底好不好使

    在大模型席卷一切、赋能百业的浪潮里,“码农”也没能独善其身。各种代码自动生成的大模型,似乎描绘了一个人人都能像资深工程师一样写代码的美好未来。 但在这个理想成为现实之前,有一个不能回避
    发表于 05-16 13:41 282次阅读
    ISEDA首发!大语言模型<b class='flag-5'>生成</b>的<b class='flag-5'>代码</b>到底好不好使

    硬件平台介绍及使用(SC171开发套件V2)

    硬件平台介绍及使用(SC171开发套件V2) 课程类别 课程名称 视频课程时长 视频课程链接 课件链接 硬件 SC171开发套件V2开箱 9分45秒 https://t.elecfan
    发表于 04-09 15:34

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

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

    .sct文件自动生成了一堆代码,并且有warning是什么原因导致的?

    .sct文件自动生成了一堆代码,并且有warning,手动改回去后编译,警告消失,重新编译又自动生成代码
    发表于 03-07 06:39

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

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

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

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

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

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

    从HumanEval到CoderEval: 你的代码生成模型真的work吗?

    本文主要介绍了一个名为CoderEval的代码生成大模型评估基准,并对三个代码生成模型(CodeGen、PanGu-Coder和ChatGP
    的头像 发表于 11-25 15:55 1531次阅读
    从HumanEval到CoderEval: 你的<b class='flag-5'>代码</b><b class='flag-5'>生成</b>模型真的work吗?

    simulink自动生成ROS代码

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