主要内容

设备驱动程序系统对象的结构

一块设备驱动程序是一种特殊形式的MATLAB系统块时,生成自定义的C / c++代码部署到一个手臂®皮质®——基于硬件板。创建设备驱动程序块,提供用户方便地访问特性的硬件板,如通信协议或硬件库,不支持包。万博1manbetx

一个万博1manbetx仿真软件®设备驱动程序块可以推广到两组根据他们的端口类型之一:

  • 源模块只有输出端口。在仿真中,源块输出一个预先确定的信号。这个信号从随机数字生成器,可以创建一个存储数组,或一个常数值。代码生成后,源阻止捕捉输出数据块代表的I / O设备。例如,数字阅读的生成的代码块输出的逻辑状态数字I / O销。

  • 沉块只有输入端口。在仿真中,沉块作为一个终结者块。代码生成后,沉块集和更新根据输入端口I / O设备的信号。例如,生成的代码的数字写块集和更新逻辑状态的数字I / O销等于输入端口的信号。

定义块设备驱动程序的行为,您可以使用一个系统对象™。然后你使用一个MATLAB系统(万博1manbetx模型)块引用的对象并将其包括在一个模型。每个系统对象使用setupImpl,stepImpl,releaseImpl方法定义代码初始化、销输出行为,和代码块设备驱动程序终止。通过条件语句stepImpl,设备驱动程序块在模拟模式运营。这种模式使整个模型能够在主机上运行测试时或者当你没有访问硬件。添加构建构件的系统对象也提供服务。这样的工件包括源文件,包括路径,共享库,和预处理器定义,模型生成的代码。万博1manbetx这些工件自动定义的端口属性块并生成块面具。

类定义

顶部的系统对象的代码,您定义的名称系统对象和类继承。

classdef类名称< matlab。系统和编码器。ExternalDependency & matlab.system.mixin。传播……结束

所有的系统对象必须继承matlab.System。此外,设备驱动程序系统对象继承coder.ExternalDependency,它提供了api来构建构件添加到生成的代码。的matlab.system.mixin.Propagates类提供了api来定义输出大小,系统对象的数据类型和复杂性。例如,你可以继承其他类matlab.system.mixin.CustomIcon。使用这个类来指定名称和图标上显示MATLAB系统(万博1manbetx模型)块。

构造函数方法

模板系统对象类中使用创建一个数字写块创建一个数字读取块指南,使用一个标准的构造函数方法:

方法%的构造函数函数obj =类名称(变长度输入宗量)coder.allowpcode (“普通”);找(obj,输入参数个数、变长度输入宗量);结束结束

初始化、输出和终止的方法

这些方法在初始化定义发生了什么,输出,和终止。使用setupImpl初始化硬件外围设备。使用stepImpl从磁盘读取或写入硬件外围设备。使用releaseImpl释放硬件资源的使用。这三种方法的支柱定义一块设备驱动程序的行为。

方法(访问=保护)函数setupImpl (obj)%执行任务,只需要执行一次结束函数stepImpl (obj, u)%设备驱动程序输出结束函数releaseImpl (obj)%终止代码结束结束

输入和输出信号的特性

这段代码部分定义了一个块的输入或输出的数量和数据类型和大小。例如,getNumInputsImpl方法在沉块,设置输入端口的数量。类似地,getNumOutputsImpl方法在一个源块设置输出端口的数量。

方法(访问=保护)%仿万博1manbetx真软件功能函数isInputSizeMutableImpl(~ ~)国旗= false;结束函数num = getNumInputsImpl (~) num = 1;结束函数num = getNumOutputsImpl (~) num = 0;结束结束

构建构件

构建工件定义源文件位置,包括路径、共享库,库搜索路径,和预处理器定义编译所需设备驱动程序代码。使用getDescriptiveName系统方法定义一个标识字符串对象。代码生成引擎使用这个字符串来报告错误。使用is万博1manbetxSupportedContext指定代码生成上下文的方法。在设备驱动程序块,只有实时车间(环球套票)代码生成上下文应用,所以这个函数总是指定“环球套票”。使用updateBuildInfo方法指定源和头文件,包含路径,构建系统所需的库,并定义对象。

方法(静态)函数name = getDescriptiveName =()的名字decriptive名字;结束函数特遣部队= c万博1manbetxontext.isCodeGenTarget (tf = isSupportedContext(上下文)“环球套票”);结束函数updateBuildInfo (buildInfo上下文)如果context.isCodeGenTarget (“环球套票”)%更新buildinfosrcDir = fullfile (fileparts (mfilename (' fullpath ')),“src”);% #好< NASU >includeDir = fullfile (fileparts (mfilename (' fullpath ')),“包括”);addIncludePaths (buildInfo includeDir);%使用以下API添加包含文件、源和%链接器旗帜% addIncludeFiles (buildInfo,‘source.h includeDir);% addSourceFiles (buildInfo, source.c, srcDir);% addLinkFlags (buildInfo {' -lSource '});% addLinkObjects (buildInfo, sourcelib.a, srcDir);% addCompileFlags (buildInfo {‘-D_DEBUG = 1});% addDefines (buildInfo MY_DEFINE_1)结束结束

另请参阅

|