Fix for ZC projects using RTE checkpoint calls
Change-Id: I5f97936ae6986d3592cb08f3eacc8db1bab502ba
This commit is contained in:
parent
c41611432e
commit
380b8b978e
@ -120,6 +120,7 @@ This key is used to set individual options to match the old ECU types, see examp
|
||||
"generateCoreDummy": true,
|
||||
"generateDummyVar": true,
|
||||
"generateInterfaceHeaders": false,
|
||||
"generateRteCheckpointIds": false,
|
||||
"generateYamlInterfaceFile": false,
|
||||
"propagateTagName": true,
|
||||
"useA2lSymbolLinks": true,
|
||||
@ -169,6 +170,10 @@ Instead of generating required header files,
|
||||
custom header files can be copied to the output foler by listing them in "includesPaths".
|
||||
Paths should be relative to the location of *ProjectCfg.json* file.
|
||||
|
||||
#### generateRteCheckpointIds
|
||||
|
||||
Add RTE checkpoint ID definitions to the generated scheduling functions.
|
||||
|
||||
#### generateYamlInterfaceFile
|
||||
|
||||
Generate a yaml file containing all metadata for the project.
|
||||
|
@ -70,6 +70,7 @@ class BuildProjConfig:
|
||||
'generateCoreDummy': False,
|
||||
'generateDummyVar': False,
|
||||
'generateInterfaceHeaders': False,
|
||||
'generateRteCheckpointIds': False,
|
||||
'generateYamlInterfaceFile': False,
|
||||
'propagateTagName': False,
|
||||
'useA2lSymbolLinks': False,
|
||||
@ -249,7 +250,6 @@ class BuildProjConfig:
|
||||
|
||||
def _parse_composition_config(self, file_config):
|
||||
"""Parse the composition configuration from project config."""
|
||||
a2lname = f"{self.get_a2l_cfg()['name']}_SC"
|
||||
composition_config = {
|
||||
'compositionName': None,
|
||||
'compositionEnding': 'yml',
|
||||
@ -257,7 +257,7 @@ class BuildProjConfig:
|
||||
'customYamlInitFunctionName': file_config.get("customYamlInitFunctionName", None),
|
||||
'customYamlStepFunctionName': file_config.get("customYamlStepFunctionName", None),
|
||||
'generateExternalImplementationType': file_config.get("generateExternalImplementationType", True),
|
||||
'softwareComponentName': file_config.get("softwareComponentName", a2lname),
|
||||
'softwareComponentName': file_config.get("softwareComponentName", self.get_a2l_cfg()['name']),
|
||||
'softwareComponentTemplate': file_config.get('softwareComponentTemplate', None),
|
||||
'softwareComponentBase': file_config.get('softwareComponentBase', 'QM'),
|
||||
'includeStatic': file_config.get('includeStatic', True),
|
||||
|
@ -57,8 +57,11 @@ class SchedFuncs(ProblemLogger):
|
||||
Args:
|
||||
generate_rte_checkpoint_calls (bool): Generate RTE function checkpoint calls.
|
||||
"""
|
||||
a2l_config = self._prj_cfg.get_a2l_cfg()
|
||||
a2l_name = a2l_config["name"]
|
||||
generate_rte_checkpoint_ids = self._prj_cfg.get_code_generation_config("generateRteCheckpointIds")
|
||||
include_name = self._prj_cfg.get_composition_config("softwareComponentName")
|
||||
function_name = self._prj_cfg.get_composition_config("compositionName")
|
||||
if function_name is None:
|
||||
function_name = include_name
|
||||
dst_dir = self._prj_cfg.get_src_code_dst_dir()
|
||||
unit_raster_cfg = self._prj_cfg.get_units_raster_cfg()
|
||||
per_unit_cfg = self._unit_cfg.get_per_unit_cfg()
|
||||
@ -87,9 +90,10 @@ class SchedFuncs(ProblemLogger):
|
||||
else:
|
||||
init_call_s += f' RESTART_{unit_name}();\n'
|
||||
else:
|
||||
includes = f'#include "Rte_{a2l_name}.h"\n\n' if generate_rte_checkpoint_calls else ""
|
||||
includes = f'#include "Rte_{include_name}.h"\n\n' if generate_rte_checkpoint_calls else ""
|
||||
ext_def_str = ""
|
||||
call_str = f'#include "{build_defs.CVC_CODE_START}"\n\n'
|
||||
ext_def_rte_str = ""
|
||||
call_str = f'#include "{build_defs.CVC_CODE_START}"\n'
|
||||
call_str += f'void {prefix}{raster}(void)\n{{\n'
|
||||
for unit in unit_raster_cfg['Rasters'][raster]:
|
||||
if unit not in SchedFuncs.RESTART_FNC_EXCLUDE and 'code_generator' in per_unit_cfg[unit]:
|
||||
@ -106,18 +110,20 @@ class SchedFuncs(ProblemLogger):
|
||||
init_call_s += f' {unit_name}_initialize();\n'
|
||||
else:
|
||||
ext_def_str += f'extern void {unit_name}(void);\n'
|
||||
if generate_rte_checkpoint_ids:
|
||||
ext_def_rte_str += f'extern {function_name}FctList ID_{unit_name};\n'
|
||||
if generate_rte_checkpoint_calls:
|
||||
call_str += (
|
||||
f' Rte_Call_{a2l_name}_'
|
||||
f'{a2l_name}LogicalCheckpointReached_CddPFMC_ASILD_'
|
||||
f'{a2l_name}_LogicalCheckpointReached(ID_{unit_name});\n'
|
||||
f' Rte_Call_{function_name}_'
|
||||
f'{function_name}LogicalCheckpointReached_CddPFMC_ASILD_'
|
||||
f'{function_name}_LogicalCheckpointReached(ID_{unit_name});\n'
|
||||
)
|
||||
call_str += f' {unit_name}();\n'
|
||||
if unit_name not in SchedFuncs.RESTART_FNC_EXCLUDE:
|
||||
init_ext_def_s += f'extern void RESTART_{unit_name}(void);\n'
|
||||
init_call_s += f' RESTART_{unit_name}();\n'
|
||||
ext_def_str += '\n'
|
||||
call_str += '}\n\n'
|
||||
ext_def_str += '\n' + ext_def_rte_str + '\n'
|
||||
call_str += '}\n'
|
||||
call_str += f'#include "{build_defs.CVC_CODE_END}"\n\n'
|
||||
|
||||
file_name = pjoin(dst_dir, f'{raster}.c')
|
||||
|
Loading…
x
Reference in New Issue
Block a user