8.2.4. How to Use Generated Sources from HALCoGen
Note
A documentation of the tool HALCoGen can be found in HALCoGen tool documentation, the waf-tool wrapper for this project in HALCoGen and information on configuring HALCoGen in the context of the toolchain of this project in HALCoGen.
The following steps need to be applied:
Removing the HALCoGen dependency in the compiler tool:
remove loading the the
f_hcg
tool in theconfigure
step.in the
class search_swi(Task.Task)
the class attributeafter
needs to be modified. Remove the entryhcg_compiler
from the list.
Adding the sources:
The generated HAL files need to be copied into the
src/hal
directoryThe
wscript
insrc/hal
needs to be modified:1 2def build(bld): 3 """Build the HAL library""" 4 source = [ 5 # list sources here, most likely something like 'source/abc.c', 6 # 'source/abc.asm' etc. 7 ] 8 includes = [ 9 # list include directories here, most likely 'include' 10 ] 11 target = f"{bld.env.APPNAME.lower()}-hal" 12 cflags = bld.env.CFLAGS_HAL 13 14 bld.stlib( 15 source=source, 16 includes=includes, 17 cflags=cflags, 18 target=target, 19 )
Add the
include
directory in allwscript
-files where needed. This will affect mostwscript
-files. This looks e.g., like this for a FreeRTOS and LTC6806 configuration:1diff --git a/src/app/application/algorithm/wscript b/src/app/application/algorithm/wscript 2index c4d837c4..2d1580fa 100644 3--- a/src/app/application/algorithm/wscript 4+++ b/src/app/application/algorithm/wscript 5@@ -77,6 +77,7 @@ def build(bld): 6 os.path.join("..", "..", "main", "include"), 7 os.path.join("..", "..", "task", "config"), 8 os.path.join("..", "..", "task", "os"), 9+ os.path.join("..", "..", "..", "hal", "include"), 10 ] 11 includes.extend(bld.env.INCLUDES_OPERATING_SYSTEM) 12 cflags = bld.env.CFLAGS_FOXBMS 13diff --git a/src/app/application/wscript b/src/app/application/wscript 14index a9462e21..1fdb5850 100644 15--- a/src/app/application/wscript 16+++ b/src/app/application/wscript 17@@ -88,6 +88,7 @@ def build(bld): 18 os.path.join("..", "main", "include"), 19 os.path.join("..", "task", "config"), 20 os.path.join("..", "task", "os"), 21+ os.path.join("..", "..", "hal", "include"), 22 ] 23 includes.extend(bld.env.INCLUDES_OPERATING_SYSTEM + bld.env.INCLUDES_AFE) 24 cflags = bld.env.CFLAGS_FOXBMS 25diff --git a/src/app/driver/afe/ltc/6806/wscript b/src/app/driver/afe/ltc/6806/wscript 26index d7ca3af9..0cc6c777 100644 27--- a/src/app/driver/afe/ltc/6806/wscript 28+++ b/src/app/driver/afe/ltc/6806/wscript 29@@ -71,6 +71,7 @@ def build(bld): 30 os.path.join("..", "..", "..", "..", "engine", "diag"), 31 os.path.join("..", "..", "..", "..", "main", "include"), 32 os.path.join("..", "..", "..", "..", "task", "os"), 33+ os.path.join("..", "..", "..", "..", "..", "hal", "include"), 34 ] 35 includes.extend(bld.env.INCLUDES_OPERATING_SYSTEM) 36 cflags = bld.env.CFLAGS_FOXBMS 37diff --git a/src/app/driver/wscript b/src/app/driver/wscript 38index c6b42f89..26369502 100644 39--- a/src/app/driver/wscript 40+++ b/src/app/driver/wscript 41@@ -122,6 +122,7 @@ def build(bld): 42 os.path.join("..", "main", "include"), 43 os.path.join("..", "task", "config"), 44 os.path.join("..", "task", "os"), 45+ os.path.join("..", "..", "hal", "include"), 46 ] 47 includes.extend(bld.env.INCLUDES_OPERATING_SYSTEM + bld.env.INCLUDES_AFE) 48 cflags = bld.env.CFLAGS_FOXBMS 49diff --git a/src/app/engine/wscript b/src/app/engine/wscript 50index 03873567..118c66b6 100644 51--- a/src/app/engine/wscript 52+++ b/src/app/engine/wscript 53@@ -83,6 +83,7 @@ def build(bld): 54 os.path.join("..", "main", "include"), 55 os.path.join("..", "task", "os"), 56 os.path.join("..", "task", "config"), 57+ os.path.join("..", "..", "hal", "include"), 58 ] 59 includes.extend(bld.env.INCLUDES_OPERATING_SYSTEM + bld.env.INCLUDES_AFE) 60 target = f"{bld.env.APPNAME.lower()}-engine" 61diff --git a/src/app/main/wscript b/src/app/main/wscript 62index 1945b079..a47c3e20 100644 63--- a/src/app/main/wscript 64+++ b/src/app/main/wscript 65@@ -69,6 +69,7 @@ def build(bld): 66 os.path.join("..", "engine", "hwinfo"), 67 os.path.join("..", "task", "os"), 68 os.path.join("..", "task", "config"), 69+ os.path.join("..", "..", "hal", "include"), 70 ] 71 includes.extend(bld.env.INCLUDES_OPERATING_SYSTEM + bld.env.INCLUDES_AFE) 72 cflags = bld.env.CFLAGS_FOXBMS 73diff --git a/src/app/task/wscript b/src/app/task/wscript 74index d2479891..1b584c01 100644 75--- a/src/app/task/wscript 76+++ b/src/app/task/wscript 77@@ -85,6 +85,7 @@ def build(bld): 78 os.path.join("..", "engine", "sys_mon"), 79 os.path.join("..", "engine", "sys"), 80 os.path.join("..", "main", "include"), 81+ os.path.join("..", "..", "hal", "include"), 82 ] 83 includes.extend(bld.env.INCLUDES_OPERATING_SYSTEM + bld.env.INCLUDES_AFE) 84 cflags = bld.env.CFLAGS_FOXBMS 85diff --git a/src/os/freertos/wscript b/src/os/freertos/wscript 86index 2d91582e..c32227aa 100644 87--- a/src/os/freertos/wscript 88+++ b/src/os/freertos/wscript 89@@ -66,6 +66,7 @@ def build(bld): 90 os.path.join("..", "..", "app", "main", "include"), 91 os.path.join("..", "..", "app", "task"), 92 os.path.join("..", "..", "app", "task", "config"), 93+ os.path.join("..", "..", "hal", "include"), 94 ] 95 target = f"{bld.env.APPNAME.lower()}-os" 96 cflags = bld.env.CFLAGS_OS