【RH850 MCAL】MCAL配置工程搭建


前言

文章主要用途是记录和分享,要是被设为VIP文章,请私我更改!
太懒了不想写,直接看正文吧 0.0

1. 下载和安装

REF:参考链接
Note:已经安装好的工程可以直接复制使用,以下记录的是从无到有的过程。

1.1. MCAL代码

  1. 登录瑞萨官网 (需要注册,很方便)

  2. 选择合适的型号,点击进行下载。
    在这里插入图片描述

  3. 下载后是一个压缩包,解压后得到3个压缩包。(C1M型号的)
    在这里插入图片描述

  4. 解压每个压缩包,里面有一个可运行的.exe程序文件,执行此程序提出其中的代码。
    在这里插入图片描述

  5. 可将.exe中的文件统一提取到.\CBD2100679_D00\ThirdParty路径下,便于代码生成脚本的调用。
    在这里插入图片描述

1.2. 配置工具Configurator

  1. 还是在瑞萨官网,下载Davinci Configurator(CFG)。
    • 瑞萨的MCAL是在CFG配置的,不是EB.
    • 也可以去vector官网下载最新版本的CFG.

在这里插入图片描述

  1. 解压DaVinci_related_files_R19-11.zip如下所示。
  • CBDxxx.exe是CFG的工具安装包。
  • LLWEBxxx.pdf是MCAL和CFG关联的说明文档。(以下是按照pdf中提到的内容进行设置。)
    在这里插入图片描述
  1. 安装CBDxxx.exe。(密码见LLWEBxxx.pdf)
  2. 将每个模块的arxml文件复制到.\CBD2100679_D00\Components\MSR_Vector_SLP4\BSWMD下
    每个模块有两个arxml,以adc为例。
    • \X1X\C1x\modules\adc\definition\4.2.2\C1MA\R422_ADC_C1MA_78.arxml (多个arxml只要一个,_78和_75留一个_78)
    • \X1X\modules\adc\generator\R422_ADC_C1x_BSWMDT.arxml

可以用这个脚本复制arxml:

import sys
import shutil
import os


def get_files_by_ex(path, ex):
    files = []
    for file in os.listdir(path):
        file = os.path.join(path, file)
        if os.path.isdir(file):
            files.extend(get_files_by_ex(file, ex))
        elif file.endswith(ex):
            files.append(file)
    return files


if __name__ == '__main__':
    path_s = r'.\AUTOSAR_RH850_C1M\AUTOSAR_RH850_C1M-Ax_MCAL_Ver42.02.00_SPAL_CAN_LIN\all\X1X\C1x\modules'
    path_d = r'.\AUTOSAR_RH850_C1M\CBD2100679_D00\Components\MSR_Vector_SLP4\BSWMD'
    file_ex = '.arxml'

    for file in get_files_by_ex(path_s, file_ex):
        shutil.copy(file, path_d)

2. CFG工程配置

2.1. 新建CFG工程

  1. 点击菜单栏中的File,选择 New ECU Project…在这里插入图片描述

  2. 配置工程名称和路径
    在这里插入图片描述

  3. 后面的配置默认即可
    在这里插入图片描述

2.2. 添加模块

  1. 在Project Settings中添加需要的模块。
    在这里插入图片描述
  2. 勾选需要的模块,点finish即可。
    在这里插入图片描述
  3. 如果有其他工程的模块,可以导入其他的arxml。
    • 点击菜单栏中的File,选择 Import
      在这里插入图片描述

    • 选择并添加arxml
      在这里插入图片描述

    • 勾选导入的模块,并选择导入方式是替换还是合并。
      在这里插入图片描述

2.3. 添加依赖模块

以ADC模块为例,需要用到DemEventParameter,则需要添加DEM模块,但DEM的错误不需要关心。
在这里插入图片描述
添加的方式和2.2中提到的类似,但要从"AUTOSAR Standard Definition"中选择。
在这里插入图片描述

3. 代码生成脚本

3.1. 瑞萨生成工具

CFG中并不能直接生成代码,调用的是瑞萨的生成工具。按照如下方式调用并传入参数。
在这里插入图片描述

3.2. 自定义脚本

以下是经过封装的脚本GenCode.bat,修改其中的一些参数路径即可直接使用。
使用方式:GenCode.bat + Module,比如 GenCode.bat Adc

@echo OFF
setlocal enabledelayedexpansion

REM this script calling by CFG, should be put in the *.dpa path.
set current_dir=%cd%

REM Davinci project name *.dpa
set project=rh850

REM output dir
set out_dir=%cd%\Appl\GenData

REM rh850 mcal project
set "ThirdParty_dir=%current_dir%\..\..\ThirdParty"

REM rh850 mcal generate tool
set "generater=%ThirdParty_dir%\X1X\common_platform\generic\generator\MCALConfGen.exe"

REM rh850 mcal module
set "valid_module=Adc Can Dio Fls Gpt Icu Lin Mcu Port Pwm Spi Wdg"

REM CFG generate flag. 0: OK, 1: NOK
set ret_CFG=0

REM validate input module.
for %%a in (%valid_module%) do (
    if /i "%%a"=="%1" (
        goto :gen_process
    )
)

REM invalid module
echo Error: Unknown module %1
set ret_CFG=1
goto :end

:gen_process
REM Adc, Can, Dio, Fls, Gpt, Icu, Lin, Mcu, Port, Pwm, Spi, wdg
set p1="%ThirdParty_dir%\X1X\C1x\modules\%1\sample_application"
set p2="%current_dir%\Config\ECUC\%project%_%1_%1_ecuc.arxml"
set p3="%ThirdParty_dir%\X1X\C1x\common_family\generator\Sample_Application_C1x.trxml"
set p4="%ThirdParty_dir%\X1X\C1x\modules\%1\generator\R422_%1_C1x_BSWMDT.arxml"
set p5="%current_dir%\Config\ECUC\%project%_Mcu_Mcu_ecuc.arxml"
set p6="%current_dir%\Config\ECUC\%project%_Dem_Dem_ecuc.arxml"
set p7="%current_dir%\Config\ECUC\%project%_Os_Os_ecuc.arxml"
set p8="%current_dir%\Config\ECUC\%project%_EcuM_EcuM_ecuc.arxml"
if /i "%1"=="mcu" (
    set p4="%ThirdParty_dir%\X1X\C1x\modules\%1\generator\R422_MCU_C1MA_BSWMDT.arxml"
    set p5=""
)
REM due to %generater% limited, should working in the module dir.
cd %p1%

REM call %generater%. Redundant parameters don't matter for each module.
%generater% -m %1 -o %p1% %p2% %p3% %p4% %p5% %p6% %p7% %p8%

REM copy code to the out_dir
if "%errorlevel%"=="0" (
    xcopy /Y include %out_dir%\include\
    xcopy /Y src %out_dir%\src\
) else (
    set ret_CFG=1
    echo Error: %1 generate failed.
)
copy %1.log %out_dir%\%1.log
goto :end


:end
cd %current_dir%
exit /b %ret_CFG%

3.3. CFG生成代码

CFG可以调用自定义的脚本,调用上述脚本即可生成代码。

  1. 在Project Setting中,按以下方式配置Generation Steps。
    在这里插入图片描述

  2. 点击Generate按钮,即可出现需要生成的模块。
    在这里插入图片描述

  3. 点击菜单栏中的View,选择 Generation Result,出现生成模块的结果。
    在这里插入图片描述

  4. 右键模块,并选择"Open …",即可在Console窗口看到输出信息。
    在这里插入图片描述

总结

RH850 MCAL配置工程主要是生成代码的脚本比较麻烦,传入参数没有说明,好在每个模块可以传入相同的arxml,多余的参数也不会产生错误。另外,如果想要传入参数方便,可以尝试在新建CFG工程时,将ECUC Files设置为一个。
欢迎批评指正和探讨交流。

<think>好的,用户想了解如何编译与RH850和CCRH相关的项目或解决编译问题,特别是需要教程和常见错误解决方案。首先,我需要整理已有的引用信息,看看是否有相关内容。 引用[1]提到了FreeRTOS_RH850项目,可能涉及编译步骤。引用[4]和[5]都提到了使用GHS MULTI工具,引用[5]还提到集成DaVinci Configurator生成的代码,这可能和编译环境配置有关。引用[4]提到GHS MULTI自动生成tgt文件和ld文件,这可能和链接脚本相关。引用[3]是关于ADC配置的问题,虽然不直接相关,但说明硬件配置可能影响项目运行,编译后的代码可能需要正确配置外设。 用户的问题集中在编译教程和常见错误,因此需要分步骤说明编译流程,可能包括环境搭建、工具链配置、项目结构、编译命令、调试等。常见错误可能涉及路径设置、链接脚本错误、外设配置不正确、内存分配问题等。 需要确保回答结构清晰,分点列出,并引用相关参考资料。同时,用户可能需要具体的步骤和示例,比如如何配置GHS MULTI,如何处理链接错误等。另外,生成的代码是否与硬件匹配,比如引用[3]中的ADC问题,可能在编译后运行时出现,但编译阶段的问题可能更多是语法或配置错误。 可能还需要提到如何验证编译结果,比如生成的目标文件格式,或者使用调试工具进行烧录和测试。同时,引用[5]中的Sample文件夹和空工程示例,可以作为创建新项目的参考。 需要检查是否遗漏了关键步骤,比如环境变量设置、编译器选项、依赖库的包含等。此外,常见错误如未找到头文件、未定义的符号、内存溢出等,需要提供解决方案,比如检查路径、调整链接脚本或内存分配文件。 总结回答结构:编译流程分步骤,工具链配置,常见错误及解决,最后相关问题。确保引用正确,例如使用GHS MULTI的部分引用[4][5],FreeRTOS项目引用[1],硬件配置引用[3]。</think>### RH850 CCRH 编译教程与常见问题解决方案 #### **一、编译流程与工具链配置** 1. **开发环境搭建** - **编译器选择**:RH850芯片常用Green Hills MULTI(GHS)或CS+(瑞萨官方工具)。GHS MULTI支持完整的编译、调试和内存分析功能[^4][^5]。 - **工程创建**: 通过GHS MULTI新建工程时,选择对应芯片型号(如RH850/F1x系列),工具会自动生成初始代码框架(`src`文件夹)和链接脚本(`.tgt`及`.ld`文件)[^4]。 ```bash # 示例:GHS工程结构 ├── src/ │ ├── main.c │ └── startup_rh850.asm ├── config/ │ └── memory_map.ld # 内存分配文件 └── output/ # 生成的可执行文件 ``` 2. **集成AutoSAR或第三方代码** - 若使用AutoSAR OS(如RTA-OS),需将DaVinci Configurator生成的代码(MCAL模块)与用户代码合并,并确保头文件路径正确引用[^2]。 - **示例操作**: ```bash # 在GHS工程中添加AutoSAR生成的代码 Project -> Add Files -> 选择MCAL模块的.c/.h文件 ``` 3. **编译与链接** - **关键步骤**: - 检查内存分配文件(`.ld`)是否匹配芯片型号,避免地址冲突。 - 确保启动文件(如`startup_rh850.asm`)包含正确的堆栈初始化代码[^4]。 - **常见命令**: ```bash # GHS MULTI命令行编译示例 ccrh850 -c main.c -o main.obj linker -t RH850_F1x -m memory_map.ld main.obj -o output.elf ``` --- #### **二、常见编译错误与解决方案** 1. **头文件缺失或路径错误** - **现象**:`Fatal error: #include <mcal_reg.h> not found` - **解决**:在编译器设置中添加MCAL库的绝对路径,或在代码中使用相对路径(如`#include "../mcal/mcal_reg.h"`)。 2. **链接阶段符号未定义** - **现象**:`Undefined symbol: _main` - **原因**:启动文件未正确链接或入口函数未定义。 - **解决**:检查启动文件中是否调用了`main()`,并确认`.ld`文件中指定了入口点。 3. **内存溢出(RAM/ROM不足)** - **现象**:`Section .data exceeds available RAM space` - **解决**:调整`.ld`文件中的内存分区,或优化代码体积(如启用编译器优化选项`-O2`)。 4. **硬件相关配置错误** - **现象**:ADC初始化后IO电压异常(如引用[3]的问题)。 - **解决**:检查外设寄存器配置(如ADC时钟使能、引脚复用模式),确保生成的代码与硬件手册匹配[^3]。 --- #### **三、调试与验证** 1. **烧录与调试** - 使用GHS MULTI内置调试器或J-Link连接目标板,加载`.elf`文件后,通过断点验证代码执行流程[^4]。 2. **静态代码分析** - 启用GHS的代码检查工具(如MISRA-C合规性检查),避免潜在逻辑错误。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kook 1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值