diff --git a/B3_AP_ert_target/B3_AP_ert_target.tlc b/B3_AP_ert_target/B3_AP_ert_target.tlc new file mode 100644 index 0000000..ddcd6d5 --- /dev/null +++ b/B3_AP_ert_target/B3_AP_ert_target.tlc @@ -0,0 +1,90 @@ +%% SYSTLC: B3-AP ERT-based Target TMF: B3_AP_ert_target.tmf MAKE: make_rtw \ +%% EXTMODE: no_ext_comm +%% +%selectfile NULL_FILE + +%assign CodeFormat = "Embedded-C" + +%assign TargetType = "RT" +%assign Language = "C" +%if !EXISTS("AutoBuildProcedure") + %if EXISTS("GenerateSampleERTMain") + %assign AutoBuildProcedure = !GenerateSampleERTMain + %else + %% This is for the targets that use ert.tlc and are required to work + %% without Embedded Coder. This is to enable auto build procedure since + %% the GenerateSampleERTMain is always set to true for these targets. + %assign AutoBuildProcedure = TLC_TRUE + %endif +%endif + +%% The model_SetEventsForThisBaseRate function is not required for the +%% VxWorks environment, i.e., when using an operating system. +%assign SuppressSetEventsForThisBaseRateFcn = (TargetOS == "VxWorksExample") +%if !EXISTS("InlineSetEventsForThisBaseRateFcn") + %assign InlineSetEventsForThisBaseRateFcn = TLC_TRUE +%endif +%if !EXISTS("SuppressMultiTaskScheduler") + %assign SuppressMultiTaskScheduler = TLC_TRUE +%endif + +%assign TargetRegistMutexOp = 1 +%assign TargetRegistSynchroOp = 1 + +%include "codegenentry.tlc" + +%% The contents between 'BEGIN_RTW_OPTIONS' and 'END_RTW_OPTIONS' in this file +%% are used to maintain backward compatibility to R13 and preR13 custom target +%% file only. If you want to use this file as a template to develop your +%% own system target file, you need to remove the 'CONFIGSET_TARGET_COMPONENT' +%% section at the end of this file. +%% +/% + BEGIN_RTW_OPTIONS + + rtwoptions(1).prompt = 'My Target Options'; + rtwoptions(1).type = 'Category'; + rtwoptions(1).enable = 'on'; + rtwoptions(1).default = 3; % number of items under this category + % excluding this one. + rtwoptions(1).popupstrings = ''; + rtwoptions(1).tlcvariable = ''; + rtwoptions(1).tooltip = ''; + rtwoptions(1).callback = ''; + rtwoptions(1).makevariable = ''; + + rtwoptions(2).prompt = 'Demo option 1'; + rtwoptions(2).type = 'Checkbox'; + rtwoptions(2).default = 'off'; + rtwoptions(2).tlcvariable = 'DummyOpt1'; + rtwoptions(2).makevariable = ''; + rtwoptions(2).tooltip = ['Demo option1 (non-functional)']; + rtwoptions(2).callback = ''; + + rtwoptions(3).prompt = 'Demo option 2'; + rtwoptions(3).type = 'Checkbox'; + rtwoptions(3).default = 'off'; + rtwoptions(3).tlcvariable = 'DummyOpt2'; + rtwoptions(3).makevariable = ''; + rtwoptions(3).tooltip = ['Demo option2 (non-functional)']; + rtwoptions(3).callback = ''; + + rtwoptions(4).prompt = 'Demo option 3'; + rtwoptions(4).type = 'Checkbox'; + rtwoptions(4).default = 'off'; + rtwoptions(4).tlcvariable = 'DummyOpt3'; + rtwoptions(4).makevariable = ''; + rtwoptions(4).tooltip = ['Demo option3 (non-functional)']; + rtwoptions(4).callback = ''; + + %----------------------------------------% + % Configure code generation settings % + %----------------------------------------% + + rtwgensettings.BuildDirSuffix = '_B3AP_ert_rtw'; + rtwgensettings.DerivedFrom = 'ert.tlc'; + rtwgensettings.Version = '1'; + + END_RTW_OPTIONS + %/ + diff --git a/B3_AP_ert_target/B3_AP_ert_target.tmf b/B3_AP_ert_target/B3_AP_ert_target.tmf new file mode 100644 index 0000000..e141d68 --- /dev/null +++ b/B3_AP_ert_target/B3_AP_ert_target.tmf @@ -0,0 +1,298 @@ +# Copyright 1994-2017 The MathWorks, Inc. +# +# File: B3_AP_ert_target.tmf +# +# Abstract: +# Simplified version of matlabroot/rtw/c/tornado/tornado.tmf to support +# the Embedded Real-Time (ERT) code format on the VxWorks operating +# system. Supports referenced models and user C++ files. +# +# This file can be used as a starting point for supporting ERT on the +# Tornado environment. +# + +MAKECMD = "%ARM_GCC_PATH%\bin\make" +SHELL = cmd +HOST = PC +BUILD = no +BUILD_SUCCESS = *** Created +SYS_TARGET_FILE = B3_AP_ert_target.tlc +MAKEFILE_FILESEP = / +TOOLCHAIN_NAME = "armcc | gmake makefile (64-bit Windows)" + +#---------------------- Tokens expanded by make_rtw ---------------------------- +# +# The following tokens, when wrapped with "|>" and "<|" are expanded by the +# build procedure. +# +MODEL = |>MODEL_NAME<| +MODULES = |>MODEL_MODULES<| +MAKEFILE = |>MAKEFILE_NAME<| +MATLAB_ROOT = |>MATLAB_ROOT<| +ALT_MATLAB_ROOT = |>ALT_MATLAB_ROOT<| +MASTER_ANCHOR_DIR = |>MASTER_ANCHOR_DIR<| +START_DIR = |>START_DIR<| +S_FUNCTIONS = |>S_FUNCTIONS<| +S_FUNCTIONS_LIB = |>S_FUNCTIONS_LIB<| +NUMST = |>NUMST<| +NCSTATES = |>NCSTATES<| +COMPUTER = |>COMPUTER<| +BUILDARGS = |>BUILDARGS<| +MULTITASKING = |>MULTITASKING<| +MODELREFS = |>MODELREFS<| +SHARED_SRC = |>SHARED_SRC<| +SHARED_SRC_DIR = |>SHARED_SRC_DIR<| +SHARED_BIN_DIR = |>SHARED_BIN_DIR<| +SHARED_LIB = |>SHARED_LIB<| +GEN_SAMPLE_MAIN = |>GEN_SAMPLE_MAIN<| +TARGET_LANG_EXT = |>TARGET_LANG_EXT<| +CLASSIC_INTERFACE = |>CLASSIC_INTERFACE<| +NUMST = |>NUMST<| + +#--------------------------- Model and reference models ----------------------- +MODELLIB = |>MODELLIB<| +MODELREF_LINK_LIBS = |>MODELREF_LINK_LIBS<| +MODELREF_INC_PATH = |>START_MDLREFINC_EXPAND_INCLUDES<|-I|>MODELREF_INC_PATH<| |>END_MDLREFINC_EXPAND_INCLUDES<| +RELATIVE_PATH_TO_ANCHOR = |>RELATIVE_PATH_TO_ANCHOR<| +# NONE: standalone, SIM: modelref sim, RTW: modelref coder target +MODELREF_TARGET_TYPE = |>MODELREF_TARGET_TYPE<| + +#-- In the case when directory name contains space --- +ifneq ($(MATLAB_ROOT),$(ALT_MATLAB_ROOT)) +MATLAB_ROOT := $(ALT_MATLAB_ROOT) +endif + +# Code generation option makevariables that are not expanded in the template makefile +# are automatically passed into make. To avoid this, create NOOP replacements. +# For this custom target, these ERT makevariables are not used. +# +NOOP = |>MAT_FILE<| +NOOP = |>INTEGER_CODE<| +NOOP = |>INCLUDE_MDL_TERMINATE_FCN<| +NOOP = |>COMBINE_OUTPUT_UPDATE_FCNS<| +NOOP = |>GENERATE_ERT_S_FUNCTION<| + +#-------------------------------- GNU Tools ------------------------------------ +# +# You may need to modify the following variables if you have installed the GNU +# Tools in a different location. +# +PREFIX = arm-none-eabi- +GCC_PATH = $(ARM_GCC_PATH)/bin + +CC = $(GCC_PATH)/$(PREFIX)gcc +CPP = $(GCC_PATH)/$(PREFIX)g++ +AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp +CP = $(GCC_PATH)/$(PREFIX)objcopy +SZ = $(GCC_PATH)/$(PREFIX)size +LD = $(GCC_PATH)/$(PREFIX)ld +AR = $(GCC_PATH)/$(PREFIX)ar + +HEX = $(CP) -O ihex +BIN = $(CP) -O binary -S + +#------------------------------ Include Path ----------------------------------- +# + +# Additional includes +# +ADD_INCLUDES = \ +|>START_EXPAND_INCLUDES<| -I|>EXPAND_DIR_NAME<| \ +|>END_EXPAND_INCLUDES<| + + +USER_INCLUDES = + +SHARED_INCLUDES = +ifneq ($(SHARED_SRC_DIR),) +SHARED_INCLUDES = -I$(SHARED_SRC_DIR) +endif + +INCLUDES = -I. -I$(RELATIVE_PATH_TO_ANCHOR) $(MODELREF_INC_PATH) $(ADD_INCLUDES) \ + $(USER_INCLUDES) \ + $(SHARED_INCLUDES) + +#-------------------------------- C Flags -------------------------------------- +# debug build? +DEBUG ?= 1 + +# cpu +CPU = -mcpu=cortex-m7 + +# fpu +FPU = -mfpu=fpv5-d16 + +# float-abi +FLOAT-ABI = -mfloat-abi=hard + +# mcu +MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI) + +# macros for gcc +# AS defines +AS_DEFS = + +# C defines +C_DEFS = \ +-DWITH_CAPI \ +-DCAPI_MDL=$(MODEL) \ +-DHDR_MDL=$(MODEL).h \ +-DMAVLINK_USE_MESSAGE_INFO \ +-DHAL_IMPL \ +-DUSE_HAL_DRIVER \ +-DSTM32F769xx + +# General User Options +OPTS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections + +ifeq ($(DEBUG), 1) + OPT_OPTS = -Og +else + OPT_OPTS = -O3 +endif + +# Required Options +GCC_FLAGS = -W -g -gdwarf-2 -DDEBUG +REQ_OPTS = $(GCC_FLAGS) + +CC_OPTS = $(REQ_OPTS) $(OPTS) + +CPP_REQ_DEFINES = -DMT=$(MULTITASKING) -DNCSTATES=$(NCSTATES) -DNUMST=$(NUMST) + +CFLAGS =$(CC_OPTS) $(CPP_REQ_DEFINES) $(INCLUDES) $(OPT_OPTS) +CPPFLAGS = $(CPP_OPTS) $(CC_OPTS) $(CPP_REQ_DEFINES) $(INCLUDES) + +ifeq ($(DEBUG), 1) +CFLAGS += -g -gdwarf-2 -DDEBUG +else +CFLAGS += -DNDEBUG +endif + +# Generate dependency information +CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" + +####################################### +# LDFLAGS +####################################### +# link script +LDSCRIPT = STM32F769NIHX_FLASH.ld + +# libraries +SYSLIBS = -lc -lm -lnosys +LIBDIR = +LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(SYSLIBS) -Wl,-Map=$(MODEL).map,--cref -Wl,--gc-sections + +LIBS = +|>START_PRECOMP_LIBRARIES<| +LIBS += |>EXPAND_LIBRARY_NAME<|.a +|>END_PRECOMP_LIBRARIES<| |>START_EXPAND_LIBRARIES<| +LIBS += |>EXPAND_LIBRARY_NAME<|.a |>END_EXPAND_LIBRARIES<| +LIBS += $(S_FUNCTIONS_LIB) + +#----------------------------- Source Files ------------------------------------ +SHARED_OUTPUT_OPTS = -o $@ +SRCS = $(MODULES) $(S_FUNCTIONS) +ifeq ($(MODELREF_TARGET_TYPE), NONE) + # Top-level model for code generation + PRODUCT = $(RELATIVE_PATH_TO_ANCHOR)/$(MODEL).elf + BIN_SETTING = $(CC) $(LDFLAGS) -o $(PRODUCT) + BUILD_PRODUCT_TYPE = "executable" +else + # sub-model for code generation + PRODUCT = $(MODELLIB) + BUILD_PRODUCT_TYPE = "library" +endif + + +USER_SRCS = +USER_OBJS = $(addsuffix .o, $(basename $(USER_SRCS))) +LOCAL_USER_OBJS = $(notdir $(USER_OBJS)) + +OBJS = $(addsuffix .o, $(basename $(SRCS))) $(USER_OBJS) +LINK_OBJS = $(addsuffix .o, $(basename $(SRCS))) $(LOCAL_USER_OBJS) + +SHARED_SRC := $(wildcard $(SHARED_SRC)) +SHARED_OBJS = $(addsuffix .o, $(basename $(SHARED_SRC))) + +#--------------------------------- Rules --------------------------------------- +ifeq ($(MODELREF_TARGET_TYPE),NONE) +# Top-level model for code generation +$(PRODUCT) : $(OBJS) $(SHARED_LIB) $(MODELREF_LINK_LIBS) $(LIBS) + $(BIN_SETTING) $(LINK_OBJS) $(MODELREF_LINK_LIBS) $(SHARED_LIB) $(LIBS) + @echo "$(BUILD_SUCCESS) $(BUILD_PRODUCT_TYPE): $@" +else +# sub-model for code generation +$(PRODUCT) : $(OBJS) $(SHARED_OBJS) + @rm -f $(MODELLIB) + $(AR) ruv $(MODELLIB) $(LINK_OBJS) + @echo "### $(MODELLIB) Created" + @echo "$(BUILD_SUCCESS) $(BUILD_PRODUCT_TYPE): $@" +endif + +%.o : %.c + $(CC) -c $(CFLAGS) $< + +%.o : %.cpp + $(CC) -c $(CPPFLAGS) $< + +%.o : ../%.c + $(CC) -c $(CFLAGS) $< + +%.o : ../%.cpp + $(CC) -c $(CPPFLAGS) $< + +%.o : $(RELATIVE_PATH_TO_ANCHOR)/%.c + $(CC) -c $(CFLAGS) $< + +%.o : $(RELATIVE_PATH_TO_ANCHOR)/%.cpp + $(CC) -c $(CPPFLAGS) $< + +%.o : $(MATLAB_ROOT)/rtw/c/src/%.c + $(CC) -c $(CFLAGS) $< + +|>START_EXPAND_RULES<|%.o : |>EXPAND_DIR_NAME<|/%.c + $(CC) -c $(CFLAGS) $< + +|>END_EXPAND_RULES<| + +|>START_EXPAND_RULES<|%.o : |>EXPAND_DIR_NAME<|/%.cpp + $(CC) -c $(CPPFLAGS) $< + +|>END_EXPAND_RULES<| + +#------------------------------- Libraries ------------------------------------- + +|>START_EXPAND_LIBRARIES<|MODULES_|>EXPAND_LIBRARY_NAME<| = \ +|>START_EXPAND_MODULES<| |>EXPAND_MODULE_NAME<|.o \ +|>END_EXPAND_MODULES<| + +|>EXPAND_LIBRARY_NAME<|.a : $(MAKEFILE) rtw_proj.tmw $(MODULES_|>EXPAND_LIBRARY_NAME<|) + @echo "### Creating $@ " + $(AR) r $@ $(MODULES_|>EXPAND_LIBRARY_NAME<|) + @echo "### $@ Created" + +|>END_EXPAND_LIBRARIES<| + +|>START_PRECOMP_LIBRARIES<|MODULES_|>EXPAND_LIBRARY_NAME<| = \ +|>START_EXPAND_MODULES<| |>EXPAND_MODULE_NAME<|.o \ +|>END_EXPAND_MODULES<| + +|>EXPAND_LIBRARY_NAME<|.a : $(MAKEFILE) rtw_proj.tmw $(MODULES_|>EXPAND_LIBRARY_NAME<|) + @echo "### Creating $@ " + $(AR) r $@ $(MODULES_|>EXPAND_LIBRARY_NAME<|) + @echo "### $@ Created" + +|>END_PRECOMP_LIBRARIES<| + +#----------------------------- Dependencies ------------------------------------ + +$(OBJS) : $(MAKEFILE) rtw_proj.tmw + +$(SHARED_OBJS) : $(SHARED_BIN_DIR)/%.o : $(SHARED_SRC_DIR)/%.c + $(CC) -c $(CFLAGS) $(SHARED_OUTPUT_OPTS) $< + +$(SHARED_LIB) : $(SHARED_OBJS) + @echo "### Creating $@ " + $(AR) r $@ $(SHARED_OBJS) + @echo "### $@ Created " + diff --git a/B3_AP_ert_target/armcc_tc.m b/B3_AP_ert_target/armcc_tc.m new file mode 100644 index 0000000..600c5a4 --- /dev/null +++ b/B3_AP_ert_target/armcc_tc.m @@ -0,0 +1,183 @@ +function tc = armcc_tc +% Creates MinGW ToolchainInfo object. +% Copyright 2003-2019 (C) National Instruments Corp. + +tc = coder.make.ToolchainInfo('BuildArtifact', 'gmake makefile'); +tc.Name = 'armcc | gmake makefile (64-bit Windows)'; +tc.Platform = 'win64'; +tc.SupportedVersion = '7.3'; + +tool_path = [getenv('ARM_GCC_PATH') '\bin']; + +tc.addAttribute('TransformPathsWithSpaces'); +tc.addAttribute('RequiresCommandFile'); +tc.addAttribute('RequiresBatchFile'); + +% ------------------------------ +% Macros +% ------------------------------ +tc.addMacro('MW_EXTERNLIB_DIR', ['$(MATLAB_ROOT)\extern\lib\' tc.Platform '\microsoft']); +tc.addMacro('MW_LIB_DIR', ['$(MATLAB_ROOT)\lib\' tc.Platform]); +tc.addMacro('CFLAGS_ADDITIONAL', '-c -m32'); +tc.addMacro('CPPFLAGS_ADDITIONAL', '-c -m32'); +tc.addMacro('LIBS_TOOLCHAIN', '$(conlibs)'); +tc.addMacro('LINKFLAGS_ADDITIONAL', '-m32 -shared'); +tc.addMacro('CVARSFLAG', ''); +tc.addMacro('CFLAG', '-std=c90 -pedantic -fwrapv -m32'); + +tc.addIntrinsicMacros({'ldebug', 'conflags', 'cflags'}); + +% ------------------------------ +% C Compiler +% ------------------------------ + +tool = tc.getBuildTool('C Compiler'); + +tool.setName( 'arm-none-eabi-gcc'); +tool.setCommand( 'arm-none-eabi-gcc'); +tool.setPath( tool_path); + +tool.setDirective( 'IncludeSearchPath', '-I'); +tool.setDirective( 'PreprocessorDefine', '-D'); +tool.setDirective( 'OutputFlag', '-o'); +tool.setDirective( 'Debug', '-g'); + +tool.setFileExtension( 'Source', '.c'); +tool.setFileExtension( 'Header', '.h'); +tool.setFileExtension( 'Object', '.obj'); + +tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|'); + +% ------------------------------ +% C++ Compiler +% ------------------------------ + +tool = tc.getBuildTool('C++ Compiler'); + +tool.setName( 'arm-none-eabi-g++'); +tool.setCommand( 'arm-none-eabi-g++'); +tool.setPath( tool_path); + +tool.setDirective( 'IncludeSearchPath', '-I'); +tool.setDirective( 'PreprocessorDefine', '-D'); + +tool.setDirective( 'OutputFlag', '-o'); +tool.setDirective( 'Debug', '-g'); + +tool.setFileExtension( 'Source', '.cpp'); +tool.setFileExtension( 'Header', '.hpp'); +tool.setFileExtension( 'Object', '.obj'); + +tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|'); + +% ------------------------------ +% Linker +% ------------------------------ + +tool = tc.getBuildTool('Linker'); + +tool.setName( 'GCC Linker'); +tool.setCommand( 'arm-none-eabi-g++'); +tool.setPath( tool_path); + +tool.setDirective( 'Library', '-L'); +tool.setDirective( 'LibrarySearchPath', '-I'); +tool.setDirective( 'OutputFlag', '-o'); +tool.setDirective( 'Debug', ''); + +tool.setFileExtension( 'Executable', '.dll'); +tool.setFileExtension( 'Shared Library', '.dll'); + +tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|'); + +% ------------------------------ +% C++ Linker +% ------------------------------ + +tool = tc.getBuildTool('C++ Linker'); + +tool.setName( 'GCC Linker'); +tool.setCommand( 'arm-none-eabi-g++'); +tool.setPath( tool_path); + +tool.setDirective( 'Library', '-L'); +tool.setDirective( 'LibrarySearchPath', '-I'); +tool.setDirective( 'OutputFlag', '-o'); +tool.setDirective( 'Debug', ''); + +tool.setFileExtension( 'Executable', '.dll'); +tool.setFileExtension( 'Shared Library', '.dll'); + +tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|'); + +% ------------------------------ +% Archiver +% ------------------------------ + +tool = tc.getBuildTool('Archiver'); + +tool.setName( 'GNU Archiver'); +tool.setCommand( 'arm-none-eabi-ar'); +tool.setPath( tool_path); +tool.setDirective( 'OutputFlag', ''); +tool.setFileExtension( 'Static Library', '.a'); +tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|'); + +% ------------------------------ +% Builder +% ------------------------------ + +tc.setBuilderApplication(tc.Platform); + +% -------------------------------------------- +% BUILD CONFIGURATIONS +% -------------------------------------------- + +optimsOffOpts = {'-O0'}; +optimsOnOpts = {'-O2'}; +cCompilerOpts = '$(cflags) $(CVARSFLAG) $(CFLAGS_ADDITIONAL)'; +cppCompilerOpts = '$(cflags) $(CVARSFLAG) $(CPPFLAGS_ADDITIONAL)'; +linkerOpts = {'$(ldebug) $(conflags) $(LINKFLAGS_ADDITIONAL) $(LIBS_TOOLCHAIN)'}; +sharedLinkerOpts = horzcat(linkerOpts, '-shared -def:$(DEF_FILE)'); +archiverOpts = {'rcs'}; + +% Get the debug flag per build tool +debugFlag.CCompiler = '$(CDEBUG)'; +debugFlag.CppCompiler = '$(CPPDEBUG)'; +debugFlag.Linker = '$(LDDEBUG)'; +debugFlag.CppLinker = '$(CPPLDDEBUG)'; +debugFlag.Archiver = '$(ARDEBUG)'; + +% Set the toolchain flags for 'Faster Builds' build configuration + +cfg = tc.getBuildConfiguration('Faster Builds'); +cfg.setOption( 'C Compiler', horzcat(cCompilerOpts, optimsOffOpts)); +cfg.setOption( 'C++ Compiler', horzcat(cppCompilerOpts, optimsOffOpts)); +cfg.setOption( 'Linker', linkerOpts); +cfg.setOption( 'C++ Linker', linkerOpts); +cfg.setOption( 'Shared Library Linker', sharedLinkerOpts); +cfg.setOption( 'Archiver', archiverOpts); + +% Set the toolchain flags for 'Faster Runs' build configuration + +cfg = tc.getBuildConfiguration('Faster Runs'); +cfg.setOption( 'C Compiler', horzcat(cCompilerOpts, optimsOnOpts)); +cfg.setOption( 'C++ Compiler', horzcat(cppCompilerOpts, optimsOnOpts)); +cfg.setOption( 'Linker', linkerOpts); +cfg.setOption( 'C++ Linker', linkerOpts); +cfg.setOption( 'Shared Library Linker', sharedLinkerOpts); +cfg.setOption( 'Archiver', archiverOpts); + +% Set the toolchain flags for 'Debug' build configuration + +cfg = tc.getBuildConfiguration('Debug'); +cfg.setOption( 'C Compiler', horzcat(cCompilerOpts, optimsOffOpts, debugFlag.CCompiler)); +cfg.setOption( 'C++ Compiler', horzcat(cppCompilerOpts, optimsOffOpts, debugFlag.CppCompiler)); +cfg.setOption( 'Linker', horzcat(linkerOpts, debugFlag.Linker)); +cfg.setOption( 'C++ Linker', horzcat(linkerOpts, debugFlag.CppLinker)); +cfg.setOption( 'Shared Library Linker', horzcat(sharedLinkerOpts, debugFlag.Linker)); +cfg.setOption( 'Archiver', horzcat(archiverOpts, debugFlag.Archiver)); + +tc.setBuildConfigurationOption('all', 'Download', ''); +tc.setBuildConfigurationOption('all', 'Execute', ''); +tc.setBuildConfigurationOption('all', 'Make Tool', '-f $(MAKEFILE)'); diff --git a/B3_AP_ert_target/armcc_win_tc.mat b/B3_AP_ert_target/armcc_win_tc.mat new file mode 100644 index 0000000..36de060 Binary files /dev/null and b/B3_AP_ert_target/armcc_win_tc.mat differ diff --git a/B3_AP_ert_target/rtwTargetInfo.m b/B3_AP_ert_target/rtwTargetInfo.m new file mode 100644 index 0000000..2352f98 --- /dev/null +++ b/B3_AP_ert_target/rtwTargetInfo.m @@ -0,0 +1,22 @@ +function rtwTargetInfo(tr) +%RTWTARGETINFO Registration file for custom toolchains. +tr.registerTargetInfo(@loc_createToolchain); +end + +% ------------------------------------------------------------------------- +% Create the ToolchainInfoRegistry entries +% ------------------------------------------------------------------------- +function config = loc_createToolchain + +i = 1; +%% Windows +if exist(fullfile(fileparts(mfilename('fullpath')), 'armcc_win_tc.mat'), 'file') == 2 + config(i) = coder.make.ToolchainInfoRegistry; + config(i).Name = 'armcc | gmake makefile (64-bit Windows)'; + config(i).FileName = fullfile(fileparts(mfilename('fullpath')), 'armcc_win_tc.mat'); + config(i).TargetHWDeviceType = {'*'}; + config(i).Platform = {computer('arch')}; + i = i + 1; +end + +end