AurixDevStudio集成MCAL

在这里插入图片描述
这是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;
#endif
    ENABLE();
#if ((defined IFX_CFG_SSW_ENABLE_TRICORE0) && (IFX_CFG_SSW_ENABLE_TRICORE0 == 0))
    safetyWdtPassword = Ifx_Ssw_getSafetyWatchdogPassword();
    Ifx_Ssw_disableSafetyWatchdog(safetyWdtPassword);
#endif
    cpuWdtPassword = 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完成的,所有这样改一下。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
集成MCAL源代码和EB生成的配置代码,需按照以下步骤进行操作: 1. 首先,确保已经正确安装并配置好MCAL和EB工具链。MCAL是汽车电子模块的驱动软件开发包,而EB是用于生成自动化配置代码的工具。 2. 打开EB工具,创建一个新的配置项目。在项目配置中,选择适当的MCU芯片型号和使用的MCAL版本。这样EB将会根据选择的MCAL版本生成适配该型号的配置代码。 3. 配置EB工具生成的代码的目标文件路径和其他相关设置。根据实际需求,可以选择生成包含哪些模块、驱动和功能的配置代码。 4. 确定好配置后,EB工具将会根据MCAL的API和配置信息,自动生成相应的配置代码文件,包括各个模块的初始化函数和配置项。这些代码文件将会保存在指定的目标文件路径下。 5. 在集成MCAL源代码和EB生成的配置代码时,首先需要将MCAL源代码添加到工程目录中。将MCAL的头文件和源文件正确放置到工程文件夹中,以便能够正确引用和编译。 6. 将EB生成的配置代码文件添加到工程目录中。将EB生成的配置代码文件正确放置到工程文件夹中,并按照引用的关系进行管理。这些配置代码文件包括各个模块的配置和初始化函数,需要在程序中正确引用和调用。 7. 在调用MCAL功能的代码中,根据之前配置的配置项和初始化函数,将EB生成的配置代码文件中相应的函数调用添加到对应的位置。 8. 编译和构建项目,确保集成后的代码能够正确运行。通过编译器的错误和警告信息,检查是否有引用错误或编译错误的问题,进行必要的修改和调试。 9. 运行和测试集成后的代码,确保各个模块和功能能够正常工作。通过硬件设备的观测或其他手段,验证集成后的代码运行的正确性和稳定性。 10. 根据需要进行优化和修改,进一步完善集成后的代码。 以此样例程序来说,集成MCAL源代码和EB生成的配置代码可以有效简化开发过程,提高代码的可维护性和可扩展性,减少人工配置的错误和工作量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值