一、软件准备
前往恩智浦官网下载MCAL软件包、EB Tresos 、以及S32DS IDE:
以下软件均有NXP免费提供,但需注册账号获取
S32DS版本为:S32 Design Studio 3.2
其中EB Tresos版本为:24.0
MCAL版本为:S32K14X_MCAL4_2_RTM_1_0_0
NXP MCAL软件包后缀说明:HF为补丁版本 RTMC为发布版本
软件安装请参考:NXP_AUTOSAR_MCAL开发环境搭建引导
二、创建基于S32DS的MCAL SDK
本部分引用:S32DS创建自己的SDK_斯蒂芬杜的博客
创建SDK
首先打开S32DS,进入工具栏Window -> Preferences -> SDK Management -> Add。如下图:
点击Add后,会弹出下图窗口,参照下图输入SDK信息。下图右侧的路径需要注意不能包含空格。图片中写的精确到plugins文件夹是为了减小SDK大小,去除外层不必要的文件。也就是说理论上精确到eclipse的上层主目录也是可以的。
输入完信息后,点击上图右侧2处的OK按钮,回到上图左侧的主界面,将窗口拉大(拉大窗口有时可能反映非常迟钝,需要多次操作),会发现下面识别到了你的代码,如下图:
接下来我们需要将静态代码使能,建议使能所有模块,如果实际工程有些模块不使用,到时候在实际使用工程里面去关掉即可。除了使能,建议将Copy功能也打开,打开Copy功能后,新建工程时会自动拷贝一份代码到工程目录下,否则只是一个链接,这样当某些项目碰到某些特殊情况需要修改SDK代码时,不会影响其他项目。
如上图,先进入Sources标签页,凡是以generate开始的文件夹都不要选择(图1处),只需要选择src文件夹(图2处),点击src右侧的x图标(图3处),会自动将文件夹下所有.c文件选中(当然也可一个一个文件选中),同时每个文件后面的Copy列会自动激活让用户选择,这里需要每个文件单独勾选(图4处)。然后切换到Headers标签页(图5处),和Sources下面一样,只勾选include文件夹下面的文件,generate开始的文件夹不要勾选。
然后切换到Defined symbols标签页,这里可以定义一些常用的全局宏,点击图6处的➕,根据需要输入即可。这里输入后会自动添加到工程属性里面。也可以后面在项目工程属性里面去单独配置。设置完这些后,点击OK按钮完成配置(图7处)。
SDK打包好后,即可在SDK列表里面会发现,在新建工程过程中可选择使用。
导出SDK
前面章节讲解了如果制作的问题,但是制作好了只能自己使用,如果只能自己使用,显然这并不满足当前这种团队合作的需求。实际上我们可以导出你的配置给团队其他成员使用。
回到我们新增SDK的界面:工具栏Window -> Preferences -> SDK Management。
在该界面中除了Add功能外,实际下还有Import,Export等功能。
点击Export…按钮。然后输入导出保存路径。如果你的伙伴在相同路径(你创建SDK时的原始代码路径)下已有代码(代码目录结构必须完全一致),那么你可以单纯导出配置信息(只会生成一个xml文件),只需要勾选Export only SDK descriptor选项即可,否则不要勾选该选项(会生成一个压缩包)。如下图:
导入SDK
当你拿到其他伙伴导出的压缩包后,还是进入上面章节提到的界面:工具栏Window -> Preferences -> SDK Management。点击Import…按钮。在弹出的窗口中,有两种导入方式可供选择,一种是From ZIP file;另一种是From directory。如果导出时是整个包导出(没有选择Export only SDK descriptor选项),则选择第一种导入方式(浏览导出的压缩包)。否则选择第二种方式导入(浏览导出的xml文件)。浏览路径这些操作不再赘述,注意不要有空格。如下图:
上图下半部分的窗口请选择Default(SDK folder)选项,实测下来(S32DS ARM 2018.R1版本)第二个选项不启用,就算你勾选第二个选项,还是会在上一个窗口设置的路径下(也就是本窗口的Default路径)生成。
三、创建S32K144 MCAL工程
1.创建工程
2、EB Tresos工程创建(配置一个引脚用于点亮LED)
详细配置请参考《S32K1XX系列单片机 ——(2)用EB配置MCAL_老孟_的博客-CSDN博客_eb mcal使用《
此处我以上将配置好的工程上传到了网盘(其中要注意的是调试Debug引脚必须配置,否则后续无法下载程序):
链接:https://pan.baidu.com/s/1xdqYAflFajWaMwAKgRcAMA?pwd=MCAl
提取码:MCAl
配置完成后点击生成代码
3.S32DS工程配置
4、编写应用程序
编写main函数
/*
* main implementation: use this 'C' sample to create your own application
*
*/
#include "Mcu.h"
#include "Port.h"
#include "Dio.h"
extern CONST(Mcu_ConfigType, MCU_CONST) McuModuleConfiguration;
void TestDelay(uint32 delay);
void TestDelay(uint32 delay)
{
static volatile uint32 DelayTimer = 0;
while(DelayTimer<delay)
{
DelayTimer++;
}
DelayTimer=0;
}
/**
* @brief Main function of the example
* @details Initializez the used drivers and uses the Icu
* and Dio drivers to toggle a LED on a push button
*/
int main(void)
{
/* Initialize the Mcu driver */
Mcu_Init(&McuModuleConfiguration);
Mcu_InitClock(McuClockSettingConfig_0);
#if (MCU_NO_PLL == STD_OFF)
while ( MCU_PLL_LOCKED != Mcu_GetPllStatus() )
{
/* Busy wait until the System PLL is locked */
}
Mcu_DistributePllClock();
#endif
Mcu_SetMode(McuModeSettingConf_0);
/* Initialize all pins using the Port driver */
Port_Init(&PortConfigSet);
//
while (1)
{
/* Get input level of channels */
Dio_WriteChannel((Dio_ChannelType)DioConf_DioChannel_LED_G, (Dio_LevelType)STD_HIGH);
TestDelay(2000000);
Dio_WriteChannel((Dio_ChannelType)DioConf_DioChannel_LED_G, (Dio_LevelType)STD_LOW);
TestDelay(2000000);
}
while(1);
return (0U);
}
编译下载
如上图所示LED成功点亮。
三、参考文章
(70条消息) S32K1XX系列单片机 ——(2)用EB配置MCAL_老孟_的博客-CSDN博客_eb mcal使用
(70条消息) S32DS创建自己的SDK_斯蒂芬杜的博客-CSDN博客_s32ds
(70条消息) NXP_AUTOSAR_MCAL开发环境搭建引导_S32K14x系列_斯蒂芬杜的博客-CSDN博客_autosar开发环境如何搭建
(70条消息) 使用S32DS集成MCAL_斯蒂芬杜的博客-CSDN博客_s32ds激活码
四、工程参考
本文所涉及的工程文件以上传到网盘(提取码MCAL):
S32DSProject:https://pan.baidu.com/s/1fi07MxfTd4ddJCIx4lKCTg?pwd=MCAl
EB Project:https://pan.baidu.com/s/1mP7I3cAgk5SfRmPGUO-LNg?pwd=MCAl