精华内容
下载资源
问答
  • NXP_AUTOSAR_MCAL开发环境搭建引导_S32K14x系列

    万次阅读 多人点赞 2019-05-07 17:25:05
    NXP_AUTOSAR_MCAL开发环境搭建引导1 安装准备1.1 所需软件/组件列表概览1.2 软件License申请1.2.1 普通用户1.3 软件下载1.3.1 Autosar Mcal下载1.3.2 Elektrobit Tresos Studio下载2 软件安装2.1 安装EB Tresos ...

    作者:Stephen Du

    免责声明: 本文为个人学习笔记及总结,仅代表个人观点,尽可能保证内容准确性。复制/转发请注明来源/作者。

    欢迎添加微信交流学习。

    在这里插入图片描述



    — S32K14x系列(其他平台方法一样)


    1 安装准备

    由于在下载界面会列出目前所有可使用的版本,所以你需要对NXP的软件版本大体分类有一定了解。如不了解,请参见下文:
    NXP软件版本介绍

    1.1 所需软件/组件列表概览

    这里以SW32K14-SMCL431-RTMC-1.0.0版本为例进行讲解,你可根据需要下载对应的版本即可,方法一样。
    要搭建MCAL开发环境,你需要下载下面这些软件及组件:

    • EB Tresos Studio 24.0.1 — MCAL 配置工具
    • SW32K14-SMCL431-RTMC-1.0.0 — MCAL组件
    • SW32K14-SMCL431-RTMC-1.0.0_P1 — MCAL组件补丁包

    1.2 软件License申请

    1.2.1 普通用户

    下载时会弹出登陆框,如果你还没有账号,请前往NXP官网注册一个账号,然后使用账号登陆进行下载,在下载界面会提供License。
    NXP AUTOSAR MCAL 下载链接

    1.3 软件下载

    请先下载MCAL的包,因为不同MCAL的包对Elektrobit Tresos Studio的版本有要求,所需版本信息通常在MCAL安装路径下面的xxx_ReleaseNote.pdf文档里面有描述

    1.3.1 Autosar Mcal下载

    前文下载链接进入后会进入下图的下载界面:
    在这里插入图片描述
    进入后,这里会列出所有AUTOSAR MCAL / ISO26262的版本,下载我们所需的版本,如下图红色矩形框所示。
    在这里插入图片描述
    如果出现下图,请点击I Agree,然后进入下载页面(其他组件下载流程于此相同):
    在这里插入图片描述
    选中所有文件,点击Download Selected Files按钮进行下载。

    注意: 请勿关闭该页面,下载完后还需在该页面保存License(见后面详述)。
    在这里插入图片描述
    选择本地文件夹路径进行保存:
    在这里插入图片描述
    回到下载列表页面(前面提到不要关闭的页面),切换到License Keys标签页,生成License文件并保存。如下图:
    在这里插入图片描述
    下图点击Save All按钮后,浏览器会自动下载一个License.dat的文件,建议从浏览器下载路径将其保存到下载的安装包路径下,防止后面其他软件的License文件覆盖。该界面会列出本License适用于哪些模块,某些License可能只有主安装包的,没有补丁包(文件名以Px结尾的)的,那么请到相应补丁包下载界面里获取。
    在这里插入图片描述
    如果出现下列视图,可以点击View EULA 进行查看,点进去后与上图一样,通常进入该视图是因为你已经保存过License文件。
    在这里插入图片描述
    OS或其他组件下载流程及License获取方式与上述模块相同,该手册不再赘述。请一一下载保存。

    1.3.2 Elektrobit Tresos Studio下载

    注意: 不同MCAL版本对该工具版本要求不同,请按要求下载。

    Elektrobit(后文缩写为EB) Tresos Studio 下载方式与MCAL相同,License获取稍有差异,在下载界面有黄色高亮字体提示保存激活码。见下图:
    在这里插入图片描述

    2 软件安装

    首先安装EB Tresos Studio 24.0.1。然后再安装MCAL组件。

    2.1 安装EB Tresos Studio

    注意: 如果本地磁盘是通过文件夹映射,请将安装文件夹拷贝到原始磁盘其他路径,如桌面,等安装完成后再删除安装文件,或者从原始路径进入,否则会出现下图错误。只有AUTOSAR Tresos Studio安装有该限制。其他组件可在任意本地文件夹路径。
    在这里插入图片描述
    运行setup.exe,一路默认安装,建议不要修改路径,除非你准备同时安装多个版本。安装完成后会弹出下图中间的提示框。
    在这里插入图片描述
    安装完后还需运行:EB_Client_License_Administrator_1_2_4_Setup.exe,安装过程中选择:

    • Use License Activation Codes

    安装完成后,系统启动菜单启动EB Client License Administrator。进入如下界面输入激活码:
    在这里插入图片描述
    使用之前下载时获取的激活码进行激活。
    在这里插入图片描述

    2.2 安装组件

    部分同学反馈下载后安装时提示:**No packages were found that can be installed!**的错误。关于该错误请见我另外的文章

    运行相关组件的安装文件(安装完成后,强烈建议将安装好的MCAL文件夹及Demo文件夹备份,当碰到错误时会帮你很多忙),根据提示默认安装直到以下界面(如果S32DS 及 EB Tresos Studio为默认安装路径,根据下图配置即可):
    在这里插入图片描述
    如果安装过程中提示如下警告信息,可手动创建link文件:
    在这里插入图片描述
    进入 EB Tresos Studio 安装目录,默认路径为:C:\EB\tresos。检查是否有links文件夹。如果没有自行建立。文件列表及文件内容如下所示:
    在这里插入图片描述

    3 示例工程

    注意: 本示例工程是基于4.3版本,其他版本可能目录结构不同(拷贝的东西不一样),如发现该类问题,如果你能理解本文的核心思想,应该也很容易自己修改,如果的确有问题,欢迎咨询。

    3.1 示例工程前期准备

    到MCAL安装路径,查找示例工程。
    拷贝下列路径文件夹:
    C:\NXP\AUTOSAR\S32K14X_MCAL4_3_RTM_1_0_0\S32K14X_MCAL4_3_RTM_1_0_0_Sample_Application\eclipse\plugins\IntegrationFramework_TS_T40D2M10I0R0 到 :
    C:\NXP\AUTOSAR\S32K14X_MCAL4_3_RTM_1_0_0\eclipse\plugins下面。
    再拷贝示例工程安装路径备后续使用(默认路径为以下路径):
    C:\NXP\AUTOSAR\S32K14X_MCAL4_3_RTM_1_0_0\S32K14X_MCAL4_3_RTM_1_0_0_Sample_Application\Tresos\Workspace\lighting_S32K144_4.3_RTM1.0.0

    3.2 导入示例工程

    打开EB tresos Studio → File → Import → General(Existing Projects into Workspace):
    在这里插入图片描述
    在这里插入图片描述
    把刚才拷贝好的的示例工程路径输入下图,然后根据下列图示依次操作加载示例工程及生成示例工程:
    在这里插入图片描述

    3.3 加载示例工程

    在工程配置实例处右键选择Reload Configuration(如下图)或者双击即可。
    在这里插入图片描述

    3.4 生成示例工程

    工程处右键选择Generate Project
    在这里插入图片描述

    3.5 修改编译脚本

    原因&&目的: 由于默认的编译脚本使用的编译环境不太一样,我们这里主要是为了适配S32DS的编译环境,因为这个环境可在官网免费获取,是大部分开发人员比较好的选择,所以如果想使用S32DS(GCC)的环境进行编译,需要做下面的修改。

    如果你需要使用其他编译环境,需要自己修改编译脚本,可以看看我们这里修改了什么东西(对比原始脚本,基本上就是路径的修改)。原始脚本适配了三个常见的编译器,GCC, IAR, GreenHill。

    到以下路径找到lauch.bat文件并使用文本编辑软件将其打开:
    C:\NXP\AUTOSAR\S32K14X_MCAL4_3_RTM_1_0_0\S32K14X_MCAL4_3_RTM_1_0_0_Sample_Application\eclipse\plugins\IntegrationFramework_TS_T40D2M10I0R0\auxiliary\build

    注意: 由于版本不一样导致修改的内容不一样,下面更新了4.3的两个版本的脚本。请根据自己使用的版本进行修改。
    V4.3.0: 将原始文件内容修改为以下内容 :

    ::====================================================================================================
    ::
    ::    @file                launch.bat
    ::    @version             1.0.0
    ::
    ::    @brief               Integration Framework - internal build launcher.
    ::    @details             Launches the build of the sample application
    ::
    ::    Platform      :      ARM
    ::    Build Version :      S32K14x_MCAL_1_0_0_RTM_ASR_REL_4_3_REV_0001_20180615
    ::
    ::   (c) Copyright 2006-2016 Freescale Semiconductor, Inc. 
    ::       Copyright 2017 - 2018 NXP
    ::       All Rights Reserved.
    ::
    ::    This file contains sample code only. It is not part of the production code deliverables.
    ::
    ::====================================================================================================
    ::
    
    @echo off
    
    ::You have to uncomment and set the following variables if they are not already set
    :: uncomment line below if you do not set TRESOS_DIR over environment
    ::TRESOS
    SET TRESOS_DIR=C:/EB/tresos
    ::MAKE
    SET MAKE_DIR=C:/NXP/S32DS_ARM_v2018.R1/utils/msys32/usr
    ::GHS
    ::SET GHS_DIR=C:/tools/ghs/ARM_MULTI_7.1.4COMPILER_2017.1.4
    ::GCC
    SET LINARO_DIR=C:/NXP/S32DS_ARM_v2018.R1/Cross_Tools/gcc-6.3-arm32-eabi
    ::IAR
    SET IAR_DIR=C:/tools/IARSystem/EmbeddedWorkbench8.0/arm
    ::Path to the plugins folder
    SET PLUGINS_DIR=C:/NXP/AUTOSAR/S32K14X_MCAL4_3_RTM_1_0_0/eclipse/plugins
    ::SSC             
    ::SET SSC_ROOT=C:/NXP/AUTOSAR/S32K_AUTOSAR_OS_4_0_93_BETA_0_9_0
    
    ::SSC             
    SET TRESOS_WORKSPACE_DIR=C:/EB/tresos/workspace/lighting_S32K144_4.3_RTM1.0.0/output
    ::SET TRESOS_WORKSPACE_DIR=C:/tools/Tresos_24_0_1/workspace/lighting_S32K118_4.3_RTM1.0.0/output
    
    ::ANFC
    ::SET ANFC_LIB_DIR=C:/Users/nxf35061/Desktop/118/lighting_S32K118_4.2_RTM1.0.1/output
    ::ANFC configuration directory, in case it's in a different directory
    SET ANFC_CONFIG_DIR=
    
    if not defined TRESOS_DIR GOTO missing_path_names_TRESOS_DIR
    if not exist %TRESOS_DIR% GOTO missing_path_names_TRESOS_DIR
    
    cmd /c "make.bat %1 %2 %3 %4 %5 %6"
    
    GOTO end
    
    :: The variable TRESOS_DIR was not specified
    :missing_path_names_TRESOS_DIR
    ECHO.
    ECHO    The variable TRESOS_DIR was not set correctly.
    ECHO    Please specify this variable manually, by editing
    ECHO    the batch file 'launch.bat'.
    ECHO.
    pause
    GOTO end
    :end
    

    V4.3.1: 将原始文件内容修改为以下内容 :

    ::====================================================================================================
    ::
    ::    @file                launch.bat
    ::    @version             1.0.1
    ::
    ::    @brief               Integration Framework - internal build launcher.
    ::    @details             Launches the build of the sample application
    ::
    ::    Platform      :      ARM
    ::    Build Version :      S32K14x_MCAL_1_0_1_RTM_ASR_REL_4_3_REV_0001_20190620
    ::
    ::   (c) Copyright 2006-2016 Freescale Semiconductor, Inc. 
    ::       Copyright 2017 - 2018 NXP
    ::       All Rights Reserved.
    ::
    ::    This file contains sample code only. It is not part of the production code deliverables.
    ::
    ::====================================================================================================
    ::
    
    @echo off
    
    ::You have to uncomment and set the following variables if they are not already set
    :: uncomment line below if you do not set TRESOS_DIR over environment
    ::TRESOS
    SET TRESOS_DIR=C:/EB/tresos
    ::MAKE
    SET MAKE_DIR=C:/NXP/S32DS_ARM_v2018.R1/utils/msys32/usr
    ::GHS
    SET GHS_DIR=C:/tools/ghs/ARM_MULTI_7.1.4COMPILER_2017.1.4
    ::GCC
    SET GCC_DIR=C:/NXP/S32DS_ARM_v2018.R1/Cross_Tools/gcc-6.3-arm32-eabi
    ::IAR
    SET IAR_DIR=C:/tools/IARSystem/IAR_V8.11.2/arm
    ::Path to the plugins folder
    SET PLUGINS_DIR=C:/NXP/AUTOSAR/S32K14X_MCAL4_3_RTM_1_0_1/eclipse/plugins
    ::Path to the IF plugins folder
    SET SRC_PATH_IF=C:/NXP/AUTOSAR/S32K14X_MCAL4_3_RTM_1_0_1/eclipse/plugins
    SET SRC_PATH_MCAL=C:/NXP/AUTOSAR/S32K14X_MCAL4_3_RTM_1_0_1/eclipse/plugins
    ::SSC Path to OS installer             
    SET SSC_ROOT=C:/NXP/AUTOSAR/S32K14X_MCAL4_3_RTM_1_0_1
    
    ::FRAMEWORK WORKSPACE        
    ::SET TRESOS_WORKSPACE_DIR=C:/EB/tresos/workspace/WorkspaceS32K144_19_06_2019/output/generated
    SET TRESOS_WORKSPACE_DIR=C:/NXP/AUTOSAR/S32K14X_MCAL4_3_RTM_1_0_1/S32K14X_MCAL4_3_RTM_1_0_1_Integration_Application/Tresos/Workspace/WorkspaceS32K144_19_06_2019/output/generated
    
    
    ::OS WORKSPACE        
    SET OS_TRESOS_WORKSPACE_DIR=C:/Tools/EB/v24.0.1/workspace/OS_standalone_S32K14x_4.0/output/generated/epc
    
    ::USERCODE        
    SET USER_CODE_DIR=C:/Users/nxa07100/Desktop/mysource
    
    ::MOTORCONTROL LIBRARY  
    SET MOTORCTRL_LIB_DIR=C:/Projects/Libraries/MotorControl
    
    ::ANFC - LIBRARY 
    ::SET ANFC_LIB_DIR=
    
    ::ANFC - TRESOS WORKSPACE DIR
    ::SET ANFC_CONFIG_DIR=
    
    if not defined TRESOS_DIR GOTO missing_path_names_TRESOS_DIR
    if not exist %TRESOS_DIR% GOTO missing_path_names_TRESOS_DIR
    
    cmd /c "make.bat %1 %2 %3 %4 %5 %6"
    
    GOTO end
    
    :: The variable TRESOS_DIR was not specified
    :missing_path_names_TRESOS_DIR
    ECHO.
    ECHO    The variable TRESOS_DIR was not set correctly.
    ECHO    Please specify this variable manually, by editing
    ECHO    the batch file 'launch.bat'.
    ECHO.
    pause
    GOTO end
    
    :end
    
    

    3.6 编译示例工程

    打开命令行工具,改变工作目录到:
    C:\NXP\AUTOSAR\S32K14X_MCAL4_3_RTM_1_0_0\eclipse\plugins\IntegrationFramework_TS_T40D2M10I0R0\auxiliary\build
    输入命令:

    .\launch.bat MODE=USER TOOLCHAIN=gcc
    

    开始编译,如下图所示:
    在这里插入图片描述

    展开全文
  • AUTOSAR MCAL的原理与实践 这本书的论文,论文写作典范。 本来想找 AUTOSAR MCAL的原理与实践;但是发现这个论文更好使。
  • 基于 A U T O S A R 标准跨ECU平台微控制器抽象层 M C A L 开发
  • 使用S32DS集成MCAL

    千次阅读 2019-09-30 14:40:27
    很多网友希望了解如何将MCAL集成到我们的S32DS里的方法或者说如何...由于MCAL提供的示例工程默认是Makefile的形式,而Makefile对于很多公司/开发人员来说学习成本稍高;或者有时候受项目情况限制,比如整个项目代码...

    作者:Stephen Du

    免责声明: 本文为个人学习笔记及总结,仅代表个人观点,尽可能保证内容准确性。复制/转发请注明来源/作者。

    欢迎添加微信交流学习。

    在这里插入图片描述

    很多网友希望了解如何将MCAL集成到我们的S32DS里的方法或者说如何使用S32DS来编译调试MCAL的代码。本文将一步步讲解如果实现。
    如果本文对你有帮助,可关注,可私信,也非常欢迎添加微信,一起交流学习,我会不断推出相关文章。

    1. 前言

    由于MCAL提供的示例工程默认是Makefile的形式,而Makefile对于很多公司/开发人员来说学习成本稍高;或者有时候受项目情况限制,比如整个项目代码并非完整的AUTOSAR架构,只有底层使用MCAL,而工具链需要使用免费的S32DS。

    基于这些需求,本文将重点讲解如何将配置好的MCAL集成到S32DS里与应用代码一起编译调试。关于相关配置工具及MCAL组件的安装及使用、示例工程运行、以及MCAL的配置请参照我其他文章。

    本文介绍的大部分方法为通用方法,不限制于某个具体控制器型号,当然也不排除个别功能某些控制器不支持,希望你掌握核心知识,可以举一反三。

    2. S32DS简介

    S32DS(S32 Design Studio)是NXP新推出的一个跨平台(有Windows,Linux版本)的高度集成的集成开发环境(IDE)。该工具基于Eclipse IDE,集成了GNU编辑器集合(gcc),GUN调试器(gdb)等开源软件。可免费提供给客户使用,在官网下载安装即可。该工具可以编辑,编译,调试且没有代码大小限制,同时还提供了新一代的图形化配置工具(PE:Processor Expert),所有外设只需在界面里面配置好,自动生成代码,让你彻底摆脱繁杂的寄存器操作等类似工作,极大提高开发效率,缩短开发周期。ARM内核及PPC内核均有支持,具体支持型号请关注官网最新发布。

    由于S32DS的环境不包含QKit,编译器也没经过安全认证。所以如果你的工程对功能安全有需求,不建议使用该环境。

    3. S32DS打包MCAL成SDK

    目前S32 DS V3.1以前的版本都无法支持自动导入MCAL(V3.1版本开始引入导入功能,正在开发中)。这里我们提供两种办法来集成。

    方法一: 将使用到的相关模块代码手动拷贝到工程目录下进行源码集成。

    方法二: 使用S32DS将MCAL打包成一个SDK,然后和默认SDK的使用方法一致。

    显然第二种方法一劳永逸,尤其是你有多个项目需要使用时。关于第二种方法,如果使用S32DS制作自己的SDK请参见我之前的文章:S32DS创建自己的SDK

    4. S32DS新建工程

    如果你采用的第二种方法,请按照前面的链接文章打包为SDK后。然后打开S32DS,进入菜单栏File -> New -> S32DS Application Project。在弹出的窗口中输入工程信息。如下图:
    在这里插入图片描述在上图1处输入工程名,图2处选择芯片型号,图3处选择编译工具链,点击Next(图4处),进入上图右侧窗口,在SDKs选择框(图5处)选择我们打包好的MCAL的SDK。另外的选项根据需要设置,图示可作参考。

    5. 源码集成

    5.1 MCAL静态代码拷贝

    如果你使用第一种方法,只需要将使用到的模块下面的静态代码和配置生成的"output\generated"文件夹拷贝到工程目录下集成编译即可。
    这里说的静态代码指MCAL 安装目录下各模块Plugin文件夹下面的includesrc文件夹。除这两个文件夹外的其他文件夹不要拷贝。
    需要在工程设置里面添加H文件的路径。方法请见后面章节或我其他文章。

    1. 只需要拷贝你说使用到的模块即可,未使用或未配置的模块下的静态代码不要拷贝,否则会报错。
    2. 理论上拷贝过去怎么放可根据你项目文件结构统一安排即可,但我建议保持MCAL原始文件结构,每个模块独立文件夹,文件名也不要改,然后里面放置include和src文件夹。

    5.2 MCAL配置文件拷贝

    将EB工程生成好的"output\generated"文件夹拷贝到工程目录下即可(两种方法都需要拷贝该文件夹)。

    也可直接在EB工程里面设置该文件夹到工程目录路径下,设置方法:打开EB Tresos Studio,在工程管理窗口,选中工程右键,Properties -> Configuration Project -> Code Generator -> Browse。如下图:
    在这里插入图片描述

    5.3 自己的应用代码

    在S32DS里面新建文件即可,也可以将自己写好的代码拷贝到工程目录下,刷新S32DS可自动识别,但是需要在工程设置里面添加H文件的路径。

    5.4 其他必备文件

    MCAL默认没有启动文件,链接文件等。这里我们为了简单,直接使用了S32DS新建工程时自动生成的文件(SDK版本)。你也可以参照MCAL demo工程提供的文件。
    除了这些文件外,通常你还需要中断管理相关代码(除非你的工程不需要使用中断资源),这个默认MCAL也不包含,你可以将SDK版本的中断管理模块拿来使用,也可以参照Demo工程里面的文件(nvic)。

    6. S32DS工程配置

    6.1 编译文件配置

    如果你使用第二种方法(打包成SDK使用的):
    考虑到SDK通常多个项目使用,所以在打包SDK过程中,我们将所有模块都使能了(推荐)。但实际项目种可能你只使用了其中几个模块,其他模块不需要,也没有配置,我们必须移除这些未使用的模块,否则会导致编译错误。

    如果使用第一种方法,我们只需要拷贝我们使用到的模块的静态代码即可。

    如何移除这些未使用的模块:
    新增/移除: 打开S32DS,进入工程管理窗口,工程右键 -> Build Configurations Explorer。在弹出窗口中根据实际使用情况勾选编译文件。如下图:
    在这里插入图片描述

    新增/移除: 对于新增的文件,在工程处右键刷新(Refresh/F5),工具会自动识别出新增的文件,但是默认是灰色加斜线的图标(如下图左侧红框处),代表该文件不会编译,除了按照上面介绍的方法可以添加/移除编译列表外,还有一个更加快捷方式。选中需要新增/移除的文件/文件夹右键,选择build path ->Add to -> Debug /Release/Debug_RAM。如需移除,则选择Remove from。如下图:(两种方法实现的目的是完全一样的,两者展现方式不一样,第一种方法可以在一个窗口中管理整个工程的所有文件,而第二种需要文件/文件夹一个一个操作(也可一次性选择多个文件操作),根据自己喜好选择即可)

    在这里插入图片描述

    移除: 对于移除编译列表的操作,除了上述两种方法外,还有一种方法。该方法和第二种新增方法类似。在需要移除的文件/文件夹右键,选择Resource Configurations -> Exclude from Build。如下图:
    在这里插入图片描述

    6.2 工程属性配置

    如果你的工程里面没有使用AUTOSAR OS,需要在编译配置里面增加宏定义(也可以在打包SDK的时候定义):AUTOSAR_OS_NOT_USED。否则编译的时候会报"找不到Os_memmap.h文件"以及"ISR重复定义"的错误。

    进入编译参数配置界面有三种途径:

    1. 工程右键 -> Properties
    2. 菜单栏Project -> Properties
    3. Dashboard -> Project settings/Build settings

    进入工程配置界面后,进入C/C++ Build -> Settings -> Tool Settings -> Standard S32DS C Compiler -> Preprocessor,点击号,输入宏定义名称:AUTOSAR_OS_NOT_USED。(按下图连线顺序进行即可)

    其他参数配置进入方法一样,将不在赘述。如下图(下图中右上角大红框里面展示了如何增加包含头文件路径的方法,后文会使用到):
    在这里插入图片描述MCAL对编译参数也有要求,我们强烈建议你根据MCAL安装目录下的文档里面规定的参数进行配置。如上图所示。

    7. 编译调试运行

    总结下来,其实方法很简单,就两步。拷贝源码;配置参数。
    做完上述所有操作后,接下来就编译调试了。这里不再介绍编译调试的(基本操作)详细步骤。

    如果还不清楚怎么操作的同学,可通过开头提供的方式交流。

    展开全文
  • autosar-经典平台-MCAL

    2020-07-01 15:28:50
    autosar,经典平台里面的 ,一起太大不让上传,就分开上传。要想初步了解autosar的话,简单扫一遍就行,没必要深究,大部分都是接口。开发AUTOSAR的话可以下来看看。
  • 在上一篇的公众号内已经对AutoSAR的APP层的配置做了简单的概述,本篇公众号将粗略的对整个BSW层部分基本MCAL(I/O驱动相关的)的层的配置做简要的概述,由于BSW层涉及到的模块比较多,由于本人开发学习的时间比较短,...

    在上一篇的公众号内已经对AutoSAR的APP层的配置做了简单的概述,本篇公众号将粗略的对整个BSW层部分基本MCAL(I/O驱动相关的)的层的配置做简要的概述,由于BSW层涉及到的模块比较多,由于本人开发学习的时间比较短,虽然对BSW层的大多数模块做了配置工作,但是并不深入,因此所有的介绍都是做简单的描述,旨在让初学者有初步了解,后续自己也会作深入的研究,对各个模块做详细的介绍。

    自己真正对BSW层的工作大概从2018年6月份左右开始的,当时新的开发工具和新的芯片TC277,18年年底算对Port、Dio、ADC、PWM、ICU、GTM、IIC、SPI这些模块完成了一个基本功能实现的配置。

    刚开始的时候自己对这个芯片基本不了解,也没进行过什么培训,所以一团雾水,还好当时有个资深的工程师带我,在同事配好基本的OS、Clock等基本系统的基础上我开始了MCAL的配置。一开始做的是Port和Dio的配置,从此也开启了我梦寐以求的BSW层配置,当时在做APP层配置的时候,好想做底层的配置,虽然当时对BSW一无所知,但心里总有那么一种冲动。这两个模块相对来说比较简单,在同事的指点下很快配完了这两个模块,当时就做了一个Test APP把用到的接口做了测试,在测试的I/O口过程中对整个硬件电路了解了很多,其实有很多时候一些简单的工作中也包含了许多重要的信息,突然感觉将简单的事情做好也是件伟大的事情。后来代码集成的时候把测试的代码也集成进去了,其中有个TJA1043的CAN睡眠功能相关的引脚被我写成了睡眠模式,导致同事将做好的CAN测试代码集成后调试不通,后来花了好长时间发现是由于我测试I/O的时候将CAN的睡眠相关的引脚写死导致的,到现在感觉好愧疚,当时自己不知道引脚作为特殊用途使用的时候,一般在使用该引脚的模块去定义使用,比如带唤醒功能的CAN Trcv相关的引脚,SPI的CS引脚等。配置完Port和Dio模块,又做了ADC模块的配置,当时配置ADC的时候采用了软件触发和GTM中TOM(在AutoSAR中属于MCU中的模块)中断触发两种方式,其中做软件触发的时候让我开始认真的学习起了TC277的VADC模块,当时花了很长时间才了解了大概的内容,因为急着配置,好多功能也没去做深入的研究。采用软件触发ADC转换的时候要软件手动写开始转换的代码指令去触发,TOM中断触发的时候选择了合适的触发时间,周期触发中断开启ADC采样,在ADC中断触发的过程中对GTM模块大概有了基本的了解,也体会到了AutoSAR BSW模块在配置中模块之间的关联和依赖性。后来配置了PWM模块,配置PWM模块的重点在于对GTM模块TOM的使用,同时要将TOM的输出通道与PWM的输出Port关联正确,还有就是都要配置好GTM的TOM中所选通道的参数。对于ICU的配置,原理基本和PWM类似,选择的是GTM的TIM模块,对于ICU的捕获采用的是更快的频率去计数然后计算上升沿和下降沿的时间。在这个模块的配置中遇到了比较大的挑战,在一次次的修改配置TIM的参数中老是出问题,后来研究了静下心来研究了TC277的TIM模块,知道了几个重要的寄存器,然后慢慢的去修改一些参数,最终在资深的同事的带领下解决了,配置ICU自己也渐渐的体会到了BSW层配置的难度,认识到了自己在知识理解上的欠缺,感觉AutoSAR的配置确实得需要有经验人的带领。大概到了18年9月中旬,开始了IIC的配置,配置了好长时间也没搞对,后来休婚假和国庆放假就放下了,后来回来上班,同事说硬件没有加上拉电阻,结果加上后按照正常的操作,配置完Port模式和相关的中断后,触发IIC的发送函数能看到了波形,基本上在功能上打通了这部分配置,后来跟着同事一起调式她配置的SPI,SPI的配置主要注意Job、Channel、Sequence的建立,以及选择对应的操作模式,注意选择同步传输还是异步传输,异步传输一般分为DMA和中断触发,现在采用的DMA,将对应的Tx和Rx选择好对应的DMA通道即可。SPI模块在Tc277里算是一个比较重要的模块,后续会单独出一篇介绍SPI实现。一直到18年年底就是对这几个模块进行总结和调试修改。下面对这个几个模块做一个简单的总结。

    Port

    Port模块作为最基本的I/O配置模块,相对比较简单。在配置的过程中主要根据硬件原理图对Port中对应的引脚进行设置。一般情况下会对Port的Pin设置为一般的GPIO/ADC/功能复用等几种形式。ADC使用的时候直接在ADC模块进行配置。在作为GPIO口使用的时候要选择是输入Pin还是输出Pin,如果作为输入使用的时候要根据实际情况选择上拉还是下拉。如果作为输出,一般选择推挽输出模式,如果有特殊的需求需要设置为开漏输出即可(IIC的SDA和SCLK要求使用开漏输出)。复用功能的时候,要选择合适的Mode

    Dio

    Dio的配置比较简单,主要是对Port_Pin中的GPIO作为参考,与Port模块对应起来即可。

    ADC

    ADC软件触发

    在ADC采用SW触发时,配置相对比较简单,可以定义单次转换也可以定义多次转换。在TC277中AdcGroup中下进行配置,不然在实际的ADC转换中不会采集到对应的数值。生成代码后每次调用一次Start函数进行触发ADC转换。

      ADC 定时器中断触发。

      在TC277中 ADC的Channel与Group是一一对应的,每个ADC Channel都有一个确定的Group。在中断触发采用OneShot模式。利用Timer触发时,选择好TriggerRef,在GTM模块将ADC的触发源与TOM关联起来,直接用TOM的PWM输出模式进行输出。TOM的配置主要配置CM0和CM1来决定出PWM的输出周期和占空比。然后对OS中断模块进行配置,此处采用二类中断需要OS去做触发。选择合适的中断优先级以及中断入口地址,在实际中用到哪一个中断就可以对中断的优先级写一个大于0的数值就可以,在OS的配置中将中断函数Mapping到特定的OS Application。

    GTM

      GTM模块配置主要用了TOM和TIM。

      TOM:GTM输出模块。在TC277中每个TOM Group有16个通道分别被TGC0(0-7通道)和TGC1(8-18通道)控制。每个TOM的channel包含了CCU0(CM0)/CCU1(CM1)/SOU(信号输出生成单元),CCU0/CCU1中CN0根据外部选择的CMU_FXCLK的时钟频率周期计数,在选择TBU触发时,当CN0中的值与CM0相等的时候触发对应的寄存器位(CCU0的SOU),CN0与CM1相等的时候触发相等的时候触发对应的寄存器位(CCU0的SOU),选择内部信号触发时,接收到特定的内部信号触发对应的寄存器标志位。同时CM0/CM1的数值在CN0复位(CN0大于等于CM0或者内部其他通道信号触发时)请求信号产生时,可以通过SR0/SR1影子寄存器进行更新,间接导致内部Duty和Period更新,实现PWM的不同周期和占空比输出。该功能也用作了ADC的定时中断触发功能(在TOM中将其作为复杂的驱动使用,直接用TOM的PWM输出模式进行输出,配置CM0和CM1决定出PWM的输出周期和占空比)。

    TIM:GTM输入模块。TIM的使用相对简单,在ICU中使用的时候定义更快的时钟频率去计算捕获的ICU的高低电平时间,将值放到对应的寄存器即可。

    PWM

    PWM模块的配置的主要来自于GTM的TOM模块。在配置过程中首先对GTM的TOM模块进行配置。GTM选择的TOM的通道中配置PWM信号来源。在TOM的channel输出中要选择与该Channel对应的Port_Pin。PWM中可以实现变周期和占空比的输出。也可以实现相反极性的两个PWM的输出等,具体根据需要选择即可。

    ICU

    ICU模块作为PWM的输入捕获模块,主要用于获取外部输入的PWM的周期和占空比。在配置时,主要是对和ICU对应输入Port引脚相关联的TIM通道进行配置。包含选择ICU捕获的时钟、测量开始的电平、时间的来源、选择对应的复用引脚,生成代码后在初始化中要开启ICU测量功能。

    IIC

    IIC的配置的选择好对应的引脚,同时配置好对应的中断,中断的配置跟ADC相似,如果硬件没什么大问题,配置中根据自己实际的需要配置对应的通道和任务以及回调函数等即可。

    SPI

    SPI的配置主要配置Sequence、Job、Channel:并且将他们关联好,同时要注意与所使用的外部SPI从设备的关联。在选择对应的SPI所使用的Port引脚的时候要采用对应的复用功能,CS引脚的选择要注意,一般可以采用复用也可以采用GPIO,这点在使用的时候一定要注意,要根据具体的情况选择采用哪种模式,在设计硬件电路的时候要考虑清楚是把SPI的四个Pin作为整体使用还是将CS单独用GPIO控制。同时SPI支持同步和异步传输,SPI在配置的过程中,如果采用异步传输,并且采用的是DMA传输,QSPI的Tx和Rx中断要配置成DMA的Channel Number。

    以上就是部分MCAL的配置,其中很多重要的功能SPI、ADC、GTM等,后期会单独结合芯片做具体的介绍,这里介绍的这几个模块比较适合初学者了解。接下来会介绍CAN通信相关的模块在AutoSAR配置工具的实现。也欢迎大家提出宝贵的意见。下面是本人的微信号,期待各位同行的留言。

    95a8a2424779c0fd654fb0927e492e5f.png

    展开全文
  • 继续分享基于AUTOSAR的ECU开发经验,欢迎大家留言讨论。#AUTOSAR##嵌入式开发##车载电子#假设有这样一个需求,在PWM...阿尔卑斯系统集成(大连)有限公司版权所有打算尝试使用AUTOSAR工具配置MCAL,实现PWM定时中断。...

    继续分享基于AUTOSAR的ECU开发经验,欢迎大家留言讨论。

    #AUTOSAR##嵌入式开发##车载电子#

    假设有这样一个需求,在PWM上升1ms后,采集AD值。

    对于上述需求,我们分析单片机功能,单片机支持PWM输出定时中断功能,所以决定采用PWM输出1ms后产生中断,在中断服务函数中采集AD值。

    b7c9af580acf6184851106efd01515c3.png

    阿尔卑斯系统集成(大连)有限公司版权所有

    打算尝试使用AUTOSAR工具配置MCAL,实现PWM定时中断。不过,经过调查,发现MCAL未提供PWM输出定时中断配置接口,因此无法使用AUTOSAR工具配置。最终,此方式尝试失败。

    c9c30d889b4b059574de68c3a7a5bc58.png

    阿尔卑斯系统集成(大连)有限公司版权所有

    这时,就使用CDD直接设置MCU寄存器的方式来解决这个问题。

    首先,我们创建一个CDD1,依据需要完成的功能,需要对外提供PWM定时中断使能接口以及AD采样值,因为使能PWM定时中断接口不需要数据传递,所以接口类型设定为Client/Server,方向为Server。AD采样值需要有数据传递,所以接口设定为Sender/Receiver,其方向为Sender。

    考虑完接口,接下来分析CDD1的功能:

    • 需要初始化AUTOSAR工具配置的配置项。
    • 需要设置MCU寄存器,使能PWM定时中断功能。
    • PWM定时中断中采集AD数据,并将其输送出去。

    根据功能以及触发时机,我们设计3个Runable。接下来分别讲述一下3个Runable实现的功能以及触发条件。

    Runable1 主要是调用MCAL中的PWM、AD初始化API,其初始化设定是由AUTOSAR工具配置的。触发条件是在初始化时。

    Runable2 主要是设置MCU寄存器,使能PWM定时中断。触发条件是收到Port1的Client请求。

    Runable3 主要是采集AD值,通过调用Port2传送出去。触发条件是产生PWM定时中断时。

    CDD设计完后,SWC会通过RTE与CDD1进行交互。

    e3d712ef728ac94bb613f8fcfa847c92.png

    阿尔卑斯系统集成(大连)有限公司版权所有

    举例,我们有两个SWC,SWC1通过访问Port1 Client接口,发送使能PWM定时中断请求,由于RTE实现Port1 Client与Port1 Server的连接,从而触发Runable2,使能PWM定时中断。SWC2通过访问Port2 Receiver接口,获取采样的AD值。

    根据我们的经验是提倡在符合AUTOSAR接口标准的前提下,灵活使用CDD实现个性化需求。

    be8787d9a57d3f8557d163a0376a2151.png

    阿尔卑斯系统集成(大连)有限公司是日本阿尔卑斯阿尔派集团旗下的独资子公司,简称ALSI大连。ALSI大连嵌入式系统开发部主要从事ALPSALPINE集团汽车电子软件开发和功能测试,汽车电子仿真工具开发、销售以及IoT 产品开发、销售相关业务。

    展开全文
  • php中文完全开发手册

    2009-10-27 13:52:44
    MCAL Functions LV. Mcrypt Encryption Functions LVI. MCVE Payment Functions LVII. Mhash Functions LVIII. Mimetype Functions LIX. Microsoft SQL Server Functions LX. Ming functions for Flash LXI. ...
  • 本书主要介绍AUTOSAR MCAL的基本原理与实践, 简述 AUTOSAR这一汽车软件架构的相关标准。 本书期望能给相关应用设 ...掌握基于AUTOSAR MCAL的快速开发流程, 提高软件的开发效率, 缩短产品开发周期。
  • NXP软件版本介绍

    千次阅读 2019-05-07 17:04:42
    根据NXP的软件开发流程,软件版本发布大体可分为3个阶段/版本:EAR —> Beta —> RTMC。具体区别见下表(SDK的版本发布一样): 版本信息 EAR Beta RTM-C 产品模块 只有部分MCAL驱动 包含所有...
  • Autosar实战篇_配置工具的使用

    万次阅读 2019-04-10 10:45:13
    Autosar项目工程名称:TC27x_Project1 1,文件目录介绍 ld文件夹:运行时配置文件 src\config文件夹:它包含所有模块的配置文件,比如:OSconfig、...config\Mcal_Cfg文件夹:它保存Mcal的配置文件 2,开发常用配...
  • AutoSar4.3.1.rar

    2020-05-26 09:46:02
    本资源包含AUTOSAR4.3.1是CP Classic AUTOSAR的官方标准规范文档,包含Communication、MCAL、Memory、RTE、SystemServices、Diagnostics等全部标准文档,可以指导进行车载Autosar开发及标准验证,通信包含了目前流行...
  • 当前,在汽车电子软件产品开发中,由于软件架构划分越来越泾渭分明,MCAL BSW Bootloader 部分CDD 复杂设备驱动等要不就是相对独立,要不就是不同组织协同开发,或者直接购买供应商的代码,所以越来越多的开发团队...
  • 您将找到以下文件夹1-移动应用程序(包含移动应用程序开发过程-代码和弧)2- src(主软件文件夹包含以下子文件夹-OS,App层,Basic软件层,Mcal层)3-测试(包含主要测试活动的文件夹)4-工具(具有我们将在源代码...
  • S32DS 设置不同编译参数

    千次阅读 2019-06-18 14:56:44
    S32DS 设置不同编译参数 ...在项目开发过程中,我们经常会碰到一个项目中不同文件使用的编译参数需要不一样。比如引用的第三方库,或者部分特殊文件等,又或者你正在使用AUTOSAR MCAL。很多大公司编译都采...
  • 一个大工程往往是由许多模块组成的,模块下又细分很多子模块,比如Autosar工程,分为bsw、mcal、rte等,而bsw模块下又有Com、PduR、CanIf、CanNm等等几十个子模块,而且完成一个大工程的开发往往由许多工程师一起...
  • 一个大工程往往是由许多模块组成的,模块下又细分很多子模块,比如Autosar工程,分为bsw、mcal、rte等,而bsw模块下又有Com、PduR、CanIf、CanNm等等几十个子模块,而且完成一个大工程的开发往往由许多工程师一起...
  • AUTOSAR培训教材.rar

    2019-12-09 16:10:18
    MCAL详解、10_RTE设计详解、11_传统软件到AUTOSAR移植解决方案、12_基于模型MBD开发的AUTOSAR解决方案、13_多核AUTOSAR架构的解决方案、14_功能安全在AUTOSAR中的解决方案、15_信息安全在AUTOSAR中的解决方案、16_...
  • MCAL Functions LVII. Mcrypt Encryption Functions LVIII. MCVE Payment Functions LIX. Memcache Functions LX. Mhash Functions LXI. Mimetype Functions LXII. Microsoft SQL Server Functions LXIII. Ming ...
  • PHP手册2007整合中文版

    2009-04-19 12:46:02
    MCAL Functions LXXXIV. Mcrypt Encryption Functions LXXXV. MCVE (Monetra) Payment Functions LXXXVI. Memcache Functions LXXXVII. Mhash Functions LXXXVIII. Mimetype Functions LXXXIX. Ming functions for ...
  • php开发人员的文档,并且是中文的。 PHP 手册 Mehdi Achour Friedhelm Betz Antony Dovgal Nuno Lopes Philip Olson Georg Richter Damien Seguy Jakub Vrana 其他贡献者 编辑 Gabor Hojtsy 王远之 ...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

mcal开发