主要内容

设备驱动系统对象的结构

设备驱动程序块是专门化的MATLAB系统当部署到树莓Pi™硬件板时,生成自定义C/ c++代码。设备驱动程序块提供容易访问硬件板的特性,如通信协议或硬件库,不包括在默认值中金宝appSimu金宝applink支持包树莓派硬件

一个金宝app仿真软件®设备驱动程序块可以根据它们的端口类型归纳为以下两组:

  • 源模块只有输出端口。在模拟过程中,源块输出预定的信号。这个信号可以由随机数生成器、存储数组或常量创建。当部署到硬件时,源块输出从块所代表的I/O设备捕获的数据。例如,当部署到硬件上时,数字读块输出数字I/O引脚的逻辑状态。

  • 沉块只有输入端口。在模拟过程中,汇聚块充当《终结者》块。当汇聚块部署到硬件中时,它根据输入端口信号设置和更新I/O设备。例如,当部署到硬件上时,数字写块设置并更新等于输入端口信号的数字I/O引脚的逻辑状态。

要定义设备驱动程序块的行为,可以使用System对象™。然后用aMATLAB系统块来引用对象并将其包含在模型中。每个System对象使用setupImplstepImpl,releaseImpl方法定义设备驱动程序块的代码初始化、引脚输出行为和代码终止。的条件语句stepImpl时,设备驱动程序块以模拟模式运行。这种模式允许在测试或无法访问树莓派时,整个模型在主机上运行。系统对象还提供用于添加构建构件的服务。这些工件包括源文件、路径、共享库和预处理器定义,以生成Simulink代码。金宝app这些工件自动定义一个块的端口属性并生成一个块掩码。

类定义

在系统对象代码的顶部,定义系统对象的名称及其继承的类。

classdef类名称< matlab。系统& coder.ExternalDependency & matlab.system.mixin.Propagates ...结束

所有系统对象必须从matlab。系统.此外,设备驱动程序系统对象继承编码器。ExternalDependency提供了将构建构件添加到生成代码的API。的matlab.system.mixin.Propagates类提供了定义系统对象的输出大小、数据类型和复杂性的API。你可以从其他类继承,例如。matlab.system.mixin.CustomIcon,它允许您指定MATLAB系统对象块使用的名称和图标。

构造函数方法

模板System对象类,用于创建一个数字写块创建一个数字读块指南,使用标准构造函数方法:

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

初始化、输出和终止方法

这些方法定义了在初始化、输出和终止时发生的事情。使用setupImpl初始化硬件外设。使用stepImpl从硬件外设读取或写入。使用releaseImpl释放使用的硬件资源。这三个方法是定义设备驱动程序块行为的基础。

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

输入和输出信号属性

这段代码定义了块的输入或输出数量以及数据类型和大小。例如,getNumInputsImpl方法,设置输入端口的数量。类似地,getNumOutputsImpl方法设置输出端口的数量。

方法(访问=保护)%仿金宝app真软件功能函数isInputSizeMutableImpl(~,~) flag = false;结束...函数num = getNumInputsImpl(~) num = 1;结束函数num = getNumOutputsImpl(~) num = 0;结束结束

构建构件

构建构件定义源文件位置,包括路径、共享库、库搜索路径和编译设备驱动程序代码所需的预处理器定义。使用getDescriptiveName方法定义System对象的标识字符串。代码生成引擎使用这个字符向量来报告错误。使用is金宝appSupportedContext方法指定代码生成上下文。在设备驱动程序块中,只有实时研讨会(rtw)代码生成上下文应用,因此这个函数总是指定“环球套票”.使用updateBuildInfo方法来指定源文件和头文件,包括路径、库和构建System对象所需的定义。

方法(静态)函数name = getDescriptiveName() name =decriptive名字结束函数tf = is金宝appSupportedContext(context)“环球套票”);结束函数updateBuildInfo (buildInfo上下文)如果context.isCodeGenTarget (“环球套票”%更新buildinfosrcDir = fullfile (fileparts (mfilename (' fullpath ')),“src”);% #好< NASU >includeDir = fullfile (fileparts (mfilename (' fullpath ')),“包括”);addIncludePaths (buildInfo includeDir);使用下面的API来添加include文件,源文件和%链接器标志% addSourceFiles (buildInfo, source.c, srcDir);% addLinkFlags (buildInfo {' -lSource '});% addLinkObjects (buildInfo, sourcelib.a, srcDir);% addCompileFlags (buildInfo{‘-D_DEBUG = 1});% addDefines (buildInfo MY_DEFINE_1)结束结束

另请参阅

|