8.2.2. 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_RTOS) 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_RTOS + 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_RTOS) 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_RTOS + 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_RTOS + 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", "hw_info"), 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_RTOS + 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_RTOS + 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