AnyMath 文档

目标的概述和结构

目标 AnyMath 是绑定模型的支持包 AnyMath 具有特定的目标平台。 该平台可以是微控制器、调试板、工业设备、远程Linux计算机或本地应用程序。

目标执行所有必要的步骤-从模型 AnyMath 在目标平台上启动之前:

  1. 获取模型和启动设置的描述。

  2. 使用C代码, 生成从模型 AnyMath .

  3. 为目标平台生成项目。

  4. 使用合适的工具链构建项目。[工具链是一组控制台工具(编译器、链接器和实用程序),它们从项目的源文件中为微控制器组装固件。].

  5. 加载或启动组装的工件。

  6. 如有必要,它会在执行期间组织与模型的数据交换。

用户目标 添加至*Engee。整合*及 同步AnyMath 之后它可以在脚本和块中使用。

目标的结构

最小目标模板放在目录中 目标. 为一个平台创建一个单独的文件夹很方便。:

my_extension/
└── targets/
    └── MyTarget/
        ├── __init__.py
        └── MyTarget.py
自定义嵌入式系统支持包(目标)应位于 目标/<目标文件夹>/.

通常,定位还需要模板、驱动程序、构建文件、块库和演示模型,例如:

my_extension/
└── targets/
    └── MyTarget/
        ├── __init__.py
        ├── MyTarget.py
        ├── README.md
        ├── blocks_library/
        │   └── engee_my_target.nglib
        ├── demos/
        │   └── example_my_target.engee
        ├── drivers/
        │   ├── platform_driver.c
        │   └── platform_driver.h
        ├── templates/
        │   ├── main.c
        │   └── CMakeLists.txt
        ├── FirmwareBuilder.py
        └── FirmwareLoader.py

上述方案是广义的。 对于Arduino兼容的平台,而不是 主要。c 可以生成扩展名的文件 .井野. 对于裸机、RTOS或Linux平台,生成更方便 主要。c 和构建文件。

标准件的分配:

  • MyTarget.py主要目标类和块参数模型 电火花-目标;

  • _init.py -导入主类,以便支持包下载机制可以找到它;

  • 模板 -Jinja-入口点模板, 策划者/运行时代码和构建文件;

  • 司机 -基于平台的 驱动程序从块调用的C/C++和C-API C函数;

  • FirmwareBuilder.py -编译器和构建系统的包装器;

  • FirmwareLoader.py -下载固件;

  • 图书馆图书馆大厦 AnyMath 对于用户;

  • 演示模型,让您快速开始使用该设备。

操作模式

支持 两种模式:独立和交互.

独立模式

独立模式是指在构建和上传后,模型在目标平台上独立执行。 AnyMath 启动生成、装配和加载链,但在模型执行过程中不与运行时保持恒定的通信通道。

典型的独立执行场景包含以下步骤:

  1. AnyMath 生成模型的C代码。

  2. Target为目标平台创建项目。

  3. Tulchain构建固件,二进制或可执行文件。

  4. 目标将工件上传到设备或启动应用程序。

  5. 模型脱机运行,直到完成、重新启动、关闭电源或其他平台事件。

从开发新目标的角度来看,这种模式在初始阶段是可取的:它需要较少的运行时基础结构,并允许您首先检查生成,程序集,计时器和调用step函数的正确性。

互动模式

交互模式意味着模型在目标平台上运行,并且 AnyMath 在执行过程中连接到它,接收所选信号的值,并且可以更改可配置参数而无需重新组装和上传。

仅运行C代码对于这种模式是不够的。 我们需要一个沟通渠道。 AnyMath 和一个模型。 在上面的示例中,该通道基于Xcp(通用测量和校准)协议:[Xcp(通用测量和校准)是ASAM MCD—1XCP标准,用于在其操作期间访问内部应用程序数据。].

典型的交互式执行场景包含以下步骤:

  1. AnyMath 生成模型的C代码。

  2. Target创建具有交互式运行时的项目。

  3. 将xcp从站和平台传输(如UART或TCP)添加到项目中。

  4. 工具链收集一个工件和一个带有模型符号的ELF文件。

  5. 目标加载或启动模型。

  6. AnyMath 连接到运行时,启动数据流并发送命令以更改参数。

使用交互模式支持定位比仅使用独立模式定位更难实现,因为除了构建和启动之外,它还必须提供正确的 运输, 寻址,字符的存在 ELF文件和定期维护数据交换在 调度程序

首先选择什么

如果平台是新的,那么值得从独立模式开始。:

*检查从模型到可执行工件的基本路径更容易; *更少的运行时间和tulchain要求; *模型装配、加载和规划错误更容易与数据交换错误分开。

交互模式应该在独立模式脚本在简单模型上稳定工作后添加。