AurixDevStudio集成MCAL

article/2025/10/11 10:33:01

在这里插入图片描述
这是Tricore MCAL安装路径
在这里插入图片描述
打开ADS新建一个AURIX Project
在这里插入图片描述
我手上的是龙邱的TC377最小系统, 就这样选
在这里插入图片描述
理解下第一个选项
在这里插入图片描述
新建好的基础工程是这个样子

在这里插入图片描述
删除掉Library文件夹, 因为我们这里要使用的MCAL而不是iLLD库(虽然它们实现的功能大体相同)
在这里插入图片描述
在工程里新建一个文件夹为Mcal
在这里插入图片描述
将如图所示的文件夹拷贝到工程的Mcal文件夹(直接拷贝到ADS, 这样ADS才能自动识别要编译的.c和将文件夹添加为头文件搜索路径),这个文件夹是TC377寄存器定义, iLLD库也有这个,只是定义貌似和Mcal提供的略有不同。
在这里插入图片描述
在这里插入图片描述
Mcal文件夹下新建一个Ssw文件夹
在这里插入图片描述
将MCAL Demo里面的Ssw代码拷贝到工程对应的文件夹, 这个貌似还是使用的iLLD库的启动代码, 之后用ETAS的话Ssw是RTA生成的
在这里插入图片描述
新建一个Integration文件夹

在这里插入图片描述
从这个地方拷贝你需要用的的额文件, 我不知道这个是咋生成的, 反正在Demo里先拿过来用
在这里插入图片描述
这两个文件要用到也单独拷贝到Integration文件夹
新建一个Platform文件夹
在这里插入图片描述
将如图所示的文件拷贝进去

在这里插入图片描述
将你需要用到的模块的静态代码文件夹拷贝到Mcal文件夹
在这里插入图片描述
假如我只是点个灯, 那么我需要用到MCU PORT DIO模块, 注意McalLib必须默认添加
在这里插入图片描述
新建一个文件夹叫McalCfg 将EB生成的配置代码拷贝到这。
在这里插入图片描述
EB生成的

#include "Ifx_Ssw_Infra.h"
#include "IFX_Os.h"
#include "Mcu.h"
#include "Port.h"
#include "Dio.h"void core0_main(void)
{unsigned short cpuWdtPassword;unsigned short safetyWdtPassword;ENABLE();cpuWdtPassword = Ifx_Ssw_getCpuWatchdogPassword(&MODULE_SCU.WDTCPU[0]);safetyWdtPassword = Ifx_Ssw_getSafetyWatchdogPassword();Ifx_Ssw_disableCpuWatchdog(&MODULE_SCU.WDTCPU[0], cpuWdtPassword);Ifx_Ssw_disableSafetyWatchdog(safetyWdtPassword);/*MCAL Init鏀惧埌杩欏効*/const Mcu_ConfigType * McuConfigPtr = NULL_PTR;const Port_ConfigType * PortConfigPtr = NULL_PTR;Std_ReturnType InitClockRetVal;Mcu_PllStatusType Mcu_GetPllStatusRetVal = MCU_PLL_STATUS_UNDEFINED;McuConfigPtr = &Mcu_Config;Mcu_Init(McuConfigPtr);InitClockRetVal = Mcu_InitClock((Mcu_ClockType)0);if(InitClockRetVal == E_OK){do{Mcu_GetPllStatusRetVal = Mcu_GetPllStatus();} while(Mcu_GetPllStatusRetVal != MCU_PLL_LOCKED);#if (MCU_DISTRIBUTE_PLL_CLOCK_API == STD_ON)Mcu_DistributePllClock ();
#endif}PortConfigPtr = &Port_Config;Port_Init(PortConfigPtr);McuConfigPtr = NULL_PTR;PortConfigPtr = NULL_PTR;Dio_LevelType led_blue = 1;static uint32 count = 0;/******************/while(1){if(count >= 3000000){count = 0;Dio_WriteChannel(DioConf_DioChannel_DioChannel_LedBlue, led_blue);led_blue = !led_blue;}count++;}
}#include "Ifx_Ssw_Infra.h"
#include "IFX_Os.h"void core1_main(void)
{unsigned short cpuWdtPassword;
#if ((defined IFX_CFG_SSW_ENABLE_TRICORE0) && (IFX_CFG_SSW_ENABLE_TRICORE0 == 0))unsigned short safetyWdtPassword;
#endifENABLE();
#if ((defined IFX_CFG_SSW_ENABLE_TRICORE0) && (IFX_CFG_SSW_ENABLE_TRICORE0 == 0))safetyWdtPassword = Ifx_Ssw_getSafetyWatchdogPassword();Ifx_Ssw_disableSafetyWatchdog(safetyWdtPassword);
#endifcpuWdtPassword = Ifx_Ssw_getCpuWatchdogPassword(&MODULE_SCU.WDTCPU[1]);Ifx_Ssw_disableCpuWatchdog(&MODULE_SCU.WDTCPU[1], cpuWdtPassword);while(1){}
}#include "Ifx_Ssw_Infra.h"
#include "IFX_Os.h"void core2_main(void)
{unsigned short cpuWdtPassword;ENABLE();cpuWdtPassword = Ifx_Ssw_getCpuWatchdogPassword(&MODULE_SCU.WDTCPU[2]);Ifx_Ssw_disableCpuWatchdog(&MODULE_SCU.WDTCPU[2], cpuWdtPassword);while(1){}
}

参考Demo修改一下三个Core的Main函数
在这里插入图片描述
编译报错了
在这里插入图片描述
在这里插入图片描述
将Ifx_Cfg_Ssw.h 中这三个地方由1改为0

在这里插入图片描述
编译成功, 我调试了跑起来没问题
Ifx_Cfg_Ssw.h 上述三个定义是指定是否在Ssw阶段初始化PMS和时钟(依赖iLLD库,但我们删除了), 我们的例程这两部分初始化是要放到Ssw结束跳转到Core0_Main() 中调用Mcu_Init,Mcu_InitClock完成的,所有这样改一下。


http://chatgpt.dhexx.cn/article/W6BSgkdm.shtml

相关文章

AUTOSAR 学习笔记(一):NXP S32K14X AUTOSAR MCAL 软件下载及安装

AUTOSAR学习笔记(一):NXP S32K14X AUTOSAR MCAL 软件下载及安装 目录 AUTOSAR学习笔记(一):NXP S32K14X AUTOSAR MCAL 软件下载及安装1.下载MCAL 软件2、下载 AUTOSAR EB tresos 软件3、下载AUTOSAR 4.0 OS4、安装 EB tresos5、安装 MCAL6、安装 AUTOSAR…

[ 搞一点AutoSar ]基于EB的MCAL-GPT全模块配置与解析

笔者搞了快一个星期的GPT的测试了,从配置到代码一遍又一遍的操作和阅读。觉得有必要把学习成功稍微总结一下了;学AUTOSAR最后还是得熟悉代码,毕竟AUTOSAR只是目的,而代码才是实现的手段。中间的逻辑关系看代码一目了然&#xff1b…

【MCAL_CANDriver】-1.3-FullCAN和BasicCAN的差异及配置使用

点击返回「《Autosar_MCAL高阶配置》总目录」 目录 1 什么是FullCAN和BasicCAN 1.1 FullCAN / Basic CAN HRH区别 1.2 FullCAN / Basic CAN HTH区别 1.3 FullCAN和Basic CAN存在的原因 1.4 FullCAN/Basic CAN HRH/HTH如何选择 2 如何配置FullCAN和BasicCAN 3 来自CAN Dr…

MCAL MCU Module详解和配置说明

关注“嵌入式软件实战派”回复“AUTOSAR”获得更多实战教程。 以下内容包含:基本概念、模块依赖、应用时序、参数配置实践讲解,以及ECUM对其引用等。 1. 基本概念 描述了MCU(Microcontroller Unit) 驱动程序的功能和 API。 MCU 驱…

搞一点AutoSar--MCAL SPI-1

整理了一点SPI的资料 目录 1、SPI模块简介2、SPI驱动模块API的使用方法3、SPI通信主要概念4、选择SPI通道缓存(Buffer)位置5、SPI驱动模块API调用流程 1、SPI模块简介 图1 MCAL 4个驱动组与微控制器内核和外设的映射关系SPI属于MCAL模块中的通信驱动组&…

【MCAL_CANDriver】-1.2-Can Mailbox邮箱,Hardware Object,HOH,HRH,HTH之间的关系

点击返回「《Autosar_MCAL高阶配置》总目录」 目录 1 关键字定义 2 Maibox与Hardware Object之间的关系 2.1 接收L-PDU 2.2 发送L-PDU 3 HOH,HRH,HTH,Hardware Object之间的关系 4 Message buffer(MB)结构 5 结尾 1 关键字定义 Mailb…

图解AUTOSAR(五)——微控制器抽象层(MCAL)

微控制器抽象层位于AUTOSAR分层模型中BSW最底层,包含内部驱动,可以直接访问微控制器和片内外设。更进一步地,MCAL又可以分为微控制器驱动、存储器驱动、通信驱动和I/O驱动四个部分,各部分又由具体的与微控制器硬件相对应的驱动模块…

MCAL架构

MCAL位于AUTOSAR软件架构中基本软件(BSW)的底层,是可以直接访问MCU寄存器和内部外设的底层驱动。这样划分的目的是使上层软件(如ECU抽象层、系统服务层等)独立于MCU硬件平台,保证上层软件的标准化和通用性。…

AutoSar之微控制器抽象层MCAL

微控制器抽象层位于AUTOSAR BSW的最底层,包含内部驱动,可直接访问微控制器和外设芯片。从具体应用来看,MCAL主要包括微控制器驱动、存储器驱动、通信驱动和输入输出驱动四个部分,各部分又由具体的与微控制器硬件相对应的驱动模块组…

MCAL介绍及Module Plugin开发流程总结

Mcal–微控制器抽象层位于AUTOSAR分层模型中BSW最底层,包含内部驱动,可以直接访问微控制器和片内外设。 MCAL又可以分为微控制器驱动、存储器驱动、通信驱动和I/O驱动四个部分,各部分又由具体的与微控制器硬件相对应的驱动模块组成。如图所示…

Autosar MCAL软件架构基本概念

MCAL架构介绍 Autosar整体架构图如下所示: MCAL是MicroController Abstraction Layer(微控制器抽象层)的缩写。如下图所示,MCAL位于AUTOSAR软件架构中基本软件(Basic Software,BSW)的底层&…

【Autosar】学习总结-MCAL

一、简介 MCAL:微控制器抽象层;位于BSW层中的最下层; MCAL细分,可将驱动分为:微控制器驱动、存储器驱动、通信驱动、IO驱动: 二、MCAL的配置(EB-Tresos) 1.PORT 我理解的PORT&…

Object数据转map类型

最近 因为调用接口 返回数据 原本项目中是用List<Map<String, Object>> a 接收的 等于说我只能获取到 Map m1 a.get(0); 到第一层的数据 m1.get(“HttpCode”)的数据 然后就是objcet的数据了 无法直接获取到 之前在网上找了好多 什么直接转成jsonObject因为格式的…

Javascript Object和Map之间的转换

简单的区分Map和Object Map是ES6退出的一个类型&#xff0c;特点&#xff1a;任何值都可作为属性名 Object特点&#xff1a;属性名只能是字符串(一开始我也不信&#xff0c;测试后才发现的) 代码图片 创建一个map类型 new Map([[key, value],[key1, value1] ])简单的介绍下面…

Object 转Map,Map转Object方式总结

商品业务对象定义&#xff1a;Product Product product new Product(); product.setId(1L); product.setName("爱他美") product.setProductDt("2022-03-16") 第一种&#xff1a;通过Alibaba Fastjson实现&#xff1a; pom.xml 文件依赖 <dependen…

使用PyQt打包命令pyinstall的几个问题

**问题1&#xff1a;**打包后无demo.spec文件 在windows下使用cmd界面打包时&#xff0c;可以将路径设置到目标文件目录&#xff0c;这样会生成demo.spec文件&#xff0c;方便后期改正软件。 问题2&#xff1a;打包好后提示如下错误&#xff1a; 解决办法&#xff1a;在demo.…

PyCharm打包失败及Pyinstall无法安装问题的解决

问题描述 Python的工程很多情况下需要打包成EXE文件&#xff0c;通过pyinstaller的工具进行打包&#xff0c;首先需 要安装PyInstaller的工具&#xff0c;然后再通过命令行进行打包&#xff0c;安装 PyInstaller 模块与安装其他 Python 模块一样&#xff0c;使用 pip 命令安装…

pyinstall 打包python3.7.1的exe反编译

pyinstall 打包python3.7.1的exe反编译 由于 pyinstall打包的EXE文件&#xff0c;被360认为可能有木马病毒&#xff0c;首先怀疑计算数机系统有毒。用360杀毒&#xff0c;病毒倒是查处了十几个&#xff0c;对于一个对计算机不是十分精通的人来说&#xff0c;只能按360的提示去做…

pyinstall打包多个.py文件成应用程序

Pyinstall打包多个.py文件成应用程序的方法&#xff1a; 这里成功打包了两个.py文件&#xff0c;一张图片&#xff0c;一个.h5文件 如图所示&#xff1a; 第一步&#xff1a;生成.spec文件 pyinstaller -c -D main.py -p image_handler.py这里main.py文件是主文件&#xff0…

解决python3.6中pyinstall打包失败的问题

环境&#xff1a;python 3.6 pyinstall 一开始用百度上的方法&#xff0c;直接执行python目录下的pyinstall.exe文件&#xff0c;很好用。 C:\WINDOWS\System32>C:\Users\hasee\AppData\Local\Programs\Python\Python36\Scripts\pyinstaller.exe F:\python_code_test\ren…