您现在的位置是:首页 > 正文

如何结合原厂MCU和开发环境与业内领先软件工具来加速关键任务型应用开发?...

2024-02-29 14:14:26阅读 8

7ca04c59cc71da5d5ff31cecb6494e57.png

随着市场需求和汽车行业不断推进电动化、网联化、智能化和共享化等“新四化”,工程师将会面对越来越多的软件开发项目,去用高性能的、获得车规级和功能安全认证的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主要用于汽车车身电子系统、电池管理和新兴的域控制器。

01

29a20dc5cc56a6234a8f1c40d26596de.png

图1:NXP S32K(来源:NXP)

为了解决与日俱增的软件复杂度问题,NXP推出了实时驱动(RTD),可支持AUTOSAR和非AUTOSAR应用上的实时软件,主要用于Arm Cortex-M内核,使所有软件层均符合ISO 26262要求。从而可以快速完成符合相关认证要求的应用。

e006646b825de57bb17e985728b8a727.png

图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)的应用开发。

b01a7837b07a189944d63be61f5e3a0c.png

图3: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系列芯片用户带来极大的便捷。

02

下面将具体介绍如何利用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作为对应的工具链:

448b0716f3b997f8327965218c31c82d.png

然后通过Configuration Tools配置对应的引脚、时钟和外设并自动生成相应的代码:

e2e38528b80661c338033936ce0c97b9.png

导出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里面的原有工程文件夹目录不一致:

3a00798c3e5f22277eb3d4f43cdadfa2.png c202025a45695198e9525b6bc4af766f.png

为此IAR提供了一个叫做EWPtool的插件,可以导入对应的源文件目录到工程,具体可以查阅(参考材料4)。

03

下面是在从NXP S32DS导Workbench for Arm中之后的操作:

1. 删除对应的Freescale Processor Expert文件夹(对应的工程文件夹目录都会被删除):

bfe65bd023ab124f61052c0ac562cc13.png

2. 添加新源文件目录并选择对应工程目录(指向NXP S32DS创建工程的目录):

2eebfb035286f5b17573b5e14c9fe99f.png 50c488a59a1cd0cf3d0c1570fe9a5b58.png

3.对应IAR Embedded Workbench for Arm的工程文件夹目录和NXP S32DS里面的原有工程文件夹目录一致:

3623d75e1c45fb7e8f41b69af0558de7.png e2d7d02a0737e30ed5c55975f3b872bc.png

4.由于NXP S32DS中的startup代码中的程序入口函数和中断向量表与IAR Embedded Workbench for Arm默认使用的程序入口函数和中断向量表不同,需要做下面的配置(在Linker选项中指定对应的程序入口函数,在Debugger选项中指定对应的中断向量表地址:“--drv_vector_table_base=_ENTRY_VTABLE”):

90a35c8ef301a9dfe4ffbdab8821e174.png 0850f15b46a064bf134c563d44388dad.png

5. 然后就可以在IAR Embedded Workbench for Arm中进行编译,下载和调试等相关操作了:

98b8fe24ab233f4f34c26fa9b74569de.png

总结

本文以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

d1900a86159f91b7d0e05b922d7b1d79.png

1.【RISC-V 嵌入式开发板学习套装】 你值得拥有!

2.IDE也卷了,微软杀入嵌入式IDE~

3.STM32和GD32有什么区别?

4.嵌入式软件中错误如何处理?

5.时钟失效之后,STM32还能运行?

6.原来IAR下还有这么神乎其技的宏文件(.mac)

13331d36604152b67a6e47d2a228cf5c.gif

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

网站文章

  • 在odoo服务器文件夹,在windows10上安装odoo12开发环境的方法

    在odoo服务器文件夹,在windows10上安装odoo12开发环境的方法

    前言鉴于好多朋友说没有mac电脑,windows开发其实也差不了多远,只是个人习惯问题,而且吧,windows的电脑其实配环境也挺快的其实,我在这里再稍微补一个比较简单的windows环境部署,希望可...

    2024-02-29 14:14:18
  • 获取本地视频流

    思想: 获取本地视频流 1、navigator 提供视频流注册的一些活动 2、mediaDevices:提供访问连接媒体输入的设备(相机、麦克风、视频。。。) 3、getUserMedia 得到用户的设备,使用户开启设备权限 constraints 流的触发的参数,得到用户许可的参数 4、得到用户的视频流(媒体流)输出到video html代码 js代码

    2024-02-29 14:14:09
  • Linux系统中查看CPU信息的方法有哪些?

    这些是在Linux系统中查看CPU信息的常见方法。根据您的需求和具体环境,您可以选择适合您的方法来查看CPU信息。在Linux系统中,您可以使用多种方法来查看CPU信息。

    2024-02-29 14:10:25
  • 【.Net】.net获取exchange service用户日历会议数据或邮箱数据

    近期.net项目中,客户要求在定制化页面中展示指定用户的exchange日历会议数据以及邮箱内容数据,下面将详细来说一下实现过程

    2024-02-29 14:10:13
  • 用ini文件远程连接mysql

    最近改写个东西,又重新写了写MySql的连接。为了便于灵活应用,用读取ini文件的方式读取mysql连接参数。顺便学习了下ini文件。ini格式。ini文件由很多节组成。[NETWORK]//节host=*.*.*.*//host:键、IP:值user=rootpwd=//不写即为空读取:GetPrivateProfileString("NETWORK","host"...

    2024-02-29 14:10:06
  • ESP8266-12F 介绍与使用之程序烧录

    ESP8266-12F 介绍与使用之程序烧录

    ESP8266-12F 程序烧录 ESP8266 一.简介 前一段时间一直用ESP8266-12F开发板来学习开发,但是最近想做一些小的智能产品,像智能时钟以及温湿度检测等等,如果用一个完整的模块感觉...

    2024-02-29 14:08:25
  • Netty Codec框架

    Netty Codec框架

    什么是 Codec编写一个网络应用程序需要实现某种 codec (编解码器),codec的作用就是将原始字节数据与目标程序数据格式进行互转。网络中都是以字节码的数据形式来传输数据的,codec 由两部...

    2024-02-29 14:08:17
  • 对称块加密算法加密模式

    在现有的对称加密算法中,主要有4种加密处理模式,这4种加密处理模式一般是针对块加密算法而言的,如DES算法。这4种加密模式罗列如下: 模式中文描述 英文名称(Openssl缩写) 电子密码本模式 Electronic Code Book(ECB) 加密块链模式 Cipher Block Chaining(CBC) 加密反馈...

    2024-02-29 14:08:12
  • python:标准类型层级结构

    python:标准类型层级结构

    python:标准类型层级结构

    2024-02-29 14:08:05
  • 看山聊Java:Date 与 LocalDate 或 LocalDateTime 互相转换

    看山聊Java:Date 与 LocalDate 或 LocalDateTime 互相转换

    你好,我是看山。 从 Java1 到 Java8 将近 20 年,再加上 Java8 的普及时间、各种历史 API 兼容过渡时间。我们很多时候需要在旧时间 API 与新时间 API 之间切换,并行使用...

    2024-02-29 14:07:39