主要内容

选择数据类型的基本操作

单词长度限制数据类型

如果可能的话,单词长度限制定点数据类型在您的模型中,这样他们都等于或小于目标单片机的整数大小。这将导致更少的数学在单片机指令,并减少ROM和执行时间。

这个建议强烈适用于全局变量使用全局内存。例如,单位延迟块离散状态,都有相同的单词长度的输入和输出信号。这些全局变量离散状态消耗全球内存,这在很多嵌入式系统是一种稀缺资源。

为临时变量,只有短暂占领CPU寄存器或堆栈位置,所占用的空间不太重要。然而,根据操作,使用变量的数学操作可以是昂贵的。长整数的加法和减法通常要求定期加减整数,一样的努力,这样操作不是一个问题。相比之下,与长整数乘法和除法可以要求大幅增加和慢的代码。

避免与偏见定点落下的石块

只要有可能,避免使用定点数与偏见。在某些情况下,如果你仔细的选择偏差,可以避免大幅增加在ROM和执行时间。指对算术和扩展的建议更多信息的情况下如何选择合适的偏见是必要的;例如,如果你与一个硬件设备,有一个内置的偏见。不过,总体而言,安全是避免使用定点数和偏见。

输入查找表是一个重要的例外的建议。如果一个查找表输入和相关的输入数据使用相同的偏见,那么就没有处罚与非零偏差相关的操作。

包装和圆楼或简单

对于大多数定点整数操作,仿真软件金宝app®软件为您提供了选项溢出的处理方式以及如何计算是圆形的。传统的手写代码,特别是对于控制应用程序,几乎总是使用“不努力”的舍入模式。例如,减少精度的一个变量,该变量将是正确的。无符号整数和二进制补码签署整数,转移对相当于四舍五入到地板上。得到的结果相当或比你期望从传统的手写代码,在大多数情况下你应该转到地板上。

主要的例外是带符号整数的舍入行为。未指明的C语言的叶子这舍入行为,但是对于大多数目标“不努力”模式是圆为零。无符号的除法,一切都非负,所以舍入地板和舍入为零是相同的。

你可以提高代码效率通过设置的值模型配置参数> > >设备硬件实现细节签署整数除法轮参数来描述您的生产目标如何处理舍入为部门签署。为产品块,只做部门设置整数舍入模式参数的舍入模式生产目标给最好的结果。您还可以使用简单的舍入模式块可用。有关更多信息,请参考舍入模式:简单

溢出处理的选项也有对生成的代码的效率产生重大影响。使用软件来检测溢流情况和饱和结果需要更大的代码和慢而简单地忽略了溢出。当无符号整数溢出被忽略和二进制补码签署了整数,结果通常环绕模2N,其中N是位的数量。未处理的溢出,环绕在很多情况下是相当不受欢迎。

然而,由于代码大小和速度的需求,传统的手写代码包含很少的软件饱和。通常,定点缩放非常仔细,溢出不发生在大多数计算。这些计算安全地忽略了溢出的代码。得到的结果相当或比你期望从传统的手写代码,浸透在整数溢出参数不应该选择做这些计算模型块。金宝app

在设计中,可能有一些地方会发生溢出和饱和保护是必要的。传统的手写代码包括软件饱和这几个地方是必要的。把生成的代码,浸透在整数溢出参数只能选择几个模型块对应于这些危险的计算。金宝app

使用最有效的选项的次要效益溢出处理和舍入他们的计算结果常常减少来自多个语句需要几行C代码的小表情,可以折叠成下游计算。表达折叠代码优化技术,产生的好处,如减少需要存储的中间计算在临时缓冲区或变量。这可以减少栈大小,使其更有可能计算可以有效地处理只使用CPU寄存器。自动代码生成器可以小心地应用表达模型的折叠部分地区和经常看到可能不明显的优化。这种类型的自动优化通常允许生成的代码超过手写代码的典型例子的效率。

限制使用的自定义存储类

除了提到的技巧包装和圆楼或简单时,获取最大利益的表达折叠您还需要确保存储类被设置为汽车信号模型。当你选择一个设置以外汽车,你需要的名字信号,在生成的代码中创建一个单独的语句。因此,只使用一个设置以外汽车当它是必要的全局变量。

关于设置的更多信息存储类的信号,看为C代码生成配置信号数据