这是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完成的,所有这样改一下。

AurixDevStudio集成MCAL相关推荐

  1. 使用S32DS集成S32K的MCAL

    一.软件准备 前往恩智浦官网下载MCAL软件包.EB Tresos .以及S32DS IDE: 以下软件均有NXP免费提供,但需注册账号获取 S32DS IDE下载 EB Tresos以及MCAL下载 ...

  2. AutoSar之微控制器抽象层MCAL

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

  3. Autosar MCAL开发必知的“术语”+“缩写”概念

    如何使用该博文? ==>您可以将该篇博文当做"字典",遇到疑惑的Autosar"关键字",使用组合键Ctrl+F,快速查找该关键字. 推荐Autosar培 ...

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

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

  5. AUTOSAR MCAL详解: SPI (2)

    作者:Stephen Du 免责声明: 本文为个人学习笔记及总结,仅代表个人观点,尽可能保证内容准确性. 所有文字均是自己码出来的,所有图片均为自己勾画(除部分来源于原始标准). 复制/转发请注明来源 ...

  6. AUTOSAR MCAL SPI配置

    AUTOSAR MCAL SPI AUTOSAT SPI SPI物理层介绍 SPI 在AUTOSAR的配置主要参数 SPI EB配置参数 AUTOSAT SPI 以下内容基于标准AUTOSAR文档以及 ...

  7. Autosar MCAL MCU配置时钟-基于cfg

    文章目录 前言 MCU时钟配置 cfg配置外部晶振 CCU 时钟源的选择 OSC(Oscillator Circuit) OSC的模式: 外部输入时钟模式: 外部晶体/陶瓷谐振模式 Back up时钟 ...

  8. MCAL系列介绍03-ADC

    本文框架 1. 前言 2. 基本概念 2.1 触发方式 2.1.1 软件触发 2.1.2 硬件触发 2.2 转换模式 2.2.1 One-shot模式 2.2.2 Continuous模式 2.3 A ...

  9. Nignx集成fastDFS后访问Nginx一直在加载中解决

    问题描述: Nginx集成fastDFS后,访问Nginx一直在加载中,得不到页面.查看Nginx的错误日志: 可以看到是fastdfs.conf的配置错误,tracker的ip没有修改: fastd ...

最新文章

  1. 某企业生产系统升级Linux系统及内核
  2. 安装中文语言包会导致 Troubleshoot Compatibility 失败
  3. 回馈粉丝,包邮送一台全新iPad
  4. HDU - 6602 Longest Subarray(线段树+思维)
  5. linux kears 切换后端,如何更改Keras后端(哪里是json文件)?
  6. 发布一个免费漂亮的仿Outlook风格、支持换肤的通用界面框架
  7. Demo源码放送:打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
  8. 网页导出pdf不完整_网页怎么打印成PDF文件?使用这款工具轻松实现
  9. 计算机科学渗透信息论的思想,认知主义理论
  10. BLEU——机器翻译评测
  11. tumblr图片批量下载
  12. 解决pdf.js下载PDF文件名称中文乱码和不带.pdf后缀名问题
  13. DeepMind黄士杰:深度学习有创造性,正参与星际2项目
  14. 路由器dns被劫持怎么办 路由器DNS被劫持解决方法
  15. js:聚焦和失焦事件示例
  16. 基于c#的区块链编程_3.区块链 · C#区块链编程入门教程-巴比特图书
  17. 计算机中什么符号代表除号,电脑怎么打除号?word除号怎么打出来?键盘上÷号是哪个键?除以符号电脑怎么打?...
  18. com.android.backupconfirm,使用ADB停用一些自己讨厌的东西记录备忘
  19. linux毁灭指令,那些致命的Linux命令
  20. 最爱张爱玲 :在这个世界上,总有一个人是等着你的!

热门文章

  1. 三款软件,让你的文字转语音更简单
  2. python实现excel表格按内容模块倒序排列
  3. 解答:CPU温度多少正常?CPU温度过高怎么解决?
  4. 计算机管理 合并分区,如何分区,删除和合并计算机02
  5. Unity UGUI中两点之间连线的通用实现
  6. Python中的内置数据类型
  7. python另存为对话框_python – 另存为文件对话框 – 如何不允许覆盖
  8. MySQL日期和时间函数 整理
  9. 【学习方法】如何才能高效学习
  10. python学多久可以接单-详解 | Python学多久才能独立接单赚钱?一个月足够了!