提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、EB和S32DS开发的理解
- 二、S32DS的开发
- 三、EB的配置
前言
因为Vector开发Autosar的时间较久,博主这几个月都要直接在S32DS进行项目开发了。为了和后期的Autosar对接顺利,所以MCAL也采用EB进行开发。这个章节重点介绍下EB的开发
一、EB和S32DS开发的理解
首先要理解下RTD,RTD可以理解为NXP开发的底层库静态代码。
采用S32DS配置底层,如下界面:
正常我们只需要配置Drivers就可以对底层进行调用了。这边多了个MCAL,就是对Drivers再次进行了一个封装,让其接口满足Autosar的标准。RTD可以理解为Driver的下一层,RTD的代码正常我们开发人员是不会动的,所以可以理解为NXP的静态代码。
EB开发就是直接一步到位了,比如上图的DIO和PORT,对于EB来说直接导入DIO和Port模块进行配置,他就会生成调用RTD的接口配置文件,而且这个文件是符合Autosar标准的。
总结下,想要开发符合Autosar的mcal可以使用S32DS也可以使用EB,如果只是简单的做个测试程序,不需要符合Autosar标准,直接用S32DS开发Driver即可。
二、S32DS的开发
EB工程输出的只是MCAL接口,其他部分依然需要S32DS编写,比如Main函数,RTD实现等。所以要开发EB首先要配置好S32DS。步骤如下
File–New–S32ds Application project–选择自己的IC
删除工程自带的这些文件
添加上面三个文件夹
在MCAL里面添加如下文件
添加filter
在setting添加include
“ProjDirPath/Generate/include""{ProjDirPath}/Generate/include"
"ProjDirPath/Generate/include""{MCAL_PLUGIN_PATH}/AdcMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/AeMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/BaseNXPMCALMODULENAMESUFFIX/header""{MCAL_MODULE_NAME_SUFFIX}/header"
"MCALMODULENAMESUFFIX/header""{MCAL_PLUGIN_PATH}/BaseNXPMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/Can_43_FLEXCANMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/CanIfMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/CanTrcv_43_AEMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/CrcMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/CryIfMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/Crypto_43_HSEMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/CsmMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/DemMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/DetMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/DioMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/DpgaMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/EcuMMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/Eth_43_GMACMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/EthIfMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/EthSwtMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/EthTrcvMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/FeeMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/GduMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/GptMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/I2cMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/I2sMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/IcuMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/Lin_43_LPUART_FLEXIOMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/LinIfMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/LinTrcv_43_AEMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/MclMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/McuMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/Mem_43_EEPMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/Mem_43_EXFLSMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/Mem_43_INFLSMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/MemAccMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/MemIfMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/OcotpMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/OcuMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/OsMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/PlatformMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/PlatformMCALMODULENAMESUFFIX/startup/include""{MCAL_MODULE_NAME_SUFFIX}/startup/include"
"MCALMODULENAMESUFFIX/startup/include""{MCAL_PLUGIN_PATH}/PortMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/PwmMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/RmMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/RteMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/SentMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/SpiMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/UartMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/WdgMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/WdgIfMCALMODULENAMESUFFIX/include""{MCAL_MODULE_NAME_SUFFIX}/include"
"MCALMODULENAMESUFFIX/include""{MCAL_PLUGIN_PATH}/ZipwireMCALMODULENAMESUFFIX/include"添加编译变量配置项目参数1.添加项目宏定义S32K3XXS32K322GCCUSESWVECTORMODEDCACHEENABLEICACHEENABLEENABLEFPU2.设置优化等级并添加Otheroptimizationflags字段:−fno−short−enums−funsigned−char−fomit−frame−pointer−fstack−usage3.设置gcc链接文件,路径是"{MCAL_MODULE_NAME_SUFFIX}/include"
添加编译变量

配置项目参数
1.添加项目宏定义
S32K3XX
S32K322
GCC
USE_SW_VECTOR_MODE
D_CACHE_ENABLE
I_CACHE_ENABLE
ENABLE_FPU
2. 设置优化等级并添加 Other optimization flags 字段:
-fno-short-enums -funsigned-char -fomit-frame-pointer -fstack-usage
3. 设置 gcc 链接文件,路径是
"MCALMODULENAMESUFFIX/include"添加编译变量配置项目参数1.添加项目宏定义S32K3XXS32K322GCCUSESWVECTORMODEDCACHEENABLEICACHEENABLEENABLEFPU2.设置优化等级并添加Otheroptimizationflags字段:−fno−short−enums−funsigned−char−fomit−frame−pointer−fstack−usage3.设置gcc链接文件,路径是"{MCAL_PLUGIN_PATH}/Platform${MCAL_MODULE_NAME_SUFFIX}/build_files/gcc/linker_flash_s32k344.ld”,切记勾选“Do not use standard start files”
至此S32DS的配置已经完成。
三、EB的配置
EB的新建和添加模块在上面的文章有些
Resource:选择IC
支持的Autosar版本如下:
EB Platform:platform模块主要是对中断的使能,注册回调,监控等功能。回调函数名是固定的,名字在XX_Ip.h
MCU模块:配置时钟
Clock的模式配置
Port配置
DIO
自此,EB的工程就配置好了
最后,只需要使用EB生成代码,并把代码拷贝到S32DS的Generate文件夹即可