主要内容

设备驱动系统对象的结构

设备驱动程序块是MATLAB系统块,该块在部署到手臂®皮质®-A基于硬件板。通过创建设备驱动程序块,用户可以方便地访问硬件板的特性,例如支持包中没有的通信协议或硬件库。金宝app

一个金宝app仿真软件®设备驱动程序块可以根据端口类型泛化为以下两组之一:

  • 源模块只有输出端口。在仿真中,源块输出一个预定的信号。该信号可以由随机数发生器、存储数组或常数值创建。在代码生成之后,源块输出从块所代表的I/O设备捕获的数据。例如,所生成的数字读块的代码输出所述数字I/O引脚的逻辑状态。

  • 沉块只有输入端口。在模拟中,接收器块充当终结者块。代码生成后,接收器块根据输入端口信号对I/O设备进行设置和更新。例如,所述数字写块的生成代码设置并更新等于输入端口信号的数字I/O引脚的逻辑状态。

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

类定义

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

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

所有System对象必须继承matlab。系统.此外,设备驱动程序系统对象继承编码器。ExternalDependency,它提供了向生成的代码添加构建构件的api。的matlab.system.mixin.Propagates类提供api来定义System对象的输出大小、数据类型和复杂性。例如,您可以从其他类继承matlab.system.mixin.CustomIcon.类上显示的名称和图标MATLAB系统(金宝app模型)块。

构造函数方法

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

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

初始化,输出和终止方法

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

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

输入和输出信号属性

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

方法(访问=保护)% 金宝appSimulink函数函数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) tf = context. iscodegentarget (“环球套票”);结束函数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)结束结束

另请参阅

|