S32KSDK使⽤详解之S32SDK软件架构详解
内容提要
引⾔
1. SDK的MCU平台相关设备驱动解析(SDK-->platform-->devices⽬录)
1.1 ⼦⽬录common
1.2 ⼦⽬录S32K1xx(为具体使⽤的MCU型号,可能为 S32K116/S32K118/S31K142/S32K144/S32K146/S32K148)
1.3 其他⽂件
2. SDK的MCU平台相关PD外设驱动解析
3. SDK的MCU平台相关PAL外设抽象层驱动解析
4. SDK的中间件(Middleware)解析
5. SDK的操作系统(OS)解析
5.1 Source-->include
5.2 Source-->portable
5.3 其他源⽂件
5.4 rtos-->osif
总结
引⾔
为了帮助⼤家更好的学习和使⽤S32K SDK,从本⽂开始,我将开发⼀系列的《S32K SDK使⽤详解》技术⽂章,介绍S32K SDK的软件架构和编程思想,并结合S32K1xx系列MCU的硬件外设模块功能特性(Freatures),介绍S32K SDK中相应PD/PAL组件、FreeRTOS/Osif组件和TSS,TCP/IP/LIN stack中间件(Middleware)组件的Processor Expert配置和API使⽤细节和Tips等。
今天,先解析S32K SDK的软件架构,让⼤家对S32K SDK的软件架构有⼀个整体认识和了解。
1. SDK的MCU平台相关设备驱动解析(SDK-->platform-->devices⽬录)
在SDK-->platform-->devices⽬录下,有如下⼦⽬录和C源⽂件:
1.1 ⼦⽬录common
s32_core_cm4.h:内核相关的操作定义,⽐如全局中断的使能与关闭,进⼊低功耗等需要汇编指令操
作的宏定义,这些汇编指令往往还与使⽤的编译器原语(directive,也称作编译程式定向 )和#pragma及section定义有关。
⽤户在应⽤程序中可以使⽤C语⾔直接调⽤这些宏定义,⽽⽆需关⼼具体的编译器和汇编指令;
其中,⽐较重要和常⽤的宏定义包括:
1. CPU全局中断使能-- ENABLE_INTERRUPTS();
2. CPU全局中断关闭--DISABLE_INTERRUPTS();
这两个宏定义被SDK的中断管理器(interrupt manager)组件的全局API--INT_SYS_EnableIRQGlobal()和
INT_SYS_DisableIRQGlobal()调⽤:
Tips:推荐⼤家调⽤SDK中断管理器(interrupt manager)组件的全局API--INT_SYS_EnableIRQGlobal()和
INT_SYS_DisableIRQGlobal(),⽽不是直接使⽤以上两个宏定义,因为INT_SYS_EnableIRQGlobal()和INT_SYS_DisableIRQGlobal()中加⼊了中断嵌套计数,可以跟踪调试中断嵌套。
1. 进⼊低功耗模式指令--STANDBY();
该宏定义也⽆需⽤户⾃⼰调⽤,⽽是被SDK的电源管理器(power manager)组件的硬件访问层(hw_access)的API--
SMC_SetPowerMode()调⽤,要进⼊低功耗模式,还需要配置PMC(Power Mode Controller,电源模式控制器)、
SMC(System Mode Controller, 系统模式控制器)模块和SCB(System Control Block,系统控制块,属于ARM Cortex M内核的系统配置,具体请参考ARM Cortex M系列内核⼿册)等模块,并配置系统和模块时钟才可以成功进⼊低功耗模式。
SMC_SetPowerMode()⼜被驱动层的POWER_SYS_SwitchToRunningPowerMode()调⽤,最后再被SDK的电源管理器(power manager)组件的API--POWER_SYS_SetMode()调⽤:
因此,⽤户在应⽤程序中只需要调⽤SDK的电源管理器(power manager)组件的API--POWER_SYS_SetMode()即可。
flex软件1. 代码重映射到SRAM中(.code_ram段)的宏定义:
START_FUNCTION_DECLARATION_RAMSECTION
END_FUNCTION_DECLARATION_RAMSECTION
使⽤时,只需要将想要重映射的代码函数申明放在这两个宏定义之间即可,⽐如SDK的Flash PD外设驱动中的
FLASH_DRV_CommandSequence()定义到SRAM中,从⽽避免Flash擦除和编程的RWW(Read-While-Write)冲突:
Tips:注意,使⽤这两个宏定义申明重映射函数时,不能有分号“;”。
1.2 ⼦⽬录S32K1xx(为具体使⽤的MCU型号,可能为 S32K116/S32K118/S31K142/S32K144/S32K146/S32K148)
其中⼜包含两个⼦⽬录:
Include⼦⽬录
S32K148_features.h:定义芯⽚级的外设模块特性;其中包含了当前版本SDK所⽀持的芯⽚勘误表(Errata)信息,若此头⽂件中定义了某⼀Errata编号,则SDK中将使能并包含该错误的修正(workaround)程序:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。