目标的概述和结构
目标 AnyMath 是绑定模型的支持包 AnyMath 具有特定的目标平台。 该平台可以是微控制器、调试板、工业设备、远程Linux计算机或本地应用程序。
目标执行所有必要的步骤-从模型 AnyMath 在目标平台上启动之前:
-
获取模型和启动设置的描述。
-
使用C代码, 生成从模型 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 和构建文件。
标准件的分配:
操作模式
支持 两种模式:独立和交互.
独立模式
独立模式是指在构建和上传后,模型在目标平台上独立执行。 AnyMath 启动生成、装配和加载链,但在模型执行过程中不与运行时保持恒定的通信通道。
典型的独立执行场景包含以下步骤:
-
AnyMath 生成模型的C代码。
-
Target为目标平台创建项目。
-
Tulchain构建固件,二进制或可执行文件。
-
目标将工件上传到设备或启动应用程序。
-
模型脱机运行,直到完成、重新启动、关闭电源或其他平台事件。
从开发新目标的角度来看,这种模式在初始阶段是可取的:它需要较少的运行时基础结构,并允许您首先检查生成,程序集,计时器和调用step函数的正确性。
互动模式
交互模式意味着模型在目标平台上运行,并且 AnyMath 在执行过程中连接到它,接收所选信号的值,并且可以更改可配置参数而无需重新组装和上传。
仅运行C代码对于这种模式是不够的。 我们需要一个沟通渠道。 AnyMath 和一个模型。 在上面的示例中,该通道基于Xcp(通用测量和校准)协议:[Xcp(通用测量和校准)是ASAM MCD—1XCP标准,用于在其操作期间访问内部应用程序数据。].
典型的交互式执行场景包含以下步骤:
-
AnyMath 生成模型的C代码。
-
Target创建具有交互式运行时的项目。
-
将xcp从站和平台传输(如UART或TCP)添加到项目中。
-
工具链收集一个工件和一个带有模型符号的ELF文件。
-
目标加载或启动模型。
-
AnyMath 连接到运行时,启动数据流并发送命令以更改参数。