关于嵌入式目标开发
与代码生成器捆绑在一起的目标文件适用于许多不同的应用程序和开发环境。第三方目标提供了额外的多功能性。此外,您还可以选择实现自定义目标。
来实现基于手臂®皮质®——或手臂皮层-M处理器,安装相应的支持包,并参阅Target SDK: Embedded C万博1manbetxoder®万博1manbetx支援套件手臂皮层——处理器、制定目标(ARM Cortex-A处理器万博1manbetx的嵌入式编码器支持包)或嵌入式编码器支持包手臂皮层- m处理器,制定目标(ARM Cortex-M处理器万博1manbetx嵌入式编码器支持包)。否则,请使用这些函数和主题。
自定义的目标
出于以下原因之一,您可能希望实现一个自定义目标:
为了使最终用户能够使用特定的开发环境(编译器/链接器/调试器)为特定的CPU或开发板生成可执行的生产代码。
通过将万博1manbetx自定义设备驱动程序块合并到模型中来支持目标硬件上的I/O设备。
为特殊的编译器(如嵌入式微控制器或DSP板的交叉编译器)或开发/调试环境配置构建过程。
代码生成器为创建自定义嵌入式目标提供了起点,以实现上述基本目的。本手册涵盖了实现自定义嵌入式目标所需的任务和技术。
目标类型
下面几节描述了用于不同用例的几种类型的目标
关于目标类型
从基线或快速原型目标到生产目标,有一个能力的进展。最初,您可能想要实现一个快速的原型目标。稍后,您可以增强目标,使其具有更全面的功能。例如,您可能希望在某些时候添加对软件在环(SIL)或处理器在环(PIL万博1manbetx)模拟的支持,以验证您的嵌入式目标。目标类型并不互斥。嵌入式目标可以支持不止一个这样的用例,或者这里万博1manbetx没有列出的其他用途。
下面是对目标类型的讨论嵌入式目标的推荐特性,其中包含嵌入式目标开发的建议功能列表和一般指南。
快速原型目标
一个快速原型目标或基线目标提供了一个目标为生产处理器的起点。快速原型目标集成了编码生成器软件和一个或多个流行的交叉开发环境(编译器/链接器/调试器工具链)。快速原型目标提供了一个起点,您可以根据应用程序需求自定义目标。
为这种类型的目标提供的目标文件应该是可读的、易于理解的,并且有完整的注释和文档。应该特别注意到预期的交叉开发环境的接口。这个接口应该使用特定开发系统的首选方法来实现。例如,一些开发环境使用传统的make实用程序,而另一些则基于项目文件构建,这些构建可以在代码生成器的控制下自动化。
当您使用快速原型目标时,您需要包括您自己的设备驱动程序和遗留代码,并修改链接器内存映射以满足您的需要。您应该熟悉目标开发系统。
生产目标
一个生产目标万博1manbetx支持生产处理器的嵌入式应用程序开发。它包括创建与外部世界立即交互的程序可执行文件的能力。一般来说,易于使用比生成代码文件的简单性或可读性更重要,因为假定您不想或不需要修改文件。
生产目标的理想特性包括:
重要的I/O驱动程序支持,提供开箱即用万博1manbetx
使用第三方调试器轻松下载生成的独立可执行程序
用户控制的可执行文件在FLASH或RAM存储器中的位置
万博1manbetx支持目标硬件上的代码可见性和调优
用SIL和PIL仿真验证目标
您可以使用软件在循环(SIL)或处理器在循环(PIL)模拟来验证生成的代码并验证目标编译器/处理器环境。
您可以使用SIL和PIL模拟模式,通过将结果与普通模式模拟进行比较,来验证自动生成的代码。使用SIL,您可以轻松地在主机上验证生产意图源代码的行为;然而,通常不可能验证随后将为目标硬件编译的完全相同的代码,因为代码必须为主机平台编译(即与目标平台不同的编译器和不同的处理器架构)。使用PIL模拟,您可以验证您打算在生产环境中部署的完全相同的代码,并且您可以在实际的目标硬件或指令集模拟器上运行代码。
有关描述如何运行处理器在循环测试以验证自定义目标的示例,请参见自定义目标示例。
有关SIL和PIL模拟的更多信息,请参见SIL和PIL模拟(嵌入式编码)。
仿真模拟
专用用例是生成用于半(边境)模拟。在HIL仿真中,随着组件的细化和制造,纯仿真的部分逐渐被硬件组件所取代。HIL仿真提供了一种高效的设计过程,消除了昂贵的零件制造迭代。
嵌入式目标的推荐特性
目标器基本特性
您可以将目标基于嵌入式编码器中包含的通用实时(GRT)目标或嵌入式实时(ERT)目标®产品。
如果您的目标是基于ERT目标的,那么它应该使用
“Embedded-C”
的值。CodeFormat
TLC变量,它应该继承在ERT目标的系统目标文件中定义的选项,并在TLC文件中使用以下行:% % %分配CodeFormat = " Embedded-C分配代码格式 " %%---------------------------- /% BEGIN_RTW_OPTIONS rtwgensettings。DerivedFrom = 'ert.tlc';End_rtw_options %/ %%----------------------------
通过遵循这些建议,您的目标将具有ERT目标的生产代码生成功能。
看到自定义系统目标文件有关继承机制的进一步详细信息,请设置
CodeFormat
,以及其他细节。嵌入式目标最基本的需求是从模型或子系统生成实时可执行文件。通常,嵌入式目标生成一个基于计时器中断的裸可执行文件(尽管也可以为操作系统环境开发目标)。
您的目标应该支持用于模型执行的单任务和万博1manbetx多任务求解器模式的代码生成器概念。ERT目标提供任万博1manbetx务支持,但在实现基于ERT的目标之前,您应该彻底了解它是如何工作的。
有关基于计时器中断的执行的信息,请参见绝对时间和消耗时间计算和异步事件。
您应该生成目标可执行文件的主程序模块,而不是使用静态的主模块(例如静态的
rt_main.c
或rt_cppclass_main.cpp
模块自带软件)。一个生成的c
或. cpp
由于省略了预处理器检查和其他额外代码,可以使其更具可读性和效率。有关生成的和静态的主程序模块的信息,请参见将生成的独立可执行程序部署到目标硬件(嵌入式编码)。
请遵循文件夹和文件命名约定。
与目标开发环境集成
大多数交叉开发系统都在微软旗下运行®窗户®电脑主机。您的目标应该支持Windows操作系统万博1manbetx作为主机环境。
一些交叉开发系统支持一个或多个版本的Open Group UN万博1manbetxIX®平台,也允许UNIX主机支持。万博1manbetx
嵌入式目标必须至少支持一种嵌入式开发环境。万博1manbetx到开发环境的接口可以采用几种形式之一。工具链方法和模板生成文件方法生成标准的生成文件,以便与您的开发环境一起工作。有关这些构建方法的一般信息,请参见选择生成方法并配置生成过程。有关模板生成文件结构的详细信息,请参见自定义模板生成文件。
使用基于ide的工具的另一种方法是创建Microsoft Visual Studio®用于在Visual Studio项目中集成的目标解决方案。
考虑开发环境供应商的许可要求和限制是很重要的。您可能需要修改供应商提供的文件,并将它们作为嵌入式目标的一部分发布。
看到开发工具接口获取更多信息。
观察目标代码的执行
您的目标应该支持一种机制,可以用于在目万博1manbetx标代码实时运行时(在调试器之外)观察它。
您可以使用
rtiostream
API来实现一个通信通道,以支持不同进程之间的数据交换。有关为目标连接性创建通信通道的示例,请参见创建用于处理器在环(PIL)模拟的目标通信通道(嵌入式编码)。这rtiostream
通信通道需要在新目标上启用处理器在环(PIL)。看到通信程序流API(嵌入式编码)。一种行业标准的方法是使用CAN总线,带有ASAP2文件和CAN校准协议(CCP)。有几种基于主机的图形前端工具可用,它们连接到启用ccp的目标,并提供数据查看和参数调优。万博1manbetx支持这些工具需要实现CAN硬件驱动程序和目标的CCP协议,以及ASAP2文件生成。您的目标可以利用代码生成器提供的ASAP2支持。万博1manbetx
另一种选择是支持Simulink万博1manbetx万博1manbetx®外部模式仿真。有关更多信息,请参见主机-目标通信与外部模式仿真。
部署和硬件问题
设备驱动程序支持是嵌入式目标万博1manbetx设计中的一个重要问题。设备驱动程序是Simulink块,支持万博1manbetx目标CPU的硬件I/O万博1manbetx功能,或开发板的I/O功能。
如果您正在开发一个快速原型目标,请考虑提供最少的驱动程序支持,前提是最终用户开发自己的驱动程序。万博1manbetx如果您正在开发一个生产目标,您应该提供完整的驱动程序支持。万博1manbetx
看到设备驱动程序。
自动将生成的代码下载到目标硬件使目标更易于使用。通常使用调试器实用程序;如果所选的调试器支持命令脚本文件,则可以很简单万博1manbetx地实现这一点。STF_make_rtw_hook.m描述从构建流程执行代码的机制。你可以用这个机制来
系统()
调用诸如调试器之类的实用程序。您可以以类似的方式调用其他简单的下载实用程序。如果您的开发系统支持COM自动化,您可以通过这种机制控万博1manbetx制下载过程。COM自动化的使用在开发工具接口。
映射到RAM内存的可执行文件是典型的。通过使用目标代码生成选项,您可以为可执行文件的FL万博1manbetxASH或RAM放置提供可选支持。要支持万博1manbetx此功能,可能需要多个链接器命令文件、多个调试器脚本,可能还需要多个makefile或项目文件。还包括根据RAM/FLASH选项值在这些文件之间自动切换的能力。
为您的目标处理器选择一个流行的、广泛可用的评估板或原型板。考虑目标板的封闭和加固版本。还要考虑对目标CPU的各种片上I/O功能的单板级支持万博1manbetx,以及支持所选单板的开发系统的可用性。