This commit is contained in:
2025-12-18 20:20:58 +09:00
parent 581206595f
commit 82e5a43322
20 changed files with 1201 additions and 8 deletions

View File

@@ -53,15 +53,7 @@ SET CPU2_OPTION=CPU2_NOT_USED
SET CPU3_OPTION=CPU3_NOT_USED
IF "%COMPILER_INSTALL_DIR%"=="" (
<<<<<<< HEAD
SET COMPILER_INSTALL_DIR=C:\Program Files\ArmCompilerforEmbeddedFuSa6.16.2\bin
=======
<<<<<<< HEAD
SET COMPILER_INSTALL_DIR=C:\Program Files\ArmCompilerforEmbeddedFuSa6.16.1\bin
=======
SET COMPILER_INSTALL_DIR=C:\Program Files\ArmCompilerforEmbeddedFuSa6.16.2\bin
>>>>>>> 62b20d068d0206dc5ca77386834dfa6324766226
>>>>>>> 84cc68d38b16020cdab5248a1adf75a6a3ef1d08
)
IF /i "%1"=="DisplEnv" (

View File

@@ -0,0 +1,382 @@
@echo off
setlocal EnableDelayedExpansion
REM ==============================================================================
REM This script sequentially calls SampleApp.bat to run the 'generate' step
REM for all 16 supported modules. It takes 6 arguments from the command line
REM (or uses defaults if no arguments are provided).
REM ==============================================================================
:: <20><>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %~n0)
set Filename=%~n0
:: ----------------------------------------
:: 1. Argument Check and Assignment
:: ----------------------------------------
:: ù <20><>° <20>μ<EFBFBD><CEBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٷ<EFBFBD> Help ȣ<><C8A3>
IF /i "%1"=="" (
GOTO :Help
)
:: <20>ʼ<EFBFBD> 6<><36> <20>μ<EFBFBD><CEBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD><D2B4>մϴ<D5B4>.
SET MODULE_NAME=%1
SET AUTOSAR_VERSION=%2
SET DEVICE=%3
SET MULTI_CORE=%4
SET MCAL_LOG_PRINT=%5
SET BUILD_OPTION=%6
:: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5<><35><EFBFBD><EFBFBD> <20>μ<EFBFBD><CEBC><EFBFBD> ARGS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
SET ARGS=%AUTOSAR_VERSION% %DEVICE% %MULTI_CORE% %MCAL_LOG_PRINT% %BUILD_OPTION%
ECHO ==================================================================
ECHO Starting Sequential Module Generation using %Filename%.bat
ECHO Target Module: %MODULE_NAME%
ECHO Configuration: %ARGS%
ECHO Total Modules in list: 16
ECHO ==================================================================
:: ----------------------------------------
:: 2. Supported Module List and Validation
:: ----------------------------------------
:: <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (SampleApp.bat<61><74><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
SET SUPPORTED_MODULES=Fls Dio Port Mcu Gpt Wdg Spi Can Eth Cddiccom Cddiic Cddcrc Cddths Cddemm Cddipmmu cddrfso Woody
:: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Է<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALL<4C><4C> <20><><EFBFBD><EFBFBD> <20><>ü <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
IF /I "%MODULE_NAME%"=="ALL" (
GOTO :GENERATE_ALL
)
:: ALL<4C><4C> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD><C8BF> <20>˻<EFBFBD>
SET IS_VALID_MODULE=0
FOR %%M IN (%SUPPORTED_MODULES%) DO (
IF /I "%%M"=="%MODULE_NAME%" (
SET IS_VALID_MODULE=1
GOTO :CHECK_DONE
)
)
:CHECK_DONE
IF "%IS_VALID_MODULE%"=="0" (
GOTO :INVALID_MODULE
)
:: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
GOTO :GENERATE_SINGLE
:GENERATE_ALL
REM ----------------------------------------
REM 1. Fls Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Fls module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Fls %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Fls_FAIL
ECHO Fls generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 2. Dio Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Dio module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Dio %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Dio_FAIL
ECHO Dio generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 3. Port Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Port module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Port %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Port_FAIL
ECHO Port generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 4. Mcu Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Mcu module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Mcu %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Mcu_FAIL
ECHO Mcu generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 5. Gpt Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Gpt module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Gpt %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Gpt_FAIL
ECHO Gpt generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 6. Wdg Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Wdg module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Wdg %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Wdg_FAIL
ECHO Wdg generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 7. Spi Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Spi module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Spi %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Spi_FAIL
ECHO Spi generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 8. Can Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Can module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Can %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Can_FAIL
ECHO Can generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 9. Eth Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Eth module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Eth %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Eth_FAIL
ECHO Eth generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 10. Cddiccom Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Cddiccom module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Cddiccom %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Cddiccom_FAIL
ECHO Cddiccom generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 11. Cddiic Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Cddiic module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Cddiic %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Cddiic_FAIL
ECHO Cddiic generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 12. Cddcrc Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Cddcrc module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Cddcrc %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Cddcrc_FAIL
ECHO Cddcrc generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 13. Cddths Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Cddths module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Cddths %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Cddths_FAIL
ECHO Cddths generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 14. Cddemm Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Cddemm module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Cddemm %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Cddemm_FAIL
ECHO Cddemm generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 15. Cddipmmu Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for Cddipmmu module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat Cddipmmu %ARGS%
IF NOT ERRORLEVEL 0 GOTO :Cddipmmu_FAIL
ECHO Cddipmmu generation complete.
ECHO ------------------------------------------------------------------
REM ----------------------------------------
REM 16. cddrfso Module
REM ----------------------------------------
ECHO.
ECHO Starting generation for cddrfso module...
ECHO ------------------------------------------------------------------
CALL .\SampleApp.bat cddrfso %ARGS%
IF NOT ERRORLEVEL 0 GOTO :cddrfso_FAIL
ECHO cddrfso generation complete.
ECHO ------------------------------------------------------------------
GOTO :SUCCESS_ALL
:GENERATE_SINGLE
ECHO.
ECHO Starting generation for %MODULE_NAME% module...
ECHO ------------------------------------------------------------------
:: SampleApp.bat ȣ<><C8A3>
CALL .\SampleApp.bat %MODULE_NAME% %ARGS%
:: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30> <20>ƴϸ<C6B4> (<28><>, 1 <20>̻<EFBFBD><CCBB≯<EFBFBD>) <20><><EFBFBD>з<EFBFBD> <20>̵<EFBFBD>
IF NOT ERRORLEVEL 0 GOTO :FAIL_SINGLE
ECHO %MODULE_NAME% Call SampleApp.bat Complete.
ECHO ------------------------------------------------------------------
GOTO :SUCCESS_SINGLE
:INVALID_MODULE
ECHO.
ECHO ==================================================================
ECHO [ERROR] Invalid module name specified: %MODULE_NAME%
ECHO Supported modules are: %SUPPORTED_MODULES%
ECHO ==================================================================
EXIT /B 1
:Fls_FAIL
ECHO.
ECHO [FAILURE] Fls module generation failed. Aborting process.
GOTO :FAIL_END
:Dio_FAIL
ECHO.
ECHO [FAILURE] Dio module generation failed. Aborting process.
GOTO :FAIL_END
:Port_FAIL
ECHO.
ECHO [FAILURE] Port module generation failed. Aborting process.
GOTO :FAIL_END
:Mcu_FAIL
ECHO.
ECHO [FAILURE] Mcu module generation failed. Aborting process.
GOTO :FAIL_END
:Gpt_FAIL
ECHO.
ECHO [FAILURE] Gpt module generation failed. Aborting process.
GOTO :FAIL_END
:Wdg_FAIL
ECHO.
ECHO [FAILURE] Wdg module generation failed. Aborting process.
GOTO :FAIL_END
:Spi_FAIL
ECHO.
ECHO [FAILURE] Spi module generation failed. Aborting process.
GOTO :FAIL_END
:Can_FAIL
ECHO.
ECHO [FAILURE] Can module generation failed. Aborting process.
GOTO :FAIL_END
:Eth_FAIL
ECHO.
ECHO [FAILURE] Eth module generation failed. Aborting process.
GOTO :FAIL_END
:Cddiccom_FAIL
ECHO.
ECHO [FAILURE] Cddiccom module generation failed. Aborting process.
GOTO :FAIL_END
:Cddiic_FAIL
ECHO.
ECHO [FAILURE] Cddiic module generation failed. Aborting process.
GOTO :FAIL_END
:Cddcrc_FAIL
ECHO.
ECHO [FAILURE] Cddcrc module generation failed. Aborting process.
GOTO :FAIL_END
:Cddths_FAIL
ECHO.
ECHO [FAILURE] Cddths module generation failed. Aborting process.
GOTO :FAIL_END
:Cddemm_FAIL
ECHO.
ECHO [FAILURE] Cddemm module generation failed. Aborting process.
GOTO :FAIL_END
:Cddipmmu_FAIL
ECHO.
ECHO [FAILURE] Cddipmmu module generation failed. Aborting process.
GOTO :FAIL_END
:cddrfso_FAIL
ECHO.
ECHO [FAILURE] cddrfso module generation failed. Aborting process.
GOTO :FAIL_END
:FAIL_SINGLE
ECHO.
ECHO [FAILURE] %MODULE_NAME% module generation failed. Aborting process.
EXIT /B 1
:FAIL_END
ECHO.
ECHO ==================================================================
ECHO [FAILURE] Module generation failed during sequence. Aborting process.
ECHO ==================================================================
EXIT /B 1
:SUCCESS_SINGLE
ECHO.
ECHO ==================================================================
ECHO [SUCCESS] %MODULE_NAME% module completed generation successfully.
ECHO ==================================================================
GOTO :END
:SUCCESS_ALL
ECHO.
ECHO ==================================================================
ECHO [SUCCESS] All 16 modules completed generation successfully.
ECHO ==================================================================
GOTO :END
:Help
ECHO.
ECHO ==================================================================
ECHO [HELP] Usage: %Filename%.bat ^<MODULE/ALL^^> ^<AR_VERSION^^> ^<DEVICE^*^> ^<MULTI_CORE^> ^<LOG_PRINT^> ^<BUILD_OPTION^>
ECHO.
ECHO Note: All 6 arguments must be provided.
ECHO.
ECHO MODULE/ALL - Module name (e.g., Fls) or "ALL" for sequential run.
ECHO AR_VERSION - AUTOSAR Version (e.g., R19-11)
ECHO DEVICE - Target device (e.g., V4M, V4H, V5H)
ECHO MULTI_CORE - Yes/No
ECHO LOG_PRINT - Yes/No
ECHO BUILD_OPTION - all/clean/generate/make
ECHO.
ECHO [EXAMPLE] Fls R19-11 V4H No Yes generate
ECHO .%Filename%.bat Fls R19-11 V4H No Yes generate
ECHO.
ECHO [EXAMPLE] All R19-11 V4M No Yes make
ECHO .%Filename%.bat ALL R19-11 V4M No Yes make
ECHO ==================================================================
EXIT /B 1
:END
endlocal

View File

@@ -0,0 +1 @@
/* Empty stub file for WOODY module */

View File

@@ -0,0 +1 @@
/* Empty stub file for WOODY module */

View File

@@ -0,0 +1,6 @@
/* Empty stub file for WOODY module */
void WOODY_Rte_Dummy(void)
{
}

View File

@@ -0,0 +1,6 @@
/* Empty stub file for WOODY module */
void WOODY_SchM_Dummy(void)
{
}

View File

@@ -0,0 +1,21 @@
/*============================================================================*/
/* Environment: */
/* Devices: Rcar V4H, V4M */
/*============================================================================*/
/*******************************************************************************
** Revision History **
*******************************************************************************/
/*
* 1.0.0: 18/12/2025 : Initial version.
*/
/******************************************************************************/
#ifndef WOODY_H
#define WOODY_H
#endif /* WOODY_H */
/*******************************************************************************
** End of File **
*******************************************************************************/

View File

@@ -0,0 +1,21 @@
/*============================================================================*/
/* Environment: */
/* Devices: Rcar V4H, V4M */
/*============================================================================*/
/*******************************************************************************
** Revision History **
*******************************************************************************/
/*
* 1.0.0: 18/12/2025 : Initial version.
*/
/******************************************************************************/
#ifndef WOODY_VERSION_H
#define WOODY_VERSION_H
#endif /* WOODY_VERSION_H */
/*******************************************************************************
** End of File **
*******************************************************************************/

View File

@@ -0,0 +1,16 @@
###############################################################################
# REGISTRY
#
PREPARE_CONFIGURATION_INTERFACE += WOODY_MODULE_DBASE_REQ
CHECK_VARS_WHICH_ARE_REQUIRED += WOODY_MODULE_DBASE_REQ
###############################################################################
# SPECIFIC
#
ifneq ($(WOODY_MODULE_DBASE_REQ),yes)
ifneq ($(WOODY_MODULE_DBASE_REQ),no)
$(error The value of the variable WOODY_MODULE_DBASE_REQ is not valid. \
Please specify whether database is required or not )
endif
endif

View File

@@ -0,0 +1,33 @@
###############################################################################
# INTERNAL REQUIRED CONFIGURATION
#
###############################################################################
# REQUIRED (in base_make)
#
###############################################################################
# SPECIFIC
#
ifneq ( $(WOODY_MODULE_CONFIG_PATH), )
WOODY_MODULE_PROJECT_PATH = $(WOODY_MODULE_CONFIG_PATH)
else
WOODY_MODULE_PROJECT_PATH = $(WOODY_MODULE_CORE_PATH)\Cfg1
endif
###############################################################################
# REGISTRY
#
SSC_PLUGINS += renesas_WOODY
renesas_WOODY_DEPENDENT_PLUGINS =
CC_INCLUDE_PATH += $(WOODY_MODULE_CORE_PATH)\include \
$(WOODY_MODULE_CORE_PATH)\include\$(MICRO_VARIANT) \
$(WOODY_MODULE_PROJECT_PATH)\include
CC_SRC_PATH += $(WOODY_MODULE_CORE_PATH)\src \
$(WOODY_MODULE_PROJECT_PATH)\src
CPP_INCLUDE_PATH += $(WOODY_MODULE_CORE_PATH)\include \
$(WOODY_MODULE_PROJECT_PATH)\include
ASM_INCLUDE_PATH +=
PREPROCESSOR_DEFINES +=

View File

@@ -0,0 +1,74 @@
###############################################################################
# REGISTRY
#
LIBRARIES_TO_BUILD += renesas_WOODYlib
ifeq ($(MICRO_SUB_VARIANT), S4)
renesas_WOODYlib_FILES = \
$(WOODY_MODULE_CORE_PATH)\src\WOODY.c \
$(WOODY_MODULE_CORE_PATH)\src\WOODY_Version.c
CC_FILES_TO_BUILD += \
$(WOODY_MODULE_CORE_PATH)\src\WOODY.c \
$(WOODY_MODULE_CORE_PATH)\src\WOODY_Version.c
else
renesas_WOODYlib_FILES = \
$(WOODY_MODULE_CORE_PATH)\src\WOODY.c \
$(WOODY_MODULE_CORE_PATH)\src\WOODY_Version.c
CC_FILES_TO_BUILD += \
$(WOODY_MODULE_CORE_PATH)\src\WOODY.c \
$(WOODY_MODULE_CORE_PATH)\src\WOODY_Version.c
endif
OBJECTS_LINK_ONLY +=
ifeq ($(WOODY_MODULE_DBASE_REQ),yes)
#GENERATED_SOURCE_FILES += \
# $(WOODY_MODULE_PROJECT_PATH)\src\WOODY_PBcfg.c \
# $(WOODY_MODULE_PROJECT_PATH)\src\WOODY_Lcfg.c
endif
MAKE_CLEAN_RULES += WOODY_clean_generated_files
MAKE_GENERATE_RULES += generate_WOODY_config
MAKE_DEBUG_RULES += debug_WOODY_makefile
MAKE_CONFIG_RULES += generate_WOODY_config
WOODY_clean_generated_files:
@if exist $(WOODY_MODULE_PROJECT_PATH)\src\*.c del /Q $(WOODY_MODULE_PROJECT_PATH)\src\*.c
@if exist $(WOODY_MODULE_PROJECT_PATH)\include\*.h del /Q $(WOODY_MODULE_PROJECT_PATH)\include\*.h
@if exist $(WOODY_MODULE_PROJECT_PATH)\*.log del /Q $(WOODY_MODULE_PROJECT_PATH)\*.log
###############################################################################
# Command to print debug information #
###############################################################################
debug_WOODY_makefile:
@echo WOODY_MODULE_PROJECT_PATH = $(WOODY_MODULE_PROJECT_PATH)
@echo WOODY_MODULE_CORE_PATH = $(WOODY_MODULE_CORE_PATH)
@echo WOODY_MODULE_CONFIG_PATH = $(WOODY_MODULE_CONFIG_PATH)
@echo WOODY_MODULE_CONFIG_FILE = $(WOODY_MODULE_CONFIG_FILE)
@echo WOODY_MODULE_DBASE_REQ = $(WOODY_MODULE_DBASE_REQ)
@echo TRXML_CONFIG_FILE = $(TRXML_CONFIG_FILE)
@echo WOODY_MODULE_BSWMDT_CONFIG_FILE = $(WOODY_MODULE_BSWMDT_CONFIG_FILE)
@echo WOODY_DEM_CONFIG_FILE = $(WOODY_DEM_CONFIG_FILE)
@echo WOODY_OS_CONFIG_FILE = $(WOODY_OS_CONFIG_FILE)
@echo WOODY_ECUM_CONFIG_FILE = $(WOODY_ECUM_CONFIG_FILE)
@echo MCU_CONFIG_FILE = $(MCU_CONFIG_FILE)
###############################################################################
# Command to trigger the tool and generate configuration files #
###############################################################################
generate_WOODY_config:
$(COMMON_TOOL_FILE) -m $(WOODY_MODULE_NAME) \
-o $(WOODY_MODULE_PROJECT_PATH) \
$(WOODY_MODULE_CONFIG_FILE) \
$(TRXML_CONFIG_FILE) \
$(WOODY_MODULE_BSWMDT_CONFIG_FILE) \
$(MCU_CONFIG_FILE) \
$(WOODY_DEM_CONFIG_FILE) \
$(WOODY_ECUM_CONFIG_FILE) \
$(WOODY_OS_CONFIG_FILE)

View File

@@ -0,0 +1,140 @@
################################################################################
# Makefile to compile and build the Sample Application with the AUTOSAR CAN #
# Driver Component (For Test purposes only) #
# Compatible with GNU Make 3.81 for Win32. #
################################################################################
################################################################################
# Definitions of global environment variables #
################################################################################
###############################################################################
# MULTI CORE SAMPLE
#
MODULE_USE_MULTIINSTANCE = no
MODULE_USE_INSTANCE0 = no
MODULE_USE_INSTANCE1 = no
# FLAGS OF MULTI INSTANCE
ifeq ($(MODULE_USE_MULTIINSTANCE),yes)
CFLAGS += -D$(MSN_MODULE_NAME)_USE_MULTIINSTANCE
ifeq ($(MODULE_USE_INSTANCE0),yes)
CFLAGS += -D$(MSN_MODULE_NAME)_USE_INSTANCE0
endif
ifeq ($(MODULE_USE_INSTANCE1),yes)
CFLAGS += -D$(MSN_MODULE_NAME)_USE_INSTANCE1
CC_FILES_TO_BUILD += $(STARTUP_$(MICRO_SUB_VARIANT)_CORE_PATH)\src\arm\Interrupt_VectorTable.c
CPP_FILES_TO_BUILD += $(STARTUP_$(MICRO_SUB_VARIANT)_CORE_PATH)\src\arm\Interrupt_VectorTable.c
endif
endif
# Database to be linked together with the current application
# Define 'no' to isolate database from the application
MODULE_DBASE_REQ = yes
# Get the name of the SRECORD file
CURRENT_APPL_SRECORD = $(CURRENT_APPL)_$(MICRO_SUB_VARIANT)_Sample
# Name of the database if generated separately
MODULE_DB = $(MODULE_NAME)_PBcfg
# Map common variables to module variables
CAN_MODULE_NAME = $(MODULE_NAME)
CAN_MODULE_CORE_PATH = $(MODULE_CORE_PATH)
CAN_MODULE_CONFIG_PATH = $(MODULE_CONFIG_PATH)
CAN_MODULE_CONFIG_FILE = $(MODULE_CONFIG_FILE)
CAN_MODULE_DBASE_REQ = $(MODULE_DBASE_REQ)
CAN_MODULE_BSWMDT_CONFIG_FILE = $(MODULE_BSWMDT_CONFIG_FILE)
CAN_DEM_CONFIG_FILE = $(DEM_CONFIG_FILE)
CAN_ECUM_CONFIG_FILE = $(ECUM_CONFIG_FILE)
CAN_OS_CONFIG_FILE = $(OS_CONFIG_FILE)
################################################################################
# Modules to be included in the project #
################################################################################
################################################################################
################################################################################
# DET Module Core Path
#
DET_CORE_PATH = $(STUBS_PATH)\Det
include $(DET_CORE_PATH)\make\det_defs.mak
include $(DET_CORE_PATH)\make\det_rules.mak
################################################################################
################################################################################
# OS Module Core Path
#
OS_CORE_PATH = $(STUBS_PATH)\Os
include $(OS_CORE_PATH)\make\os_defs.mak
include $(OS_CORE_PATH)\make\os_rules.mak
################################################################################
################################################################################
# DEM Module Core Path
#
DEM_CORE_PATH = $(STUBS_PATH)\Dem
include $(DEM_CORE_PATH)\make\dem_defs.mak
include $(DEM_CORE_PATH)\make\dem_rules.mak
################################################################################
################################################################################
# Scheduler Manager Module Core Path
#
RTE_CORE_PATH = $(STUBS_PATH)\Rte
include $(RTE_CORE_PATH)\make\rte_defs.mak
include $(RTE_CORE_PATH)\make\rte_rules.mak
################################################################################
# ECUM Module Core Path
#
ECUM_CORE_PATH = $(STUBS_PATH)\EcuM
include $(ECUM_CORE_PATH)\make\ecum_defs.mak
include $(ECUM_CORE_PATH)\make\ecum_rules.mak
################################################################################
################################################################################
# Driver Component
#
MODULE_CORE_PATH = $(PROJECT_ROOT)\$(MICRO_FAMILY)\modules\$(MODULE_NAME)
include $(MODULE_CORE_PATH)\make\renesas_$(MODULE_NAME)_defs.mak
include $(MODULE_CORE_PATH)\make\renesas_$(MODULE_NAME)_check.mak
include $(MODULE_CORE_PATH)\make\renesas_$(MODULE_NAME)_rules.mak
################################################################################
# Can_General Module Core Path
#
CANGENERAL_CORE_PATH = $(STUBS_PATH)\CanGeneral
include $(CANGENERAL_CORE_PATH)\make\cangeneral_defs.mak
include $(CANGENERAL_CORE_PATH)\make\cangeneral_rules.mak
################################################################################
# CanIf Module Core Path
#
CANIF_CORE_PATH = $(STUBS_PATH)\CanIf
include $(CANIF_CORE_PATH)\make\canif_defs.mak
include $(CANIF_CORE_PATH)\make\canif_rules.mak
################################################################################
# Command to generate standalone database #
################################################################################
$(MODULE_DB).$(S_RECORD_SUFFIX):$(MODULE_DB).$(OBJ_FILE_SUFFIX) $(LNKFILE_DB)
@echo *********************************************************************
@echo Building the standalone database ...
$(DBLINKER) $(LNKFILE_DB) $(LNKFILE_COMMON) \
"$(OBJECT_OUTPUT_PATH)\$(MODULE_DB).$(OBJ_FILE_SUFFIX)" \
-map="$(OBJECT_OUTPUT_PATH)\$(MODULE_DB).$(MAP_FILE_SUFFIX)" \
-o "$(OBJECT_OUTPUT_PATH)\$(MODULE_DB).$(EXE_FILE_SUFFIX)"
@echo Generating Motorola S-Record file...
$(CONVERTER) $(SFLAGS) "$(OBJECT_OUTPUT_PATH)\$(MODULE_DB).$(EXE_FILE_SUFFIX)" \
-o "$(OBJECT_OUTPUT_PATH)\$(MODULE_DB).$(S_RECORD_SUFFIX)"
@echo Done ...
################################################################################
# End of the Base Make script #
################################################################################

View File

@@ -0,0 +1,21 @@
/*============================================================================*/
/* Environment: */
/* Devices: Rcar V4H, V4M */
/*============================================================================*/
/*******************************************************************************
** Revision History **
*******************************************************************************/
/*
* 1.0.0: 18/12/2025 : Initial version.
*/
/******************************************************************************/
#ifndef APP_WOODY_DEVICE_SAMPLE_H
#define APP_WOODY_DEVICE_SAMPLE_H
#endif /* APP_WOODY_DEVICE_SAMPLE_H */
/*******************************************************************************
** End of File **
*******************************************************************************/

View File

@@ -0,0 +1,6 @@
/* Empty stub file for WOODY module */
void WOODY_App_Dummy(void)
{
}

View File

@@ -0,0 +1,319 @@
/*============================================================================*/
/* Project = R-Car Gen4 AR19-11 MCAL */
/* Module = App_CAN_V4M_Sample.c */
/* SW-VERSION = 1.1.17 */
/*============================================================================*/
/* COPYRIGHT */
/*============================================================================*/
/* Copyright(c) 2023 Renesas Electronics Corporation. */
/*============================================================================*/
/* Purpose: */
/* This application file contains execution sequences to demonstrate the usage*/
/* of CAN Driver APIs. */
/* */
/*============================================================================*/
/* */
/* Unless otherwise agreed upon in writing between your company and */
/* Renesas Electronics Corporation the following shall apply! */
/* */
/* Warranty Disclaimer */
/* */
/* There is no warranty of any kind whatsoever granted by Renesas. Any */
/* warranty is expressly disclaimed and excluded by Renesas, either expressed */
/* or implied, including but not limited to those for non-infringement of */
/* intellectual property, merchantability and/or fitness for the particular */
/* purpose. */
/* */
/* Renesas shall not have any obligation to maintain, service or provide bug */
/* fixes for the supplied Product(s) and/or the Application. */
/* */
/* Each User is solely responsible for determining the appropriateness of */
/* using the Product(s) and assumes all risks associated with its exercise */
/* of rights under this Agreement, including, but not limited to the risks */
/* and costs of program errors, compliance with applicable laws, damage to */
/* or loss of data, programs or equipment, and unavailability or */
/* interruption of operations. */
/* */
/* Limitation of Liability */
/* */
/* In no event shall Renesas be liable to the User for any incidental, */
/* consequential, indirect, or punitive damage (including but not limited */
/* to lost profits) regardless of whether such liability is based on breach */
/* of contract, tort, strict liability, breach of warranties, failure of */
/* essential purpose or otherwise and even if advised of the possibility of */
/* such damages. Renesas shall not be liable for any services or products */
/* provided by third party vendors, developers or consultants identified or */
/* referred to the User by Renesas in connection with the Product(s) and/or */
/* the Application. */
/* */
/*============================================================================*/
/* Environment: */
/* Devices: V4M */
/*============================================================================*/
/*******************************************************************************
** Revision Control History **
*******************************************************************************/
/*
* 1.1.14: 18/04/2023 : Initial Version
*/
/******************************************************************************/
/*******************************************************************************
** Include Section **
*******************************************************************************/
#include "App_CAN_Device_Sample.h"
#include "Interrupt.h"
#include "log.h"
#include "scif.h"
/*******************************************************************************
** Local Definitions **
*******************************************************************************/
/*******************************************************************************
* Global Variables **
*******************************************************************************/
/*******************************************************************************
** Function Prototypes **
*******************************************************************************/
/******************************************************************************
* Function Definitions **
******************************************************************************/
/*
* Turn off interrupts in the ARM processor
* Turn off IRQ and FIQ interrupt
*/
void cpuirq_disable (void)
{
__asm("cpsid i\n\t");
}
/*
* Turn on interrupts in the ARM processor
* Turn on IRQ interrupt & turn off FIQ interrupt
*/
void cpuirq_enable (void)
{
__asm("cpsie i\n\t");
}
/******************************************************************************
System Initialization
******************************************************************************/
void Clock_Init(void)
{
Console_Print("[V4M:CAN] Clock_Init start\r\n");
/**********************************************/
/* Setting Clock for CANFD */
/**********************************************/
/* Get Module stop control register */
volatile uint32 *reg = (volatile uint32 *)MSTPCR3_ADDR;
/* Unlock MSTPCR3 register */
CPGWPR = ~((MSTPCR3 & ~(CAN_MASK_CLOCK)));
/* Enable Supply clock for CANFD module */
*reg = (MSTPCR3 & ~(CAN_MASK_CLOCK));
/* Wait for the status of MSTPCR3 is correct */
while(CAN_MASK_CLOCK & MSTPCR3);
/* Reset CANFD by writing to 1 to SRCR3 Register */
CPGWPR = ~(CAN_MASK_RESET);
reg = (volatile uint32 *)SRCR3_ADDR;
*reg = CAN_MASK_RESET;
while(!(CAN_MASK_RESET & SRCR3));
/* Write to software reset clearing register to clearing SRCR3 */
CPGWPR = ~CAN_MASK_RESET;
SRSTCLR3 = CAN_MASK_RESET;
while(CAN_MASK_RESET & SRCR3);
/* Unlock CANFDCKCR register */
CPGWPR = ~((CANFDCKCR & (CAN_SUPPLY_CLOCK)));
/* Supply clock for CANFD module */
reg = (volatile uint32 *)CANFDCKCR_ADDR;
*reg = (CANFDCKCR & CAN_SUPPLY_CLOCK);
while(!(CAN_SUPPLY_CLOCK & CANFDCKCR));
/**********************************************/
/* Setting internal clock for timer unit TMU0 */
/**********************************************/
reg = (volatile uint32 *)MSTPCR7_ADDR ;
/* Unlock TMU0 register */
CPGWPR = ~((MSTPCR7 & ~(TMU0_MASK_CLOCK)));
/* Enable supply clock for TMU0 */
*reg = (MSTPCR7 & ~(TMU0_MASK_CLOCK));
}
/* Perform the System initialization */
void Mcu_Init(void)
{
}
/*******************************************************************************
** Watchdog Initialization **
*******************************************************************************/
void Wdg_Init(void)
{
/* call the function */
}
/******************************************************************************
* Port Initialization **
******************************************************************************/
void Port_Init(void)
{
volatile uint32 *regval;
Console_Print("[V4M:CAN] Port_Init start\r\n");
/* Set INOUTSEL2 register to select input/ output mode for each TX/RX port */
PMMR2 = ~(PFC_INOUTSEL2_RW | (BIT_IN_OUT));
regval = (volatile uint32 *)PFC_INOUTSEL2_RW_ADD;
*regval = (PFC_INOUTSEL2_RW | (BIT_IN_OUT));
/*
* GP1_03 -------GPIO *
* GP2_10 -------CANFD0_TX | GP2_16 -------CANFD4_TX *
* GP2_11 -------CANFD0_RX | GP2_17 -------CANFD4_RX *
* GP2_00 -------CANFD1_TX | GP2_02 -------CANFD5_TX *
* GP2_01 -------CANFD1_RX | GP2_03 -------CANFD5_RX *
* GP2_12 -------CANFD2_TX | GP2_07 -------CANFD6_TX *
* GP2_13 -------CANFD2_RX | GP2_08 -------CANFD6_RX *
* GP2_14 -------CANFD3_TX | GP2_18 -------CANFD7_TX *
* GP2_15 -------CANFD3_RX | GP2_19 -------CANFD7_RX *
*/
/* Set the GPSR2 register */
PMMR2 = ~(PFC_GPSR2_RW | (BIT3_0|BIT7|BIT8|BIT11_10|BIT15_12|BIT19_16));
regval = (volatile uint32 *)PFC_GPSR2_RW_ADD;
*regval = (PFC_GPSR2_RW | (BIT3_0|BIT7|BIT8|BIT11_10|BIT15_12|BIT19_16));
/* Set the IP0SR2 register */
/* IP0SR2[31:28]: CANFD6_TX: 0x1 */
/* IP0SR2[15:12]: CANFD5_RX: 0x1 */
/* IP0SR2[11:8]: CANFD5_TX: 0x1 */
/* IP0SR2[7:4]: CANFD1_RX: 0x1 */
/* IP0SR2[3:0]: CANFD1_TX: 0x1 */
PMMR2 = ~(PFC_IP0SR2_RW | BIT31_28_15_0);
regval = (volatile uint32 *)PFC_IP0SR2_RW_ADD;
*regval = (PFC_IP0SR2_RW | BIT31_28_15_0);
/* Set the IP1SR2 register */
/* IP1SR2[31:28]: CANFD3_RX: 0x0 */
/* IP1SR2[27:24]: CANFD3_TX: 0x0 */
/* IP1SR2[23:20]: CANFD2_RX: 0x0 */
/* IP1SR2[19:16]: CANFD2_TX: 0x0 */
/* IP1SR2[15:12]: CANFD0_RX: 0x0 */
/* IP1SR2[11:8]: CANFD0_TX: 0x0 */
/* IP1SR2[3:0]: CANFD6_RX: 0x1 */
PMMR2 = ~((PFC_IP1SR2_RW & ~(BIT31_1)) | (BIT0));
regval = (volatile uint32 *)PFC_IP1SR2_RW_ADD;
*regval = ((PFC_IP1SR2_RW & ~(BIT31_1)) | (BIT0));
/* Set the IP2SR2 register */
/* IP2SR2[15:12]: CANFD7_RX: 0x0 */
/* IP2SR2[11:8]: CANFD7_TX: 0x0 */
/* IP2SR2[7:4]: CANFD4_RX: 0x0 */
/* IP2SR2[3:0]: CANFD4_TX: 0x0 */
PMMR2 = ~(PFC_IP2SR2_RW & ~(ALL_BIT));
regval = (volatile uint32 *)PFC_IP2SR2_RW_ADD;
*regval = (PFC_IP2SR2_RW & ~(ALL_BIT));
/* Set bellow registers to configure Port GP1_03 as Output with high level value */
/* to enable transceiver for channel 0 */
/* Set the INOUTSEL1 register to select GP1_03 as Output mode */
PMMR1 = ~(PFC_INOUTSEL1_RW | BIT3);
regval = (volatile uint32 *)PFC_INOUTSEL1_RW_ADD;
*regval = (PFC_INOUTSEL1_RW | BIT3);
/* Set the GPSR1 register to select GP1_03 as GPIO */
PMMR1 = ~(PFC_GPSR1_RW & ~BIT3);
regval = (volatile uint32 *)PFC_GPSR1_RW_ADD;
*regval = (PFC_GPSR1_RW & ~BIT3);
/* Set the OUTDTSEL1 register */
PMMR1 = ~(PFC_OUTDTSEL1_RW & ~BIT3);
regval = (volatile uint32 *)PFC_OUTDTSEL1_RW_ADD;
*regval = (PFC_OUTDTSEL1_RW & ~BIT3);
/* Set the OUTDT1 register */
PMMR1 = ~(PFC_OUTDT1_RW | BIT3);
regval = (volatile uint32 *)PFC_OUTDT1_RW_ADD;
*regval = (PFC_OUTDT1_RW |BIT3);
}
/*****************************************************************************
Timer Initialization
*****************************************************************************/
void Gpt_Init(void)
{
}
void Tmu_Init(uint32 CounterValue)
{
Console_Print("[V4M:CAN] Tmu_Init start\r\n");
REG_TSTR0 &= ~(REG_TSTR0_TMU0_ENABLE);
REG_TCR0 |= TMU_TCR0;
REG_TCOR0 = 0x00000000UL;
REG_TCNT0 = 0x00000000UL;
REG_TCOR0 = CounterValue;
REG_TCNT0 = CounterValue;
/* To start CH0 timer */
REG_TSTR0 |= (uint8) 0x01;
}
void Timer_irq_end(void)
{
REG_TCR0 &= (uint16) 0xFEFF;
}
void Timer_End(void)
{
/* To stop CH0 timer */
REG_TSTR0 &= (uint8) 0x06;
}
/*******************************************************************************
CAN Module Initialization
*******************************************************************************/
void Can_sub_Init(void)
{
Console_Print("[V4M:CAN] Can_sub_Init start\r\n");
/* Disable interrupts in the R52 processor */
cpuirq_disable();
Interrupt_Config();
/* Enable CAN channel Interrupt */
Interrupt_Enable(CAN_CHANNEL_INT_ID);
/* Set CAN channel Interrupt to IRQ (Group 1) */
Interrupt_SetGroup(CAN_CHANNEL_INT_ID, 1);
/* Enable CAN global Interrupt */
Interrupt_Enable(CAN_GLOBAL_INT_ID);
/* Set CAN global Interrupt to IRQ (Group 1) */
Interrupt_SetGroup(CAN_GLOBAL_INT_ID, 1);
/* Enable the interrupt of TMU0 channel 0 */
Interrupt_Enable(TMU_CHANNEL0_INT_ID);
Interrupt_SetGroup(TMU_CHANNEL0_INT_ID, 1);
/* Initialize timer TMU0 */
Tmu_Init(3000000);
/* enable interrupts in the R52 processor */
cpuirq_enable();
}
/*******************************************************************************
End of the file
*******************************************************************************/

View File

@@ -0,0 +1,21 @@
/*============================================================================*/
/* Environment: */
/* Devices: Rcar V4H, V4M */
/*============================================================================*/
/*******************************************************************************
** Revision History **
*******************************************************************************/
/*
* 1.0.0: 18/12/2025 : Initial version.
*/
/******************************************************************************/
#ifndef APP_WOODY_COMMON_SAMPLE_H
#define APP_WOODY_COMMON_SAMPLE_H
#endif /* APP_WOODY_COMMON_SAMPLE_H */
/*******************************************************************************
** End of File **
*******************************************************************************/

View File

@@ -0,0 +1,113 @@
################################################################################
# Makefile to compile and build the Sample Application with the AUTOSAR Woody #
# Driver Component (For Test purposes only) #
# Compatible with GNU Make 3.81 for Win32. #
################################################################################
################################################################################
# Definitions of global environment variables #
################################################################################
###############################################################################
# MULTI CORE SAMPLE
#
MODULE_USE_MULTIINSTANCE = no
MODULE_USE_INSTANCE0 = no
MODULE_USE_INSTANCE1 = no
# FLAGS OF MULTI INSTANCE
ifeq ($(MODULE_USE_MULTIINSTANCE),yes)
CFLAGS += -D$(MSN_MODULE_NAME)_USE_MULTIINSTANCE
ifeq ($(MODULE_USE_INSTANCE0),yes)
CFLAGS += -D$(MSN_MODULE_NAME)_USE_INSTANCE0
endif
ifeq ($(MODULE_USE_INSTANCE1),yes)
CFLAGS += -D$(MSN_MODULE_NAME)_USE_INSTANCE1
CC_FILES_TO_BUILD += $(STARTUP_$(MICRO_SUB_VARIANT)_CORE_PATH)\src\arm\Interrupt_VectorTable.c
CPP_FILES_TO_BUILD += $(STARTUP_$(MICRO_SUB_VARIANT)_CORE_PATH)\src\arm\Interrupt_VectorTable.c
endif
endif
# Database to be linked together with the current application
# Define 'no' to isolate database from the application
MODULE_DBASE_REQ = yes
# Get the name of the SRECORD file
CURRENT_APPL_SRECORD = $(CURRENT_APPL)_$(MICRO_SUB_VARIANT)_Sample
# Name of the database if generated separately
MODULE_DB = $(MODULE_NAME)_PBcfg
# Map common variables to module variables
WOODY_MODULE_NAME = $(MODULE_NAME)
WOODY_MODULE_CORE_PATH = $(MODULE_CORE_PATH)
WOODY_MODULE_CONFIG_PATH = $(MODULE_CONFIG_PATH)
WOODY_MODULE_CONFIG_FILE = $(MODULE_CONFIG_FILE)
WOODY_MODULE_DBASE_REQ = $(MODULE_DBASE_REQ)
WOODY_MODULE_BSWMDT_CONFIG_FILE = $(MODULE_BSWMDT_CONFIG_FILE)
WOODY_DEM_CONFIG_FILE = $(DEM_CONFIG_FILE)
################################################################################
# Modules to be included in the project #
################################################################################
################################################################################
# DET Module Core Path
#
DET_CORE_PATH = $(STUBS_PATH)\Det
include $(DET_CORE_PATH)\make\det_defs.mak
include $(DET_CORE_PATH)\make\det_rules.mak
################################################################################
################################################################################
# OS Module Core Path
#
OS_CORE_PATH = $(STUBS_PATH)\Os
include $(OS_CORE_PATH)\make\os_defs.mak
include $(OS_CORE_PATH)\make\os_rules.mak
################################################################################
################################################################################
# DEM Module Core Path
#
DEM_CORE_PATH = $(STUBS_PATH)\Dem
include $(DEM_CORE_PATH)\make\dem_defs.mak
include $(DEM_CORE_PATH)\make\dem_rules.mak
################################################################################
################################################################################
# Scheduler Manager Module Core Path
#
RTE_CORE_PATH = $(STUBS_PATH)\Rte
include $(RTE_CORE_PATH)\make\rte_defs.mak
include $(RTE_CORE_PATH)\make\rte_rules.mak
################################################################################
# Driver Component
#
MODULE_CORE_PATH = $(PROJECT_ROOT)\$(MICRO_FAMILY)\modules\$(MODULE_NAME)
include $(MODULE_CORE_PATH)\make\renesas_$(MODULE_NAME)_defs.mak
include $(MODULE_CORE_PATH)\make\renesas_$(MODULE_NAME)_check.mak
include $(MODULE_CORE_PATH)\make\renesas_$(MODULE_NAME)_rules.mak
################################################################################
# Command to generate standalone database #
################################################################################
$(MODULE_DB).$(S_RECORD_SUFFIX):$(MODULE_DB).$(OBJ_FILE_SUFFIX) $(LNKFILE_DB)
@echo *********************************************************************
@echo Building the standalone database ...
$(DBLINKER) $(LNKFILE_DB) $(LNKFILE_COMMON) \
"$(OBJECT_OUTPUT_PATH)\$(MODULE_DB).$(OBJ_FILE_SUFFIX)" \
-map="$(OBJECT_OUTPUT_PATH)\$(MODULE_DB).$(MAP_FILE_SUFFIX)" \
-o "$(OBJECT_OUTPUT_PATH)\$(MODULE_DB).$(EXE_FILE_SUFFIX)"
@echo Generating Motorola S-Record file...
$(CONVERTER) $(SFLAGS) "$(OBJECT_OUTPUT_PATH)\$(MODULE_DB).$(EXE_FILE_SUFFIX)" \
-o "$(OBJECT_OUTPUT_PATH)\$(MODULE_DB).$(S_RECORD_SUFFIX)"
@echo Done ...
################################################################################
# End of the Base Make script #
################################################################################

View File

@@ -0,0 +1,8 @@
/*******************************************************************************
** Include Section **
*******************************************************************************/
#include "App_Woody_Common_Sample.h"
int main(void)
{
}

View File

@@ -0,0 +1,6 @@
/* Empty stub file for WOODY module */
void WOODY_Dummy(void)
{
}

View File

@@ -0,0 +1,6 @@
/* Empty stub file for WOODY module */
void WOODY_Version_Dummy(void)
{
}