Hi,
Ich weiß nicht, ob ich im richtigen Unterforum gepostet habe. Falls
nicht, bitte entsprechend verschieben.
Jetzt zu meinem Anliegen. Ich habe aktuell ein komplexeres
Firmware-Projekt, in dem ich einen Hardware-Abstraction-Layer
implementiert habe. Dieser dient zum softwareseitigen Verknüpfen der
einzelnen Module.
Der Code sieht, wie nachfolgend dargestellt, aus:
1 | /*----------------------------------------------*/
|
2 | /* modul_1.c
|
3 | uint16_t func1(uint16_t param1, uint16_t param2)
|
4 | {
|
5 | ...
|
6 | }
|
7 |
|
8 | uint16_t func2(uint16_t param1, uint16_t param2)
|
9 | {
|
10 | ...
|
11 | }
|
12 | /*----------------------------------------------*/
|
13 |
|
14 | /*----------------------------------------------*/
|
15 | /* Abslayer.c
|
16 | uint16_t layer_func1(uint16_t param1, uint16_t param2)
|
17 | {
|
18 | return func1(param1, param2);
|
19 | }
|
20 |
|
21 | uint16_t layer_func2(uint16_t param1, uint16_t param2)
|
22 | {
|
23 | return func2(param1, param2);
|
24 | }
|
25 | /*----------------------------------------------*/
|
Wie man erkennt, wird im Abstraktionslayer nur die eigentliche Funktion
aus dem Hardwaremodul aufgerufen. Dies hat aber zur Folge, dass sich
dadurch die Sprungtiefe erhöht und somit die Stackbelastung steigt.
Meine Frage ist, kann man dies "eleganter" lösen und somit die
Sprungtiefe reduzieren? Die Hardwareabstraktionschicht möchte ich aber
belassen.
Danke Nobbie