一个如何充分结合原厂MCU开发环境与业内领先软件工具优势来加速关键任务应用开发的案例
随着市场需求和汽车行业不断推进电动化、网联化、智能化和共享化等“新四化”,工程师将会面对越来越多的软件开发项目,去用高性能的、获得车规级和功能安全认证的MCU开发相关应用。将MCU供应商匹配提供的MCU开发环境,与业内领先的开发工具相结合,将会给开发人员带来开发效率和成果性能的大幅提升。本文以在汽车行业被广泛使用的S32K系列32位Arm Cortex汽车MCU为例,来介绍通过整合利用其S32DS开发环境和在行业中已被广泛采用的IAR Embedded Workbench for Arm工具链,快速开发高性能汽车MCU应用。
自2017年推出以来,NXP S32K1 MCU在汽车电子市场上被广泛应用。在此基础上,NXP于2020年推出S32K3 MCU,进一步扩展了基于Arm Cortex-M0+/M4F的S32K1 MCU系列产品。全新的S32K3 MCU基于Arm Cortex-M7,并提供了多核和锁步选项,可支持功能安全 ISO 26262 ASIL B/D。S32K3 MCU主要用于汽车车身电子系统、电池管理和新兴的域控制器。
图1:NXP S32K(来源:NXP)
为了解决与日俱增的软件复杂度问题,NXP推出了实时驱动(RTD),可支持AUTOSAR和非AUTOSAR应用上的实时软件,主要用于Arm Cortex-M内核,使所有软件层均符合ISO 26262要求。从而可以快速完成符合相关认证要求的应用。
图2:NXP 实时驱动(RTD) (来源:NXP)
NXP S32K3 MCU拥有广泛的合作伙伴来帮助客户开发。作为NXP的重要合作伙伴,IAR Systems提供专业的嵌入式软件开发工具。
最新推出的IAR Embedded Workbench for Arm V9.20.1已经正式支持NXP S32K3 MCU (见参考材料1)。IAR Embedded Workbench for Arm V8.50.10 功能安全版本可用于基于S32K3实时驱动(RTD)的应用开发。
图3:IAR Systems嵌入式软件开发工具(来源:IAR Systems)
IAR Embedded Workbench for Arm广泛应用于汽车电子软件开发。其高度优化的编译器可以生成运行效率极高、并且体积小的可执行代码,最大程度释放MCU性能,降低FLASH和RAM的占用。同时IAR Embedded Workbench for Arm具有强大的调试器、代码分析工具可以帮助研发人员提升开发效率,提高代码质量,保障产品的可靠性。
为了方便客户的应用开发,IAR Embedded Workbench for Arm与NXP S32DS工具做了相应的集成,方便客户在IAR Embedded Workbench for Arm工具上快速进行工程初始化。
NXP的S32 Design Studio中的S32配置工具(Configuration Tools) 可以快速配置引脚、时钟和外设,大大简化了S32K3 MCU的配置工作,可以加速开发前期的准备工作。通过S32DS做项目工程初始化,然后导入到IAR Embedded Workbench for Arm中进行项目开发,可以为S32K3系列芯片用户带来极大的便捷。
下面将具体介绍如何利用NXP S32DS建立工程并导入到IAR Embedded Workbench for Arm来加快基于NXP S32K3 MCU的汽车软件开发。
在NXP S32DS中安装IAR Eclipse插件
NXP S32DS支持IAR Eclipse插件,但是IAR Eclipse插件没有包含在S32DS安装包中,需要单独安装,其方法可具体可以阅读参考材料2。 在实际应用中,这适用于S32 Design Studio for ARM,同样也适用于S32 Design Studio for S32 Platform。
在NXP S32DS中建立工程
在NXP S32DS中建立工程并选择IAR Toolchain for Arm作为对应的工具链:
然后通过Configuration Tools配置对应的引脚、时钟和外设并自动生成相应的代码:
导出S32DS工程到IAR Embedded Workbench for Arm
在S32DS中建立工程时,如果选择了IAR Toolchain for Arm 作为工具链,对应的工程可以导出并导入到IAR Embedded Workbench for Arm,具体步骤可以查阅参考材料3。导出工程的操作适用于S32 Design Studio for ARM和S32K1,同样也适用于S32 Design Studio for S32 Platform和S32K3。
但是按照链接中的操作之后,IAR Embedded Workbench for Arm工程文件夹目录和NXP S32DS里面的原有工程文件夹目录不一致:
为此IAR提供了一个叫做EWPtool的插件,可以导入对应的源文件目录到工程,具体可以查阅参考材料4。
下面是在从NXP S32DS导Workbench for Arm中之后的操作:
1.删除对应的Freescale Processor Expert文件夹(对应的工程文件夹目录都会被删除):
2.添加新源文件目录并选择对应工程目录(指向NXP S32DS创建工程的目录):
3.对应IAR Embedded Workbench for Arm的工程文件夹目录和NXP S32DS里面的原有工程文件夹目录一致:
4.由于NXP S32DS中的startup代码中的程序入口函数和中断向量表与IAR Embedded Workbench for Arm默认使用的程序入口函数和中断向量表不同,需要做下面的配置(在Linker选项中指定对应的程序入口函数,在Debugger选项中指定对应的中断向量表地址:“--drv_vector_table_base=_ENTRY_VTABLE”):
5.然后就可以在IAR Embedded Workbench for Arm中进行编译,下载和调试等相关操作了:
总结
本文以NXP最新推出的S32K3 MCU及相关的软件开发资源为例,通过展示如何利用NXP原厂配置的S32DS工具建立基于S32K3 MCU的工程,并选择业内广受欢迎的IAR Toolchain for Arm 作为工具链来提升对代码质量要求很高的项目的开发效率。通过NXP S32DS中的Configuration Tools配置对应的引脚、时钟和外设,并自动生成相应的代码,然后导出NXP S32DS工程到IAR Embedded Workbench for Arm进行后续开发。利用NXP S32DS的灵活配置和IAR Embedded Workbench for Arm高效的编译效率加快基于NXP S32K3 MCU的汽车软件开发。
当然,随着越来越多的中国科技企业在工业应用、医疗设备和其他要求高可靠性和高性能的关键应用中发力,在这些领域中也存在着如何结合MCU原厂开发工具,以及诸如IAR Systems这些第三方厂商提供的高性能工具链各自的优势做应用开发的机会,工程师朋友们可以多做了解和尝试。
延展阅读
参考材料1:IAR Systems enables next generation automotive applications with NXP’s S32K3 MCU family
参考材料2: HOWTO: Install IAR Eclipse plug-in into S32 Design Studio for ARM
参考材料3: HOWTO: Export S32DS Project to IAR Embedded Workbench for Arm
参考材料4: https://github.com/IARSystems/project-migration-tools
关于IAR Embedded Workbench for Arm的更多信息,请参考 IAR Embedded Workbench for Arm
关于NXP S32K3的更多信息,请参考 S32K3 Microcontrollers for General Purpose