精华内容
下载资源
问答
  • 基于 A U T O S A R 标准跨ECU平台微控制器抽象层 M C A L 开发
  • AUTOSAR MCAL的原理与实践 这本书的论文,论文写作典范。 本来想找 AUTOSAR MCAL的原理与实践;但是发现这个论文更好使。
  • 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
    

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

    展开全文
  • 缩写 描述 MCAL Microcomputer Abstraction Layer 微机抽象层 DEM Diagnostic Event Manager 诊断事件管理器 DET Default Error Tracer 默认错误跟踪器 CPU Central Processing Unit 中央处理器 MPU Memory ...

    如何使用该博文?

    ==>您可以将该篇博文当做“字典”,遇到疑惑的Autosar关键字”,使用组合键Ctrl+F,快速查找该关键字。

    推荐Autosar培训教程点击下方卡片接口跳转):

    《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...https://blog.csdn.net/qfmzhu/article/details/112425670

    《Autosar_BSW高阶配置》总目录_培训教程持续更新中...https://blog.csdn.net/qfmzhu/article/details/118652658

    AUTOSAR中各BSW模块_“模块缩写”_“参考文档”以及所属“AUTOSAR软件层级”清单icon-default.png?t=L9C2https://blog.csdn.net/qfmzhu/article/details/106639950

    目录

    1 Microcontroller Drivers

    1.1 Core Test Driver:CorTst

    1.2 GPT Driver:Gpt

    1.3 MCU Driver:Mcu

    1.4 Watchdog Driver:Wdg

    2 Memory Drivers

    2.1 EEPROM Driver:Eep

    2.2 Flash Driver:Fls

    2.3 Flash Test:FlsTst

    2.4 Memory Mapping:MemMap

    2.5 RAM Test:RamTst

    3 Communication Drivers

    3.1 CAN Driver:Can

    3.3 Ethernet Driver:Eth

    3.4 FlexRay Driver:Fr

    3.5 LIN Driver:Lin

    3.6 SPI Handler Driver:Spi

    3.7 TTCAN Driver:Ttcan

    4 IO Drivers

    4.1 ADC Driver:Adc

    4.2 DIO Driver:Dio

    4.3 ICU Driver:Icu

    4.4 OCU Driver:Ocu

    4.5 Port Driver:Port

    4.6 PWM Driver:Pwm

    5 Crypto Drivers

    5.1 Crypto Driver:CRYPTO

    END


    1 Microcontroller Drivers

    1.1 Core Test Driver:CorTst

    Core Test Driver提供用于配置、启动、轮询、终止和通知应用程序有关Core Test结果的服务。它还提供以预定义方式返回测试结果的服务。此外,它还提供了一些测试来验证专用的Core功能,例如通用寄存器或算术和逻辑单元 (ALU)。

    假设每个测试的Core硬件功能都可以专门用于测试目的。Core Test Driver API的用户可以选择合适的测试组合和预定的执行顺序来满足系统的安全要求。这些服务的行为是异步的或同步的。

    Core Test Driver程序直接访问微控制器内核,无需任何中间软件层,位于微控制器抽象层 (MCAL) 中。

    缩写

    描述

    MCAL

    Microcomputer Abstraction Layer

    微机抽象层

    DEM

    Diagnostic Event Manager

    诊断事件管理器

    DET

    Default Error Tracer

    默认错误跟踪器

    CPU

    Central Processing Unit

    中央处理器

    MPU

    Memory Protection Unit

    内存保护单元

    L1

    1st level memory

    一级存储器

    L2

    2nd level memory

    二级存储器

    MCU

    Microcontroller Unit

    微控制器单元

    BIST

    Built in Self Test

    内置自检

    IRQ

    Interrupt Request

    中断请求

    Core

    A CPU plus closely located functional resources

    一个 CPU 加上紧密定位的功能资源

    CSUM/Checksum/signature

    A numerical representation of the result of a test execution.

    测试执行结果的数字表示。

    术语

    描述

    Background test

    背景测试

    Background test is called periodically by a SW-scheduler/RTOS.

    后台测试由软件调度程序/实时操作系统定期调用。

    Foreground test

    前台测试

    A foreground test is a synchronous test and shall not be interrupted. It is called via user application calls.

    前台测试为同步测试,不得中断。它是通过用户应用程序调用来调用的。

    ‘Golden (Ref.) Value’

    Reference value used for comparison(e.g. Checksum/Signature) to a previously computed test result value.

    用于与先前计算的测试结果值进行比较(例如校验和/签名)的参考值。

    ‘Good Case’

    The execution finished without reporting an error

    执行完成没有报错

    Atomic sequence/

    atomic piece

    原子序

    An atomic sequence is a piece of test which shall not be interrupted.

    原子序列是一项不应中断的测试。

    External device

    外接设备

    A physical external entity; e.g. a second microcontroller

    物理外部实体;例如,第二个微控制器

    Resource

    资源

    A ‘hardware resource’ is the smallest unit(instance) that can be selected by a CORETest driver user. It can be tested in one or several atomic sequences. It is a core internal unit which executes a unique functionality (e.g. IRQ-controller).

    “硬件资源”是CORETest Driver用户可以选择的最小单位(实例)。它可以在一个或几个原子序列中进行测试。它是执行独特功能的核心内部单元(例如,IRQ控制器)。

    Partial test

    部分测试

    A partial test is defined as the test of one or more ‘hardware resources’. (A partial test is interruptible because it is executed in background mode).

    部分测试被定义为对一个或多个“硬件资源”的测试。(部分测试是可中断的,因为它是在后台模式下执行的)。

    Entity/unit

    实体/单位

    Hardware functionality inside the core (e.g. CPU, MMU etc.)

    内核内部的硬件功能(例如,CPU、MMU等)

    Caller/calling entity

    调用者/调用实体

    The caller/calling entity is located on a higher AUTOSAR or ISO layer. It is the user of the API call.

    调用方/调用实体位于更高的AUTOSAR或ISO层。它是API调用的用户。

    test interval

    测试间隔

    CoreTest test Interval: the sum of all the partial tests (executed in background mode) on the hardware resources that are configured to make one complete Core test.

    CoreTest 测试间隔:配置为进行一次完整Core测试的硬件资源上的所有部分测试(在后台模式下执行)的总和。

    Test Interval Id

    测试间隔 ID

    Identifier of a test interval, which shall be incremented by each start of a new test interval.

    测试间隔的标识符,它应随着新的测试间隔的每次开始而增加。

    以上摘自《AUTOSAR_SWS_CoreTest.pdf (V4.3.0)》。

    1.2 GPT Driver:Gpt

    GPT Driver是微控制器抽象层(MCAL) 的一部分。它初始化并控制微控制器的内部通用定时器(GPT: General Purpose Timer(s))。

    GPT Driver提供服务和配置参数

    1. 启动和停止硬件定时器
    2. 获取定时器值
    3. 控制时间触发的中断通知(如果硬件支持)
    4. 控制时间触发的唤醒中断(如果硬件支持)

    定时器通道的滴答持续时间取决于通道特定设置(GPT Driver的一部分)以及系统时钟和MCU模块控制的时钟树的设置。

    tick持续时间不受本规范限制。

    并非所有硬件定时器都必须由GPT模块控制。某些计时器可能由AUTOSAR操作系统或CDD复杂驱动程序直接控制。

    GPT Driver的定时器通道数取决于硬件、实现和系统配置。

    除了可以用单独的属性配置单独的定时器通道之外,还定义了一些自由运行的计数器——所谓的GPT预定义定时器。

    这些计时器具有预定义的滴答持续时间和预定义的位数 (物理时间单位和范围)。时间服务模块使用GPT预定义定时器。

    GPT Driver仅生成time bases时基。其他MCAL模块涵盖了driver level的更多time bases时基的功能,例如:

    1. PWM Driver(用于脉宽调制的驱动)
    2. ICU Driver(输入捕获单元的驱动)
    3. OCU Driver(输出比较单元的驱动)

    缩写

    描述

    BSW

    Basic Software

    基础软件

    DET

    Default Error Tracer

    默认错误跟踪器

    ECU

    Electronic Control Unit

    电子控制单元

    GPT

    General Purpose Timer

    通用定时器

    ICU

    Input Capture Unit

    输入捕捉单元

    MCU

    Micro Controller Unit

    微控制器单元

    NOP, nop

    Null Operation

    空操作

    OS

    Operating System

    操作系统

    术语

    描述

    Timer channel

    定时器通道

    Represents a logical timer entity assigned to a timer hardware

    表示分配给计时器硬件的逻辑计时器实体

    Target time

    目标时间

    Time,something shall occur,when the value is reached. The behavior depends on the configuration and the enabled functionality.

    时间,当达到该值时,就会发生一些事情。行为取决于配置和启用的功能。

    Tick

    Defines the timer resolution, the duration of a timer increment

    定义计时器分辨率,计时器增量的持续时间

    GPT Predef Timer

    预定义定时器

    A GPT Predef Timer is a free running up counter provided by the GPT driver.Which GPT Predef Timer(s) are available depends on hardware(clock,hardware timers,prescaler,width of timer register, …) and configuration. A GPT Predef Timer has predefined physical time unit and range.

    GPT Predef Timer是由GPT Driver提供的自由运行的计数器。哪些GPT预定义定时器可用取决于硬件(时钟,硬件定时器,预分频器,定时器寄存器的宽度,...)和配置。GPT Predef Timer具有预定义的物理时间单位和范围。

    以上摘自《AUTOSAR_SWS_GPTDriver.pdf (V4.3.0)》。

    1.3 MCU Driver:Mcu

    MCU Driver为其他MCAL软件模块所需的基本微控制器初始化、断电功能、复位和微控制器特定功能提供服务。除了启动代码(见下图)之外,初始化服务还允许灵活的和应用程序相关的MCU初始化。启动代码非常特定于MCU。

    MCU Driver直接访问微控制器硬件,位于微控制器抽象层 (MCAL) 中。

    MCU Driver特点:

    1. MCU时钟、PLL、时钟预分频器和 MCU 时钟分配的初始化
    2. RAM部分的初始化
    3. 激活µC低功耗模式
    4. 激活µC复位
    5. 提供从硬件获取重置原因的服务

    缩写

    描述

    uC

    Microcontroller

    微控制器

    MCU

    Micro Controller Unit

    微控制器单元

    SFR

    Special Function Register (MCU register)

    特殊功能寄存器(MCU 寄存器)

    DEM

    Diagnostic Event Manager

    诊断事件管理器

    DET

    Default Error Tracer

    默认错误跟踪器

    以上摘自《AUTOSAR_SWS_MCUDriver.pdf (V4.3.0)》。

    1.4 Watchdog Driver:Wdg

    Watchdog Driver模块提供初始化、改变运行模式和设置触发条件(超时)的服务。

    内部和外部Watchdog Driver的功能要求和功能范围相同。因此,API在语义上是相同的。

    内部Watchdog Driver属于微控制器抽象层(MCAL),而外部Watchdog Driver属于板载设备抽象层。因此,外部Watchdog Driver需要其他Driver(在 MCAL 中)才能访问微控制器硬件。

    缩写

    描述

    DIP

    Digital Input/Output

    数字输入/输出

    DET

    Default Error Tracer

    默认错误跟踪器

    DEM

    Diagnostic Event Manager – module to handle diagnostic relevant events.

    诊断事件管理器——处理诊断相关事件的模块。

    SPI

    Serial Peripheral Interface

    串行外设接口

    WDG

    Watchdog (module specific prefix)

    看门狗(模块特定前缀)

    定义

    描述

    Off-Mode

    The watchdog hardware is disabled/shut down.

    This might be necessary in order to shut down the complete ECU and not get cyclic resets from a still running external watchdog.

    This mode might not be allowed for safety critical systems.In this case,the Wdg module has to be configured to prevent switching to this mode.

    看门狗硬件被禁用/关闭。

    为了关闭整个ECU并且不从仍在运行的外部看门狗中获得循环重置,这可能是必要的。

    对于安全关键系统,可能不允许使用此模式。在这种情况下,必须配置Wdg模块以防止切换到此模式。

    Slow-Mode

    Triggering the watchdog hardware can be done with a long timeout period.

    This mode can e.g.be used during system startup/initialization phase.E.g. the watchdog hardware is configured for toggle mode(no constraints on the point in time at which the triggering is done) and a timeout period of 20 milliseconds.

    触发看门狗硬件可以通过较长的超时时间来完成。

    例如,此模式可用于系统启动/初始化阶段。例如,看门狗硬件配置为切换模式(对触发完成的时间点没有限制)和20毫秒的超时时间。

    Fast-Mode

    Triggering the watchdog hardware has to be done with a short timeout period.

    This mode can e.g. be used during normal operations of the ECU. E.g. the watchdog hardware is configured for window mode (triggering the watchdog has to occur within certain minimum / maximum boundaries within the timeout period) and a timeout period of 5 milliseconds.

    触发看门狗硬件必须在很短的超时时间内完成。

    这种模式可以例如,在 ECU 的正常操作期间使用。例如,看门狗硬件配置为窗口模式(触发看门狗必须在超时期限内的某些最小/最大边界内发生)和5毫秒的超时时间。

    以上摘自《AUTOSAR_SWS_WatchdogDriver.pdf (V4.3.0)》。

    2 Memory Drivers

    2.1 EEPROM Driver:Eep

    EEPROM Driver提供读取、写入、擦除EEPROM的服务。它还提供将EEPROM中的数据块与存储器(例如 RAM)中的数据块进行比较的服务。

    这些服务的行为是异步的。

    内部EEPROM Driver直接访问微控制器硬件并位于微控制器抽象层中。外部EEPROM Driver使用handlers(在大多数情况下为SPI)或drivers来访问外部 EEPROM 设备。它位于ECU抽象层。

    两种Driver的功能要求和功能范围是相同的。因此,API 在语义上是相同的。

    术语

    描述

    Data block

    数据块

    A data block may contain 1..n bytes and is used within the API of the EEPROM driver.Data blocks are passed with

    • Address offset in EEPROM
    • Pointer to memory location
    • Length

    to the EEPROM driver.

    一个数据块可能包含1..n个字节,并在EEPROM Driver的API中使用。数据块通过

    • EEPROM中的地址偏移

    • 指向内存位置的指针

    • 长度

    到EEPROM Driver。

    Data unit

    数据单元

    The smallest data entity in EEPROM. The entities may differ for read/write/erase operation.

    Example 1: Motorola STAR12

    Read: 1 byte

    Write: 2 bytes

    Erase: 4 bytes

    Example 2: external SPI EEPROM device

    Read/Write/Erase: 1 byte

    EEPROM中最小的数据实体。对于读/写/擦除操作,实体可能不同。

    示例 1:摩托罗拉STAR12

    读取:1字节

    写入:2个字节

    擦除:4个字节

    示例 2:外部SPI EEPROM设备

    读/写/擦除:1字节

    Normal mode

    Burst mode

    普通模式

    突发模式

    Some external SPI EEPROM devices provide the possibility of different access modes:

    • Normal mode:

    The data exchange with the EEPROM device via SPI is performed byte wise.This allows for cooperative SPI usage together with other SPI devices like I/O ASICs,external watchdogs etc.

    • Burst mode:

    The data exchange with the EEPROM device via SPI is performed block wise.The block size depends on the EEPROM properties,an example is 64 bytes.Because large blocks are transferred,the SPI is blocked by the EEPROM access in burst mode.This mode is used during ECU start-up and shut-down phases where fast reading/writing of data is required.

    一些外部 SPI EEPROM 设备提供了不同访问模式的可能性:

    •      正常模式:

    通过SPI与EEPROM设备的数据交换是按字节进行的。这允许与其他SPI设备(如I/O ASIC、外部看门狗等)一起使用协作SPI。

    •      突发模式:

    通过SPI与EEPROM设备的数据交换是按块执行的。块大小取决于EEPROM属性,例如 64 字节。由于传输大块,SPI在突发模式下被EEPROM访问阻塞。此模式用于需要快速读取/写入数据的ECU启动和关闭阶段。

    EEPROM cell

    EEPROM单元

    Smallest physical unit of an EEPROM device that holds the data. Usually 1 byte.

    保存数据的EEPROM设备的最小物理单元。通常为1个字节。

    缩写

    描述

    EEPROM

    Electrically Erasable and Programmable Read Only Memory

    电可擦除可编程只读存储器

    NVRAM

    Non Volatile Random Access Memory

    非易失性随机存取存储器

    NvM

    Module name of NVRAM Manager

    NVRAM管理器的模块名称

    EcuM

    Module name of ECU State Manager

    ECU状态管理器模块名称

    DEM

    Module name of Diagnostic Event Manager

    诊断事件管理器模块名称

    DET

    Module name of Default Error Tracer

    默认错误跟踪器的模块名称

    以上摘自《AUTOSAR_SWS_EEPROMDriver.pdf (V4.3.0)》。

    2.2 Flash Driver:Fls

    Flash Driver适用于内部和外部flash memory drivers。

    如果底层硬件支持,Flash Driver提供读取、写入和擦除flash memory的服务以及用于设置/重置写/擦除保护的配置接口。

    在ECU的应用模式下,Flash Driver只供Flash EEPROM仿真模块用于写入数据。不打算在应用程序模式下将程序代码写入flash memory。这应在超出AUTOSAR范围的引导模式下完成。

    内部flash memory直接访问微控制器硬件并位于微控制器抽象层中。外部flash memory通常通过微控制器的数据/地址总线(内存映射访问)连接,Flash Driver然后使用这些总线的handlers/drivers来访问外部flash memory设备。外部flash memory设备的Driver位于ECU抽象层中。

    内部和外部drivers的功能要求和功能范围是相同的。因此,API在语义上是相同的。

    缩写

    描述

    DET

    Default Error Tracer – module to which development errors are reported.

    默认错误跟踪器 - 报告开发错误的模块。

    DEM

    Diagnostic Event Manager – module to which production relevant errors are reported.

    诊断事件管理器 - 报告生产相关错误的模块。

    Fls, FLS

    Official AUTOSAR abbreviation for the module flash driver (different writing depending on the context, same meaning).

    模块Flash Driver的官方AUTOSAR缩写(根据上下文不同的写作,相同的含义)。

    AC

    (Flash) access code – abbreviation introduced to keep the names of the configuration parameters reasonably short.

    (Flash) 访问代码 - 引入缩写以保持配置参数的名称合理简短。

    术语

    描述

    Flash sector

    闪存扇区

    A flash sector is the smallest amount of flash memory that can be erased in one pass. The size of the flash sector depends upon the flash technology and is therefore hardware dependent.

    闪存扇区是可以一次性擦除的最小闪存量。闪存扇区的大小取决于闪存技术,因此取决于硬件。

    Flash page

    闪存页面

    A flash page is the smallest amount of flash memory that can be programmed in one pass. The size of the flash page depends upon the flash technology and is therefore hardware dependent.

    闪存页面是可以一次性编程的最小闪存量。闪存页面的大小取决于闪存技术,因此取决于硬件。

    Flash access code

    闪存访问代码

    Internal flash driver routines called by the main function (job processing function) to erase or write the flash hardware.

    由主函数(作业处理函数)调用的内部Flash Driver例程来擦除或写入闪存硬件。

    以上摘自《AUTOSAR_SWS_FlashDriver.pdf (V4.3.0)》。

    2.3 Flash Test:FlsTst

    Flash test module提供了测试不变内存的算法。不变存储器可以是数据/程序闪存、程序SRAM、锁定缓存,并且可以嵌入到微控制器中或映射到连接到微控制器的存储器。为简化起见,SW模块称为Flash Test driver

    MCU 初始化后可以随时执行测试服务,Flash Test driver的用户可以选择合适的测试算法和正确的执行位置来满足系统的安全要求。测试服务本身依赖于系统的存储概念。因此,不同测试算法的可用性是可配置的。

    Flash Test driver旨在集成到整体安全概念中,并且不会单独提供所需的诊断范围。

    缩写

    描述

    BSW

    BasicSoftWare

    PC

    PreCompile

    PB

    PostBuild

    DEM

    Diagnostic Event Manager.

    诊断事件管理器

    DET

    Default Error Tracer.

    默认错误跟踪器

    MCU

    Micro Controller Unit.

    微控制器单元

    PLL

    Phase Locked Loop.

    锁相环

    ISR

    Interrupt Service Routine.

    中断服务程序

    术语

    描述

    Background test

    背景测试

    Background test is called periodically by a scheduler, and is interruptible. The test is split up over many scheduled tasks.

    后台测试由调度程序定期调用,并且是可中断的。测试分为许多计划任务。

    Foreground test

    前台测试

    Foreground test is called via users call.

    前台测试通过用户调用调用。

    Flash cell

    闪存单元

    Smallest entity to be addressed, in this case bytes shall be used

    要寻址的最小实体,在这种情况下应使用字节

    Invariable memory

    不变的内存

    Invariable memory can be program flash, program SRAM, locked cache and ROM

    不变存储器可以是程序闪存、程序SRAM、锁定缓存和ROM

    Test block

    测试块

    Defined memory area to be tested in foreground and background mode.

    定义的内存区域在前台和后台模式下进行测试。

    Test interval

    测试间隔

    Interval of a complete Flash test in background mode

    后台模式下完整Flash测试的间隔

    Test time

    测试时间

    Time for partial test defined within one scheduled task.

    在一项计划任务中定义的部分测试时间。

    Signature

    签名

    Unique calculation result of the content of a specific memory block

    特定内存块内容的唯一计算结果

    Memory block

    内存块

    Defined memory area

    定义的内存区域

    Partial test

    部分测试

    Test to be executed in one scheduler interval

    在一个调度程序间隔内执行的测试

    Test Interval Id

    测试间隔 ID

    Identifier of a test interval, which shall be incremented by each start of a new test interval

    测试间隔的标识符,它应随着新的测试间隔的每次开始而增加

    以上摘自《AUTOSAR_SWS_FlashTest.pdf (V4.3.0)》。

    2.4 Memory Mapping:MemMap

    本文档规定了通过memory mapping文件将代码和数据映射到特定内存部分的机制。对于许多ECU和微控制器平台来说,能够将代码、变量和常量模块映射到特定的存储器部分是非常必要的。

    重要用例的选择:

    避免浪费内存

    如果在 32 位平台上的不同模块中使用不同的变量(8、16 和 32 位),则在分配RAM中的变量时,链接器将在RAM中留下间隙。这是因为微控制器平台需要特定的变量对齐,并且一些链接器不允许优化变量分配。

    如果根据变量的大小将变量映射到特定的内存部分,则可以避免这种内存浪费。这最大限度地减少了RAM中未使用的空间。

    特定 RAM 属性的使用

    某些变量(例如 NVRAM管理器的RAM镜像)不得在上电复位后初始化。应该可以将它们映射到复位后未初始化的RAM 部分。

    对于某些变量(例如,通过位掩码访问的变量),如果它们位于允许编译器位操作指令的RAM部分中,它会提高性能和代码大小。这些RAM部分通常称为“近页”或“零页”。

    特定 ROM 属性的使用

    在具有外部闪存的大型ECU中,需要将具有经常调用的功能的模块映射到允许快速访问并因此具有更高性能的内部闪存。具有很少调用或性能要求较低的函数的模块被映射到访问速度较慢的外部闪存。

    为引导加载程序和应用程序使用相同的模块源代码

    如果一个模块同时用于引导加载程序和应用程序,则必须允许将代码和数据映射到不同的存储器部分。

    第3.1章中列出的所有编译器都支持的将代码和数据映射到内存段的机制是使用编译指示。由于pragma是非常特定于编译器的,因此必须指定一种以标准化方式使用这些pragma的机制。

    支持内存保护

    硬件内存保护的使用需要将模块变量分离到不同的内存区域。内部变量被映射到受保护的内存中,用于数据交换的缓冲区被映射到不受保护的内存中。

    支持分区

    在某些情况下,需要单独的分区分配内存。因此,如果BSW模块支持多个分区的拆分,则需要将模块变量额外分离到不同的内存(分区)区域。

    缩写

    描述

    BSW

    Basic Software

    基础软件

    ISR

    Interrupt Service Routine

    中断服务程序

    NVRAM

    Non-Volatile RAM

    非易失性 RAM

    以上摘自《AUTOSAR_SWS_MemoryMapping.pdf (V4.3.0)》。

    2.5 RAM Test:RamTst

    RAM Test是对RAM单元的物理健康状况的测试。它不用于测试RAM的内容。还测试了用于寄存器的RAM。

    在本文档中,RAM单元被理解为内存单元,可以由处理器单独寻址。因此,对于16位处理器,以位为单位的单元大小例如为16。

    存在不同的算法来测试RAM。它们针对不同的故障模型集,实现不同的覆盖范围,导致不同的运行时间,并且是破坏性的或非破坏性的。覆盖范围还取决于底层物理RAM架构。 ISO 26262 仅区分了三个基本覆盖级别低 (60%)、中 (90%) 和高 (99%) [11]。AUTOSAR规范中也使用了这种基本区别。

    必须执行ECU安全分析以确定需要哪种RAM Test诊断覆盖率(低、中或高)。然后在编译时选择适当的RAM Test算法和进一步的配置参数。在运行时,应用软件可以在编译的算法之间进行选择(以及其他参数之间)。

    RAM Test可以被测试环境同步调用(以下称为“前台测试”),也可以被OS任务或其他循环调用方式循环调用(以下称为“背景测试”)。测试环境可以选择测试参数,开始和停止测试,并获得状态报告。开发错误报告给默认错误跟踪器(DET),生产错误报告给诊断事件管理器(DEM)。

    RamTst模块由用于后台测试的RamTst_MainFunction()、用于前台测试的API、几个配置和状态API(应用程序编程接口)和几个配置容器组成。

    缩写

    描述

    API

    Application Programming Interface

    应用程序接口

    CRC

    Cyclic Redundancy Check

    循环冗余校验

    DEM

    Diagnostic Event Manager

    诊断事件管理器

    DET

    Default Error Tracer

    默认错误跟踪器

    DMA

    Direct Memory Access

    直接内存访问

    ECC

    Error Correction Code

    纠错码

    NMI

    Non Maskable Interrupt

    不可屏蔽中断

    RAM

    Random Access Memory

    随机存取存储器

    以上摘自《AUTOSAR_SWS_RAMTest.pdf (V4.3.0)》。

    3 Communication Drivers

    3.1 CAN Driver:Can

    Can模块是最低层的一部分,执行硬件访问并向上层提供与硬件无关的API。

    唯一可以访问Can模块的上层是CanIf模块(另见 SRS_SPAL_12092)。

    Can 模块提供发起传输的服务,并调用CanIf模块的回调函数来通知事件,独立于硬件。此外,它还提供服务来控制属于同一CAN硬件单元的CAN控制器的行为和状态。

    只要多个CAN控制器属于同一个CAN硬件单元,就可以由单个Can模块控制它们。

    有关CAN控制器和CAN硬件单元的更详细描述,请参阅缩写表。

    术语

    描述

    CAN controller

    CAN控制器

    A CAN controller serves exactly one physical channel.

    一个CAN控制器正好服务于一个物理通道。

    CAN Hardware Unit

    CAN硬件单元

    A CAN Hardware Unit may consists of one or multiple CAN controllers of the same type and one or multiple CAN RAM areas.The CAN Hardware Unit is either on-chip,or an external device. The CAN Hardware Unit is represented by one CAN driver.

    一个CAN硬件单元可以由一个或多个相同类型的CAN控制器和一个或多个CAN RAM区域组成。CAN硬件单元要么是片上的,要么是一个外部设备。CAN硬件单元由一个CAN Driver表示。

    CAN L-PDU

    Data Link Layer Protocol Data Unit.Consists of Identifier, Data Length and Data (SDU).

    数据链路层协议数据单元。由标识符、数据长度和数据(SDU)组成。

    CAN L-SDU

    Data Link Layer Service Data Unit. Data that is transported inside the L- PDU.

    数据链路层服务数据单元。在L-PDU内传输的数据。

    DLC

    Data Length Code (part of CAN message describes the SDU length)

    数据长度代码(CAN报文的一部分描述了SDU长度)

    Hardware Object

    硬件对象

    A CAN hardware object is defined as a PDU buffer inside the CAN RAM of the CAN hardware unit/CAN controller.A Hardware Object is defined as L-PDU buffer inside the CAN RAM of the CAN Hardware Unit.

    CAN硬件对象被定义为CAN硬件单元/CAN控制器的 CAN RAM内的PDU缓冲区。硬件对象被定义为CAN硬件单元的CAN RAM内的L-PDU缓冲区。

    Hardware Receive Handle(HRH)

    硬件接收句柄

    The Hardware Receive Handle (HRH) is defined and provided by the CAN Driver.Each HRH typically represents just one hardware object.The HRH can be used to optimize software filtering.

    硬件接收句柄(HRH)由CAN Driver定义和提供。每个HRH通常仅代表一个硬件对象。HRH可用于优化软件过滤。

    Hardware Transmit Handle (HTH)

    硬件发送句柄

    The Hardware Transmit Handle (HTH) is defined and provided by the CAN Driver. Each HTH typically represents just one or multiple hardware objects that are configured as hardware transmit buffer pool.

    硬件发送句柄 (HTH) 由 CAN Driver定义和提供。每个HTH通常仅代表一个或多个配置为硬件发送缓冲池的硬件对象。

    Inner Priority Inversion

    内部优先级反转

    Transmission of a high-priority L-PDU is prevented by the presence of a pending low-priority L-PDU in the same transmit hardware object.

    同一发送硬件对象中存在未决的低优先级L-PDU会阻止高优先级L-PDU的发送

    ISR

    Interrupt Service Routine

    中断服务程序

    L-PDU Handle

    L-PDU句柄

    The L-PDU handle is defined and placed inside the CanIf module layer.Typically each handle represents an L-PDU, which is a constant structure with information for Tx/Rx processing.

    L-PDU句柄被定义并放置在CanIf模块层内。通常每个句柄代表一个L-PDU,它是一个常量结构,包含用于Tx/Rx处理的信息。

    MCAL

    Microcontroller Abstraction Layer

    微控制器抽象层

    Outer Priority Inversion

    外优先反转

    A time gap occurs between two consecutive transmit L-PDUs.

    In this case a lower priority L-PDU from another node can prevent sending the own higher priority L-PDU. Here the higher priority L-PDU cannot participate in arbitration during network access because the lower priority L-PDU already won the arbitration.

    两个连续发送的L-PDU之间出现时间间隙。

    在这种情况下,来自另一个节点的较低优先级L-PDU可以阻止发送自己的较高优先级 L-PDU。这里优先级较高的L-PDU在网络访问期间不能参与仲裁,因为较低优先级的 L-PDU 已经赢得了仲裁。

    Physical Channel

    物理通道

    A physical channel represents an interface from a CAN controller to the CAN Network. Different physical channels of the CAN hardware unit may access different networks.

    物理通道代表从CAN控制器到CAN网络的接口。CAN硬件单元的不同物理通道可以访问不同的网络。

    Priority

    优先级

    The Priority of a CAN L-PDU is represented by the CAN Identifier. The lower the numerical value of the identifier, the higher the priority.

    CAN L-PDU的优先级由CAN标识符表示。标识符的数值越小,优先级越高。

    SFR

    Special Function Register. Hardware register that controls the controller behavior.

    特殊功能寄存器。控制控制器行为的硬件寄存器。

    SPAL

    Standard Peripheral Abstraction Layer

    标准外围抽象层

    ICOM

    Intelligent Communication Controller

    智能通讯控制器

    以上摘自《AUTOSAR_SWS_CANDriver.pdf (V4.3.0)》。

    3.3 Ethernet Driver:Eth

    在AUTOSAR分层软件架构中,Ethernet Driver属于微控制器抽象层,或者更准确地说,属于通信驱动程序。

    这表示Ethernet Driver的主要任务:

    为上层(以太网接口)提供一个硬件独立接口,包括多个相等的控制器。该接口对于所有控制器应该是统一的。因此,上层(以太网接口)可以以统一的方式访问底层总线系统。该接口提供用于初始化、配置和数据传输的功能。然而,Ethernet Driver的配置是特定于总线的,因为它考虑了通信控制器的特定功能。

    单个Ethernet Driver模块仅支持一种类型的控制器硬件,但支持多个相同类型的控制器。此外,如果以Ethernet Driver处于托管模式,则它必须能够与交换机驱动程序互操作。在这种情况下,可能需要对以太网帧进行特殊处理,以适应交换机设备之后的特定解释。Ethernet Driver的前缀需要一个唯一的命名空间。以太网接口可以使用使用此前缀的不同Ethernet Driver访问不同的控制器类型。使用哪个驱动程序访问特定控制器的决定是以太网接口的配置参数。

    下图描绘了以太网堆栈的下部。一个以太网接口使用一个或多个Ethernet Driver访问多个控制器。

     以太网堆栈模块概述

    注意:以太网驱动程序的指定方式允许代码模块的目标代码交付,遵循“一刀切”原则,即以太网接口的整个配置可以在不修改任何源代码的情况下进行。因此,无需详细了解以太网驱动程序软件,即可在很大程度上执行以太网驱动程序的配置。

    缩写

    描述

    EC

    Ethernet controller

    以太网控制器

    Eth

    Ethernet Driver (AUTOSAR BSW module)

    以太网驱动程序(AUTOSAR BSW 模块)

    EthIf

    Ethernet Interface (AUTOSAR BSW module)

    以太网接口(AUTOSAR BSW 模块)

    EthTrcv

    Ethernet Transceiver Driver (AUTOSAR BSW module)

    以太网收发器驱动程序(AUTOSAR BSW 模块)

    ISR

    Interrupt Service Routine

    中断服务程序

    MCG

    Module Configuration Generator

    模块配置生成器

    MII

    Media Independent Interface (standardized Interface provided by Ethernet controllers to access Ethernet transceivers)

    媒介独立接口(以太网控制器提供的标准化接口,用于访问以太网收发器)

    TCP

    Transmission Control Protocol

    发送控制协议

    UDP

    User Datagram Protocol

    用户数据报协议

    以上摘自《AUTOSAR_SWS_EthernetDriver.pdf (V4.3.0)》。

    3.4 FlexRay Driver:Fr

    FlexRay Driver (Fr)抽象了特定 FlexRay 通信控制器(CC)的硬件相关实现细节。该规范基本上依赖于符合FlexRay规范的FlexRay CC。此外,本规范还支持符合FlexRay规范[14]的旧 FlexRay 控制器。此SWS中由不同支持的FlexRay规范导致的不同行为在适用的情况下作为脚注或备注指出。

    FlexRay 控制器支持的所有功能都封装在Fr模块中,只能通过此统一接口访问。API提供抽象的功能操作,这些操作根据实际实现的Fr模块映射到一系列硬件访问。因此,作为Fr模块的用户,FlexRay接口(FrIf)独立于底层FlexRay CC硬件。Fr模块没有主函数或ISR。所有Fr模块API函数仅在FrIf的上下文中执行。

    单个Fr模块仅支持单一类型的FlexRay CC硬件实现。Fr支持这种单一硬件实现的多个FlexRay CC。FlexRay Driver的前缀是每个Fr模块唯一分配的,以允许使用不同的FlexRay Driver,其名称由命名空间分隔。FrIf可以使用不同的FlexRay Driver访问不同的FlexRay CC硬件实现。FrIf 配置确定使用不同类型中的哪个驱动程序来访问特定CC。

    Fr 模块的配置应在系统配置时完成,Fr模块的特定配置由模块配置生成器 (MCG)生成,它将ECU配置参数中的参数转换为Fr模块特定的配置数据结构。

    下图描绘了FlexRay堆栈的基本结构。一个FrIf使用一个或多个FlexRay Driver访问多个CC。

    FlexRay堆栈模块概述

    缩写

    描述

    API

    Application Programming Interface

    应用程序接口

    AUTOSAR

    Automotove Open Systems Architecture

    汽车开放系统架构

    BSW

    Basic Software

    基础软件

    DEM/Dem

    Autosar Module: Diagnostic Event Manager

    Autosar模块:诊断事件管理器

    DET/Det

    Autosar Module: Default Error Tracer

    Autosar模块:默认错误跟踪器

    ECU

    Electronic Control Unit

    电子控制单元

    MCG

    Module Configuration Generator

    模块配置生成器

    CC

    Communication Controller

    通讯控制器

    CHI

    Controller Host Interface

    控制器主机接口

    FIFO

    First In First Out buffer

    先进先出缓冲区

    Fr

    Autosar Module: FlexRay Driver

    Autosar模块:FlexRay 驱动程序

    FrIf

    Autosar Module: FlexRay Interface

    Autosar模块:FlexRay 接口

    FrTp

    Autosar Module: FlexRay Transport Protocol

    Autosar模块:FlexRay 传输协议

    FrTrcv

    Autosar Module: FlexRay Transceiver Driver

    Autosar模块:FlexRay 收发器驱动程序

    ID/Id

    Identifier

    标识符

    ISR

    Interrupt Service Routine

    中断服务程序

    LPdu

    Datalink layer Protocol Datagram Unit

    数据链路层协议数据报单元

    MCAL

    Microcontroller Abstraction Layer

    微控制器抽象层

    MCU

    Microcontroller Unit

    微控制器单元

    MISRA

    Motor Industry Software Reliability Association

    汽车工业软件可靠性协会

    NIT

    FlexRay Network Idle Time

    FlexRay 网络空闲时间

    n/a

    Not Applicable

    不适用

    OS

    Operating System

    操作系统

    PLL

    Phase Locked Loop

    锁相环

    POC

    Protocol Operation Control (see [13] for details)

    协议操作控制(详见[13])

    POCState

    Actual CC internal state of the POC. This state might differ from vPOC!State in certain cases, e.g., after FREEZE command invocation (see [13] for details).

    POC的实际CC内部状态。在某些情况下,此状态可能与vPOC!State不同,例如,在调用 FREEZE命令之后

    SchM

    Autosar Module: Schedule Manager

    Autosar模块:计划管理器

    SRS

    System Requirements Specification

    系统要求规范

    SW

    SoftWare

    软件

    SW-C

    SoftWare Component

    软件组件

    vPOC

    Data structure provided from the CC to the host at the CHI, which contains the actual POC status of the CC (see [13] for details).

    在CHI从CC提供给主机的数据结构,其中包含CC的实际POC状态

    XML

    Extensible Markup Language

    可扩展标记语言

    术语

    描述

    absolute timer

    An absolute timer is set to and triggered by an absolute global time of a FlexRay cluster. The FlexRay global time consists of a cycle and a macrotick offset

    绝对定时器被设置为FlexRay集群的绝对全局时间并由其触发。FlexRay全局时间由一个周期和一个宏刻度偏移组成

    buffer

    A buffer in the context of the Fr SWS describes a hardware transmit/receive resource, part of the FlexRay controller that is mapped to a FlexRay slot, channel, cycle for transmission or reception.

    Fr SWS上下文中的缓冲区描述了硬件发送/接收资源,FlexRay控制器的一部分,映射到用于发送或接收的FlexRay时隙、信道、周期。

    cluster

    A communication system of multiple nodes connected to each other.

    多个节点相互连接的通信系统。

    Macrotick

    The macrotick represents the smallest unit of the global synchronized time of a FlexRay cluster.

    macrotick表示FlexRay集群全局同步时间的最小单位。

    Synchronized

    A FlexRay CC is considered synchronized, to the FlexRay cluster connected to, as long as the following condition holds true:

    ((!vPOC!Freeze) && (vPOC!State == NORMAL_ACTIVE) ||(vPOC!State == NORMAL_PASSIVE))

    只要满足以下条件,FlexRay CC就被视为与连接到的FlexRay集群同步:

    以上摘自《AUTOSAR_SWS_FlexRayDriver.pdf (V4.3.0)》。

    3.5 LIN Driver:Lin

    LIN Driver基础是LIN 2.1规范。假设读者熟悉本规范。本文档将不再描述LIN 2.1功能,但会尝试遵循与LIN 2.1规范相同的顺序。

    LIN Driver仅适用于LIN 2.1主节点。作为从节点运行超出了范围。AUTOSAR中的LIN主机偏离了本LIN Driver规范中描述的LIN 2.1规范,但LIN总线上的行为不会发生变化。目的是能够与AUTOSAR LIN主设备(即LIN Driver)一起重用所有现有的LIN从设备。

    它旨在支持从简单的SCI/UART到复杂的LIN硬件控制器的全系列LIN硬件。使用SW-UART实现超出了范围。有关LIN硬件单元的详细说明,请参阅第 2.3 章。

    LIN Driver是微控制器抽象层(MCAL)的一部分,执行硬件访问并向上层提供与硬件无关的API。唯一可以访问LIN Driver的上层是LIN接口。

    一个LIN Driver可以支持多个通道。这意味着LIN Driver可以处理一个或多个LIN通道,只要它们属于同一个LIN硬件单元。

    在下面的示例中,三个不同的LIN驱动器连接到LIN接口。但是,一个LIN Driver是最常见的配置。

    缩写

    描述

    AUTOSAR

    Automotive Open System Architecture

    汽车开放系统架构

    COM

    Communication

    沟通

    ECU

    Electronic Control Unit

    电子控制单元

    EcuM

    ECU Manager

    ECU管理器

    DEM

    Diagnostic Event Manager

    诊断事件管理器

    DET

    Default Error Tracer

    默认错误跟踪器

    ISR

    Interrupt Service Routine

    中断服务程序

    LIN

    Local Interconnect Network (as defined by [16])

    本地互连网络

    MCAL

    MicroController Abstraction Layer

    微控制器抽象层

    MCU

    Micro Controller Unit

    微控制器单元

    OS

    Operating System

    操作系统

    PDU

    Protocol Data Unit. Consists of Identifier, data length and Data (SDU)

    协议数据单元。 由标识符、数据长度和数据 (SDU) 组成

    PID

    Protected ID (as defined by [16])

    受保护的 ID

    PLL

    Phase-Locked Loop

    锁相环

    RAM

    Random Access Memory

    随机存取存储器

    RX

    Reception

    接收

    SCI

    Serial Communication Interface

    串行通讯接口

    SDU

    Service Data Unit. Data that is transported inside the PDU

    服务数据单元。 在 PDU 内传输的数据

    SFR

    Special Function Register

    特殊功能寄存器

    SPAL

    Standard Peripheral Abstraction Layer

    标准外围抽象层

    SRS

    Software Requirement Specification

    软件需求说明书

    SW

    Software

    软件

    SWS

    Software Specification

    软件规范

    TP

    Transport Layer

    传输层

    TX

    Transmission

    发送

    UART

    Universal Asynchronous Receiver Transmitter

    通用异步接收器发送器

    XML

    Extensible Markup Language

    可扩展标记语言

    术语

    描述

    Enumeration

    枚举

    This can be in “C” programming language an enum or a #define.

    这可以是“C”编程语言中的枚举或#define。

    LIN channel

    LIN通道

    The LIN channel entity interlinks the ECUs of a LIN cluster physically: An ECU is part of a LIN cluster if it contains one LIN controller that is connected to one LIN channel of the LIN cluster. An ECU is allowed to connect to a particular LIN cluster through one channel only.

    LIN 通道实体以物理方式互连LIN集群的ECU:如果ECU包含一个连接到LIN集群的一个LIN 通道的LIN控制器,则该ECU是LIN集群的一部分。一个ECU只能通过一个通道连接到一个特定的LIN集群。

    LIN cluster

    LIN集群

    As defined by [16]: “A cluster is the LIN bus wire plus all the nodes.”

    “集群是 LIN 总线线路加上所有节点。”

    LIN controller

    LIN控制器

    A dedicated LIN hardware with a build Frame processing state machine. A hardware which is capable to connect to several LIN clusters is treated as several LIN controllers.

    具有构建帧处理状态机的专用LIN硬件。能够连接到多个LIN集群的硬件被视为多个LIN控制器。

    LIN frame

    LIN帧

    As defined by [16]: “All information is sent packed as frames; a frame consist of the header and a response.”

    “所有信息都以帧的形式打包发送;一个帧由头部和响应组成。”

    LIN frame processor

    LIN帧处理器

    Frame processing implies the complete LIN frame handling. Implementation could be achieved as software emulated solution or with a dedicated LIN controller.

    帧处理意味着完整的LIN帧处理。可以通过软件模拟解决方案或专用LIN控制器来实现。

    LIN hardware unit

    LIN硬件单元

    A LIN hardware unit may drive one or multiple LIN channels to control one or multiple LIN clusters.

    一个 LIN 硬件单元可以驱动一个或多个 LIN 通道来控制一个或多个 LIN 集群。

    LIN header

    LIN头

    As defined by [16]: “A header is the first part of a frame; it is always sent by the master.”

    “标头是帧的第一部分;总是主人送来的。”

    LIN node

    LIN节点

    As defined by [16]: “Loosely speaking, a node is an ECU. However, a single ECU may be connected to multiple LIN clusters.”

    “粗略地说,一个节点是一个ECU。但是,单个ECU可能连接到多个LIN集群。”

    LIN response

    LIN响应

    As defined by [16]: “A LIN frame consists of a header and a response. Also called a Frame response.”

    “一个LIN帧由一个报头和一个响应组成。也称为帧响应。”

    以上摘自《AUTOSAR_SWS_LINDriver.pdf (V4.3.0)》。

    3.6 SPI Handler Driver:Spi

    SPI Handler/Driver提供读取和写入通过SPI总线连接的设备的服务。它为多个用户提供对SPI通信的访问(例如 EEPROM、看门狗、I/O ASIC)。它还提供了配置片上SPI外设所需的机制。

    本规范描述了单片SPI处理SPI Handler/Driver。该软件模块包括处理和驾驶功能。这种单片SPI Handler/Driver的主要目标是充分利用每个微控制器的功能,并允许根据静态配置进行实现优化,以尽可能满足ECU的需求。

    因此,该规范定义了可选择的功能级别和可配置特性,以允许设计利用微控制器特性的高度可扩展模块。

    要配置SPI Handler/Driver,应遵循以下步骤:

    1. 应选择SPI Handler/Driver功能级别并配置可选功能。
    2. SPI Channels 应根据数据使用情况定义,它们可以缓存在SPI Handler/Driver (IB) 内或由用户 (EB) 提供。
    3. SPI 作业应根据硬件属性 (CS) 进行定义,并且它们将包含使用这些属性的通道列表。
    4. 作为最后一步,应定义作业序列,以便以排序方式(优先排序)传输数据。

    根据所选的功能级别,SPI Handler/Driver的一般行为可以是异步或同步的。

    该规范涵盖了在一个单一模块中组合的Handles/Drivers功能。一个是SPI处理部分,它处理对可能位于ECU抽象层中的总线的多次访问。另一部分是直接访问微控制器硬件的SPI Driver,它可以位于微控制器抽象层中。

    缩写

    描述

    DET

    Default Error Tracer – module to which errors are reported.

    默认错误跟踪器 - 向其报告错误的模块。

    DEM

    Diagnostic Event Manager – module to which production relevant errors are reported.

    诊断事件管理器 - 报告生产相关错误的模块。

    SPI

    Serial Peripheral Interface. It is exactly defined hereafter in this document.

    串行外设接口。它在本文档的下文中进行了准确定义。

    CS

    Chip Select

    片选

    MISO

    Master Input Slave Output

    主输入从输出

    MOSI

    Master Output Slave Input

    主输出从输入

    EB

    Externally buffered channels. Buffers containing data to transfer are outside the SPI Handler/Driver.

    外部缓冲通道。包含要发送的数据的缓冲区位于SPI Handler/Driver之外。

    IB

    Internally buffered channels. Buffers containing data to transfer are inside the SPI Handler/Driver.

    内部缓冲通道。包含要发送的数据的缓冲区位于SPI Handler/Driver内部。

    ID

    Identification Number of an element (Channel, Job, Sequence).

    元素的标识号(通道、作业、序列)。

    术语

    描述

    Channel

    A Channel is a software exchange medium for data that are defined with the same criteria: Config Parameters,Number of Data elements with same size and data pointers (Source & Destination) or location.

    通道是使用相同标准定义的数据的软件交换介质:配置参数,具有相同大小和数据指针(来源和目的地)或位置的数据元素的数量。

    Job

    A Job is composed of one or several Channels with the same Chip Select (is not released during the processing of Job).A Job is considered atomic and therefore cannot be interrupted by another Job. A Job has an assigned priority.

    一个Job由一个或多个具有相同Chip Select的Channel组成(在Job处理过程中不释放)。一个Job被认为是原子的,因此不能被另一个Job中断。作业具有指定的优先级。

    Sequence

    A Sequence is a number of consecutive Jobs to transmit but it can be rescheduled between Jobs using a priority mechanism. A Sequence transmission is interruptible (by another Sequence transmission) or not depending on a static configuration.

    序列是要发送的多个连续作业,但可以使用优先级机制在作业之间重新调度。序列发送是否可中断(通过另一个序列发送)取决于静态配置。 

    以上摘自《AUTOSAR_SWS_SPIHandlerDriver.pdf (V4.3.0)》。

    3.7 TTCAN Driver:Ttcan

    TTCAN Driver的基础是ISO 11898-4 [1]。假设读者熟悉本规范。本文档将不再描述TTCAN功能。

    Ttcan模块是最低层的一部分,执行硬件访问并向上层提供与硬件无关的API。

    唯一可以访问Ttcan模块的上层是TtcanIf模块(另见 SRS_SPAL_12092)。

    Ttcan模块是Can模块的扩展,因此本文档仅提供与CAN堆栈不同的信息和规范。提供了一些一般信息以便更好地理解。

    Ttcan模块提供发起传输的服务,并调用TtcanIf模块的回调函数来通知事件,独立于硬件。

    此外,它提供服务来控制属于同一TTCAN 硬件单元的TTCAN控制器的行为和状态。

    只要属于同一个TTCAN硬件单元,就可以由单个Ttcan模块控制多个TTCAN控制器。

    为独占时间窗口配置的消息将与为此消息配置的每个Tx_Trigger定期传输(连续传输)。

    为仲裁时间窗口配置的消息将仅在每个传输请求(单次)传输一次。

    术语

    描述



    Arbitrating Time Window

    仲裁时间窗口

    See ISO 11898-4 [1]

    Basic Cycle

    基础周期

    See ISO 11898-4 [1]



    BSW

    Basic Software

    基础软件



    CanIf

    CAN Interface

    CAN接口

    Continuous Transmission

    连续发送

    Contrary to Single Shot a message will be transmitted cyclically even without a new transmit request.

    与单发相反,即使没有新的发送请求,消息也会循环发送。

    Current Time Master

    当前时间主

    See ISO 11898-4 [1]

    DLC

    Data Length Code (part of L-PDU that describes the SDU length)

    数据长度代码(描述SDU长度的L-PDU的一部分)



    Cycle Time

    周期

    See ISO 11898-4 [1]



    Exclusive Time Window

    独家时间窗口

    See ISO 11898-4 [1]

    Global Time

    全局时间

    See ISO 11898-4 [1]

    Hardware Receive Handle(HRH)

    硬件接收句柄

    The Hardware Receive Handle (HRH) is defined and provided by the TTCAN driver.Typically each HRH represents exactly one hardware object.The HRH can be used to optimize software filtering.

    硬件接收句柄(HRH)由TTCAN Driver定义和提供。通常每个HRH代表一个硬件对象。HRH 可用于优化软件过滤。

    Inner Priority Inversion

    内部优先级反转

    Transmission of a high-priority L-PDU is prevented by the presence of a pending low-priority L-PDU in the same transmit hardware object.

    同一发送硬件对象中存在未决的低优先级L-PDU会阻止高优先级L-PDU的发送。



    ISR

    Interrupt Service Routine

    中断服务程序

    L-PDU

    Protocol Data Unit for the data link layer (DLL)

    数据链路层协议数据单元 (DLL)



    Local Time

    当地时间

    See ISO 11898-4 [1]

    Matrix Cycle

    矩阵循环

    See ISO 11898-4 [1]

    MCAL

    Microcontroller Abstraction Layer

    微控制器抽象层



    NTU

    See ISO 11898-4 [1]



    Reference Message

    参考消息

    See ISO 11898-4 [1]

    Single Shot

    单发

    A message will be transmitted only once contrary to Continuous Transmission.

    与连续发送相反,一条消息只会发送一次。

    System Matrix

    系统矩阵

    See ISO 11898-4 [1]



    Time Gap

    See ISO 11898-4 [1]



    Time Master

    时间主

    See ISO 11898-4 [1]

    Time Window

    时间窗

    See ISO 11898-4 [1]

    Transmission Column

    发送栏

    See ISO 11898-4 [1]



    Transmit Trigger Event

    发送触发事件

    See ISO 11898-4 [1]



    TTCAN Controller

    TTCAN控制器

    A TTCAN Controller serves exactly one physical channel.

    一个TTCAN控制器正好服务于一个物理信道。



    TtcanDrv

    CAN Driver module with enabled TTCAN functionality

    具有启用TTCAN功能的CAN Driver模块



    TtcanIf

    CAN Interface module with enabled TTCAN functionality

    具有启用TTCAN功能的CAN接口模块

    Tx_Trigger

    See ISO 11898-4 [1]

    以上摘自《AUTOSAR_SWS_TTCANDriver.pdf (V4.3.0)》。

    4 IO Drivers

    4.1 ADC Driver:Adc

    ADC Driver针对逐次逼近ADC硬件。Delta Sigma ADC转换用例超出了本规范的范围。

    ADC模块初始化并控制微控制器的内部模拟数字转换器单元。它提供服务来分别启动和停止转换以启用和禁用转换的触发源。此外,它还提供启用和禁用通知机制的服务以及查询转换状态和结果的例程。

    ADC 模块在所谓的ADC通道组上工作,这些通道组是从所谓的ADC通道构建的。ADC通道组将模拟输入引脚(ADC通道)、所需的ADC电路本身和转换结果寄存器组合成一个实体,可以通过ADC 模块单独控制和访问。

    术语

    描述

    DEM

    Diagnostic Event Manager

    诊断事件管理器

    DET

    Default Error Tracer

    默认错误跟踪器

    ADC

    Analogue Digital Converter

    模拟数字转换器

    MCU

    Microcontroller Unit

    微控制器单元

    API

    Application Programming Interface

    应用程序接口

    HW

    Hardware

    硬件

    SW

    Software

    软件

    ADC HW Unit

    ADC硬件单元

    Represents a microcontroller input electronic device that includes all parts necessary to perform an “analogue to digital conversion”.

    代表微控制器输入电子设备,包括执行“模数转换”所需的所有部件。

    ADC Module

    ADC模块

    ADC Basic Software module ADC Driver, abbreviated also with ADC Driver

    ADC基础软件模块ADC Driver,也缩写为ADC Driver

    ADC Channel

    ADC通道

    Represents a logical ADC entity bound to one port pin. Multiple ADC entities can be mapped to the same port pin.

    表示绑定到一个Port引脚的逻辑ADC实体。多个ADC实体可以映射到同一个Port引脚。

    ADC Channel Group

    ADC通道组

    A group of ADC channels linked to the same ADC hardware unit (e.g. one Sample&Hold and one A/D converter).

    The conversion of the whole group is triggered by one trigger source.

    一组ADC通道链接到同一个ADC硬件单元(例如一个采样保持和一个A/D转换器)。整个组的转换由一个触发源触发。

    ADC Result Buffer

    (ADC Streaming Buffer, ADC Stream Buffer)

    ADC结果缓冲器

    (ADC流缓冲器)

    The user of the ADC Driver has to provide a buffer for every group.This buffer can hold multiple samples of the same group channel if streaming access mode is selected.If single access mode is selected one sample of each group channel is held in the buffer.

    ADC Driver的用户必须为每个组提供一个缓冲区。如果选择流访问模式,该缓冲区可以保存同一组通道的多个样本。如果选择单一访问模式,则每个组通道的一个样本将保存在缓冲区中 .

    Software Trigger

    软件触发

    Software API call that starts the conversion of one ADC channel group or a continuous series of ADC channel group conversions.

    启动一个ADC通道组或一系列连续ADC通道组转换的软件API调用。

    Hardware Trigger

    硬件触发

    ADC internal trigger signal that starts one conversion of an ADC channel group. ADC hardware trigger are generated internally in the ADC hardware,e.g. based on an ADC timer or a trigger edge signal.The trigger hardware is tightly coupled or integrated in the ADC hardware.No software is required to start the ADC channel group conversion after the hardware trigger is detected.

    Note: If the ADC hardware does not support hardware trigger,a similar behavior can be realized with software trigger in combination with the GPT/ICU driver.E.g. in a GPT timer notification function a software triggered ADC channel group conversion can be started.

    ADC内部触发信号,用于启动ADC通道组的一次转换。ADC硬件触发在ADC硬件内部生成,例如,基于ADC定时器或触发边沿信号。触发硬件紧密耦合或集成在ADC硬件中。检测到硬件触发后,无需软件即可启动ADC通道组转换。

    注意:如果ADC硬件不支持硬件触发,可以通过软件触发结合GPT/ICU Driver实现类似的行为。例如,在GPT定时器通知功能中,可以启动软件触发的ADC通道组转换。

    Conversion Mode

    转换模式

    One-Shot:

    The conversion of an ADC channel group is performed once after a trigger and the results are written to the assigned result buffer.

    A trigger can be a software API call or a hardware event.

    Continuous:

    The conversions of an ADC channel group are performed continuously after a software API call (start) and the results are written to the assigned result buffer. The conversions themselves are running automatically (hardware/interrupt controlled). The Continuous conversions can be stopped by a software API call (stop).

    一次:

    ADC通道组的转换在触发后执行一次,并将结果写入分配的结果缓冲区。

    触发器可以是软件API调用或硬件事件。

    连续:

    ADC通道组的转换在软件API调用(启动)后连续执行,并将结果写入分配的结果缓冲区。转换本身正在自动运行(硬件/中断控制)。连续转换可以通过软件API调用(停止)停止。

    Sampling Time, Sample Time

    采样时间

    Time during which the analogue value is sampled (e.g. loading the capacitor, …)

    模拟值被采样的时间(例如加载电容器,...)

    Conversion Time

    转换时间

    Time during which the sampled analogue value is converted into digital representation.

    采样模拟值转换为数字表示的时间。

    Acquisition Time

    采集时间

    Sample Time + Conversion Time.

    采样时间 + 转换时间。

    以上摘自《AUTOSAR_SWS_ADCDriver.pdf (V4.3.0)》。

    4.2 DIO Driver:Dio

    DIO Driver仅适用于片上DIO引脚和Port的Driver。

    DIO Driver提供读写服务

    1. DIO Channels (Pins)
    2. DIO Ports
    3. DIO Channel Groups

    这些服务的行为是同步的。

    该模块适用于由PORT Driver为此目的配置的引脚和Port。为此,DIO Driver中没有对该Port结构进行配置和初始化。

    下图标识了DIO Driver功能,以及 MCAL 软件层内的Port DriverDIO Driver的结构。

    术语

    描述

    DIO channel:

    Represents a single general-purpose digital input/output pin

    代表单个通用数字输入/输出引脚

    DIO port:

    Represents several DIO channels that are grouped by hardware (typically controlled by one hardware register).

    Example: Port A (8 bit) of Freescale HC08

    代表按硬件分组的几个DIO通道(通常由一个硬件寄存器控制)。

    示例:Freescale HC08的Port A(8位)

    DIO channel group:

    DIO 通道组

    Represents several adjoining DIO channels represented by a logical group. A DIO channel group shall belong to one DIO port.

    Example: Port pins 2..6 of an 8 bit port addressing a multiplexer

    表示由一个逻辑组表示的几个相邻DIO通道。一个DIO通道组应属于一个DIO Port。

    示例:寻址多路复用器的8位Port的Port引脚2..6

    Physical Level (Input):

    Two states possible: LOW/HIGH. A bit value '0' represents a LOW, a bit value '1' represents a HIGH.

    可能有两种状态:低/高。位值“0”代表低,位值“1”代表高。

    Physical Level (Output):

    Two states possible: LOW/HIGH. A bit value '0' represents a LOW, a bit value '1' represents a HIGH.

    可能有两种状态:低/高。位值“0”代表低,位值“1”代表高。

    LSB

    Least Significant Bit

    最低有效位

    MSB

    Most Significant Bit

    最高有效位

    DIO

    Digital Input Output

    数字输入输出

    ID

    Identifier

    标识符

    ADC

    Analog to Digital Converter

    模数转换器

    SPI

    Serial Peripheral Interface

    串行外设接口

    PWM

    Pulse Width Modulation

    脉冲宽度调制

    ICU

    Input Capture Unit

    输入捕捉单元

    DET

    Default Error Tracer

    默认错误跟踪器

    DEM

    Diagnostic Event Manager

    诊断事件管理器

    以上摘自《AUTOSAR_SWS_DIODriver.pdf (V4.3.0)》。

    4.3 ICU Driver:Icu

    ICU driver是一个使用输入捕获单元 (ICU) 的模块,用于解调PWM信号、计数脉冲、测量频率和占空比、生成简单中断和唤醒中断。

    ICU driver提供以下服务:

    1. 信号边缘通知
    2. 控制唤醒中断
    3. 周期信号时间测量
    4. 边沿时间戳,可用于非周期信号的采集
    5. 边缘计数

    术语

    描述

    Active Time

    This depends on the starting edge of the signal to be captured.

    Start edge = falling edge => Active Time = Low Time

    Start edge = rising edge => Active Time = High Time

    Start edge = both edges  => Active Time = High Time (if rising edge occurs initially)

    Start edge = both edges  => Active Time = Low Time  (if falling edge occurs initially)

    这取决于要捕获的信号的起始边沿。

    开始沿 = 下降沿 => 活动时间 = 低电平时间

    起始沿 = 上升沿 => 活动时间 = 高电平时间

    起始边沿 = 两个边沿 => 活动时间 = 高电平时间(如果最初出现上升沿)

    起始边沿 = 两个边沿 => 活动时间 = 低电平时间(如果最初出现下降沿)

    DEM

    Diagnostic Event Manager

    诊断事件管理器

    DET

    Default Error Tracer

    默认错误跟踪器

    EcuM

    ECU State Manager

    ECU状态管理器

    Enumeration

    This can be in “C” programming language an enum or a #define.

    这可以是“C”编程语言中的枚举或#define。

    ICU

    Input Capture Unit (not Intensive Care Unit)

    输入捕获单元

    ICU Channel

    Represents a logical ICU entity bound to one input signal and the hardware resources for the configured measurement mode.

    表示绑定到一个输入信号和配置的测量模式的硬件资源的逻辑ICU实体。

    ICU State

    Logical input state of an ICU Channel.

    It can be ICU_ACTIVE or ICU_IDLE.

    ICU通道的逻辑输入状态。

    它可以是ICU_ACTIVE或ICU_IDLE。

    ICU_ACTIVE

    Input state of an ICU Channel, an activation edge has been detected.

    ICU通道的输入状态,已检测到激活沿。

    ICU_IDLE

    Input state of an ICU Channel, no activation edge has been detected since the last call of Icu_GetInputState() or Icu_Init().

    ICU通道的输入状态,自上次调用Icu_GetInputState()或Icu_Init()以来未检测到激活沿。

    Symbolic name for a channel

    通道的符号名称

    A symbolic name is a substitution of a handle with a name. With this handle each channel and its related properties can be found within the configuration structure.

    In “C” programming language this can be realized e.g. by #defines and enums.

    符号名称是用名称替换句柄。使用此句柄,可以在配置结构中找到每个通道及其相关属性。

    在“C”编程语言中,这可以实现,例如,通过#defines和枚举。

    Wakeup event

    唤醒事件

    A wakeup event is understood as a pattern of edges,which will lead to the wake up of this driver. Nevertheless the decision whether a pattern is valid or not isn’t done by this driver.This shall be done by an upper layer.

    一个唤醒事件被理解为一种边缘模式,它会导致这个Driver被唤醒。然而,模式是否有效的决定不是由这个Driver完成的。这将由上层完成。

    以上摘自《AUTOSAR_SWS_ICUDriver.pdf (V4.3.0)》。

    4.4 OCU Driver:Ocu

    每个OCU软件通道都链接到属于微控制器的硬件OCU外设。输出引脚可以选择性地连接到该通道。

    Drivers提供用于初始化和控制微控制器内部OCU功能的函数(输出比较单元)。当计数器的值与定义的阈值匹配时,OCU Driver允许进行比较并自动执行操作。OCU Driver为以下各项提供服务和配置参数:

    1. 启动和停止比较过程
    2. 设置比较阈值
    3. 启用和禁用通知机制
    4. 获取计数器值
    5. 更改输出引脚状态
    6. 如果可用,触发一些硬件资源(ADC、DMA)。

    通道计数器的滴答持续时间取决于通道特定设置(OCU Driver的一部分)以及系统时钟和MCU模块控制的时钟树设置。tick持续时间不受本规范限制。

    一些微控制器没有专用的OCU硬件单元,而是一个通用的定时器模块,可以配置为提供OCU功能和其他定时器功能。本规范不假设硬件架构。反而;它定义了参数和API,以便它们可以在任何合适的硬件架构上实现。下图显示了OCU通道的典型表示。

    “OUTPUT”是在比较匹配时实际执行的操作。

    缩写

    描述

    OCU

    Output Compare Unit

    输出比较单元

    DMA

    Direct Memory Access

    直接内存访问

    MCAL

    Microcontroller Abstraction Layer

    微控制器抽象层

    MCU

    Microcontroller Unit

    微控制器单元

    DEM

    Diagnostic Event Manager.

    诊断事件管理器

    DET

    Default Error Tracer.

    默认错误跟踪器

    SPAL

    Standard Peripheral Abstraction Layer

    标准外围抽象层

    MCU

    Microcontroller Unit.

    微控制器单元

    ISR

    Interrupt Service Routine.

    中断服务程序

    术语

    描述

    OCU channel

    OCU通道

    Represents a logical entity composed of a free running counter a comparison threshold and the action that is done as a result of the comparison process.

    表示由自由运行计数器、比较阈值和作为比较过程结果完成的操作组成的逻辑实体。

    Compare threshold.

    比较阈值

    Target value that is compared with the content of the counter each time the counter is increased by one unit.

    计数器每增加一个单位,与计数器内容比较的目标值。

    Free running counter

    自由运行计数器

    A counter that runs from a minimum(respectively a maxium) to a maximum(respectively a minimum) value and restarts automatically from the minimum(respectively a maximum) after reaching the maximum(respectively the minimum) value.

    从最小值(分别为最大值)运行到最大值(分别为最小值)并在达到最大值(分别为最小值)后从最小值(分别为最大值)自动重新启动的计数器。

    Reference Interval

    参考区间

    Interval (in ticks) given by the caller of the Ocu_SetAbsolutThreshold API,and used as base to compute the return information.

    由Ocu_SetAbsolutThreshold API的调用者给出的时间间隔(以tick为单位),用作计算返回信息的基础。

    以上摘自《AUTOSAR_SWS_OCUDriver.pdf (V4.3.0)》。

    4.5 Port Driver:Port

    Port Driver适用于片上Port和Port引脚。

    该模块将提供初始化微控制器整个PORT结构的服务。许多Port和Port引脚可以分配给各种功能,例如

    •      General purpose I/O

    •      ADC

    •      SPI

    •      SCI

    •      PWM

    •      CAN

    •      LIN

    •      etc

    为此,需要对该Port结构进行整体配置和初始化。这些Port引脚的配置和模式取决于微控制器和ECU。

    Port初始化数据应尽可能高效地写入每个Port。

    Port Driver完成了DIO Driver中使用的Port结构的整体配置和初始化。因此,DIO Driver工作在由Port Driver配置的引脚和Port上。

    Port Driver应在使用DIO功能之前进行初始化。否则DIO函数将表现出未定义的行为。

    下图标识了Port Driver功能,以及MCAL软件层中的Port Driver和DIO Driver的结构。

    驱动

    Name for a Port Pin

    Port引脚的名称

    Name for Subset of Adjacent pins on one port

    一个Port上的相邻引脚子集的名称

    Name for a whole port

    整个Port的名称

    DIO Driver

    Channel

    Channel Group

    Port

    PORT Driver

    Port pin

    --

    Port

    缩写

    描述

    DEM

    Diagnostic Event Manager

    诊断事件管理器

    DET

    Default Error Tracer

    默认错误跟踪器

    MCU

    MicroController Unit

    微控制器单元

    Port Pin

    Represents a single configurable input or output pin on an MCU device.

    代表MCU设备上的单个可配置输入或输出引脚。

    Port

    Represents a whole configurable port on an MCU device.

    代表MCU设备上的整个可配置Port。

    Physical Level(Input)

    Two states are possible: LOW/HIGH

    可能有两种状态:低/高

    Physical Level(Output)

    Two states are possible: LOW/HIGH

    可能有两种状态:低/高

    以上摘自《AUTOSAR_SWS_PortDriver.pdf (V4.3.0)》。

    4.6 PWM Driver:Pwm

    每个PWM通道都链接到属于微控制器的硬件PWM。PWM信号(例如居中对齐、左对齐等。)的类型在本规范中没有定义,由实现决定。

    Driver提供用于初始化和控制微控制器内部PWM阶段的函数(脉冲宽度调制)。PWM模块生成脉冲宽度可变的脉冲。它允许选择占空比和信号周期时间。

     PWM 信号说明

    术语

    描述

    PWM Channel

    脉宽调制通道

    Numeric identifier linked to a hardware PWM.

    链接到硬件PWM的数字标识符。

    PWM Output State

    PWM输出状态

    Defines the output state for a PWM signal. It could be:High.Low.

    定义PWM信号的输出状态。它可能是:高,低。

    PWM Idle State

    PWM空闲状态

    The idle state represents the output state of the PWM channel after the call of Pwm_SetOutputToIdle or Pwm_DeInit

    空闲状态表示调用Pwm_SetOutputToIdle或Pwm_DeInit后PWM通道的输出状态

    PWM Polarity

    PWM极性

    Defines the starting output state of each PWM channel

    定义每个PWM通道的起始输出状态

    PWM Duty cycle

    PWM占空比

    Defines a percentage of the starting level (could be high or low) related to the period.

    定义与时间段相关的启动水平(可以是高或低)的百分比。

    PWM period

    PWM周期

    Defines the period of the PWM signal.

    定义PWM信号的周期。

    缩写

    描述

    PWM

    Pulse Width Modulation.

    脉冲宽度调制

    DEM

    Diagnostic Event Manager.

    诊断事件管理器

    DET

    Default Error Tracer.

    默认错误跟踪器

    MCU

    Microcontroller Unit.

    微控制器单元。

    PLL

    Phase Locked Loop.

    锁相环

    ISR

    Interrupt Service Routine.

    中断服务程序

    以上摘自《AUTOSAR_SWS_PWMDriver.pdf (V4.3.0)》。

    5 Crypto Drivers

    5.1 Crypto Driver:CRYPTO

    Crypto Drivers位于微控制器抽象层,在加密硬件抽象层和上层服务层之下。Crypto Driver是特定设备的Driver,它只是抽象了硬件支持的功能。

    Crypto Driver允许定义不同的Crypto Driver对象(即AES加速器、软件组件等),用于不同缓冲区中的并发请求。

    对于每个硬件对象,应支持依赖于优先级的作业处理。加密软件解决方案(即基于软件的CDD)可以定义与Crypto Driver相同的接口,用于与上层交互,后者应为应用程序提供接口。

    缩写

    描述

    CDD

    Complex Device Driver

    复杂的设备驱动程序

    CSM

    Crypto Service Manager

    加密服务管理器

    CRYIF

    Crypto Interface

    加密接口

    CRYPTO

    Crypto Driver

    加密驱动程序

    DET

    Default Error Tracer

    默认错误跟踪器

    HSM

    Hardware Security Module

    硬件安全模块

    HW

    Hardware

    硬件

    SHE

    Security Hardware Extension

    安全硬件扩展

    SW

    Software

    软件

    术语

    描述

    Crypto Driver Object

    A Crypto Driver implements one or more Crypto Driver Objects.The Crypto Driver Object can offer different crypto primitives in hardware or software.The Crypto Driver Objects of one Crypto Driver are independent of each other.

    There is only one workspace for each Crypto Driver Object(i.e. only one crypto primitive can be performed at the same time)

    Crypto Driver实现一个或多个Crypto Driver Objects。Crypto Driver Objects对象可以在硬件或软件中提供不同的加密原语。一个Crypto Driver的Crypto Driver Objects彼此独立。每个Crypto Driver对象只有一个工作区(即只能同时执行一个加密原语)

    Key

    A Key can be referenced by a job in the Csm.

    In the Crypto Driver, the key references a specific key type.

    密钥可以被Csm中的作业引用。

    在Crypto Driver中,密钥引用特定的密钥类型。

    Key Type

    A key type consists of references to key elements.

    The key types are typically pre-configured by the vendor of the Crypto Driver.

    键类型由对键元素的引用组成。

    密钥类型通常由Crypto Driver的供应商预先配置。

    Key Element

    Key elements are used to store data.This data can be e.g. key material or the IV needed for AES encryption.

    It can also be used to configure the behaviour of the key management functions.

    关键元素用于存储数据。这些数据可以是例如密钥材料或AES加密所需的IV。

    它还可用于配置密钥管理功能的行为。

    Channel

    A channel is the path from a Crypto Service Manager queue via the Crypto Interface to a specific Crypto Driver Object.

    通道是从加密服务管理器队列通过加密接口到特定Crypto Driver Objects的路径。

    Job

    A job is an instance of a job’s configured cryptographic primitive.

    作业是作业配置的加密原语的实例。

    Crypto Primitive

    A crypto primitive is an instance of a configured cryptographic algorithm realized in a Crypto Driver Object.

    加密原语是在Crypto Driver Objects中实现的已配置加密算法的实例。

    Operation

    An operation of a crypto primitive declares what part of the crypto primitive shall be performed. There are three different operation modes:

    加密原语的操作声明应执行加密原语的哪一部分。共有三种不同的操作模式:

    START

    Operation mode indicates a new request of a crypto primitive, and it shall cancel all previous requests of the same job and primitive.

    操作模式表示对加密原语的新请求,它应取消相同作业和原语的所有先前请求。

    UPDATE

    Operation mode indicates, that the crypto primitive expects input data.

    操作模式表明,加密原语需要输入数据。

    FINISH

    Operation mode indicates, that after this part all data are fed completely and the crypto primitive can finalize the calculations.

    操作模式表明,在这部分之后,所有数据都被完全馈送,加密原语可以完成计算。

    It is also possible to perform more than one operation at once by concatenating the corresponding bits of the operation mode argument.

    通过连接操作模式参数的相应位,也可以一次执行多个操作。

    Priority

    The priority of a job defines the importance of it. The higher the priority (as well in value), the more immediate the job will be executed. The priority of a cryptographic job is part of the configuration.

    作业的优先级定义了它的重要性。优先级越高(以及值),作业执行得越直接。加密作业的优先级是配置的一部分。

    以上摘自《AUTOSAR_SWS_CryptoDriver.pdf (V4.3.0)》。

    推荐Autosar培训教程(点击下方卡片接口跳转):

    《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...

    《Autosar_BSW高阶配置》总目录_培训教程持续更新中...

    AUTOSAR中各BSW模块_“模块缩写”_“参考文档”以及所属“AUTOSAR软件层级”清单

    END

    展开全文
  • MCAL开发环境搭建1 前言2 准备工作3 安装3.1 安装EB3.2 安装MCAL3.2 安装S32DS4 SDK开发示例4.1 SDK包安装4.2 导入一个Demo4.3 新建一个工程5 MCAL开发示例5.1 MCAL软件包组成5.2 通过EB配置MCAL并生成代码5.3 编译...

    1 前言

      NXP最近又推出了新的GPIS系列MCU S32K3,也就是S32K1的升级版,虽然是升级版,但是性能提升的不是一点半点,那是贼凶啊,接下来一段时刻,我就要好好学习一下这个MCU,并且把我的学习过程写点笔记,分享给大家,欢迎大家建议和纠错。

      这第一篇就介绍一下开发环境的搭建,在这里我使用S32DS进行SDK方式的开发,配合EB tresos进行MCAL开发。

      简单的来说就是:EB tresos可以为MCAL开发提供图形化配置界面,而S32DS则为SDK开发提供图形化配置界面。

      这篇文件介绍的方式流程如下:

      SDK开发流程为:

    在S32DS配置外设
    在S32DS编译
    在S32DS中调试
    使用其他调试工具

      MCAL开发流程

    在EB配置MCAL
    使用编译器编译
    在S32DS中调试
    其他调试工具

    2 准备工作

      准备工作当然就是下载一些东西喽。需要下载三个东西,分别是NXP官方的调试IDE,配置MCAL的EB tresos以及S32K3的RTD软件包。

      RTD是什么,Real-time Driver,在S32K1时代,MCAL和SDK是两套不同的软件包,但是到了S32K3,就把两者集成了一下,MCAL和SDK共用一套代码,也就是RTD,意思其实就是这两个软件包里面的底层代码都是一样的。简单的来说,现在K3的MCAL就是在SDK的底层基础上封装了一层符合AUTOSAR标准的接口层,RTD的具体结构框架如下图:
    在这里插入图片描述
      图中High Level Interface指的就是符合AUTOSAR的MCAL接口层,而Low Level Interface就是传统意义上比较高效的SDK底层接口层。

      如果有NXP的授权账号,就可以在下面链接下载到这些东西的安装包,登录账号后,点击MY_NXP
    在这里插入图片描述
      点开 Software Licensing and support, 找到S32K3 Standard Software,点开就可以看到这三个东西的下载链接了:

      ①对于EB tresos的下载,需要记住标记的激活码。
    在这里插入图片描述
      ②对于MCAL(SDK),就下载最新的就好了,这里我选择是1.0.0。
    在这里插入图片描述
      如果是MCAL开发的话,只需要下载MCAL安装包,如果是SDK开发的话,只需要下载SDK软件包。
    在这里插入图片描述
      ③对于S32DS,可以看到这个版本需要S32DSV3.4,所以需要下载V3.4版本的S32DS就好了,另外还需要下载S32K3的支持补丁包。
    在这里插入图片描述

      下面就是一顿漫长的等待,等所有东西都下载好了之后,有如下东西:
    在这里插入图片描述

    分别是:

    1. EB Tresos安装包
    2. S32DS安装包
    3. MCAL安装包
    4. K3支持补丁包
    5. SDK包

    这样所需要的文件就全部下载好了。

    3 安装

    3.1 安装EB Tresos

      下载EB tresos的时候可能会出现浏览器把后缀uip改成了gz的情况,将其修改回uip即可。
    在这里插入图片描述
      点击setup.exe,一直next即可,非常简单,中间需要记住其安装路径即可,后续会用到。
    在这里插入图片描述
      又是一次漫长的等待。安装完成后再点击EB_Client_License_Administrator_1_4_1_Setup.exe安装激活工具。之后打开EB激活工具,将之前下载EB时候保存的激活码添加到激活工具中,这样EB tresos就可以正常使用了(注:对应于K3的EB版本是不需要向EB购买, 这个EB license是对NXP MCAL产品的特供版,客户可以直接用)。
    在这里插入图片描述

    3.2 安装MCAL

      点击SW32K3_RTD_4.4_1.0.0_CD01_D2108.exe安装MCAL(SDK),一直Next,直到这一步,将上一步安装的EB tresos的安装路径填进去,之后就非常简单了。
    在这里插入图片描述

    3.2 安装S32DS

      安装S32DS就非常简单了,一直下一步即可,这里不做赘述了。安装完成后还需要安装S32K3的补丁软件支持包,点击Help->Install New Software后将前面下载的K3支持补丁包Add后,选中所有后点击Next
    在这里插入图片描述
      之后就是经过漫长的等待,等待补丁安装完成。
      在这里插入图片描述

    4 SDK开发示例

    4.1 SDK包安装

      打开S32DS后,点击Help->Install New Software后将前面下载的SDK软件包Add后,选中后点击Next
    在这里插入图片描述
      之后就是经过漫长的等待,等待SDK包安装完成。

    4.2 导入一个Demo

      点击File->New->S32DS Project From Example, 选取一个Demo:
    在这里插入图片描述
      之后打开Demo中的mex文件即可打开S32DS的图形化可配置界面进行相关的配置:
    在这里插入图片描述
    在这里插入图片描述
      通过这个界面就可以对S32K3的IO,时钟,外设等进行配置,具体细节不再赘述,之后点击Update Code生成代码。
    在这里插入图片描述
      之后就是正常的编译,调试了,这里也就不多说啥了,非常简单。
    在这里插入图片描述

    4.3 新建一个工程

      也是可以直接新建一个工程,具体操作如下,点击File->New->S32DS Application Project,选择芯片型号:
    在这里插入图片描述
      点击Next
    在这里插入图片描述
      选择正确的SDK后,点击Finish,一个新的工程就创建成功了,接下来就是编译和调试了。

    5 MCAL开发示例

    5.1 MCAL软件包组成

      找到安装的MCAL(RTD)目录打开,如下:
    在这里插入图片描述
      可以看到有很多外设的例子,点开某一个例子如下:
    在这里插入图片描述
      各个文件夹所包含的内容描述如下:

    名称描述
    autosarepd文件
    configEB配置模板文件
    doc当前外设MCAL的Integration Manual和User Manual
    examplesEB tresos工程Demo和S32DS工程Demo
    generate_PBPostBuild版模板源文件和头文件
    generate_PCPreCompile版模板源文件和头文件
    generate_swcd(个人猜测应该没啥用,我也不知道)
    include当前外设MCAL驱动的头文件(需要移植
    META-INF(个人猜测应该没啥用,我也不知道)
    src当前外设MCAL驱动的源文件(需要移植

      上面介绍了examples文件夹里面有EB Tresos的工程和S32DS的工程,再打开examples/EBT文件夹的一个例子如下:
    在这里插入图片描述
      各个文件夹所包含的内容描述如下:

    名称描述
    debug一些劳德巴赫的调试脚本
    generateEB tresos生成的代码(其中的src和include需要移植
    includeMCAL配套Demo的头文件
    out编译生成的.o文件以及elf可执行文件
    srcMCAL配套Demo的源文件
    TresosProjectEB工程文件
    MakefileMCAL配套Demo的Makefile
    project_parameters.mkMakefile的包含文件,注意包含一些路径,配置信息

      再打开其中的TresosProject文件夹:
    在这里插入图片描述
      其中config文件夹里面就包含了当前EB工程的xdm配置文件。

      所以当使用EB配置完所有的外设MCAL后,只需要把以下的文件中的源文件和头文件移植到自己的工程中就可以了,分别是:

    1. 所有使用到外设MCAL的源文件和头文件,
    2. EB生成源文件和头文件

      在上面的表格中,需要移植的内容已经加了 “(需要移植)” 字样作了标记。

    5.2 通过EB配置MCAL并生成代码

      S32K3的MCAL(RTD)为每个软件模块都提供了示例工程,也是在上面所说的examples文件夹中。

      该文件夹下面有两个文件夹,分别为EBT 及S32DS。其中EBT即为MCAL的工程,其中不仅包含了EB tresos的工程,还包括了配套的demo,下面就以其中ADC的例子做示范。
    在这里插入图片描述

      打开EB,并点击File->Import:
    在这里插入图片描述
      找到相应的MCAL工程路径,选取自己想要的demo后,点击Finish。
    在这里插入图片描述
      之后就是对MCAL进行配置,点击生成代码按钮,就可以生成相应的MCAL代码了。
    在这里插入图片描述
      另外打开项目属性,可以修改生成代码的存储位置,如果需要使用RTD里面的makefile和配套的MCAL demo的话,修改路径的话则无法通过编译。
    在这里插入图片描述

    5.3 编译配套的MCAL Demo

      首先编辑一下project_parameters.mk脚本文件,修改一下其中的相关路径信息,该文件位置如下如所示。
    在这里插入图片描述
      可以按照readme.txt里面的提示修改:‘
    在这里插入图片描述

    1. TRESOS_DIR:EB tresos的安装路径
    2. GCC_DIR:编译器的路径
    3. PLUGINS_DIR:MCAL的安装路径

      我修改后如下:
    在这里插入图片描述

      接下来再把编译工具链路径添加到环境变量中,类似于cygwin或者mingw这些,S32DS安装目录中默认就有,具体路径如下:

    C:\nxp\S32DS.3.4\S32DS\build_tools\msys32\usr\bin
    

      将其添加至环境变量中:
    在这里插入图片描述
      接下来就可以编译了,打开windows的cmd,将路径切换至示例Demo的路径,我用的是一个ADC的demo,所以如下:
    在这里插入图片描述
    随后执行
    make build
    编译代码,最后会在当前工程路径下out文件夹下生成可执行文件main.elf。
    在这里插入图片描述
      注意:如果你在该工程的基础上增加了新的模块,比如我在上述工程中增加了CAN模块,那么为了使得编译通过,我们还需要修改一下project_parameters.mk脚本文件,将CAN的MCAL源文件和头文件的路径添加进编译路径MCAL_MODULE_LIST中,如下:

    MCAL_MODULE_LIST := Base CanIf Rte Platform Os Mcu EcuC Det EcuM  Adc Resource Port Dio Lcu Mcl Can
    

    5.4 在S32DS中使用PE仿真器调试

      接下来就是使用S32DS来调试在上一步编译Demo生成的可执行文件了。

      使用PE仿真器连接S32K3后,打开S32DS后,点击Debug Configurations
    在这里插入图片描述

      然后安装下图提示选择PE interface,新建一个调试工程:
    在这里插入图片描述
      按照下图进行设置:
    在这里插入图片描述
    在这里插入图片描述
      其中Executable处应填写:

    ${S32DS_K3_ARM32_TOOLCHAIN_DIR}/bin/${arm32_cross_prefix}gdb${arm32_cross_suffix}
    

      随后点击Debug即可进行调试。
    在这里插入图片描述
      按照以上的步骤即可在S32DS调试MCAL配套的Demo了。

    5.5 使用Lauterbach调试

      接下来再使用Lauterbach调试一下上面编译生成的可执行文件。

      使用Lauterbach进行调试的话,则还需要修改一下config.t32文件,该文件的路径如下所示:
    在这里插入图片描述
    将其中的SYS变量修改成Lauterbach的安装路径, 我修改后如下:
    在这里插入图片描述
      随后就是打开Lauterbach,使用命令连接上S32K3后,再运行脚本run.cmm,脚本路径如下图所示:
    在这里插入图片描述
      随后就可以正常调试RTD里面MCAL配套的Demo了。

    end

    展开全文
  • AUTOSAR MCAL详解:FLS

    千次阅读 2021-03-26 10:44:57
    但是如果你打开了开发错误检查开关,起始地址和长度参数有对齐要求,需要和sector边界对齐。比如上述的例子就会报错。 所有API的地址参数都是以逻辑地址0开始的,FLS驱动会自己加上基础偏移地址(FlsBaseAddress)...

    作者:Stephen Du

    免责声明: 本文为个人学习笔记及总结,仅代表个人观点,尽可能保证内容准确性。

    所有文字均是自己码出来的,所有图片均为自己勾画(除部分来源于原始标准)。

    复制/转发请注明来源/作者。

    欢迎添加微信交流学习。

    在这里插入图片描述

    1. 简介

    主要提供对Flash的读,写,擦相关操作服务;如果底层硬件支持的话,也提供一些配置接口来设置擦/写保护功能。
    在这里插入图片描述

    如上图所示,Fls属于MCAL层,主要给FEE(Flash EEPROM Emulation)模块使用。
    在这里插入图片描述

    FLS驱动不但负责片上Flash,同时也负责片外Flash。但是这两种情况在AUTOSAR架构里面负责模块所对应的分层是不一样的,这里可能容易误解,前面不是刚说FLS模块负责两种情况么。是的,FLS模块要同时支持这两种场景。但是针对片外FLASH,通常是通过处理器数据/地址总线连接的(内存映射)。所以FLS驱动需要通过这些总线驱动来访问片外FLASH,而这些驱动是属于ECU抽象层的。当然也可能是通信接口,比如常见的QSPI,也可能是I/O驱动等,总之和片内的是不一样的。片内FLASH的驱动是直接可以访问控制器硬件的,属于微控制器抽象层(MCAL)。但在功能需求以及功能范围上,不管片内还是片外FLASH,两者都是一样的,拥有相同的API。

    2. 术语定义

    这里有必要说明一下一些关键的术语定义,因为有些术语与硬件相关,而不同厂商可能称呼不一样,而AUTOSAR以这里定义的为准。而对于那些常见的缩写、术语这里不做过多介绍。

    术语定义描述
    Flash Sector/闪存区一个最小可擦除单元定义为一个区,与闪存硬件相关。
    Flash Page/闪存页一个最小可编程/写单元定义为一个页,与闪存硬件相关。
    Flash Access Code(AC) /闪存访问代码被片内FLASH驱动的主函数(用于处理任务/Job的服务)调用的一段特殊代码,以用于擦/写FLASH硬件。简称AC。

    3. 使用限制

    • FLASH驱动只能擦除完整的区,编写完整的页。不提供任何类型的重写机制,因为其内部没有任何缓存,所有API都是通过指针的方式直接使用应用层的缓存数据。

    • FLASH驱动也不提供数据完整性检查机制(比如:Checksum/校验和,冗余存储)。读/写过程中的数据完整性通常由上层模块负责实现。

    • 在ECU应用模式下,Fls驱动的设设计意图主要是给FEE(Flash EEPROM Emulation)模块使用以写入用户数据,而不是为了写程序代码到Flash里面。程序代码的写入应该是在 boot 模式下完成的,boot模式不在AUTOSAR的范围之内。如下图所示:
      在这里插入图片描述

    4. 基础知识

    • FLS模块会合并所有可用空间以组成一个线性空间。由FlsBaseAddressFlsTotalSize两个参数负责实现。什么意思呢?假如你有两片物理地址不连续的空间需要FLS驱动管理,他们的大小分别为4K和8K。那么应用层看来这两片空间是连续的,一共12K,从基础地址开始。FLS驱动内部会自动计算/映射到实际的物理地址里面。应用层操作的那个地址参数是一个虚拟地址/virtual address。

    • FLS驱动内部会处理缓存对齐问题,对外面传进来的Buff没有地址对齐要求,参数都是uint8 *类型的。

    • 一个ECU里面允许存在多个FLASH驱动实例,每个实例有唯一的编号(FlsDriverIndex),编号以0开始。

    • 前面提到闪存访问代码(AC),这些代码比较特殊,用户可根据不同使用场景选择是否拷贝到RAM上运行,这些代码按规定是放到独立的文件(Fls_ac.c)里面的。

      至于为什么要拷贝到RAM上运行,那是因为针对片内FLASH,如果代码放到FLASH上面,假如你想擦除/编程某片区域,并且这片区域刚好和代码所在区域属于同一个Partition,这时候就会出错。因为在同一个partition是不能同时编程和执行代码的(受硬件限制)。如果不在同一个partition,那就无所谓了,可用直接在FLASH上面运行。

    • 加载到RAM上面这种工作是由擦除/写函数负责实现的,用户只需要配置是否需要加载到RAM上,如果使能了,则需要告诉加载的RAM地址(通过配置实现),这个区域需要在链接文件里面配置好。

    • 虽然加载是由擦/写函数实现的,但是因为这两个函数都是异步的,所以真正负责调用执行AC的还是在主函数里面。

    • 当擦/写任务完成或者被取消,如果AC被加载到RAM上,则主函数会负责将AC卸载掉(比如重写那片RAM空间)。

    • AC会临时关掉中断直到擦/写完成。所以这段代码越少越好,执行时间越短越好,通常只包含最核心的一些命令。

    5. 主要接口

    5.1 Fls Sector Size

    在这里插入图片描述

    Fls Sector Size配置强烈建议与实际物理大小匹配,否则你使用的地址可能与实际物理地址不是一一对应的。比如实际物理地址是4K(4096Bytes),但是你实际配置的Sector为2K(2048Bytes),并且你配置了两个这样的Sector。然后你调用Fls_Write函数写入时,传输起始地址参数为2048,可能你的原始用意就是写到物理地址以2048开始的地方,但是实际写入的物理地址会写到4096这个物理地址里面去。这就是因为你配置的2K小于实际的4K导致的。这种配置Fls驱动会将2K~4K这块空间保护起来不操作,也就是Fls驱动管理的地址空间实际上是不连续的。他会将你传入的参数拿来计算,这里的计算会以你配置的大小来计算。这里的2048这个地址计算后应该属于第二个Sector的起始地址。但是物理单元的第二个起始地址是4096,这就是为何会写到4096里面去,而不是我们想的2048这个地址(这个地址根本写不进去数据,前面提到的被保护了)。

    5.2 Fls_Write

    Fls_Write函数的起始地址及长度参数要求以page大小对齐。否则会出错。建议将DET功能打开。假如page大小为8字节。但是传入的参数为写入100字节用户数据。这种情况只有前面96字节(8的整数倍)可以正常写入,而最后4字节(100-96)无法写入。这是因为多余的4字节不满足对齐要求,如果贸然写入势必会将另外的4字节(8-4)给误覆盖了。因为每次写入都是page大小或page大小的整数倍写入的。

    5.3 Fls_Erase

    Fls_Erase函数可以擦除一个或多个Sectors。它的两个参数分别为起始地址和长度,这里没有强制要求必须对齐之类的。但是需要注意的是他是根据你的起始地址以及长度信息来计算这个地址范围属于哪(几)个Sectors,然后会根据计算结果自动一次性擦除所有归属的Sectors(这就是前面提到擦除多个Sectors的原因)。这里就需要注意,还是以上面提到的参数为例,假如你现在调用这个函数,参数分别为1,4096。这样调用会实际擦除两个Sectors。因为起始地址1归属于Sector 0,结束地址4096(4096+1-1),这个地址已经是下一个Sector的地址空间了。所有需要特别注意,防止误擦。

    但是如果你打开了开发错误检查开关,起始地址和长度参数有对齐要求,需要和sector边界对齐。比如上述的例子就会报错。

    所有API的地址参数都是以逻辑地址0开始的,FLS驱动会自己加上基础偏移地址(FlsBaseAddress)。

    5.4 Fls_Cancel

    Fls_Cancel函数只针对后面四种任务:读、写、擦、比较。它可以取消前述4种正在运行的任务。这个函数是同步类型的。什么意思呢?也就是说这个函数返回退出后就可以进行新的任务请求了,因为是同步函数,返回后即代表取消这个动作执行完了。这个函数会将内部的一些状态复位以准备进行新的任务请求。比如读/写函数开始时会设置状态为BUSY/PENDING。执行Cancel函数后会设置状态为IDLE。取消后,用户可选择是否通知应用层(通过配置实现)。被取消的任务的缓存行为是未定义的。

    前面说到取消正在运行的任务。这里其实不太严格。由于很多函数(比如:擦、写)都是异步类型的。并且像擦这种任务是比较费时的,假如我已经发起擦的请求给硬件,但是还没完成,这个过程中又发起了Cancel请求,这种情况其实是取消不了的的。所有这得具体看代码怎么实现。

    5.5 Fls_GetJobResult

    这也是一个同步函数。它用于获取最近一次任务的结果状态。读、写、擦、比较这四种任务是共享一个任务结果的。什么意思呢?假如你连续发起多个任务请求,比如:写和读,然后调用获取任务结果的函数,它只能获取最后任务请求读的结果,而不能获取之前的写任务的结果。其实很好理解,你会发现这个函数都没有参数的。

    5.6 Fls_MainFunction

    前文提到,那些异步请求任务(读、写、擦、比较),真正执行是由主函数来实现的,而那些接受用户请求的函数只是将任务从用户那里获取然后放那里等待主函数处理。主函数需要被程序周期调用。如果有任务正等待被处理,则去处理相应的任务。如果没有任务需要处理,则主函数啥都不干,这时候也可以不用周期调用主函数。

    对于读和比较任务,如果底层硬件对地址有对齐要求,则主函数需要在内部处理掉。因为读、比较函数对用户是没有对齐要求的。

    6. 常见问题

    由于Fls这种操作通常比较费时,所以并不建议程序频繁操作,而是在系统上下电的时候去读写。这就会导致问题,如果异常掉电或者做上下电实验的时候会丢数据。这种问题属于系统性问题,要解决这种问题,通常需要硬件,软件协同处理才能解决。

    首先硬件层面需要有低压检测电路,有些人会说,不是很多芯片都有低压监测功能么,那还需要硬件加低压检测电路干什么,不是增加成本么,真的有必要么?是的,即使芯片有低压监控功能,也是需要硬件加低压检测电路的,因为芯片那个电压监控太晚了,电压太低了。所以需要硬件单独加电路,比如乘用车12V系统(一般电池电压会在14V左右)。通常硬件低压监控电路在10V左右就要启用(有些做得好的,甚至有两级硬件低压监控电路),当系统电压低于这个门限值后产生中断。硬件除了需要低压监控电路外,通常还需要一个大的电容。这个电容的作用就是个备用电源,以备不时之需,在紧急情况下为系统提供能量。硬件有了这些后,是不是就可以了呢?当然是不行的,这么重要的场合怎么能缺了软件呢?电容的电是有限的,根本支撑不了多久,你不可能背个充电宝吧。所以还需要软件配合才行,要不然也形同虚设。软件的主要工作就是在检测到硬件的低压中断信号后立马将耗电的外设全部关掉,通常情况下只需要保留Fls相关的电路,其余的全部关掉,这样系统的功耗就下去了,这样电容的电就可以多撑一会儿。然后写数据进行保存。

    说了这么多,其实这里就两个字:。快是指检测到低压要快,要及时。低指功耗要低,电流要低,这样才能持久。所以这就是为什么需要硬件协助,因为如果靠软件来监控,这个时间是来不及的,等软件监控到可能早就没电了。

    这里强调一下,硬件监控电路通常是监控12V供电,也就是你整个板子的最前端。电容的大小通常需要结合你的低功耗的功耗值进行计算。

    如果上述流程处理不好,轻则会导致关键数据丢失。这个不难理解,如果你的系统处理得好,影响还不算很大,某些情况下甚至可以恢复。但是,但是严重得情况可能会导致你整个系统崩溃,再也起不来了。比如现在很多片子都有ECC功能。如果你在掉电过程中写了一半数据,这就会导致ECC错误。当下次上电系统起来后检测到ECC错误,如果你正好又没有处理ECC相关的那些错误中断,这就会导致系统复位。

    实际上,存储是一个非常复杂,非常重要的一个组件。在Fls的上层模块中也考虑很多容错机制,如感兴趣,可阅读相关文章。

    展开全文
  • MCAL架构

    万次阅读 2019-07-25 10:27:33
    MCAL位于AUTOSAR软件架构中基本软件(BSW)的底层,是可以直接访问MCU寄存器和内部外设的底层驱动。这样划分的目的是使上层软件(如ECU抽象层、系统服务层等)独立于MCU硬件平台,保证上层软件的标准化和通用性。 其...
  • autosar-经典平台-MCAL

    2020-07-01 15:28:50
    autosar,经典平台里面的 ,一起太大不让上传,就分开上传。要想初步了解autosar的话,简单扫一遍就行,没必要深究,大部分都是接口。开发AUTOSAR的话可以下来看看。
  • AURIX TC275/TC234开发----(1) 开发准备工作

    万次阅读 多人点赞 2019-08-10 09:16:53
    TC234/TC275 是英飞凌推出的较新一代AURIX 系列的单核/三核处理器,适合应用于车载控制器的开发,目前在很多车型上有在使用,下面对两种芯片做个简单的分析对比: 1)TC275 该芯片有三个运算核、两个校验核,类似...
  • AUTOSAR MCAL解析:MCU

    千次阅读 2020-09-29 15:42:33
    MCU驱动程序提供微控制器初始化,掉电功能,复位和微控制器其他MCAL软件模块所需的特定功能的服务(这里主要指那些公共寄存器的设置)。需要注意的是,启动代码和用于升级的Bootloader是不在AUTOSAR负责范围内的,启动...
  • AutoSAR系列讲解(深入篇)14.7-Mcal Adc配置(上) Mcal Adc配置(上) 一、AdcGeneral 二、AdcSafety 三、AdcConfigSet Mcal Adc配置(上) ->返回总目录在之前的章节中,咱们在Port的配置中讲解了工具的初步使用...
  • MCAL_VADC配置

    千次阅读 2019-01-20 21:49:32
    2) MCAL_Autosar版本:4.0.3 3) MCAL配置软件: DaVinci Configurator 5.18.29 4) SWC配置软件:DaVinci Developer 4.3 二、 配置要求 AD通道分别在ADC0和ADC1两个模块,各硬件模块使用的AD通道如下: ADC0...
  • 使用S32DS集成MCAL

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

    2021-07-13 14:57:24
    一、架构 二功能介绍 ADC(模数转换)驱动模块主要完成将模拟信号转换为数字信号。当相关通道设置的ADC模式并启动后,硬件会自动进行转换并将转换结果进行存储,使用者读取该存储单元的内容即可。...
  • Autosar实战篇_配置工具的使用

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

    万次阅读 多人点赞 2019-01-09 22:52:15
    例如,MCAL(微控制器抽象层:硬件相关驱动软件)只被写入R4.0 Rev.3的标准时,在R4.0 Rev.2或R4.1 Rev.3的情况下也没有问题。 在大多数情况下,工具厂商可以吸收相应AUTOSAR XML版本的差异,并且在极少数情况下接口...
  • NXP S32K3 RTD-MCAL快速引导

    千次阅读 热门讨论 2020-11-10 17:21:36
    本文将带领大家快速搭建开发环境并运行官方提供的配套示例工程。 1. 前期准备 本文假设你使用S32DS自带的编译器来编译相关工程,调试器使用PE,调试环境使用S32DS。如果你使用其他第三方编译器,请根据本文思想自行...
  • AUTOSAR培训列表

    千次阅读 多人点赞 2018-03-08 09:05:27
    一、AUTOSAR基础知识介绍 1.1. 为什么用AUTOSAR 1.2. AUTOSAR的简介 1.3. AUTOSAR软件架构 1.4. AUTOSAR方法论 1.5.... AUTOSAR开发流程 二、AUTOSAR深入详解及例子演示 2.1. OS操作系统详解 ...
  • AUTOSAR开发流程介绍与应用工具使用DEMO详情介绍,以ISOLAR工具和Matlab工具为主,进行汽车控制器开发介绍
  • AUTOSAR分层-MCAL辨析

    2018-05-11 21:11:00
    8. AUTOSAR中MCAL虽然包含各种drvier,但毕竟是AL即抽象层,不应包含architecture和device特定的信息。应该只包含模型定义,不包含实现细节。 AUTOSAR文档中的分层结构如下: 0层: 1层: 从中可以看到...
  • 柴油机动力总成开发,曲轴和凸轮轴同步信号判断以及判缸和同步
  • 浅谈AUTOSAR架构及开发方法

    千次阅读 2020-06-29 17:10:43
    根据不同功能,可对基础软件继续细分成四部分,分别为服务层(Service Layer),ECU抽象层(ECUAbstract Layer),复杂驱动(ComplexDriver)和MCAL(Microcontroller Absstraction Layer),四部分之间的互相依赖...
  • MCAL PWM Module详解

    2021-11-17 21:02:50
    AUTOSAR MCAL PWM模块的原理特点、配置和使用,手把手教你玩到会。
  • AUTOSAR BSW模块越来越多,需求数量也呈现指数型增加,并且模块的复杂性很大, 一般的传统设计已经很难满足,通过MBD中提供的方法可以满足AUTOSAR BSW的开发。如通过MBD提供了以下方法满足AUTOSAR 模块的特点: ...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 266
精华内容 106
关键字:

mcal开发