目录
1、S32K3软件实现概述
从上图可以看出,NXP的软件分为标准软件与附加软件,附加软件需要单独购买,标准软件可以下载类似于MCAL或者RTD这种,编译器可以使用免费的S32DS。
较为灵活的软硬件提供如下
特别关注Real-Time Software,针对Arm®Cortex®-M核心的mcu单个封装用于每个S32 MCU或处理器适用于AUTOSAR和非AUTOSAR系统。
增强点:
·所有软件层都符合ISO 26262标准
·AUTOSAR功能(如多核、用户模式)也扩展到非AUTOSAR环境(以前仅适用于AUTOSAR)
·AUTOSAR和AUTOSAR的完整IP和功能覆盖
·平台级中间件(用于EEP的FATFS)的可能集成; 从MCAL和堆栈(LIN, NFC, TCIP,…)派生的FLS的费用
·具有默认配置的驱动程序示例
下图有种一锅炖的感觉
2、实时驱动(RTD)体系结构概述
1、MCAL
基于(和增强)前MCAL环境的高级接口
2、SDK
基于(和增强)旧SDK环境的低级接口(LLI)
1、汽车级和生产就绪:符合SPICE/CMMI Level 3标准,MISRA 2012测试。
2、完整的驱动程序提供:-所有MCU外设的低级驱动程序:柔性、可折叠、可折叠、可折叠等。
—可选中间件:LIN、TCP/IP、NFC-互补NXP ic的驱动程序:例如SBC
3、FreeRTOS操作系统
4、集成NXP S32设计工作室(S32DS) IDE和第三方IDE: KEIL, GHS Multi, IAR
5、支持多种工具链:GCC, GHS, IAR
6、文档源代码,示例,食谱和演示快速启动应用程序,使用拖放功能
3、软件
其他特定的软件包和配置工具
可选择一种配置工具进行开发:EB tresos或S32配置工具(S32CT)
→旨在开发具有AUTOSAR功能的S32CT
两者都提供堆栈和库
AUTOSAR和非AUTOSAR上下文。
可插接:-高级接口(AUTOSAR兼容)-低级接口
演示应用程序代码可用于:
-提供库和堆栈-高级接口(AUTOSAR兼容)层-低级接口层
RTD的错误检测和报告机制是为目标应用程序类型量身定制的:
HL_API:
对于主要用于AUTOSAR应用的高级层,错误管理遵循DET和DEM的标准规范。RTD提供了这些AUTOSAR模块的“存根”实现,可由客户应用程序使用或覆盖。
组成AUTOSAR兼容的HL API的大多数API返回Std_ReturnType (E_OK/E_NOT_OK)。
然后可以通过调用DEM/DET中的专用api来检索特定的错误。
提示:总是使用DET报告开发错误;运行时可以使用DEM或DET报告,这取决于它们对应用程序完整性的影响。
IP API
IP层报告的错误仍然分为两类:
开发错误:通常是参数检查,但不仅如此,这些错误使用DevAssert函数检查;如果检测到错误,这将在默认实现中停止程序执行。DevAssert函数的默认行为也可以被应用程序覆盖。这种机制几乎与旧SDK中的DEV_ASSERT功能相同,唯一的改进是这些语句现在为每个驱动程序单独启用/禁用,而不是SDK方法,其中这是一个全局配置(检查下图)。
运行时错误:与SDK相反,在SDK中,驱动程序报告的所有运行时错误都分组在称为status_t的通用枚举中,RTD定义了每个驱动程序的一组运行时错误。这些错误的命名约定是<IP_Name>_Ip_StatusType,如下例所示:
每个驱动程序定义一组可以由受控IP报告的错误;这些错误既可以被在IP层之上实现的非autosar应用程序用于检索驱动程序的状态,也可以进一步馈送到上层的高级状态机。
配置数据文件现在按照更细粒度的方法进行拆分,以确保能够独立使用IP驱动程序。
从功能的角度来看,程序中需要的所有数据AUTOSAR应用程序将通过HLD文件导出,因此应用程序流中没有任何更改。
那么 RTD与MCAL各包含什么呢?如下图
IP也就是drivers 、 Real Time Driver包含了MCAL,不过下面时安装RTD的时候下面就会出现了。
RTD提供抽象/标准化接口和HW专用接口(由IPL接口导出)。这两种接口类型是互斥的,不能同时使用(简单的例子就是flash)。
根据上层想要使用的上下文,必须使用特定的接口:
3、S32DS和S32K3的RTD安装指南
--用你的电脑登录
--下载安装包
NXP软件下载链接https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=SW32K3-STDSW-D
--下载S32DS与RTD的安装包
--S32DS以及支持包的安装
第一步:安装• “S32DS.3.4_b201217_win32.x86_64.exe”
第二步:License Keys => Activation Code.
第三步:在S32DS3.4中安装“S32 Design Studio 3.4离线使用开发包,支持S32K3系列”;
•安装完成后,打开S32DS3.4,进入“帮助=>安装新软件”
第四步:寻找可用的软件
下拉菜单
选择:S32DesignStudio - http://www.nxp.com/lgfiles/updates/Eclipse/S32DS_3.4
第五步:选择S32DS的S32K3xx开发包
选择 S32DS S32K3 development package 3.4.1 并点击下一步。
第六步:安装S32K3XX的开发包
选择Update my installation to be compatible with the items being installed并点击下一步。
现在您可以查看安装细节了。单击Next
接受许可并单击Finish
--安装RTD
点击“Archive”按钮,在文件中查找SW32K3_RTD_4.4_1.0.0_DS_updatesite_D2110文件。记得我们从恩智浦官网下载了S32K3 RTD 1.0包
选择一个名称来标识这个新包。例如“S32K3 RTD 1.0”
记住选择SW32K3_RTD_4.4_1.0.0_DS_updatesite_D2110文件并单击“添加”
选择S32 Design Studio S32K3 RTD包并单击Next
现在您可以查看安装细节了。单击Next
接受许可并单击Finish
安装完成后,S32K3的RTD文件可以在以下路径中找到:
C:\NXP\S32DS.3.4\S32DS\software\PlatformSDK_S32K3_2021_10
4、实时驱动(RTD)的S32K3示例项目
• File → Import → General → Existing Projects into Workspace → Next
示例项目路径:
C:\NXP\S32DS.3.4\S32DS\software\PlatformSDK_S32K3_2021_10\SW32K3_RTD_4_4_1_0_0_D2110\Can_TS_T40D34M10I0R0\examples\S32DS
“examples\EBT” is for EB tresos example project and “examples\S32DS” is for S32DS example
建议选择“Copy projects into workspace”保存原始示例项目以供参考
File → New → S32DS Project from Example
选择RTD版本和示例项目
双击“mex”文件,打开SDK配置工具。
编译、调试配置、下载如下过程
4、实时驱动(RTD)的S32K3创建新项目
--、选择MCU S32K344设置项目名称。
--为新项目选择所需的RTD版本(“RTD_Dxxxx_xxxx”)。
--双击"。. mex”文件打开SDK配置工具
单击右上方的按钮可以在不同的配置工具和源代码编辑器之间切换。
5、产生的工程结构
为S32K3的每个M7核心提供一个文件夹。对于锁步模式(S32K344),它将只包含一个文件夹。
每个项目包括子文件夹:
Includes:工具链内容。
Project_Settings:启动和系统代码,以及链接器文件。
Include:工程驱动
Src:源文件及主函数
boot_header.c
(K344_Project/Project_Settings/Startup_Code/…)
该文件包含多核应用程序的初始化参数,启用的核,启动地址,应用程序大小等。
startup_ARMCM7.c
(K344_Project/Project_Settings/Startup_Code/…)
--包含内核的中断向量。
--reset_handler入口点。
--RAM初始化(ECC init)
--内存初始化(BSS和Init变量)
cmsis_gcc.h
在Reset_Handler中调用。它包含RAM内存初始化(BSS和数据初始化)
Linker files
(K344_Project/Project_Settings/Startup_Code/…)
--为每个核分配RAM和Flash空间。
--对于S32K344设备,由于CM7_1是同步的,可以将关联的TCM内存空间重新分配给其他核心。
--TCM内存是连续的;正常模式下ITCM为32kB (M7_0), M7_1为32kB, lockstep为64kb。
1、时钟配置工具提供了一个图形时钟树来查看时钟依赖关系和时钟传播,以便快速和轻松地配置复杂的系统时钟。
2、Pins Tool提供了一个简单的图形工具来将I/O函数分配给不同的引脚,这在开发具有非常复杂I/O的复杂应用程序时至关重要。
3、外设工具配置设备初始化和软件驱动程序(RTD),减少了阅读手册和编写复杂代码的时间。
这些文件还包括内存初始化、引导头文件和链接文件