Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert "Made Nodes platform dependant and not variant dependant. Variants to …" #104

Merged
merged 1 commit into from
Nov 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,9 @@ if platform:
if targets:
# TODO: Handle
pass
for part in platforms[platform]["ecu"]:
target_dict[part] = platforms[platform]["ecu"][part]
for parts in platforms[platform]["ecu"]:
for id in parts:
target_dict[id] = parts[id]
else:
print(
f"Platform string '{platform}' does not match any platform in 'site_scons/platforms.yaml'"
Expand Down
240 changes: 116 additions & 124 deletions components/bms_worker/SConscript
Original file line number Diff line number Diff line change
Expand Up @@ -295,134 +295,126 @@ binaries_crced = []
asms = []

for config_id, config in configs.items():
nodes = []
try:
nodes = list(range(0, CONFIG_IDS[config_id]["nodes"]))
except Exception as e:
print("No nodeId specified, assuming Network Node 0.")
nodes = [ 0 ]

for nodeId in nodes:
variant_dir = BUILDS_DIR.Dir(
"_".join(config["description"].split(" ")) + f"_{config_id}/Node{nodeId}"
variant_dir = BUILDS_DIR.Dir(
"_".join(config["description"].split(" ")) + f"_{config_id}"
)
generated_dir = variant_dir.Dir("generated")
makedirs(generated_dir.abspath, exist_ok=True)

generated_sources = NETWORK_ENV.GenerateNodes({ f"bmsw_{config['options']['canIdOffset']}": generated_dir, })

if "features" in config:
features = {"features": env.GenerateFeatures(feature_definitions, config["features"]) }
generated_features = render_generated_files(features, renderers["featureDefs"], generated_dir)
else:
generated_features = None

if "options" in config:
generated_defs = render_generated_files(config["options"], renderers["buildDefs"], generated_dir)
else:
generated_defs = None

## actually compile stuff
include_dirs = paths + [generated_dir]
env["CPPPATH"] = include_dirs

uds_env = env.Clone()
uds_env.Append(
CCFLAGS=[
"-Wno-missing-prototypes",
"-Wno-unused-parameter",
"-DBYTE_ORDER=_BYTE_ORDER",
"-DLITTLE_ENDIAN=_LITTLE_ENDIAN",
"-Wno-inline",
"-Wno-conversion",
]
)

rtos_env.Append(
CPPPATH=paths,
CCFLAGS=common_flags + c_flags + free_rtos_flags,
)

objs = [] # store objects here

# compile platform files
objs.extend(
compile_objects(
env,
platform_src_files,
variant_dir=variant_dir,
target_dir="embedded/",
CPPPATH=paths + [generated_dir],
)
generated_dir = variant_dir.Dir("generated")
makedirs(generated_dir.abspath, exist_ok=True)

generated_sources = NETWORK_ENV.GenerateNodes({ f"bmsw_{nodeId}": generated_dir, })

if "features" in config:
features = {"features": env.GenerateFeatures(feature_definitions, config["features"]) }
generated_features = render_generated_files(features, renderers["featureDefs"], generated_dir)
else:
generated_features = None

if "options" in config and config["options"] is not None:
generated_defs = render_generated_files(config["options"], renderers["buildDefs"], generated_dir)
else:
generated_defs = None

## actually compile stuff
include_dirs = paths + [generated_dir]
env["CPPPATH"] = include_dirs

uds_env = env.Clone()
uds_env.Append(
CCFLAGS=[
"-Wno-missing-prototypes",
"-Wno-unused-parameter",
"-DBYTE_ORDER=_BYTE_ORDER",
"-DLITTLE_ENDIAN=_LITTLE_ENDIAN",
"-Wno-inline",
"-Wno-conversion",
]
)

rtos_env.Append(
CPPPATH=paths,
CCFLAGS=common_flags + c_flags + free_rtos_flags,
)

# compile rtos source files
objs.extend(
compile_objects(
rtos_env,
rtos_src_files,
variant_dir=variant_dir,
target_dir="FreeRTOS/",
CPPPATH=paths + [generated_dir],
)

objs = [] # store objects here

# compile platform files
objs.extend(
compile_objects(
env,
platform_src_files,
variant_dir=variant_dir,
target_dir="embedded/",
CPPPATH=paths + [generated_dir],
)
)

gen_srcs = []
for generated_source in generated_sources:
gen_srcs += [generated_dir.File(generated_source)]

# compile project source files
objs.extend(
compile_objects(
env,
src_files,
variant_dir=variant_dir,
CPPPATH=paths + [generated_dir],
)

# compile rtos source files
objs.extend(
compile_objects(
rtos_env,
rtos_src_files,
variant_dir=variant_dir,
target_dir="FreeRTOS/",
CPPPATH=paths + [generated_dir],
)
)

# compile UDS source files
objs.extend(compile_objects(uds_env, uds_srcs, variant_dir=variant_dir, target_dir="uds/"))

objs.extend(
compile_objects(
env,
gen_srcs,
variant_dir=variant_dir,
target_dir=variant_dir.Dir("generated/obj"),
CPPPATH=paths + [generated_dir],
)

gen_srcs = []
for generated_source in generated_sources:
gen_srcs += [generated_dir.File(generated_source)]

# compile project source files
objs.extend(
compile_objects(
env,
src_files,
variant_dir=variant_dir,
CPPPATH=paths + [generated_dir],
)
)

# compile UDS source files
objs.extend(compile_objects(uds_env, uds_srcs, variant_dir=variant_dir, target_dir="uds/"))

objs.extend(
compile_objects(
env,
gen_srcs,
variant_dir=variant_dir,
target_dir=variant_dir.Dir("generated/obj"),
CPPPATH=paths + [generated_dir],
)
)


# link all the compiled objects into an elf
elf, map = env.Program(
variant_dir.File(ARTIFACT_NAME + ".elf"),
objs,
MAPFILE=variant_dir.File(ARTIFACT_NAME + ".map"),
)
elfs.append(elf)
Depends(elf, env["LINKSCRIPT"])
Clean(elf, variant_dir)

# generate a binary for flashing
binary = env.Bin(source=elf)
binaries.append(binary)

crc_env = PLATFORM_ENV.Clone(tools=["hextools"])

# generate the CRCd binary
binaries_crced.append(
crc_env.InjectMpeg2CRC(source=binary, start_addr=APP_START_ADDR)
)

# Generate compile_commands.json
compile_db = env.CompilationDatabase(variant_dir.File("compile_commands.json"))
Depends(compile_db, objs)
# generate it by default
Default(compile_db)
# add an alias to _only_ generate the compilation database
env.Alias("compiledb", compile_db)
)


# link all the compiled objects into an elf
elf, map = env.Program(
variant_dir.File(ARTIFACT_NAME + ".elf"),
objs,
MAPFILE=variant_dir.File(ARTIFACT_NAME + ".map"),
)
elfs.append(elf)
Depends(elf, env["LINKSCRIPT"])
Clean(elf, variant_dir)

# generate a binary for flashing
binary = env.Bin(source=elf)
binaries.append(binary)

crc_env = PLATFORM_ENV.Clone(tools=["hextools"])

# generate the CRCd binary
binaries_crced.append(
crc_env.InjectMpeg2CRC(source=binary, start_addr=APP_START_ADDR)
)

# Generate compile_commands.json
compile_db = env.CompilationDatabase(variant_dir.File("compile_commands.json"))
Depends(compile_db, objs)
# generate it by default
Default(compile_db)
# add an alias to _only_ generate the compilation database
env.Alias("compiledb", compile_db)

Default(binaries_crced)

Expand Down
1 change: 1 addition & 0 deletions components/bms_worker/src/CAN/CANIO-tx.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include "string.h"

// imports for data access
#include "BuildDefines_generated.h"
#include "BatteryMonitoring.h"
#include "Cooling.h"
#include "Environment.h"
Expand Down
42 changes: 42 additions & 0 deletions components/bms_worker/variants.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,48 @@
configs:
0:
description: BMS Worker
options:
canIdOffset: 0
features:
feature_bmsw_faults: false
feature_uds: true

1:
description: BMS Worker
options:
canIdOffset: 1
features:
feature_bmsw_faults: false
feature_uds: true

2:
description: BMS Worker
options:
canIdOffset: 2
features:
feature_bmsw_faults: false
feature_uds: true

3:
description: BMS Worker
options:
canIdOffset: 3
features:
feature_bmsw_faults: false
feature_uds: true

4:
description: BMS Worker
options:
canIdOffset: 4
features:
feature_bmsw_faults: false
feature_uds: true

5:
description: BMS Worker
options:
canIdOffset: 5
features:
feature_bmsw_faults: false
feature_uds: true
30 changes: 17 additions & 13 deletions site_scons/platforms.yaml
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
cfr24:
ecu:
bmsw:
0:
nodes: 6
bmsb:
0:
bl:
0: # BMS Worker
1: # BMS Worker
2: # BMS Worker
3: # BMS Worker
4: # BMS Worker
5: # BMS Worker
10: # BMS Boss
- bmsw:
- 0
- 1
- 2
- 3
- 4
- 5
- bmsb:
- 0
- bl:
- 0 # BMS Worker
- 1 # BMS Worker
- 2 # BMS Worker
- 3 # BMS Worker
- 4 # BMS Worker
- 5 # BMS Worker
- 10 # BMS Boss
2 changes: 1 addition & 1 deletion site_scons/site_tools/variants.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def GenerateVariants(env, variants_file: FS.File, config_ids: List[int] = list()
if config_ids:
return dict(filter(lambda item: item[0] in config_ids, variants["configs"].items()))

return variants["configs"]
return variants["configs"]


def generate(env):
Expand Down