文章目录
前言
文章主要用途是记录和分享,要是被设为VIP文章,请私我更改!
太懒了不想写,直接看正文吧 0.0
1. 下载和安装
REF:参考链接
Note:已经安装好的工程可以直接复制使用,以下记录的是从无到有的过程。
1.1. MCAL代码
-
登录瑞萨官网 (需要注册,很方便)
-
选择合适的型号,点击进行下载。
-
下载后是一个压缩包,解压后得到3个压缩包。(C1M型号的)
-
解压每个压缩包,里面有一个可运行的.exe程序文件,执行此程序提出其中的代码。
-
可将.exe中的文件统一提取到.\CBD2100679_D00\ThirdParty路径下,便于代码生成脚本的调用。
1.2. 配置工具Configurator
- 还是在瑞萨官网,下载Davinci Configurator(CFG)。
- 瑞萨的MCAL是在CFG配置的,不是EB.
- 也可以去vector官网下载最新版本的CFG.
- 解压DaVinci_related_files_R19-11.zip如下所示。
- CBDxxx.exe是CFG的工具安装包。
- LLWEBxxx.pdf是MCAL和CFG关联的说明文档。(以下是按照pdf中提到的内容进行设置。)
- 安装CBDxxx.exe。(密码见LLWEBxxx.pdf)
- 将每个模块的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工程
-
点击菜单栏中的File,选择 New ECU Project…
-
配置工程名称和路径
-
后面的配置默认即可
2.2. 添加模块
- 在Project Settings中添加需要的模块。
- 勾选需要的模块,点finish即可。
- 如果有其他工程的模块,可以导入其他的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可以调用自定义的脚本,调用上述脚本即可生成代码。
-
在Project Setting中,按以下方式配置Generation Steps。
-
点击Generate按钮,即可出现需要生成的模块。
-
点击菜单栏中的View,选择 Generation Result,出现生成模块的结果。
-
右键模块,并选择"Open …",即可在Console窗口看到输出信息。
总结
RH850 MCAL配置工程主要是生成代码的脚本比较麻烦,传入参数没有说明,好在每个模块可以传入相同的arxml,多余的参数也不会产生错误。另外,如果想要传入参数方便,可以尝试在新建CFG工程时,将ECUC Files设置为一个。
欢迎批评指正和探讨交流。