主要内容

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

一个设备驱动程序块是一个专业MATLAB系统块时,生成自定义的C / c++代码部署到覆盆子π®硬件板。块设备驱动程序提供方便地访问功能的硬件板,例如通信协议或硬件库,而不是包含在默认万博1manbet万博1manbetxx硬件仿真软件支持包树莓π

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

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

  • 沉块只有输入端口。在仿真中,一个沉块充当《终结者》块。当部署到硬件,沉块集和更新根据输入端口I / O设备的信号。例如,当部署到硬件、数字写块集和更新逻辑状态的数字I / O销等于输入端口的信号。

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

类定义

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

classdef类名称< matlab。系统和编码器。ExternalDependency……结束

所有的系统对象必须继承matlab.System。此外,设备驱动程序系统对象继承coder.ExternalDependency提供的API将构建构件添加到生成的代码。

构造函数方法

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

方法%的构造函数函数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)结束结束

另请参阅

|