From 01acd6307a24bd3463a4ac6a3a34234db0a4a699 Mon Sep 17 00:00:00 2001
From: jtkenny <jtkenny@iastate.edu>
Date: Fri, 29 Mar 2024 20:18:26 +0100
Subject: [PATCH] got to undefined ref

---
 .../deck/core/deck.c                          |   3 +-
 .../deck/core/deck_drivers.c                  |  18 +-
 .../deck/core/deck_info.c                     | 213 +++++-----
 .../deck/core/deck_memory.c                   |   3 +-
 .../deck/core/deck_test.c                     |   3 +-
 .../deck/drivers/src/aideck.c                 |   6 +-
 .../deck/drivers/src/bigquad.c                |   3 +-
 .../deck/drivers/src/cppmdeck.c               |   3 +-
 .../deck/drivers/src/gtgps.c                  |   6 +-
 .../deck/drivers/src/ledring12.c              |   3 +-
 .../deck/drivers/src/usddeck.c                | 365 +++++++++---------
 .../src/lighthouse/lighthouse_deck_flasher.c  | 109 +++---
 .../src/lighthouse/lighthouse_position_est.c  | 159 ++++----
 .../src/lighthouse/lighthouse_storage.c       |  39 +-
 .../uart/Makefile                             |   4 +-
 .../uart/build/FreeRTOS-openocd.o             | Bin 0 -> 1056 bytes
 .../uart/build/configblockeeprom.o            | Bin 0 -> 4136 bytes
 .../uart/build/deck_drivers.o                 | Bin 2704 -> 2312 bytes
 .../uart/build/deck_info.o                    | Bin 9928 -> 5440 bytes
 .../uart/build/deck_memory.o                  | Bin 2952 -> 2952 bytes
 .../uart/build/filter.o                       | Bin 1728 -> 1424 bytes
 .../uart/build/kve.o                          | Bin 0 -> 2632 bytes
 .../uart/build/kve_storage.o                  | Bin 0 -> 2912 bytes
 .../uart/build/ledring12.o                    | Bin 19616 -> 19616 bytes
 .../uart/build/lighthouse_calibration.o       | Bin 0 -> 1544 bytes
 .../uart/build/lighthouse_core.o              | Bin 0 -> 15968 bytes
 .../uart/build/lighthouse_deck_flasher.o      | Bin 0 -> 1768 bytes
 .../uart/build/lighthouse_geometry.o          | Bin 0 -> 3440 bytes
 .../uart/build/lighthouse_position_est.o      | Bin 0 -> 8848 bytes
 .../uart/build/lighthouse_storage.o           | Bin 0 -> 4104 bytes
 .../uart/build/ootx_decoder.o                 | Bin 0 -> 1568 bytes
 .../uart/build/pulse_processor.o              | Bin 0 -> 2648 bytes
 .../uart/build/pulse_processor_v1.o           | Bin 0 -> 4120 bytes
 .../uart/build/pulse_processor_v2.o           | Bin 0 -> 3480 bytes
 .../uart/build/rateSupervisor.o               | Bin 0 -> 1240 bytes
 .../uart/build/sleepus.o                      | Bin 0 -> 1152 bytes
 .../uart/build/statsCnt.o                     | Bin 0 -> 1480 bytes
 .../uart/build/usddeck.o                      | Bin 23936 -> 13376 bytes
 .../utils/src/filter.c                        |  21 +-
 .../utils/src/kve/kve.c                       |  94 ++---
 .../utils/src/kve/kve_storage.c               |  66 ++--
 .../src/lighthouse/lighthouse_calibration.c   | 101 ++---
 .../src/lighthouse/lighthouse_geometry.c      |  26 +-
 43 files changed, 643 insertions(+), 602 deletions(-)
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/FreeRTOS-openocd.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/configblockeeprom.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/kve.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/kve_storage.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_calibration.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_core.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_deck_flasher.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_geometry.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_position_est.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_storage.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/ootx_decoder.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/pulse_processor.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/pulse_processor_v1.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/pulse_processor_v2.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/rateSupervisor.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/sleepus.o
 create mode 100644 uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/statsCnt.o

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck.c
index 7201c105b..70576aab9 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck.c
@@ -26,7 +26,8 @@
 
 #define DEBUG_MODULE "DECK_CORE"
 
-#include <string.h>
+//COMMENTED FIRMWARE
+//#include <string.h>
 
 #include "deck.h"
 #include "deck_memory.h"
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_drivers.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_drivers.c
index 8cd762ee6..77fd37a8c 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_drivers.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_drivers.c
@@ -27,7 +27,8 @@
 #define DEBUG_MODULE "DECK_DRIVERS"
 
 #include <stdlib.h>
-#include <string.h>
+//COMMENTED FIRMWARE
+// #include <string.h>
 
 #include "deck.h"
 #include "debug.h"
@@ -97,14 +98,15 @@ const DeckDriver* deckFindDriverByVidPid(uint8_t vid, uint8_t pid) {
 }
 
 const DeckDriver* deckFindDriverByName(char* name) {
-  int i;
+  //COMMENTED FIRMWARE
+  // int i;
 
-  deckdriversInit();
+  // deckdriversInit();
 
-  for (i=0; i<driversLen; i++) {
-    if (!strcmp(name, drivers[i]->name)) {
-      return drivers[i];
-    }
-  }
+  // for (i=0; i<driversLen; i++) {
+  //   if (!strcmp(name, drivers[i]->name)) {
+  //     return drivers[i];
+  //   }
+  // }
   return NULL;
 }
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_info.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_info.c
index 351b68f5b..1f30e8c26 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_info.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_info.c
@@ -26,7 +26,8 @@
 
 #include <stdlib.h>
 #include <stdbool.h>
-#include <string.h>
+//COMMENTED FIRMWARE
+//#include <string.h>
 
 #define DEBUG_MODULE "DECK_INFO"
 
@@ -99,16 +100,17 @@ static const DeckDriver * findDriver(DeckInfo *deck)
   char name[30];
   const DeckDriver *driver = &dummyDriver;
 
-  deckTlvGetString(&deck->tlv, DECK_INFO_NAME, name, 30);
+  //COMMENTED FIRMWARE
+  // deckTlvGetString(&deck->tlv, DECK_INFO_NAME, name, 30);
 
-  if (deck->vid) {
-    driver = deckFindDriverByVidPid(deck->vid, deck->pid);
-  } else if (strlen(name)>0) {
-    driver = deckFindDriverByName(name);
-  }
+  // if (deck->vid) {
+  //   driver = deckFindDriverByVidPid(deck->vid, deck->pid);
+  // } else if (strlen(name)>0) {
+  //   driver = deckFindDriverByName(name);
+  // }
 
-  if (driver == NULL)
-    driver = &dummyDriver;
+  // if (driver == NULL)
+  //   driver = &dummyDriver;
 
   return driver;
 }
@@ -176,87 +178,88 @@ static bool infoDecode(DeckInfo * info)
 
 static void enumerateDecks(void)
 {
-  uint8_t nDecks = 0;
-  bool noError = true;
-
-  owInit();
-
-  if (owScan(&nDecks))
-  {
-    DECK_INFO_DBG_PRINT("Found %d deck memor%s.\n", nDecks, nDecks>1?"ies":"y");
-  } else {
-    DEBUG_PRINT("Error scanning for deck memories, "
-                "no deck drivers will be initialised\n");
-    nDecks = 0;
-  }
-
-#ifndef IGNORE_OW_DECKS
-  for (int i = 0; i < nDecks; i++)
-  {
-    DECK_INFO_DBG_PRINT("Enumerating deck %i\n", i);
-    if (owRead(i, 0, sizeof(deckInfos[0].raw), (uint8_t *)&deckInfos[i]))
-    {
-      if (infoDecode(&deckInfos[i]))
-      {
-        deckInfos[i].driver = findDriver(&deckInfos[i]);
-        printDeckInfo(&deckInfos[i]);
-      } else {
-#ifdef DEBUG
-        DEBUG_PRINT("Deck %i has corrupt OW memory. "
-                    "Ignoring the deck in DEBUG mode.\n", i);
-        deckInfos[i].driver = &dummyDriver;
-#else
-        DEBUG_PRINT("Deck %i has corrupt OW memory. "
-                    "No driver will be initialized!\n", i);
-        noError = false;
-#endif
-      }
-    }
-    else
-    {
-      DEBUG_PRINT("Reading deck nr:%d [FAILED]. "
-                  "No driver will be initialized!\n", i);
-      noError = false;
-    }
-  }
-#else
-  DEBUG_PRINT("Ignoring all OW decks because of compile flag.\n");
-  nDecks = 0;
-#endif
-
-  // Add build-forced driver
-  if (strlen(deck_force) > 0) {
-    DEBUG_PRINT("DECK_FORCE=%s found\n", deck_force);
-  	//split deck_force into multiple, separated by colons, if available
-    char delim[] = ":";
-
-    char temp_deck_force[strlen(deck_force) + 1];
-    strcpy(temp_deck_force, deck_force);
-    char * token = strtok(temp_deck_force, delim);
-
-    while (token) {
-      deck_force = token;
-
-      const DeckDriver *driver = deckFindDriverByName(deck_force);
-      if (!driver) {
-        DEBUG_PRINT("WARNING: compile-time forced driver %s not found\n", deck_force);
-      } else if (driver->init || driver->test) {
-        if (nDecks <= DECK_MAX_COUNT)
-        {
-          nDecks++;
-          deckInfos[nDecks - 1].driver = driver;
-          DEBUG_PRINT("compile-time forced driver %s added\n", deck_force);
-        } else {
-          DEBUG_PRINT("WARNING: No room for compile-time forced driver\n");
-        }
-      }
-      token = strtok(NULL, delim);
-    }
-  }
-
-  if (noError) {
-    count = nDecks;
-  }
+  //COMMENTED FIRMWARE
+//   uint8_t nDecks = 0;
+//   bool noError = true;
+
+//   owInit();
+
+//   if (owScan(&nDecks))
+//   {
+//     DECK_INFO_DBG_PRINT("Found %d deck memor%s.\n", nDecks, nDecks>1?"ies":"y");
+//   } else {
+//     DEBUG_PRINT("Error scanning for deck memories, "
+//                 "no deck drivers will be initialised\n");
+//     nDecks = 0;
+//   }
+
+// #ifndef IGNORE_OW_DECKS
+//   for (int i = 0; i < nDecks; i++)
+//   {
+//     DECK_INFO_DBG_PRINT("Enumerating deck %i\n", i);
+//     if (owRead(i, 0, sizeof(deckInfos[0].raw), (uint8_t *)&deckInfos[i]))
+//     {
+//       if (infoDecode(&deckInfos[i]))
+//       {
+//         deckInfos[i].driver = findDriver(&deckInfos[i]);
+//         printDeckInfo(&deckInfos[i]);
+//       } else {
+// #ifdef DEBUG
+//         DEBUG_PRINT("Deck %i has corrupt OW memory. "
+//                     "Ignoring the deck in DEBUG mode.\n", i);
+//         deckInfos[i].driver = &dummyDriver;
+// #else
+//         DEBUG_PRINT("Deck %i has corrupt OW memory. "
+//                     "No driver will be initialized!\n", i);
+//         noError = false;
+// #endif
+//       }
+//     }
+//     else
+//     {
+//       DEBUG_PRINT("Reading deck nr:%d [FAILED]. "
+//                   "No driver will be initialized!\n", i);
+//       noError = false;
+//     }
+//   }
+// #else
+//   DEBUG_PRINT("Ignoring all OW decks because of compile flag.\n");
+//   nDecks = 0;
+// #endif
+
+//   // Add build-forced driver
+//   if (strlen(deck_force) > 0) {
+//     DEBUG_PRINT("DECK_FORCE=%s found\n", deck_force);
+//   	//split deck_force into multiple, separated by colons, if available
+//     char delim[] = ":";
+
+//     char temp_deck_force[strlen(deck_force) + 1];
+//     strcpy(temp_deck_force, deck_force);
+//     char * token = strtok(temp_deck_force, delim);
+
+//     while (token) {
+//       deck_force = token;
+
+//       const DeckDriver *driver = deckFindDriverByName(deck_force);
+//       if (!driver) {
+//         DEBUG_PRINT("WARNING: compile-time forced driver %s not found\n", deck_force);
+//       } else if (driver->init || driver->test) {
+//         if (nDecks <= DECK_MAX_COUNT)
+//         {
+//           nDecks++;
+//           deckInfos[nDecks - 1].driver = driver;
+//           DEBUG_PRINT("compile-time forced driver %s added\n", deck_force);
+//         } else {
+//           DEBUG_PRINT("WARNING: No room for compile-time forced driver\n");
+//         }
+//       }
+//       token = strtok(NULL, delim);
+//     }
+//   }
+
+//   if (noError) {
+//     count = nDecks;
+//   }
 
   return;
 }
@@ -311,25 +314,27 @@ bool deckTlvHasElement(TlvArea *tlv, int type) {
 }
 
 int deckTlvGetString(TlvArea *tlv, int type, char *string, int length) {
-  int pos = findType(tlv, type);
-  int strlength = 0;
+  //COMMENTED FIRMWARE
+  // int pos = findType(tlv, type);
+  // int strlength = 0;
 
-  if (pos >= 0) {
-    strlength = tlv->data[pos+1];
+  // if (pos >= 0) {
+  //   strlength = tlv->data[pos+1];
 
-    if (strlength > (length-1)) {
-      strlength = length-1;
-    }
+  //   if (strlength > (length-1)) {
+  //     strlength = length-1;
+  //   }
 
-    memcpy(string, &tlv->data[pos+2], strlength);
-    string[strlength] = '\0';
+  //   memcpy(string, &tlv->data[pos+2], strlength);
+  //   string[strlength] = '\0';
 
-    return strlength;
-  } else {
-    string[0] = '\0';
+  //   return strlength;
+  // } else {
+  //   string[0] = '\0';
 
-    return -1;
-  }
+  //   return -1;
+  // }
+  return 0;
 }
 
 char* deckTlvGetBuffer(TlvArea *tlv, int type, int *length) {
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_memory.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_memory.c
index c3b1c62db..d5fec8bb7 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_memory.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_memory.c
@@ -28,7 +28,8 @@
  *
  */
 
-#include <string.h>
+//COMMENTED FIRMWARE
+//#include <string.h>
 #include "deck_memory.h"
 #include "deck_core.h"
 #include "mem.h"
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_test.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_test.c
index 98eeeaf64..31608a04d 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_test.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/core/deck_test.c
@@ -23,7 +23,8 @@
  *
  * deck_test.c - Test utility functions for testing decks.
  */
-#include <string.h>
+//COMMENTED FIRMWARE
+//#include <string.h>
 
 #include "stm32fxxx.h"
 
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/aideck.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/aideck.c
index 9cb3bd45c..894f1d5c7 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/aideck.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/aideck.c
@@ -26,7 +26,8 @@
 #define DEBUG_MODULE "AIDECK"
 
 #include <stdint.h>
-#include <string.h>
+//COMMENTED FIRMWARE
+//#include <string.h>
 #include <stdio.h>
 
 #include "stm32fxxx.h"
@@ -38,7 +39,8 @@
 #include "FreeRTOS.h"
 #include "task.h"
 #include "queue.h"
-#include <string.h>
+//COMMENTED FIRMWARE
+//#include <string.h>
 #include <stdlib.h>
 #include <math.h>
 #include "log.h"
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/bigquad.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/bigquad.c
index 08c95ae52..ad6eed88c 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/bigquad.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/bigquad.c
@@ -26,7 +26,8 @@
 #define DEBUG_MODULE "BIGQUAD"
 
 #include <stdint.h>
-#include <string.h>
+//COMMENTED FIRMWARE
+//#include <string.h>
 
 #include "stm32fxxx.h"
 #include "config.h"
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/cppmdeck.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/cppmdeck.c
index de4bd7e51..adb140e1e 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/cppmdeck.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/cppmdeck.c
@@ -26,7 +26,8 @@
 #define DEBUG_MODULE "CPPM"
 
 #include <stdint.h>
-#include <string.h>
+//COMMENTED FIRMWARE
+//#include <string.h>
 
 #include "stm32fxxx.h"
 #include "config.h"
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/gtgps.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/gtgps.c
index 3deb2d9e3..7bca41c2d 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/gtgps.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/gtgps.c
@@ -26,7 +26,8 @@
 #define DEBUG_MODULE "GTGPS"
 
 #include <stdint.h>
-#include <string.h>
+//COMMENTED FIRMWARE
+//#include <string.h>
 #include <stdio.h>
 
 #include "stm32fxxx.h"
@@ -38,7 +39,8 @@
 #include "FreeRTOS.h"
 #include "task.h"
 #include "queue.h"
-#include <string.h>
+//COMMENTED FIRMWARE
+//#include <string.h>
 #include <stdlib.h>
 #include <math.h>
 #include "log.h"
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/ledring12.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/ledring12.c
index 8386b88a7..18a023097 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/ledring12.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/ledring12.c
@@ -26,7 +26,8 @@
 
 #include <stdint.h>
 #include <math.h>
-#include <string.h>
+//COMMENTED FIRMWARE
+//#include <string.h>
 
 #include "stm32fxxx.h"
 
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/usddeck.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/usddeck.c
index fc3cd4e62..707555a7d 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/usddeck.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/deck/drivers/src/usddeck.c
@@ -523,188 +523,189 @@ static void usddeckEventtriggerCallback(const eventtrigger *event)
 
 static void usdLogTask(void* prm)
 {
-  TickType_t lastWakeTime = xTaskGetTickCount();
-
-  DEBUG_PRINT("wait for sensors\n");
-
-  systemWaitStart();
-  /* wait until sensor calibration is done
-   * (memory of bias calculation buffer is free again) */
-  while(!sensorsAreCalibrated()) {
-    vTaskDelayUntil(&lastWakeTime, F2T(10));
-  }
-
-  // loop to break out in case of errors
-  while (true) {
-    /* open config file */
-    // loop to break out in case of errors
-    while (f_open(&logFile, "config.txt", FA_READ) == FR_OK) {
-      /* try to read configuration */
-      char readBuffer[32];
-      char* endptr;
-
-      // version
-      TCHAR* line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
-      if (!line) break;
-      int version = strtol(line, &endptr, 10);
-      if (version != 1) break;
-      // buffer size
-      line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
-      if (!line) break;
-      usdLogConfig.bufferSize = strtol(line, &endptr, 10);
-      // file name
-      line = f_gets_without_comments(usdLogConfig.filename, sizeof(usdLogConfig.filename), &logFile);
-      if (!line) break;
-
-      int l = strlen(usdLogConfig.filename);
-      if (l > sizeof(usdLogConfig.filename) - 3) {
-        l = sizeof(usdLogConfig.filename) - 3;
-      }
-      usdLogConfig.filename[l] = '0';
-      usdLogConfig.filename[l+1] = '0';
-      usdLogConfig.filename[l+2] = 0;
-
-      // enable on startup
-      line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
-      if (!line) break;
-      usdLogConfig.enableOnStartup = strtol(line, &endptr, 10);
-
-      // loop over event triggers "on:<name>"
-      usdLogConfig.numEventConfigs = 0;
-      usdLogConfig.fixedFrequencyEventIdx = MAX_USD_LOG_EVENTS;
-      usdLogConfig.frequency = 10; // use non-zero default value for task loop below
-      usdLogEventConfig_t *cfg = &usdLogConfig.eventConfigs[0];
-      const char* eventName = 0;
-      line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
-      while (line) {
-        if (strncmp(line, "on:", 3) == 0) {
-          // special mode for non-event-based logging
-          if (strcmp(&line[3], FIXED_FREQUENCY_EVENT_NAME) == 0) {
-            // frequency
-            line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
-            if (!line) break;
-            usdLogConfig.frequency = strtol(line, &endptr, 10);
-            // mode
-            line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
-            if (!line) break;
-            usdLogConfig.mode = strtol(line, &endptr, 10);
-            cfg->eventId = FIXED_FREQUENCY_EVENT_ID;
-            eventName = FIXED_FREQUENCY_EVENT_NAME;
-            usdLogConfig.fixedFrequencyEventIdx = usdLogConfig.numEventConfigs;
-          } else {
-            // handle event triggers
-            const eventtrigger *et = eventtriggerGetByName(&line[3]);
-            if (et) {
-              cfg->eventId = eventtriggerGetId(et);
-              eventName = et->name;
-            } else {
-              DEBUG_PRINT("Unknown event %s\n", &line[3]);
-              line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
-              continue;
-            }
-          }
-
-          // Add log variables
-          cfg->numVars = 0;
-          cfg->numBytes = 0;
-          while (true) {
-            line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
-            if (!line || strncmp(line, "on:", 3) == 0)
-              break;
-            char *group = line;
-            char *name = 0;
-            for (int i = 0; i < strlen(line); ++i) {
-              if (line[i] == '.') {
-                line[i] = 0;
-                name = &line[i + 1];
-                i = strlen(name);
-                break;
-              }
-            }
-            logVarId_t varid = logGetVarId(group, name);
-            if (!logVarIdIsValid(varid)) {
-              DEBUG_PRINT("Unknown log variable %s.%s\n", group, name);
-              continue;
-            }
-            if (cfg->numVars < MAX_USD_LOG_VARIABLES_PER_EVENT) {
-              cfg->varIds[cfg->numVars] = varid;
-              ++cfg->numVars;
-              cfg->numBytes += logVarSize(logGetType(varid));
-            } else {
-              DEBUG_PRINT("Skip log variable %s: %s.%s (out of storage)\n", eventName, group, name);
-              continue;
-            }
-          }
-          if (usdLogConfig.numEventConfigs < MAX_USD_LOG_EVENTS - 1) {
-            ++usdLogConfig.numEventConfigs;
-            cfg = &usdLogConfig.eventConfigs[usdLogConfig.numEventConfigs];
-          } else {
-            DEBUG_PRINT("Skip config after event %s (out of storage)\n", eventName);
-            break;
-          }
-        } else {
-          line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
-        }
-      }
-      f_close(&logFile);
-
-      eventtriggerRegisterCallback(eventtriggerHandler_USD, &usddeckEventtriggerCallback);
-
-      DEBUG_PRINT("Config read [OK].\n");
-      // DEBUG_PRINT("Frequency: %d Hz. Buffer size: %d\n",
-      //             usdLogConfig.frequency, usdLogConfig.bufferSize);
-      // DEBUG_PRINT("enOnStartup: %d. mode: %d\n", usdLogConfig.enableOnStartup, usdLogConfig.mode);
-      // DEBUG_PRINT("slots: %d, %d\n", usdLogConfig.numSlots, usdLogConfig.numBytes);
-      initSuccess = true;
-      break;
-    }
-
-    if (!initSuccess) {
-      DEBUG_PRINT("Config read [FAIL].\n");
-      break;
-    }
-
-    /* allocate memory for buffer */
-    DEBUG_PRINT("malloc buffer %d bytes ", usdLogConfig.bufferSize);
-    // vTaskDelay(10); // small delay to allow debug message to be send
-    uint8_t* logBufferData = pvPortMalloc(usdLogConfig.bufferSize);
-    if (logBufferData) {
-      DEBUG_PRINT("[OK].\n");
-    } else {
-      DEBUG_PRINT("[FAIL].\n");
-      break;
-    }
-    ringBuffer_init(&logBuffer, logBufferData, usdLogConfig.bufferSize);
-
-    /* create queue to hand over pointer to usdLogData */
-    // usdLogQueue = xQueueCreate(usdLogConfig.queueSize, sizeof(uint8_t*));
-
-    xHandleWriteTask = 0;
-    enableLogging = usdLogConfig.enableOnStartup; // enable logging if desired
-
-    /* create usd-write task */
-    xTaskCreate(usdWriteTask, USDWRITE_TASK_NAME,
-                USDWRITE_TASK_STACKSIZE, 0,
-                USDWRITE_TASK_PRI, &xHandleWriteTask);
-
-    bool lastEnableLogging = enableLogging;
-    while(1) {
-      vTaskDelayUntil(&lastWakeTime, F2T(usdLogConfig.frequency));
-
-      // if logging was just disabled, resume the writer task to give up mutex
-      if (!enableLogging && lastEnableLogging != enableLogging) {
-        vTaskResume(xHandleWriteTask);
-      }
-
-      if (enableLogging && usdLogConfig.mode == usddeckLoggingMode_Asynchronous) {
-        usddeckTriggerLogging();
-      }
-      lastEnableLogging = enableLogging;
-    }
-  }
-
-  /* something went wrong */
-  vTaskDelete(NULL);
+  //COMMENTED FIRMWARE
+  // TickType_t lastWakeTime = xTaskGetTickCount();
+
+  // DEBUG_PRINT("wait for sensors\n");
+
+  // systemWaitStart();
+  // /* wait until sensor calibration is done
+  //  * (memory of bias calculation buffer is free again) */
+  // while(!sensorsAreCalibrated()) {
+  //   vTaskDelayUntil(&lastWakeTime, F2T(10));
+  // }
+
+  // // loop to break out in case of errors
+  // while (true) {
+  //   /* open config file */
+  //   // loop to break out in case of errors
+  //   while (f_open(&logFile, "config.txt", FA_READ) == FR_OK) {
+  //     /* try to read configuration */
+  //     char readBuffer[32];
+  //     char* endptr;
+
+  //     // version
+  //     TCHAR* line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
+  //     if (!line) break;
+  //     int version = strtol(line, &endptr, 10);
+  //     if (version != 1) break;
+  //     // buffer size
+  //     line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
+  //     if (!line) break;
+  //     usdLogConfig.bufferSize = strtol(line, &endptr, 10);
+  //     // file name
+  //     line = f_gets_without_comments(usdLogConfig.filename, sizeof(usdLogConfig.filename), &logFile);
+  //     if (!line) break;
+
+  //     int l = strlen(usdLogConfig.filename);
+  //     if (l > sizeof(usdLogConfig.filename) - 3) {
+  //       l = sizeof(usdLogConfig.filename) - 3;
+  //     }
+  //     usdLogConfig.filename[l] = '0';
+  //     usdLogConfig.filename[l+1] = '0';
+  //     usdLogConfig.filename[l+2] = 0;
+
+  //     // enable on startup
+  //     line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
+  //     if (!line) break;
+  //     usdLogConfig.enableOnStartup = strtol(line, &endptr, 10);
+
+  //     // loop over event triggers "on:<name>"
+  //     usdLogConfig.numEventConfigs = 0;
+  //     usdLogConfig.fixedFrequencyEventIdx = MAX_USD_LOG_EVENTS;
+  //     usdLogConfig.frequency = 10; // use non-zero default value for task loop below
+  //     usdLogEventConfig_t *cfg = &usdLogConfig.eventConfigs[0];
+  //     const char* eventName = 0;
+  //     line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
+  //     while (line) {
+  //       if (strncmp(line, "on:", 3) == 0) {
+  //         // special mode for non-event-based logging
+  //         if (strcmp(&line[3], FIXED_FREQUENCY_EVENT_NAME) == 0) {
+  //           // frequency
+  //           line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
+  //           if (!line) break;
+  //           usdLogConfig.frequency = strtol(line, &endptr, 10);
+  //           // mode
+  //           line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
+  //           if (!line) break;
+  //           usdLogConfig.mode = strtol(line, &endptr, 10);
+  //           cfg->eventId = FIXED_FREQUENCY_EVENT_ID;
+  //           eventName = FIXED_FREQUENCY_EVENT_NAME;
+  //           usdLogConfig.fixedFrequencyEventIdx = usdLogConfig.numEventConfigs;
+  //         } else {
+  //           // handle event triggers
+  //           const eventtrigger *et = eventtriggerGetByName(&line[3]);
+  //           if (et) {
+  //             cfg->eventId = eventtriggerGetId(et);
+  //             eventName = et->name;
+  //           } else {
+  //             DEBUG_PRINT("Unknown event %s\n", &line[3]);
+  //             line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
+  //             continue;
+  //           }
+  //         }
+
+  //         // Add log variables
+  //         cfg->numVars = 0;
+  //         cfg->numBytes = 0;
+  //         while (true) {
+  //           line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
+  //           if (!line || strncmp(line, "on:", 3) == 0)
+  //             break;
+  //           char *group = line;
+  //           char *name = 0;
+  //           for (int i = 0; i < strlen(line); ++i) {
+  //             if (line[i] == '.') {
+  //               line[i] = 0;
+  //               name = &line[i + 1];
+  //               i = strlen(name);
+  //               break;
+  //             }
+  //           }
+  //           logVarId_t varid = logGetVarId(group, name);
+  //           if (!logVarIdIsValid(varid)) {
+  //             DEBUG_PRINT("Unknown log variable %s.%s\n", group, name);
+  //             continue;
+  //           }
+  //           if (cfg->numVars < MAX_USD_LOG_VARIABLES_PER_EVENT) {
+  //             cfg->varIds[cfg->numVars] = varid;
+  //             ++cfg->numVars;
+  //             cfg->numBytes += logVarSize(logGetType(varid));
+  //           } else {
+  //             DEBUG_PRINT("Skip log variable %s: %s.%s (out of storage)\n", eventName, group, name);
+  //             continue;
+  //           }
+  //         }
+  //         if (usdLogConfig.numEventConfigs < MAX_USD_LOG_EVENTS - 1) {
+  //           ++usdLogConfig.numEventConfigs;
+  //           cfg = &usdLogConfig.eventConfigs[usdLogConfig.numEventConfigs];
+  //         } else {
+  //           DEBUG_PRINT("Skip config after event %s (out of storage)\n", eventName);
+  //           break;
+  //         }
+  //       } else {
+  //         line = f_gets_without_comments(readBuffer, sizeof(readBuffer), &logFile);
+  //       }
+  //     }
+  //     f_close(&logFile);
+
+  //     eventtriggerRegisterCallback(eventtriggerHandler_USD, &usddeckEventtriggerCallback);
+
+  //     DEBUG_PRINT("Config read [OK].\n");
+  //     // DEBUG_PRINT("Frequency: %d Hz. Buffer size: %d\n",
+  //     //             usdLogConfig.frequency, usdLogConfig.bufferSize);
+  //     // DEBUG_PRINT("enOnStartup: %d. mode: %d\n", usdLogConfig.enableOnStartup, usdLogConfig.mode);
+  //     // DEBUG_PRINT("slots: %d, %d\n", usdLogConfig.numSlots, usdLogConfig.numBytes);
+  //     initSuccess = true;
+  //     break;
+  //   }
+
+  //   if (!initSuccess) {
+  //     DEBUG_PRINT("Config read [FAIL].\n");
+  //     break;
+  //   }
+
+  //   /* allocate memory for buffer */
+  //   DEBUG_PRINT("malloc buffer %d bytes ", usdLogConfig.bufferSize);
+  //   // vTaskDelay(10); // small delay to allow debug message to be send
+  //   uint8_t* logBufferData = pvPortMalloc(usdLogConfig.bufferSize);
+  //   if (logBufferData) {
+  //     DEBUG_PRINT("[OK].\n");
+  //   } else {
+  //     DEBUG_PRINT("[FAIL].\n");
+  //     break;
+  //   }
+  //   ringBuffer_init(&logBuffer, logBufferData, usdLogConfig.bufferSize);
+
+  //   /* create queue to hand over pointer to usdLogData */
+  //   // usdLogQueue = xQueueCreate(usdLogConfig.queueSize, sizeof(uint8_t*));
+
+  //   xHandleWriteTask = 0;
+  //   enableLogging = usdLogConfig.enableOnStartup; // enable logging if desired
+
+  //   /* create usd-write task */
+  //   xTaskCreate(usdWriteTask, USDWRITE_TASK_NAME,
+  //               USDWRITE_TASK_STACKSIZE, 0,
+  //               USDWRITE_TASK_PRI, &xHandleWriteTask);
+
+  //   bool lastEnableLogging = enableLogging;
+  //   while(1) {
+  //     vTaskDelayUntil(&lastWakeTime, F2T(usdLogConfig.frequency));
+
+  //     // if logging was just disabled, resume the writer task to give up mutex
+  //     if (!enableLogging && lastEnableLogging != enableLogging) {
+  //       vTaskResume(xHandleWriteTask);
+  //     }
+
+  //     if (enableLogging && usdLogConfig.mode == usddeckLoggingMode_Asynchronous) {
+  //       usddeckTriggerLogging();
+  //     }
+  //     lastEnableLogging = enableLogging;
+  //   }
+  // }
+
+  // /* something went wrong */
+  // vTaskDelete(NULL);
 }
 
 bool usddeckLoggingEnabled(void)
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/modules/src/lighthouse/lighthouse_deck_flasher.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/modules/src/lighthouse/lighthouse_deck_flasher.c
index 2cac9e757..48b5ec717 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/modules/src/lighthouse/lighthouse_deck_flasher.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/modules/src/lighthouse/lighthouse_deck_flasher.c
@@ -55,59 +55,62 @@ static bool inBootloaderMode = true;
 static bool hasStarted = false;
 
 bool lighthouseDeckFlasherCheckVersionAndBoot() {
-  lhblInit();
-
-  #ifdef LH_FLASH_BOOTLOADER
-  // Flash deck bootloader using SPI (factory and recovery flashing)
-  lhflashInit();
-  lhflashFlashBootloader();
-  #endif
-
-  uint8_t bootloaderVersion = 0;
-  if (lhblGetVersion(&bootloaderVersion) == false) {
-    DEBUG_PRINT("Cannot communicate with lighthouse bootloader, aborting!\n");
-    return false;
-  }
-  DEBUG_PRINT("Lighthouse bootloader version: %d\n", bootloaderVersion);
-
-  // Wakeup mem
-  lhblFlashWakeup();
-  vTaskDelay(M2T(1));
-
-  // Decoding bitstream version for console
-  static char deckBitstream[READ_BUFFER_LENGTH];
-  lhblFlashRead(LH_FW_ADDR, VERSION_STRING_MAX_LENGTH, (uint8_t*)deckBitstream);
-  deckBitstream[VERSION_STRING_MAX_LENGTH] = 0;
-  int deckVersion = strtol(&deckBitstream[2], NULL, 10);
-
-  // Checking that the bitstream has the right checksum
-  crc32Context_t crcContext;
-  crc32ContextInit(&crcContext);
-
-  for (int i=0; i<=LIGHTHOUSE_BITSTREAM_SIZE; i+=READ_BUFFER_LENGTH) {
-    int length = ((i + READ_BUFFER_LENGTH) < LIGHTHOUSE_BITSTREAM_SIZE)?READ_BUFFER_LENGTH:LIGHTHOUSE_BITSTREAM_SIZE-i;
-    lhblFlashRead(LH_FW_ADDR + i, length, (uint8_t*)deckBitstream);
-    crc32Update(&crcContext, deckBitstream, length);
-  }
-
-  uint32_t crc = crc32Out(&crcContext);
-  bool pass = crc == LIGHTHOUSE_BITSTREAM_CRC;
-  DEBUG_PRINT("Bitstream CRC32: %x %s\n", (int)crc, pass?"[PASS]":"[FAIL]");
-
-  // Launch LH deck FW
-  if (pass) {
-    DEBUG_PRINT("Firmware version %d verified, booting deck!\n", deckVersion);
-    lhblBootToFW();
-    inBootloaderMode = false;
-  } else {
-    DEBUG_PRINT("The deck bitstream does not match the required bitstream.\n");
-    DEBUG_PRINT("We require lighthouse bitstream of size %d and CRC32 %x.\n", LIGHTHOUSE_BITSTREAM_SIZE, LIGHTHOUSE_BITSTREAM_CRC);
-    DEBUG_PRINT("Leaving the deck in bootloader mode ...\n");
-  }
-
-  hasStarted = true;
-
-  return pass;
+  // lhblInit();
+
+  // #ifdef LH_FLASH_BOOTLOADER
+  // // Flash deck bootloader using SPI (factory and recovery flashing)
+  // lhflashInit();
+  // lhflashFlashBootloader();
+  // #endif
+
+  // uint8_t bootloaderVersion = 0;
+  // if (lhblGetVersion(&bootloaderVersion) == false) {
+  //   DEBUG_PRINT("Cannot communicate with lighthouse bootloader, aborting!\n");
+  //   return false;
+  // }
+  // DEBUG_PRINT("Lighthouse bootloader version: %d\n", bootloaderVersion);
+
+  // // Wakeup mem
+  // lhblFlashWakeup();
+  // vTaskDelay(M2T(1));
+
+  // // Decoding bitstream version for console
+  // static char deckBitstream[READ_BUFFER_LENGTH];
+  // lhblFlashRead(LH_FW_ADDR, VERSION_STRING_MAX_LENGTH, (uint8_t*)deckBitstream);
+  // deckBitstream[VERSION_STRING_MAX_LENGTH] = 0;
+  // //COMMENTED FIRMWARE
+  // //int deckVersion = strtol(&deckBitstream[2], NULL, 10);
+
+  // // Checking that the bitstream has the right checksum
+  // crc32Context_t crcContext;
+  // crc32ContextInit(&crcContext);
+
+  // for (int i=0; i<=LIGHTHOUSE_BITSTREAM_SIZE; i+=READ_BUFFER_LENGTH) {
+  //   int length = ((i + READ_BUFFER_LENGTH) < LIGHTHOUSE_BITSTREAM_SIZE)?READ_BUFFER_LENGTH:LIGHTHOUSE_BITSTREAM_SIZE-i;
+  //   lhblFlashRead(LH_FW_ADDR + i, length, (uint8_t*)deckBitstream);
+  //   crc32Update(&crcContext, deckBitstream, length);
+  // }
+
+  // uint32_t crc = crc32Out(&crcContext);
+  // bool pass = crc == LIGHTHOUSE_BITSTREAM_CRC;
+  // DEBUG_PRINT("Bitstream CRC32: %x %s\n", (int)crc, pass?"[PASS]":"[FAIL]");
+
+  // // Launch LH deck FW
+  // if (pass) {
+  //   //COMMENTED FIRMWARE
+  //   //DEBUG_PRINT("Firmware version %d verified, booting deck!\n", deckVersion);
+  //   lhblBootToFW();
+  //   inBootloaderMode = false;
+  // } else {
+  //   DEBUG_PRINT("The deck bitstream does not match the required bitstream.\n");
+  //   DEBUG_PRINT("We require lighthouse bitstream of size %d and CRC32 %x.\n", LIGHTHOUSE_BITSTREAM_SIZE, LIGHTHOUSE_BITSTREAM_CRC);
+  //   DEBUG_PRINT("Leaving the deck in bootloader mode ...\n");
+  // }
+
+  // hasStarted = true;
+
+  // return pass;
+  return true;
 }
 
 bool lighthouseDeckFlasherRead(const uint32_t memAddr, const uint8_t readLen, uint8_t* buffer)
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/modules/src/lighthouse/lighthouse_position_est.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/modules/src/lighthouse/lighthouse_position_est.c
index 2fdf61641..c2f2bf5e6 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/modules/src/lighthouse/lighthouse_position_est.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/modules/src/lighthouse/lighthouse_position_est.c
@@ -182,23 +182,24 @@ void lighthousePositionSetGeometryData(const uint8_t baseStation, const baseStat
 }
 
 static void preProcessGeometryData(mat3d bsRot, mat3d bsRotInverted, mat3d lh1Rotor2Rot, mat3d lh1Rotor2RotInverted) {
-  // For a rotation matrix inverse and transpose is equal. Use transpose instead
-  arm_matrix_instance_f32 bsRot_ = {3, 3, (float32_t *)bsRot};
-  arm_matrix_instance_f32 bsRotInverted_ = {3, 3, (float32_t *)bsRotInverted};
-  mat_trans(&bsRot_, &bsRotInverted_);
-
-  // In a LH1 system, the axis of rotation of the second rotor is perpendicular to the first rotor
-  mat3d secondRotorInvertedR = {
-    {1, 0, 0},
-    {0, 0, -1},
-    {0, 1, 0}
-  };
-  arm_matrix_instance_f32 secondRotorInvertedR_ = {3, 3, (float32_t *)secondRotorInvertedR};
-  arm_matrix_instance_f32 lh1Rotor2Rot_ = {3, 3, (float32_t *)lh1Rotor2Rot};
-  mat_mult(&bsRot_, &secondRotorInvertedR_, &lh1Rotor2Rot_);
-
-  arm_matrix_instance_f32 lh1Rotor2RotInverted_ = {3, 3, (float32_t *)lh1Rotor2RotInverted};
-  mat_trans(&lh1Rotor2Rot_, &lh1Rotor2RotInverted_);
+  //COMMENTED FIRMWARE
+  // // For a rotation matrix inverse and transpose is equal. Use transpose instead
+  // arm_matrix_instance_f32 bsRot_ = {3, 3, (float32_t *)bsRot};
+  // arm_matrix_instance_f32 bsRotInverted_ = {3, 3, (float32_t *)bsRotInverted};
+  // mat_trans(&bsRot_, &bsRotInverted_);
+
+  // // In a LH1 system, the axis of rotation of the second rotor is perpendicular to the first rotor
+  // mat3d secondRotorInvertedR = {
+  //   {1, 0, 0},
+  //   {0, 0, -1},
+  //   {0, 1, 0}
+  // };
+  // arm_matrix_instance_f32 secondRotorInvertedR_ = {3, 3, (float32_t *)secondRotorInvertedR};
+  // arm_matrix_instance_f32 lh1Rotor2Rot_ = {3, 3, (float32_t *)lh1Rotor2Rot};
+  // mat_mult(&bsRot_, &secondRotorInvertedR_, &lh1Rotor2Rot_);
+
+  // arm_matrix_instance_f32 lh1Rotor2RotInverted_ = {3, 3, (float32_t *)lh1Rotor2RotInverted};
+  // mat_trans(&lh1Rotor2Rot_, &lh1Rotor2RotInverted_);
 }
 
 
@@ -369,74 +370,76 @@ static void estimatePositionSweeps(const pulseProcessor_t* appState, pulseProces
   }
 }
 
-static bool estimateYawDeltaOneBaseStation(const int bs, const pulseProcessorResult_t* angles, const baseStationGeometry_t baseStationGeometries[], const float cfPos[3], const float n[3], const arm_matrix_instance_f32 *RR, float *yawDelta) {
-  const baseStationGeometry_t* baseStationGeometry = &baseStationGeometries[bs];
-
-  vec3d baseStationPos;
-  lighthouseGeometryGetBaseStationPosition(baseStationGeometry, baseStationPos);
-
-  vec3d rays[PULSE_PROCESSOR_N_SENSORS];
-  for (int sensor = 0; sensor < PULSE_PROCESSOR_N_SENSORS; sensor++) {
-    const pulseProcessorBaseStationMeasuremnt_t* bsMeasurement = &angles->sensorMeasurementsLh1[sensor].baseStatonMeasurements[bs];
-    lighthouseGeometryGetRay(baseStationGeometry, bsMeasurement->correctedAngles[0], bsMeasurement->correctedAngles[1], rays[sensor]);
-  }
-
-  // Intersection points of rays and the deck
-  vec3d intersectionPoints[PULSE_PROCESSOR_N_SENSORS];
-  for (int sensor = 0; sensor < PULSE_PROCESSOR_N_SENSORS; sensor++) {
-    bool exists = lighthouseGeometryIntersectionPlaneVector(baseStationPos, rays[sensor], cfPos, n, intersectionPoints[sensor]);
-    if (! exists) {
-      return false;
-    }
-  }
-
-  // Calculate positions of sensors. Rotate relative postiions using the rotation matrix and add current position
-  vec3d sensorPoints[PULSE_PROCESSOR_N_SENSORS];
-  for (int sensor = 0; sensor < PULSE_PROCESSOR_N_SENSORS; sensor++) {
-    lighthouseGeometryGetSensorPosition(cfPos, RR, sensorDeckPositions[sensor], sensorPoints[sensor]);
-  }
-
-  // Calculate diagonals (sensors 0 - 3 and 1 - 2) for intersection and sensor points
-  vec3d ipv1 = {intersectionPoints[3][0] - intersectionPoints[0][0], intersectionPoints[3][1] - intersectionPoints[0][1], intersectionPoints[3][2] - intersectionPoints[0][2]};
-  vec3d ipv2 = {intersectionPoints[2][0] - intersectionPoints[1][0], intersectionPoints[2][1] - intersectionPoints[1][1], intersectionPoints[2][2] - intersectionPoints[1][2]};
-  vec3d spv1 = {sensorPoints[3][0] - sensorPoints[0][0], sensorPoints[3][1] - sensorPoints[0][1], sensorPoints[3][2] - sensorPoints[0][2]};
-  vec3d spv2 = {sensorPoints[2][0] - sensorPoints[1][0], sensorPoints[2][1] - sensorPoints[1][1], sensorPoints[2][2] - sensorPoints[1][2]};
-
-  // Calculate yaw delta for the two diagonals and average
-  float yawDelta1, yawDelta2;
-  if (lighthouseGeometryYawDelta(ipv1, spv1, n, &yawDelta1) && lighthouseGeometryYawDelta(ipv2, spv2, n, &yawDelta2)) {
-    *yawDelta = (yawDelta1 + yawDelta2) / 2.0f;
-    return true;
-   } else {
-    *yawDelta = 0.0f;
-    return false;
-  }
-}
+//COMMENTED FIRMWARE
+// static bool estimateYawDeltaOneBaseStation(const int bs, const pulseProcessorResult_t* angles, const baseStationGeometry_t baseStationGeometries[], const float cfPos[3], const float n[3], const arm_matrix_instance_f32 *RR, float *yawDelta) {
+//   const baseStationGeometry_t* baseStationGeometry = &baseStationGeometries[bs];
+
+//   vec3d baseStationPos;
+//   lighthouseGeometryGetBaseStationPosition(baseStationGeometry, baseStationPos);
+
+//   vec3d rays[PULSE_PROCESSOR_N_SENSORS];
+//   for (int sensor = 0; sensor < PULSE_PROCESSOR_N_SENSORS; sensor++) {
+//     const pulseProcessorBaseStationMeasuremnt_t* bsMeasurement = &angles->sensorMeasurementsLh1[sensor].baseStatonMeasurements[bs];
+//     lighthouseGeometryGetRay(baseStationGeometry, bsMeasurement->correctedAngles[0], bsMeasurement->correctedAngles[1], rays[sensor]);
+//   }
+
+//   // Intersection points of rays and the deck
+//   vec3d intersectionPoints[PULSE_PROCESSOR_N_SENSORS];
+//   for (int sensor = 0; sensor < PULSE_PROCESSOR_N_SENSORS; sensor++) {
+//     bool exists = lighthouseGeometryIntersectionPlaneVector(baseStationPos, rays[sensor], cfPos, n, intersectionPoints[sensor]);
+//     if (! exists) {
+//       return false;
+//     }
+//   }
+
+//   // Calculate positions of sensors. Rotate relative postiions using the rotation matrix and add current position
+//   vec3d sensorPoints[PULSE_PROCESSOR_N_SENSORS];
+//   for (int sensor = 0; sensor < PULSE_PROCESSOR_N_SENSORS; sensor++) {
+//     lighthouseGeometryGetSensorPosition(cfPos, RR, sensorDeckPositions[sensor], sensorPoints[sensor]);
+//   }
+
+//   // Calculate diagonals (sensors 0 - 3 and 1 - 2) for intersection and sensor points
+//   vec3d ipv1 = {intersectionPoints[3][0] - intersectionPoints[0][0], intersectionPoints[3][1] - intersectionPoints[0][1], intersectionPoints[3][2] - intersectionPoints[0][2]};
+//   vec3d ipv2 = {intersectionPoints[2][0] - intersectionPoints[1][0], intersectionPoints[2][1] - intersectionPoints[1][1], intersectionPoints[2][2] - intersectionPoints[1][2]};
+//   vec3d spv1 = {sensorPoints[3][0] - sensorPoints[0][0], sensorPoints[3][1] - sensorPoints[0][1], sensorPoints[3][2] - sensorPoints[0][2]};
+//   vec3d spv2 = {sensorPoints[2][0] - sensorPoints[1][0], sensorPoints[2][1] - sensorPoints[1][1], sensorPoints[2][2] - sensorPoints[1][2]};
+
+//   // Calculate yaw delta for the two diagonals and average
+//   float yawDelta1, yawDelta2;
+//   if (lighthouseGeometryYawDelta(ipv1, spv1, n, &yawDelta1) && lighthouseGeometryYawDelta(ipv2, spv2, n, &yawDelta2)) {
+//     *yawDelta = (yawDelta1 + yawDelta2) / 2.0f;
+//     return true;
+//    } else {
+//     *yawDelta = 0.0f;
+//     return false;
+//   }
+// }
 
 static void estimateYaw(const pulseProcessor_t *state, pulseProcessorResult_t* angles, int baseStation) {
   // TODO Most of these calculations should be moved into the estimator instead. It is a
   // bit dirty to get the state from the kalman filer here and calculate the yaw error outside
   // the estimator, but it will do for now.
 
+  //COMMENTED FIRMWARE
   // Get data from the current estimated state
-  point_t cfPosP;
-  estimatorKalmanGetEstimatedPos(&cfPosP);
-  vec3d cfPos = {cfPosP.x, cfPosP.y, cfPosP.z};
-
-  // Rotation matrix
-  float R[3][3];
-  estimatorKalmanGetEstimatedRot((float*)R);
-  arm_matrix_instance_f32 RR = {3, 3, (float*)R};
-
-  // Normal to the deck: (0, 0, 1), rotated using the rotation matrix
-  const vec3d n = {R[0][2], R[1][2], R[2][2]};
-
-  // Calculate yaw delta using only one base station for now
-  float yawDelta;
-  if (estimateYawDeltaOneBaseStation(baseStation, angles, state->bsGeometry, cfPos, n, &RR, &yawDelta)) {
-    yawErrorMeasurement_t yawDeltaMeasurement = {.yawError = yawDelta, .stdDev = 0.01};
-    estimatorEnqueueYawError(&yawDeltaMeasurement);
-  }
+  // point_t cfPosP;
+  // estimatorKalmanGetEstimatedPos(&cfPosP);
+  // vec3d cfPos = {cfPosP.x, cfPosP.y, cfPosP.z};
+
+  // // Rotation matrix
+  // float R[3][3];
+  // estimatorKalmanGetEstimatedRot((float*)R);
+  // arm_matrix_instance_f32 RR = {3, 3, (float*)R};
+
+  // // Normal to the deck: (0, 0, 1), rotated using the rotation matrix
+  // const vec3d n = {R[0][2], R[1][2], R[2][2]};
+
+  // // Calculate yaw delta using only one base station for now
+  // float yawDelta;
+  // if (estimateYawDeltaOneBaseStation(baseStation, angles, state->bsGeometry, cfPos, n, &RR, &yawDelta)) {
+  //   yawErrorMeasurement_t yawDeltaMeasurement = {.yawError = yawDelta, .stdDev = 0.01};
+  //   estimatorEnqueueYawError(&yawDeltaMeasurement);
+  // }
 }
 
 void lighthousePositionEstimatePoseCrossingBeams(const pulseProcessor_t *state, pulseProcessorResult_t* angles, int baseStation) {
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/modules/src/lighthouse/lighthouse_storage.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/modules/src/lighthouse/lighthouse_storage.c
index 966cd5037..c33a849dc 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/modules/src/lighthouse/lighthouse_storage.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/modules/src/lighthouse/lighthouse_storage.c
@@ -51,13 +51,14 @@ static lighthouseCalibration_t calibBuffer;
 
 
 static void generateStorageKey(char* buf, const char* base, const uint8_t baseStation) {
+  //COMMENTED FIRMWARE
   // TOOD make an implementation that supports baseStations with 2 digits
-  ASSERT(baseStation <= 9);
+  // ASSERT(baseStation <= 9);
 
-  const int baseLen = strlen(base);
-  memcpy(buf, base, baseLen);
-  buf[baseLen] = '0' + baseStation;
-  buf[baseLen + 1] = '\0';
+  // const int baseLen = strlen(base);
+  // memcpy(buf, base, baseLen);
+  // buf[baseLen] = '0' + baseStation;
+  // buf[baseLen + 1] = '\0';
 }
 
 bool lighthouseStoragePersistData(const uint8_t baseStation, const bool geoData, const bool calibData) {
@@ -99,19 +100,21 @@ void lighthouseStoragePersistSystemType(lighthouseBaseStationType_t type) {
 }
 
 void lighthouseStorageVerifySetStorageVersion() {
-  const int bufLen = 5;
-  char buffer[bufLen];
-
-  const size_t fetched = storageFetch(STORAGE_VERSION_KEY, buffer, bufLen);
-  if (fetched == 0) {
-    storageStore(STORAGE_VERSION_KEY, CURRENT_STORAGE_VERSION, strlen(CURRENT_STORAGE_VERSION) + 1);
-  } else {
-    if (strcmp(buffer, CURRENT_STORAGE_VERSION) != 0) {
-      // The storage format version is wrong! What to do?
-      // No need to handle until we bump the storage version, assert for now.
-      ASSERT_FAILED();
-    }
-  }
+  //COMMENTED FIRMWARE
+//#include <string.h>
+  // const int bufLen = 5;
+  // char buffer[bufLen];
+
+  // const size_t fetched = storageFetch(STORAGE_VERSION_KEY, buffer, bufLen);
+  // if (fetched == 0) {
+  //   storageStore(STORAGE_VERSION_KEY, CURRENT_STORAGE_VERSION, strlen(CURRENT_STORAGE_VERSION) + 1);
+  // } else {
+  //   if (strcmp(buffer, CURRENT_STORAGE_VERSION) != 0) {
+  //     // The storage format version is wrong! What to do?
+  //     // No need to handle until we bump the storage version, assert for now.
+  //     ASSERT_FAILED();
+  //   }
+  // }
 }
 
 void lighthouseStorageInitializeGeoDataFromStorage() {
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/Makefile b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/Makefile
index b9898090f..92cbb4ff5 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/Makefile
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/Makefile
@@ -233,7 +233,7 @@ OBJS += build/exptestBolt.o
 
 # Utilities
 OBJS += build/filter.o build/cpuid.o build/cfassert.o  build/eprintf.o build/crc32.o build/num.o build/debug.o
-OBJS += build/version.o build/FreeRTOS-openocd.o
+OBJS += build/FreeRTOS-openocd.o #build/version.o 
 OBJS += build/configblockeeprom.o
 OBJS += build/sleepus.o build/statsCnt.o build/rateSupervisor.o
 OBJS += build/lighthouse_core.o build/pulse_processor.o build/pulse_processor_v1.o build/pulse_processor_v2.o build/lighthouse_geometry.o build/ootx_decoder.o build/lighthouse_calibration.o build/lighthouse_deck_flasher.o build/lighthouse_position_est.o build/lighthouse_storage.o
@@ -247,7 +247,7 @@ CFLAGS += -DDEBUG_PRINT_ON_SEGGER_RTT
 endif
 
 # Libs
-OBJS += libarm_math.a
+#OBJS += libarm_math.a
 
 BUILDDIR =./build
 
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/FreeRTOS-openocd.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/FreeRTOS-openocd.o
new file mode 100644
index 0000000000000000000000000000000000000000..727de34522f8dcc8e1ff6b0144a2d2f25dfe4a07
GIT binary patch
literal 1056
zcmbu8%}T>S5XYyce)L!n6uhh;*n$a3&_e|wQf)7yqV363nrum+>6Yyl+LN!MPvNV0
z^c8#polSRZ*~E)(VE;3}nc3OhB+u73osCKb^r*la{CJuIe5}DB#{tw}2Ok{WcKe((
zy0?AOV{8;9VLB#5#)(KMxwI#o4bu@?JW5hQBQfKYv>e~|U9aVMK52wJv(a*!P01aP
z$cX3qXL+O2Np7bKpI>D`tMmi_7HpKIBe#Cx)dJtmNs&uz!Db<U4@n(&s>jOea7rI~
zcaJuk&@qc*CxW9GX7e7K^rtkw=PBc<SO7TFMJB=ls^Cjav?b_VfD?xz1ZOavg2UO;
ziCC7=vCvKbp$Awi?|REvBQSjJu6-ssI>cEr^M->wTAa-KV@#3X*k9{UuvV^VzWD%|
z9IN-SbPN6|a#`=HxRxtrJZYd*?|)s*-ZJ$?<-aT4MwREx|0mRa#cQbM*=1<18Z=d&
V7Ts6-bu`NAUsd9TPE=~ve*+a?M=SsU

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/configblockeeprom.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/configblockeeprom.o
new file mode 100644
index 0000000000000000000000000000000000000000..7cfd3dc6012c5420a242a5e6c1bbf76fde25ac86
GIT binary patch
literal 4136
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
G=l=_cKn(W)

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/deck_drivers.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/deck_drivers.o
index aaca6502919044831ed2501784d6c3b26ea6a817..ae25d4fe7cfbf40430df08c0f3293189d21c012e 100644
GIT binary patch
literal 2312
zcmb_dO>7fa5dPM?;YTeMKP@1E#2PtKNSjschJ!h+?Zmmb5VZ>eaj-YuMOitv>3Tsy
zs+6eep{h7IDhF-|i33Lt2<VMtC2mz)_1G%CSG^@tg_&8uN7gUiTPNC`dEcA)<{Q5k
zdt<Ry&1f2=X?Tgfl|+G`5A4Nu9NIXHL&yOA3b19vE;fMqhGGBoTCe|}#paik);D19
zmVly0-ZQY9h4Ci)U**R?b#2Bq5a*sV_21+}z56-hJ5PMuI%dvmnBOGM4WI>V{_+Fh
zWNF_t>|OlP+~HoVVUqfhhTTc(RVKely~@Cwa@;F3^DXuIXD~P=^)3+q#918A((@#P
zd5?NL0=_<yfkX3cWvJHy>Y)Q4KSHMUg$C#K`pQn(z?M$68<=R71_MVoIM!N!y&X8L
zg*6U6`ctHd=dY3`i1|VDgEak3vo%Q5HffTxvwvT|RH<Atr<X2YHJxsEt-0z39rIQ<
zG^17DEY02yySIWhio)h<5c$pMPUxFOt1w%b%NMPD!JKx(_AEtn7cMYv<xSqn&lN7l
zhnM=|vp4YXU|fPe_GSP&{f#r7m{dC&1KefQPQ=Uo`6mh25<Iff6u7LA{!@V;BF`p0
z$2un1jo9b3I-ZzoLG03<#!%}>I&P%kbUDZ7e?vI)FAJK6@N|!3{Fzuk5dN{im&Ks(
z^?QD^RrkW+t{?WSCUWb@c?dc|WL+#4iV!<Bzav9%#X?+A>E7u?s4vy7luNbxm1^~?
zMW^nR%C*Hh>U(MRUgU<9H-dC;$3#nhG~|j`)u7`Im*soc0&h9+_Q99kwl8L4cY@}T
zXT)n6f1==W-jfP`mW#-k=fhzbzfBR-7YvRh@SKQMp6NvXM~QrSKB`Vf<fuBYr|?H9
z`QHg#)qh{$s{Vcozq}`$pVTk!k*fcBik?>~{J*B;pQe6ns(w@8s{Wk7_kI3}{G@(Z
zy?gD*T_GQZL%%Ac&|h<{$X}0Od2ZywTIuy*HM{M$PuKeYF_UOmTH<FeCbr`@a9!vY
z%YFarXJ~`(v@H{aZ-|RNO+P$r%+FNvo}XrrY>FPn)o;>=N?*=pQ{m4DW6retqg<3Q
z*<V6=3Yc?F0>aDwHx*p=PkJ%pNal`6cqaTo+WmkY*<a3om@rj46Fn8+3tl8l_La~v
R3dYrcFAnsQOcY+Ne+OBj@P7aR

literal 2704
zcmb_dU1%It6h1q%X;V>&O$tIwJAt5WF~e?jq1%_vZcL)Gw!y5vMA%Mtr|huVpUzH0
zN{}Y>MUX;53;Na+6x@Q~gP;Y)twJf(zSJN3BE-@{Us})-NWkrS&dfc{?Cp-ec*5*C
z=ey^A=eu|2-kcfBj4P1{utnf&*vc3MnC#t(4KFlc2YBGJ3b1SftSDe?4#DC(Kt2Y^
z8Guay<p%scdS2^=D@`@`TMyQ*VlBjsBsNO47QSz^R9Jb~Zh!n4;;n_NpRe{BUM=Mu
z@6*&@>Dh+!uOdE(^Y5u}@KS)|cjTZkfW=#b$Z-UEN@aj-6ZODtYlFB+gIseiP($PN
z1pEDfoN4UWvj=v*jL#iqOLr4{HgP<P{VoEWd^-x+YuHag4Y)4@7eOg~p`wQQnT>Q5
zR#Y&OXHZwF-Oj2}ino{kc-+piwhk_(3s>a7xkx|l0drE!Yiccg=k52SsYqi0_i{<`
z_i}w&X{@VoIR%jT2-kE0@x^D1EBkOw=TJvKazt@GONbqT{?Y@~v7{KAYwE7cbANsC
z^Wc1aqrMHfqPW)p7n+aTiA5ZLG?i*Vac*OMI^Ae3{OIjJ=^?xWn;0EEtnHsT`mUC(
zR%i1?)2?VIs*dIsEiE-%bE+roS&W=~(RQu8d&;r2q&_k{5{oDG_=vXObjrgR#SR=G
zT#sus5|51}P|d$s1jnNAXS-X8+Vvy=sQA~-RAiE^&jYASr}bm11o&fO_@L*X<{3sj
z65!|KNXsLfbDn7k{8{v5K?N${DU|Fj%zdq$1II&fCj>u>_)hG`>p6ru*?D{juX!0j
zQTR&&UlaLH!ha+1FNN?=1b!2JH=R(h@}*qCvF9wOuIFKB-a`cNX2o{(n(4TD42B9I
zQ1%(C0yb474!xR$+(hPBI+e*C8y}w<%jUAFbY?6EIpTlaqtDe{WRj3-&Fkk^j8;!o
zTrZ!nTp#kXal2CR)AZ^0?82mtQjj(XA2rJs)LkcE=AH5v-jDmh?~)LH&xCVKIDZGb
zB%J3a5r2*fh2b6G8R5^1nA{!_@0ED?y~=%G6ZLZ6ObGsd2+pgP`Q4EE<q-T+fy?^8
z3aP&yQokl}S<l@No+$1YnY<4J0+;nnhSVPqssC2svYuuL&+QO=K=F0%#&Nofo|s-g
zU3SeG(D5VmeUT%_nl*LTns-4jn63%>OuY_zzFIC@___Z-rXdYU#{csjW{B(!p_>Q$
zI1qj}dO8n=$l0xmE3YQz6F>Fg^YWr7d`aN)4gaCkSCo4k9Fu<qAL0y~A3S?h&;2PT
zi{nGO_?!_&#{H-L^vN&Pk_CM?srLoACJMLX9J&*@Kd*lWVzPFG;JUbEexW2_+?Syj
RFz7bFPc%Brg~H48{{dVNbn*ZI

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/deck_info.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/deck_info.o
index c9b4a9d8c649ac60beedf229ddebdfc2f9fa9add..7f4e12d421b03247c74a8f75b743f8474138c063 100644
GIT binary patch
literal 5440
zcmeHLU1%KF6+XMOl2t1KIkFNtcF-tsiY>>Bq}a7q6f%;$mPHj=tT(j51!*-qD^2!i
zl-XI^stVph=t~>Wl0ZXSh@gGQiWEXgNVX}pNK6`N@?vNnS}0Q7hnA)fjjK9~t8CA?
zbFOqdlKN8emMdoOz2E)L&pqeNy}P;=A3qlkg+R6tyb0Sgi2@k+DPu7-;2vm&&Ba=E
zQ-jLwi=pa4fTcU8R{c@fh`kAL>h{H<>K${Wy1Dq<S5~#DkIG@FK*XqZ0X&=E2T4@3
zgimGTQn>mr4OTYrLEB56^q@{KjQS%`PSmrJ>LKh0!KkmFfqLkmQM+4gsvbt{2tJGZ
z;J_1b=$TX)k}r^rHlr5PLOtnbqxMq`dah}aY>x)X<?kDH(%+3XBglDKi#)TA_!|$0
zE2LBES=($R*R{@-HSNI_^zX&xVWUoZHMB)KiAy#}FWDg*Cs5{RVK_~D+_*Gct!K|x
z?-t|Lt_ak0l%qJ{T8v^M<FR(esFO~ze`^+M809+IyESXn$mSm#jR#)FSal%hN!;5Z
zB{nh5sCVhw@83b*oe-RQqZtl-gnCl_M$DKuV&o@4sONe(lAZ2{*zZ1XB+uM!oK}7N
z1L}`=8ns71Z=A~PH)<Jx)7E~d{T=b^(46&SaA-xxz4`w6z6qO})^iJa=r88bs8N2&
zABt}T$~PZDjK&XRtV0LNiBL=TPp$!E_0{KoEV;yQYB6e>*mpT`9ryYPK=K}dgToOc
zHrxUS0K%<^XYUO`GX4JaK=`}H3o{V@!4nY4uH&94wxkaNJ?W-rbMaTAK5zW>`I|S6
zzxwIVfAPVmP3RxhYdiWkgZcU=)?GKsn_;82(GK;F)lg-)#aLL=I#wE{_ST;th*WPq
z4z-W7u+TUG^~NQrHQt5=%2n49aM#hdA(SV+#J-35Dr0VnsJ}Q2l`d%in~t?c`QK<a
z>YI!2iFe{%t(^E+3suOzln?4!#rV_ONC>&_LWS1JPEdb0@+jt%6RL4pPeGe9Hq`IK
z_!F-|?<D$6_1KK@zk%_84&!e^q_qKB_Icc6)BEN?8spy#5sZJ6h<^yj$g6ZCA8<Sb
zAZh{gag*}0x%eCZd}xLGZ7sYq^+R}ze4h^Eyp`hcj);TwiF{Y<iRUpt#{g&JBj1=B
zn>cr2P>&}P7ZQW|S=YX7x%#B#+VgXIshFCzbkiwha<=Ie^((eFr>FFJ*Sc&wrDASD
zw+f}a<)%C<t*0$BtEYv0RG)CfoJ4Xtea6!5g6-L<oc$du-Mt_E5N%KUqw}`&1zK0^
zesd@>F*Y$es3)&TmtE`GlI>c0+RkJw*D83rRrKt9%5&VJ@470Vatn50wp;Aj4_?M8
z71DafaYYECC^F$BtjluKU-n-{;ERgD=*Y;Rer$B&DLv^pIdd*$7epa?bCy1Ia^7_^
zb`D3bIcIy8>6Ng`W6}PT{k?s$XkWj6Eam1;;;8rdal)g0I<55e_MiUW4&ylq5%>ol
zdpn!9>o*_(4gYp)8fx0DY0$I-zE>bS@iu{zS38>qcp?XyuV*KYcN%)%48A^q0haUm
zJN@hu{B2x%aDs8UBKtnZTUf8eM;OPuTQsSMCK~MXLFLo;XD6OUPDtVF;cX!eq}6S#
zfW!OLd@+9!aT$Ycwzw2`#h3Tszk;~X&wAzle#v+n<HvAL?QMLBZ!kV7P=F5^Ut(PD
z<WGz*Gk%Z*hu?#Qo>eZnX`EBr#E10j9C&HB73Bz@WL)}rl=0~R4s`cT*@cV~HQ{I)
zj$VayDW6~PZ&R>~V|e>Tzt;PB3{1QnJm4!P9hVo&7BcQ!87p{}D{dasN~F@Z^Q4ou
zgo!b<P}~}kQkWVYzc4&BK6T;Txr_1SRB~u|JU)e13PmSpO_n@716;7?UAy3Agye{D
zfE*@m0!rpCpHCIzIV+EsokT`0@1lodvmk`e1_W?<xJ37(!bd$~hHDA`4plZt7L|oP
z_ept?@ovX>bEpXh{7od<{Q>+j#ybM|*BK{0YW*4tU&Up85x;{u)X|SCYJ}5iQ>F>F
zZ}}aNT@}wU9z*<o9#gl(<Dj3fF)sD<6kb>O>M6Iz_+ivfKN@8F3lD<&+mJ^sh(E@7
zFrMR#2mPO9JZLw^crb4B3QqoiCcFUf7?*LA_*KS(c0XY}XczcBC%aT9vQ{FDKNP^_
z`4Z%J?!iBz=vV7Ro}=WyivL>S%QK0#yvjK7Rr~|Ru8RMgaoX>L95d?L`1}guI^#k8
zlM4T^qUYNRuIj(4;3~hohyEqTW!(;-ztmn-aP>WUNzp^~Ao=*4U$kJ}ml+S{{S+sf
z@P~X+@hQ)1nO_;xB=coGNPL=c$(QF&nsNDFNF1WYg}j%V!QONIeol^DE0>CT)>RLp
z>6Dj(=uEK)QP-gf(fgtUatcw?%!_5y$%`{r*~9-c)KQpH5d0=%AVw|6`|@Z1UAu%)
z&WU2+qqg(@7Yulb<-dZ9WJkualgVFYoYTfAz^ehfa)HZ5PJzyG(z%yByRpR&s`bB5
z0rYP%{K0EXoDCS1{!7?EI*s}D^M&!VlLLBw3-Je1Uc$6a@<IQnSzewSk{^_xWcgl6
z;J(bnO95Q^t@c6RNo0-X@&ACL(XUv#OQn68Kgw&+cM|xll|BLFz2MLMy~;85_z$LC
S<=1Ed+tYrx^(p<9z<&VdGwyo;

literal 9928
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

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/deck_memory.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/deck_memory.o
index 9f6725e855fe47cca9e56c71696e73fa53d36ea9..0afaa076b2ddd3bd7c09c5f11478090a4a40899b 100644
GIT binary patch
delta 428
zcmXX?ze@sP7=FI{P9)6GvM$WLD}vx40xc>CJk5U~H5yB5b1GL!O$P^;<0K*i6&gw$
z3>#{a{)C1anoJs9vgs(ezE4|T-sgFLJP%JvDoL#-neNdkl^_@E(wPQ;if01rLF1W7
z*|ZaDmxAOlDRj|}-D1WT?+9Y*mx`*>fkf?_=(QkBtALj)A0|K8UYB~+`UXt?>4%~r
zi2O5juE4p&9nFl|;VzDgaj#1=-)(rf$>K?KXzV8RCPNz}+3td;n)S-a4kEI4w}iPs
z-j!$gY@om!023n&EAR)RN7@$07VtIV=7;lxf6T=f;R{6AP8B!_v%7O9Ks?wCr=fFG
z;R1Bdb)^v=_REvd>p|`cl_YZ=5ppr3FKn;$=&Z_P;e)gvr<6q#Vk(+|M21Dg<LU^$
z)F<_+Wn+)7j$K%m)M2b*go!N53Vm%i=`kUXZMSV-AQ>ZXmq>Y7uZOi|+%u-n`*zoU
GOaA~z;CH(K

delta 419
zcmXv~F-t;G7(Mr1#lZ><^TErEXb21mo<#-0yXnwu3XNqB4Yrh9MDM9fW3Ok>5Tvw}
zG#I)Bf%Fq{Xnx_+ST?;1>RzMe<DPTRJ>R+KSUFajw`6QP%1;T*b%%u;0IKsNSjgCq
zL^14P%%4-m?=o1-hjjkXo9R$i_+~5?_aj^TAXY5__osrVg9t`ngwA1VtiA|WI(;!T
zsK@L&f|na4x0T{<%7<Wn$dge6-2L>TeP!UD`?+|dKMRl8w$SR}Mn4t0RFl*EMu*Yg
z!MN57R8$>D{Tx(HnofzO(}K$(s;%Yuvc!`F?|<Bcwh6rdYsxUYIYcyxe}FxySuKi>
zg|H-ptyW-3jibPlxQws>GqCCjnGDsONS>r-*M6ldacXc|RwFNpQS5s}J-SH5DY6%$
zCRtgBMhZO^iS62HHb>6v5}R!`*%l!Wt)O><64NgE6ml|{wZUxLcY=A7=a%EUX1}Gi
BdEEd2

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/filter.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/filter.o
index 9a29d97d2388558e9058e4456155b6ac8cad2c61..cb39e9e230a88d1ee42499ffa447346a0120d891 100644
GIT binary patch
delta 241
zcmX@WJAr$G22%j@M6IyR28=rxomdzkzz9eQF)%U&K=~q2+6F3K0OdPCX?Ljj28PK|
z%np;6FsrCDFvLJ5r5G6)IG}70bplD8YqBZJYTh$QvJ8_yG6_#&mEe591Q9iutjKE4
z#KSnbkwt8B0jma#xq(%Kk!SKvR(sA2pameHFj<k!oU;R}FKBWikSD+lk+Yhd$SMy2
DX{jE*

delta 522
zcmbQheSmj@22%seM6IxT1_?#E#NUlUikvHo{#Nf<`Inhtq7s9;+$(+NTy6n9xzF4T
zKR+`wta_o&l<Od&AjiPKFeL$~Ug72PA}$97IZmKj1~6ur!U5zfI4a0_a%#zOXllqQ
zT58L2=yJ&`YA6EvnsQ2#KrsmoIcE(exg;Tmy-9qGhPsJN40}O_GH58sajoH!*VNPk
zTJD@%@5J~+1E?W`jbZO+Zik;Q)SYtwRv%fhv0(=z?-rmA5HJE_fyoOQg;~vEEGruz
zONfDy0faz61VS;m0cnu90#w`qDjo<GPhgx}#pJ+Ql9-pqkepwfHhCwLYJCAzku*>f
zCzK7MI*`P<ki?JR5a)qfDg~rDkknToiSr<dGw2mp=9VN*7H6KxRKqxV6SEoT31*0V
z#pI97=1hASCkHZ%O?F_>fH50bG#K|xUddw5DZvC$88G=Hi#cZoRA0<wLsoN62NsB&
J)nr2!c>rmfS`z>O

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/kve.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/kve.o
new file mode 100644
index 0000000000000000000000000000000000000000..3cc7cd5cac9f3672c08cf92918bc3dad3908610d
GIT binary patch
literal 2632
zcmbtUL2MLN82)#smO{}WtZ3lS0S!W8H{C`LLr5Ij(n1i@&?O#fVz<+`Y{TvjPKSm~
zP1r+kdXR{Qco2;yvU`$?ULdWJg9#oKB3E~}7!$Z)wl(QtQ~z(~J^P&OdeDFK_W$4a
z{`dXg|K`nHKK90FJQgEmG5VG^X9^|i>Di3!Ahc;K^-yc!c4Z%x@3joNvNjp7tQl10
z<*R*NbkppjbaNtBS!L`QqJ%-a?lz1>wQlUH){N(>^OSfGxzq8)-MX<mz*gA<`?Z^H
zQk>Ft&POh=Ci5V^%xmB%$0)68?Q3mtZpaJlw~dYGn-fPXYm-Bj*24EUmW{U`fJ?_X
zFJV&o4A%Ng;}?w9!mY|?FY#)_h*i<wpN7GE!(LR)?+EqF_cl521a+XZ9%xMjy6Ii}
z!xh%ub>#T{_*>)mYb#`hS`*cWzmxTF&Mqy|{*#NGx44~tZagOII_-YE_`%1YDDFm|
zz1~{5a|4={)==;53N%79bVfCP9%?)T9(4{;eQ~Y}J;SW8#%I*{f~=LV$ZAa3CG?6j
z()UN}zsT#Tzn|;Zm*`5fm)21OXS1?Imb1-XpQ6_v)VKyTg0tC+e!}Mx<?F=dbW5Hk
z+v5B6&S$DOjZ3eAJ6PLteUDy?#)gLvn+L~EpEc92n|E@V*`k?sJ=4z#^JxDC&&|%}
zIr5y`tS=n@q9;r%IoLlqkg}4gLGxh7EA(?TaOe>5WXi-!YGCj+?&@C*?^GB4vC%HY
zX#2(y8T@N!1~Wx%O8~TcbHVdeG@Z6FvQw+OEHe`9cgR?GFL%I?bil_u;O9EvxM=O_
zzRx&xF0+TJ&(KF41OF*NiN2KnQ}*q6zUhGf*a5FG4*s${QlICrM?8Xaiw9F02_3CU
zd|cvF5~uU?BI(demk^AItd}{5Xu@|n5~H)lnd5F=XwWHlUYrsI*DGn@n;u`rNFw&0
z7MJ`Jz9?v^fR7btG$h!pK|!@q;X64k3ERLlR5~g2%3~rZaH5!XwQNR*E@rdB12!V^
z!VgJZuaNP94d;Y&9!G%t1l!B!sGc3>HvZUvZw<rXKP_Y6xTDH)G63GIK=x$~*ZHq%
z_;wk?-IDPh=6PDf@%&)m*YA(XbA>+}hQa>@iGydShF{b2b)IDn*Li9huJ`+@yhqTZ
z>%6AndS8^BD;50AG<)9*eNIK5$Y+v1UlmHuWc&;zr|0G<>9~c0DEgZA{}Y<L8Lf0j
zNNhR(TIyEI`q=>6%L89En}=>wk}xOF2~&jXS-&8Y4@f-v#e5Q}E7JoG6~n*61DyYL
ze~R})*8mUQRQ*XE<XE=z58qDexD>QQF5)|n5$zxEP*giZG$lX%Elf01^%aCW*>3+2
OD8_a;bbtRx_x}a1AHaYB

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/kve_storage.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/kve_storage.o
new file mode 100644
index 0000000000000000000000000000000000000000..bb589c50d254181289a09126a2c2c07c7e634dee
GIT binary patch
literal 2912
zcmbtWUrbwN6hHUgI+-JiRGb-0xWF`^((orFb|KlNYy+~fn1O#HCZ&|iAkcQUWzzJ4
zX7jC@0NaDv%N}^4^~Ja)dzc!cE^*n5pb{TUY(by;vZVrPVpq?(_k8U3QlI<?_dDP3
zJKs6KbG~!Fbm7eTv$7<C7!urtrz?R1sE41*njva%7^<Mu2kRN97Q=aIP4R9P<KLu;
z3M}P^rPOc_)c&nNdK?lP8AVEGR|tn#=?idQdrm8i!Kux}^I8FL&M3~;^TWNVV*LA6
zveTd{ztTV1Qy@`GHa%!3e*_A7v}xG82TR*ti22#p7~9eyaWQ{HE7)zB_U`TTBW^1S
z+{r6SdS_Hl?fI3|$2HpWJV?pHj3adnVDVk_8v{AHARo=ij>JY*c{$y!I3Hd+guHR?
zm0{!q)Y(#;>8x@rO)=4&QR>nZBjJSYjC#<1U#c*3Iz=&?vEE;Ogd9L_*d!e~Lq6yn
z`5`QF6&^SKQyQ_Je^e?R75M>3EUzine0^OO9{}>Kg7pTFa?=Wo<nbOT*4=Gb+9}<-
zSOxHsw;Dc*G&Lm$F_x>cR`8&{7o52V5{%H@5f_RV@5tb^713f|sGI41QW_zQVj+IT
z_z%Y2kxabI7)?y@EygSJI|Y!F1wSVgc97q*$Ss4uh*Ly{q~Mj>=Y=`8@XF*gcj8H@
zd!Lh&YJfSRT!~XLZq@_ENi|C~LA7P%s97>{L_YTFp|D3a%=ePNuEiGQx|uc1Spxax
zo4S%vO?h_aT9982aet%Nospp1;NR4o^x!__wRN9=d0w~4Cg;_O`P+|!YNwuJxnI^B
zl+$hGTa163BF@w!**;jJSo{vNzqXpS7{<MkJ*T;g@$Xi(9__Yz{PJy4GuXH5@ZsA(
z<81V=)T1pE)`(mQR{<W1J@QBW_!s#^Umn`8h9xgJa#`%574%8{IlTDEO;Pto43=IL
z_fPrVF>)=Zck!&5dnuh)9O<nFz`KGQf8u>oKAnr#Z&KdL<_g|L0)1k7lV;BxtUu#<
z>hJ42skZcAct;%xg=YOzzUiPk849b>DP8StyBrQpPS2tg_D@Ymb$@g&tgCKUXIp1`
zhuhWBskZpSfi{%dTU!Ztb*Qw{(cal@SpUxty`2ttT&kp?RD4+h6#T0+6trX?FBrhV
z7rNHK59-$;E?MlThMxIR;2F!x6ko-u*1{9(*cfic#d?78A;!meeVS)llbtVl{UgtF
zj3+n*e1DAb8RLtLf6n+V#@l5R_>}Rl7{~rI#vR5VFrMI)_Avej<7<qIICdHTiSgsC
zUxPe|Kfce#&=_xIyq!}$!8puZ(Y=vqDD1nWyZmrs9!^X^Aaq6d%uP<}VOLj|yPI@|
zO_le;SapL@Jz&QMLbJLZI}@C+KtpJBNDqX<F$;KhIygb*Jh5}S9WOslnl>i{UC`&F
zHa`8jfeZ#GLl#enqKor-@KSWD95y4Zv{TLrEtsm5y5Bi}PRy&ddNYjI*>DH0Y1r}i
z`EWh%J53ey>x#qzQQtVYBGIrpPYEfk&-z?Z3>;h&zNime<B<rs{GmWV4@Rvv{)epM
zS)zQ%W<%rk4QtSdiMkZ(^(c^vCIFrj+&E*rCi~<^^wTShzs5M1F{1##*!+qOPOn(P
zn<$Y@`}yDayt=Px3c|mDJ5V5-?E>IgoFBE}!oPLq7BAC$i=VC<-o)Pu_<QtV{Dj%L
ilc51RfTLSDGM5Hd7LDme{8l=j;XqGXl~J~tgMR^ebgMi7

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/ledring12.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/ledring12.o
index df44183d277c7a5e5f60f822788c3dc5f473e0f9..3c84e8e04e00618f008fb59349a149907c8f0fc7 100644
GIT binary patch
delta 483
zcmZ8dF;2rk5Zu)CR1`Fnabn-u7bGMkB7ssNku=am_IYEUa<-%M8Ywh+M5<Ke36c01
zPv9=Lg`k_6-PzsQ<6&?-3{Ka>UC08EvCJ`jj8j~w0zDBj2C^{*OM1c7@*wK@lR+$<
zB6{UPH_j4FVATx(UCFt5UnserIkyO5Q_LwQY-t2oY-l^pW0UPahnG7Zg+RG!YVrj4
zIV479Ih9z~o?!Mqjj2&(R$u`&;l?(NIn+(!JLEeQI1~UWY4?rWQ>K-!43J%deT>_V
z_9@ud2^Y4ZOTqT{UbYLxq#Gp!WLs0cDw~5x>`dNT^7l+0MWE_gsYu0IeYmf2W^*f&
z`MKY|)Kprx_@8$ofUu?|u2#!3G5ed*^BwntUxUw}v_+HziH_yE|Gjfq(G!svL(*7c
L9R50uzOQ}&bqksV

delta 483
zcmZ8du};G<5WUXqObjfHO<UWoQwa%)N}x_ilm(V5ajuC~C#jqZQd#;DojTD^sKk%)
z3D`{{1lxP>?%mzH<Dqvv^iJ3Poe&IEq%uq%q6A-bj)4?{gQ~5?f}SyPoKHIbXb}sq
z$WFO8wYTsPR_y>VrCQkc7p>NF?+(YX$rlt6Hgp1*Z)iKqBAf0%`<FW|$3U5_D+(lM
z0%EJvj0&u(Kr(lq!Nlq!%`u0HaO0Xr0;)P5c{K8fdBlLUa{ETjDYMd)7RW8ZF2=N_
zT?#Su!i8&SQ;7XtknThnwxdD`>DHF7+U4MqpUGQ8{+`L@1avhoH0j9b5C1hTTy9M&
zJNLVn+R~T?|MN~I5LUFr)oNM9c7HQ?y5)@h8W@Md6;TnyCQ|F}_uk>eK#s#9#I+;V
K<FC`;`|1aD?V1Dt

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_calibration.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_calibration.o
new file mode 100644
index 0000000000000000000000000000000000000000..c730ca7d6df16d090c7e4d7d323d567086a81751
GIT binary patch
literal 1544
zcmbtU&ui2`6n>k;c7=ke^iUM*>~^&+n6OzCx}GMxxK(J2h<Xtz*)(keyPG9Dg;uiI
zL;rvtJoYN|*qeG-=tYmxi=L$yZ&LpPeY4K6A;uo+!0^5Iy&vB&^ODyOmK#bg2Xf`$
z9gIB50_3%kO@}6hJdDHa1nn1L_epVz_6vmeN!N~DdOB0XJxl2O0-~kUJ|NCb)Bf!e
z?U#@2*s7h*+&Z!2@5q<*TKox71sKfk+p&%@We<#ExfZ`gzVNsf?;(N?1JbPx`|A@h
z;2M($sxkIPGq{er2p^O)sB$gkE(~(}ilOdaGLF@?uQ!SMh3}-D<pa<G!E=CysKFqe
z4;oxaa?*#Tdi_3`Us`=eo`zw|^_`$YHo}N7-y^osjlzwfg;wPH0rOn86?vp;R*Xv7
zs+v}X%sWxrK&!m4z<JXmJYtnA_eS@gW%0Mt;ODQbn40;L04gY1>B!>?q}H{epEVJ@
zPhu!U-3`R63Ee}%Q^6kzUsk>p{BeqZCHND;PYFB_{F(6c0zV2~N=qJE!KTmraI5F7
zxlSu+Mh*+Yj_E>aI}xjoLXSEDYeZqY5jkxyJH_sHTRYFK^MaLgf~z6(gU)7l#){|k
za5&mthpmL`UTfL^htA)L6#%oh(`HT+kwt&dmlpH38JO!1bHHr&dSJR?o2!Tm{7<-!
z^?XXkQhliK^QjTiQ+WmSc}jW$AExSLS(={10Dtp~*5AQe-m{E5xupJ!B#E}vPh!?r
ubtn=R1@ikD$1Ue`TJ*h)m_9oXeG^T8h&%~WSNfA^WYvEbWcoLfuKx{}o9L|o

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_core.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_core.o
new file mode 100644
index 0000000000000000000000000000000000000000..ecff545b6401c3d5168e88901a7791be8b908c14
GIT binary patch
literal 15968
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
H+5f)*zI!(X

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_deck_flasher.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_deck_flasher.o
new file mode 100644
index 0000000000000000000000000000000000000000..097343a06a1efa1824f2bdfbe5a8d6c629f52baf
GIT binary patch
literal 1768
zcmbtV&rcIk5T5Q9gy2E2SYrt+2{F*frmZCr4rcj%z!-$82M)Nj3)`^m;@c%cIKWxG
zn2>lf)*I#I!NiLPV*D2*8ZV&n4=@A?2U2I2_hhqKJ?Lv*XXbm~eDi)x)Ai9?V^Smn
zVnpCAoJ9f!*ovO{n&)cJ2o0dX#?+2HyW642A8B^BK?`hX%}9w+e6segdLqNK!x^di
zQ<k>-aQ!F&$66g^52hp4Z!#o_-x`H%M;ow81ae)dIRX_HLo1`sdONT^#P{V`a<d+q
zJ0aTiQfghi4sugxt(H5O9<0WZ`$~#We3dV4AI=O_j}qGP$=Zi4+Q;*o&_ejW98Y4r
zNp%znauq2y(E;%ADf*;AXYuFKxdeX)AlF)}WvPw^m8tKwTAXqqBxg^)nB0AzeM0MB
zkSFej><;oh-SOe!0i}EV_FW}s+g9Gxi)CfrW{PVX%3$vjv*(KzdMs}iT_f)<GehZD
zGrgHqx?fFaly04sdeKYu^boG56<SHBGJUw?zYKcYDEz2}QRL8<2axd-He^%^j)Vt<
zbr9*)1?kX^NQ<v-180nL`~r{9bE~5j7>7J#<2UIj9E|cUJjOVT|Kbn$8^lQ`#q-5}
zz$z}7u4ykj#%#gJFV4<ex?>tl%|q9UZ*c_I#!i=pP4w>>%qiOC!E#~9w%u^zl%W^E
zGUqHW@ih8f%_n%DVJn;wy>L=r@Ij+YcZ{(jD?QQ~!eJtl%w95>TQr<I%LZHJ*9Dik
za|O@cC_uCoAKv7{Uvoc!d_TVD!^N9<km{_KTzw8y$7QG16dp4yU3HBW7u168>Y&a!
z4ybv%R5Hpg*ZW_ipa4B-eLzU#@eTgoVma6|)YsJQnjmo7z<&Y{cue{vCHh9(>s5{i
ze@QEWx?IN75I)&!I7#zg^V671rBXQkL)4$~gXoKG`K=V-Q22=xCb>O_7|r1Msi%T_
dM+mw(_?ZIV5OoDae<)%3CcpmyLF6`={|m^<{YC%)

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_geometry.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_geometry.o
new file mode 100644
index 0000000000000000000000000000000000000000..e038d52e549332cbfc5452dc9414c74889d931fb
GIT binary patch
literal 3440
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
MkFAa)o6G3nU)ZNo@Bjb+

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_position_est.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_position_est.o
new file mode 100644
index 0000000000000000000000000000000000000000..a4437f31cd39997f388c49640d529b98a0d8f53f
GIT binary patch
literal 8848
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

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_storage.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/lighthouse_storage.o
new file mode 100644
index 0000000000000000000000000000000000000000..3c935ec63656ec21468dfc1e7e57e10526b22025
GIT binary patch
literal 4104
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
CzKo9m

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/ootx_decoder.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/ootx_decoder.o
new file mode 100644
index 0000000000000000000000000000000000000000..294f839552f411f1d157cd2d8e51ebf6f61147ed
GIT binary patch
literal 1568
zcmbtTO=uHQ5dN~8YAdC*5vo|R+al5yyCfk6Q-r+!XfIO4#)}@hKi!gG(lwhE8hS|e
zBzRJK@K|qFyq7&Ftp`Q$s8Y~F@1CS5m3E!Cc}v4Kde8}P-^}-BzHi>{q<-bvRVfxj
zXfbT!FbYv%S3dMv;4*Ze9f)t;+LGr#_bc)zzV=sMZ|uu>JOCv2=3*OrGG5>;^ZKVz
z*^-c#uzKT}gp6jetZ@$BY77}8!Mu5f%5EF-T7uOk<LKeBk$^W4$B1$n2`z!zI@N>f
z>rar~o156!UwQMKYi|Q%64iv9y9a*eo9~|*pxhw;1b);9;pqml(OP|wdAWA#jkMck
z<nPCkaeJBPzRf(MYp$)%qNY)-OUwgl<l?xa^}_q`%g;07*NFEEX-&|bI9Hu|&UK@*
z{nO8L{W@vt)bB^i$#tR<Bb@W<UCetx=LXd)3?o_>y!Vt7^eg&&7sOZt-M{}ODw+hZ
z)A#d=(0wJ&b&7co=g^67ljAc}Q{&3e%<N4iZ`&oapcj{vMcYx_f~8E1-gWH7Vu?J*
zEEHYKbniKql2y~A>0~Oarqarg?vzK#OAZfnTumwbB$Z5$QTKl_K09%I_gkgNEhh_*
z>DS6+Vv1UK0C1I~CZp{Lc#@DrlP*ncU}ps0-~%3pl(y|I&o5Y}y<j=2iSx@aEY~hs
z;0MzU{JLYCR<$}=bn#X2^-=wC;qxsc_@cP>2b}%~fkpG7R%>OKCReSxPGc{Go@14C
z)wPygs0+HQLp7>ZsHR;mTT5<(?!TW3G4R%oMVOd~pNhW2<M4fkaUVJSE3yy}I}@K=
z6EWxKRN?nIE$|Bhk50%=L|3E-9HGzmi?lfBzt*RymP;jRHCw2EyBQ=uY^!;fA~`&~
rB)}bU#%G7G=>0ngi}ub-x&;{RE7avV+<IuWs$Uo2c#w7Yh}QoGnYh;)

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/pulse_processor.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/pulse_processor.o
new file mode 100644
index 0000000000000000000000000000000000000000..03c7ea650e3d7dac2b3f93c0c1d8f45a608d9973
GIT binary patch
literal 2648
zcmb`IUuauZ9LIn6-r8mBl)BV9tdQFwr7JchStiXM<R(FfAhotJFBS5ycTMm%>5?01
zNoa!jP|1rS1;K%W_^<>Y1UDowwd&BJFMDwee96!^LC`eTJY@0ryE(VJyG<&H2Y&gT
z^Etos`+d*3=iU@vc=<)1<3Mj5d=3vrIt4gwdC-@%t^~)y0-fBAYDa*wKQC4GC!oDA
za5Zl}Uzr5q$L11Ot?<Rgh=nU%J62p=%AdRPtIu2KfGhdHeWkU`S6grK<uF>HVJSa%
z`z6nZ7Px$!fA9Uzcx&l852bs8wbl^EYSA-LzQck07hGS!m<9&{l(Ccf2+Cja*5AIq
z-wiZ`@tNk5x7u3vRre>Pb|-i9>aGyFb5GzghqXrWd)@An<o`r(6NR66$y*N%!DR^`
zK(RPCMqIZu`K^j?ce2D=_)=&T>Y+KbFxocSr)YQ4fUAe5xjL=w<i60(gZADOptdLQ
zGjJ<9C!zK*FL_#4Xt(f;P`^7oEO`n%c<{j8EvwWn41-66;$rv*_Z;n`llxZF-w>Xt
zO(MtqJAa{W8gp!XkmG*$Jk51-UuyMfzBvMI(qKc~Hq>oH-8R&1L)|viZA0C*p6(qw
zAF5H9f_h;d?M<`~(7r?a9c`Se7oO+p%@I1+Z?5X+q}QYU?qRK_z|D}(@YYtvx_hov
zJYg--Uj9u3<)rgJ$cNe~kM(IdMZUm`Z@h!g$XMUlhl_sy1#$Y~{A*$$l~Q8yNFpg-
zN~J|LE{opT^>pe|Lcv}-7Eh>hOwFcc(PMYbx*SfA-RTmiBk8qS>^aV!C2n_$G~;x*
z&SUi>8oet+@JF{_h=32aUlTy+hmj5);#Q3e%Jayf_;Dns40Ug?2-?Qzp=bcQRQ<R*
zfR~X|{$2Fc#(EAuM&B>b_sA)}!Qvdu|IGL(+gg$Fea7EqTw(k%9BcdHdtia_DaIEV
zpJUvIyq})%01oR}B_oIMp2Xx#CY83w;F*mcT+o?!eO=k~N0dY~9Z?ghBq)j1xEfDo
zGqQndQ9<Vslk+Jxo=C195fO9&Qxe2-E8gU)B4<o$f=(uEaEM=#BWcqzjlGgpS0bvs
zVw&?RO1~wn&f#!P)~i{RsBW541zkPS17@8M&jRGxbDO~DWB99qPYnDx>yx`?;3o|H
zHtRoyc}^PmNgPunKGN%IzY612_fZ4S58yWq+?eNY#?AT1*uA9u#`xC_oIY@RTQTt7
zyWgAHV4U(B<KH%LV?5Y1n`>$$ie63kd|dCPWhG))<qZ|=cncz6k7hDpkEPbu<RrcK
z|3?!s2_4C>DVfB^+f27UZGKlLaDu*uk{-bPHcPm`&YOnR)$hz{7B|JX`Ad7tRF{Qo
zIrKjHXVEC<e_ijywWP~|W^8)>Wh2Bs+s;G2pVVn4sKFK-!?k4Q{nNW*){Y1)>@Q<W
aFGvuZX$X%a>$m<c6~lI+=MH|&>;C~l`_<L}

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/pulse_processor_v1.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/pulse_processor_v1.o
new file mode 100644
index 0000000000000000000000000000000000000000..08f84dcffeea7de3463a27b785e2ed1386208004
GIT binary patch
literal 4120
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
JiprX9|6d@udlUcw

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/pulse_processor_v2.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/pulse_processor_v2.o
new file mode 100644
index 0000000000000000000000000000000000000000..45338a2da47f3d15e423a4282b708fec56a7756d
GIT binary patch
literal 3480
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

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/rateSupervisor.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/rateSupervisor.o
new file mode 100644
index 0000000000000000000000000000000000000000..bf5cd726265aafced0e36b2e798766cbed7e498c
GIT binary patch
literal 1240
zcmbtT&ubGw6#n*yHewEKsVI8L2!aWiB?<MAUOFMhDilGjqIhVx>y|9}v1NB66@=)a
zc=3M_4_-WZ)4hrRgW^&A3+m02@lBl}%djVXFueDD?|ttrZ)T^x&Fi*hL7RmSm?O;s
z-|TtJk3)_U7SMrpx>82XerDHP*Q%Y^LHm=l{k6iJFY-9x*$)TrQ07_SVyOaa&;>Hv
z#@02LXTbA2Q@DfA7U4ynZBwqd!`s~zWG|?9r;O|nSbgi_Hlx~}>MvtCM{9VAXHp}z
zS~mp--(S8yfB1X0dNiAzmEVIEo=F`xy4^Ka-MDp+ZN>30==;%_?ZpWb{g8F)`$@bP
z4Jk^3ek8&`Op=hby;i-|Xtup(i&gz(RHvv>t4ZE#GMQ;MT36?LDvIQ8UHqIC<($IJ
z0}gV_&j}sMn6`XO6y2cg<C^6-L(Fn+?m1OaRXkJpmGbL~f3I*!c_h9F?@so^<Vlpq
zi5K9~fx+DzN5Y`)`@`rl2@QIas8n?0$yfkh`gA1xUGgIN>-#zq;emih4SaaJX$mih
zN25@R{@X542f4+QMklWDM}uE9@I}H>Z{E-^qfSHf#x7Gr?)G2xS4b;+Ht6I{&wrFB
zDc1AzzUb9GPz6UyFZZ)RN52F8eohf*e!G<1P)#37kTX43Q%e*S>E9^5`J0*gKbH-U
Ay8r+H

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/sleepus.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/sleepus.o
new file mode 100644
index 0000000000000000000000000000000000000000..4847cf406090ba84e160ae0c788f270be742b591
GIT binary patch
literal 1152
zcmbtTy-EW?5T1DcBm~4C5W&JNf~c4!7qQUlBxoA3ij{?&=Y|Awxp23Eh=mVeCHN5f
z1a>0&0;$Azu#!|MLY$2|@mR0Y3E}(Z+xgpB?)u>9a3YlgvJ^bRk4GwiGZEt>>Ocn4
zFt~bp7+7%I%R;|r!6qKvEjrsb3RhwA<8?T!^s-KWaP@NkY@NM9xm4O?>*eDURtbWJ
zS99x4Rt-WXYl7|PTVYVGH;{#1tuBQp+o52)yqGT*>|Jgb*}5D0d1Qr+4W)CNsS~?U
z-1(U=iK#nH!sjsQ%u2j5fQ7##v#^qB*^!X6IaO!M42M}%7Gix1I${ZN?pHJlQA3DU
zJK`SXI^;k*5?-b5i%7bDYm`N~D>zCzR%cmrQwJVh`qDi|l;Jnlh=rozaw$3z_=PK7
z;O9{U+zWhPG-a&ze<;IbwY6!Zh@*Yl3mwz_$X`LCUc(_lV^==~<*WKiqMgt_*0gTE
zbW7JUL6;rNTgX(+zvkPRt7_7mNJmEfPf5^7{o@$>G{@0h&E7T6AgaH4{|sv8>?-A6
YH^?a`X4IFYc_c~spoiL{K#gYp7a>_&eE<Le

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/statsCnt.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/statsCnt.o
new file mode 100644
index 0000000000000000000000000000000000000000..5a859d921780b3bf7a477923cc4435d221e3f49b
GIT binary patch
literal 1480
zcmbu7&ubGw6vyB0Mome<_~Q^Pq(c?^1G6Ln5AA7^(4^APN=-rVkZiWwCYWTyW(t)G
zy(sh`Xu&_gW9vU4dr-vxLC@8bSIH@dqHmHnbY0SmzOebe`Mh7VvvaUqF6x>F$~5=@
z=PN}44vll44_yuu5QXXIaH7S*|7=vhO*7-G9_79f=l%@ns|TPzwE-$H$v?_?;q~zb
zhucXVxUWUQufuFoi*R3$fS(6#HHR@s%p_TYC1DbVH9rhkU>uIV8~Or{y?M6(>Ez6S
zqkaqqeFNSD#*n|o=M4ZK)YjmnALE0w{V&IICX@<=B{o-D+hi5jZP^X0*<stR$3(+n
zxm4G4x0@~WJiE~pjxBaQhb@}fR5qPiG&5N?XL;=udg=Lj$;}LtkxV*!e|QKN{>d|p
zz^~uq5{$7Y3}E1IoEg|DY?DJU?n}u&m%{0A70LC$+)+KiEb%y1JS5E#uhCk?9~18q
zPm{W+Du>WWdcqRDLPwZ3+}Q)Q+OULEaCbYx@g8)VVjSP>Zeh}2k+Qq9Vs*A!ju*x|
z)Tdf1ujg~+>Uy#GXt`3Y<nra^s@zD6HgyY+EK0tV7vxVNzY^ew<ljIZ3-DLuFCw1^
za4>t%+QO=%3U8zh<#|raGKI4zz{FRwz^wOrVA^iG?Q}%2$A9<?YjI0(In;yG`dx^J
zztt4R<t^i(yr23A)QHRea*jH~1o6AX!#DVp;$e|Jf_4uVvgg0nXRucGRQD0xp`DUG
zAyuO02bEq`r3{r*0wa}oL_Xp7mv<q&ciEsuO<&4Iz|>rYuAwuoeudzYN+b=}{{e;>
Bo+khR

literal 0
HcmV?d00001

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/usddeck.o b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/uart/build/usddeck.o
index d9b66723802e7198793a63fe5a6ee8f930ae9eeb..6b50c3cd43edd195c03648adf2a56c0401c2ff2c 100644
GIT binary patch
literal 13376
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

literal 23936
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

diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/filter.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/filter.c
index 60fc6500a..b1ec64b3c 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/filter.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/filter.c
@@ -73,16 +73,17 @@ void lpf2pInit(lpf2pData* lpfData, float sample_freq, float cutoff_freq)
 
 void lpf2pSetCutoffFreq(lpf2pData* lpfData, float sample_freq, float cutoff_freq)
 {
-  float fr = sample_freq/cutoff_freq;
-  float ohm = tanf(M_PI_F/fr);
-  float c = 1.0f+2.0f*cosf(M_PI_F/4.0f)*ohm+ohm*ohm;
-  lpfData->b0 = ohm*ohm/c;
-  lpfData->b1 = 2.0f*lpfData->b0;
-  lpfData->b2 = lpfData->b0;
-  lpfData->a1 = 2.0f*(ohm*ohm-1.0f)/c;
-  lpfData->a2 = (1.0f-2.0f*cosf(M_PI_F/4.0f)*ohm+ohm*ohm)/c;
-  lpfData->delay_element_1 = 0.0f;
-  lpfData->delay_element_2 = 0.0f;
+  //COMMENTED FIRWARE
+  // float fr = sample_freq/cutoff_freq;
+  // float ohm = tanf(M_PI_F/fr);
+  // float c = 1.0f+2.0f*cosf(M_PI_F/4.0f)*ohm+ohm*ohm;
+  // lpfData->b0 = ohm*ohm/c;
+  // lpfData->b1 = 2.0f*lpfData->b0;
+  // lpfData->b2 = lpfData->b0;
+  // lpfData->a1 = 2.0f*(ohm*ohm-1.0f)/c;
+  // lpfData->a2 = (1.0f-2.0f*cosf(M_PI_F/4.0f)*ohm+ohm*ohm)/c;
+  // lpfData->delay_element_1 = 0.0f;
+  // lpfData->delay_element_2 = 0.0f;
 }
 
 float lpf2pApply(lpf2pData* lpfData, float sample)
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/kve/kve.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/kve/kve.c
index b49dc2af4..7fc8e21c7 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/kve/kve.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/kve/kve.c
@@ -24,34 +24,35 @@ static size_t min(size_t a, size_t b)
 
 // Utility function
 static bool appendItemToEnd(kveMemory_t *kve, size_t address, const char* key, const void* buffer, size_t length) {
-    size_t itemAddress = kveStorageFindEnd(kve, address);
+    //COMMENTED FIRMWARE
+    // size_t itemAddress = kveStorageFindEnd(kve, address);
  
-    // If it is over the end of the memory, table corrupted
-    // Do not write anything ...
-    if (KVE_STORAGE_IS_VALID(itemAddress) == false) {
-        DEBUG_PRINT("Error: table corrupted!\n");
-        return false;
-    }
-
-    // Test that there is enough space to write the item
-    if ((itemAddress + sizeof(kveItemHeader_t) + strlen(key) + length + END_TAG_LENDTH) < kve->memorySize) {
-        itemAddress += kveStorageWriteItem(kve, itemAddress, key, buffer, length);
-        kveStorageWriteEnd(kve, itemAddress);
-    } else {
-        // Otherwise, defrag and try to insert again!
-        kveDefrag(kve);
-
-        itemAddress = kveStorageFindEnd(kve, FIRST_ITEM_ADDRESS);
-
-        if ((itemAddress + sizeof(kveItemHeader_t) + strlen(key) + length + END_TAG_LENDTH) < kve->memorySize) {
-            itemAddress += kveStorageWriteItem(kve, itemAddress, key, buffer, length);
-            kveStorageWriteEnd(kve, itemAddress);
-        } else {
-            // Memory full!
-            DEBUG_PRINT("Error: memory full!");
-            return false;
-        }
-    }
+    // // If it is over the end of the memory, table corrupted
+    // // Do not write anything ...
+    // if (KVE_STORAGE_IS_VALID(itemAddress) == false) {
+    //     DEBUG_PRINT("Error: table corrupted!\n");
+    //     return false;
+    // }
+
+    // // Test that there is enough space to write the item
+    // if ((itemAddress + sizeof(kveItemHeader_t) + strlen(key) + length + END_TAG_LENDTH) < kve->memorySize) {
+    //     itemAddress += kveStorageWriteItem(kve, itemAddress, key, buffer, length);
+    //     kveStorageWriteEnd(kve, itemAddress);
+    // } else {
+    //     // Otherwise, defrag and try to insert again!
+    //     kveDefrag(kve);
+
+    //     itemAddress = kveStorageFindEnd(kve, FIRST_ITEM_ADDRESS);
+
+    //     if ((itemAddress + sizeof(kveItemHeader_t) + strlen(key) + length + END_TAG_LENDTH) < kve->memorySize) {
+    //         itemAddress += kveStorageWriteItem(kve, itemAddress, key, buffer, length);
+    //         kveStorageWriteEnd(kve, itemAddress);
+    //     } else {
+    //         // Memory full!
+    //         DEBUG_PRINT("Error: memory full!");
+    //         return false;
+    //     }
+    // }
 
     return true;
 }
@@ -90,25 +91,26 @@ void kveDefrag(kveMemory_t *kve) {
 }
 
 bool kveStore(kveMemory_t *kve, char* key, const void* buffer, size_t length) {
-    size_t itemAddress;
-
-    // Search if the key is already present in the table
-    itemAddress = kveStorageFindItemByKey(kve, FIRST_ITEM_ADDRESS, key);
-    if (KVE_STORAGE_IS_VALID(itemAddress) == false) {
-        // Item does not exit, find the end of the table to insert it
-        return appendItemToEnd(kve, FIRST_ITEM_ADDRESS, key, buffer, length);
-    } else {
-        // Item exist, verify that the data has the same size
-        kveItemHeader_t currentItem = kveStorageGetItemInfo(kve, itemAddress);
-        uint16_t newLength = length + 3 + strlen(key);
-        if (currentItem.full_length != newLength) {
-            // If not, delete the item and find the end of the table
-            kveStorageWriteHole(kve, itemAddress, currentItem.full_length);
-            return appendItemToEnd(kve, FIRST_ITEM_ADDRESS, key, buffer, length);
-        } else {
-            kveStorageWriteItem(kve, itemAddress, key, buffer, length);
-        }
-    }
+    //COMMENTED FIRMWARE
+    // size_t itemAddress;
+
+    // // Search if the key is already present in the table
+    // itemAddress = kveStorageFindItemByKey(kve, FIRST_ITEM_ADDRESS, key);
+    // if (KVE_STORAGE_IS_VALID(itemAddress) == false) {
+    //     // Item does not exit, find the end of the table to insert it
+    //     return appendItemToEnd(kve, FIRST_ITEM_ADDRESS, key, buffer, length);
+    // } else {
+    //     // Item exist, verify that the data has the same size
+    //     kveItemHeader_t currentItem = kveStorageGetItemInfo(kve, itemAddress);
+    //     uint16_t newLength = length + 3 + strlen(key);
+    //     if (currentItem.full_length != newLength) {
+    //         // If not, delete the item and find the end of the table
+    //         kveStorageWriteHole(kve, itemAddress, currentItem.full_length);
+    //         return appendItemToEnd(kve, FIRST_ITEM_ADDRESS, key, buffer, length);
+    //     } else {
+    //         kveStorageWriteItem(kve, itemAddress, key, buffer, length);
+    //     }
+    // }
 
     return true;
 }
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/kve/kve_storage.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/kve/kve_storage.c
index 32f83aba2..1e5e779e2 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/kve/kve_storage.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/kve/kve_storage.c
@@ -45,15 +45,16 @@ static size_t min(size_t a, size_t b)
 int kveStorageWriteItem(kveMemory_t *kve, size_t address, const char* key, const void* buffer, size_t length)
 {
   kveItemHeader_t header;
-  header.key_length = strlen(key);
-  header.full_length = 2 + 1 + header.key_length + length;
+  //COMMENTED FIRMWARE
+//   header.key_length = strlen(key);
+//   header.full_length = 2 + 1 + header.key_length + length;
 
-  // Write full_length, key_length, key and buffer
-  kve->write(address, &header, sizeof(header));
-  kve->write(address + sizeof(header), key, header.key_length);
-  kve->write(address + sizeof(header) + header.key_length, buffer, length);
+//   // Write full_length, key_length, key and buffer
+//   kve->write(address, &header, sizeof(header));
+//   kve->write(address + sizeof(header), key, header.key_length);
+//   kve->write(address + sizeof(header) + header.key_length, buffer, length);
 
-  kve->flush();
+//   kve->flush();
 
   return header.full_length;
 }
@@ -98,31 +99,32 @@ void kveStorageMoveMemory(kveMemory_t *kve, size_t sourceAddress, size_t destina
 }
 
 size_t kveStorageFindItemByKey(kveMemory_t *kve, size_t address, const char * key) {
-    char searchBuffer[255];
-    size_t currentAddress = address;
-    uint16_t length;
-    uint8_t keyLength;
-    uint8_t searchedKeyLength = strlen(key);
-
-
-    while (currentAddress < (kve->memorySize - 3)) {
-        kve->read(currentAddress, searchBuffer, 3);
-        length = searchBuffer[0] + (searchBuffer[1]<<8);
-        keyLength = searchBuffer[2];
-
-        if (length == END_TAG) {
-            return SIZE_MAX;
-        }
-
-        if (keyLength == searchedKeyLength) {
-            kve->read(currentAddress + 3, &searchBuffer, searchedKeyLength);
-            if (!memcmp(key, searchBuffer, keyLength)) {
-                return currentAddress;
-            }
-        }
-
-        currentAddress += length;
-    }
+    //COMMENTED FIRMWARE
+    // char searchBuffer[255];
+    // size_t currentAddress = address;
+    // uint16_t length;
+    // uint8_t keyLength;
+    // uint8_t searchedKeyLength = strlen(key);
+
+
+    // while (currentAddress < (kve->memorySize - 3)) {
+    //     kve->read(currentAddress, searchBuffer, 3);
+    //     length = searchBuffer[0] + (searchBuffer[1]<<8);
+    //     keyLength = searchBuffer[2];
+
+    //     if (length == END_TAG) {
+    //         return SIZE_MAX;
+    //     }
+
+    //     if (keyLength == searchedKeyLength) {
+    //         kve->read(currentAddress + 3, &searchBuffer, searchedKeyLength);
+    //         if (!memcmp(key, searchBuffer, keyLength)) {
+    //             return currentAddress;
+    //         }
+    //     }
+
+    //     currentAddress += length;
+    // }
 
     return SIZE_MAX;
 }
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/lighthouse/lighthouse_calibration.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/lighthouse/lighthouse_calibration.c
index 316a4f002..0caf2ec04 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/lighthouse/lighthouse_calibration.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/lighthouse/lighthouse_calibration.c
@@ -59,57 +59,60 @@ void lighthouseCalibrationInitFromFrame(lighthouseCalibration_t *calib, struct o
 }
 
 static void idealToDistortedV1(const lighthouseCalibration_t* calib, const float* ideal, float* distorted) {
-  const float ax = ideal[0];
-  const float ay = ideal[1];
+  //COMMENTED FIRWARE
+  // const float ax = ideal[0];
+  // const float ay = ideal[1];
 
-  const float x = 1.0f;
-  const float y = tanf(ax);
-  const float z = tanf(ay);
-  const float tIgnore = 0.0f;
+  // const float x = 1.0f;
+  // const float y = tanf(ax);
+  // const float z = tanf(ay);
+  // const float tIgnore = 0.0f;
 
-  distorted[0] = lighthouseCalibrationMeasurementModelLh1(x, y, z, tIgnore, &calib->sweep[0]);
-  distorted[1] = lighthouseCalibrationMeasurementModelLh1(x, z, -y, tIgnore, &calib->sweep[1]);
+  // distorted[0] = lighthouseCalibrationMeasurementModelLh1(x, y, z, tIgnore, &calib->sweep[0]);
+  // distorted[1] = lighthouseCalibrationMeasurementModelLh1(x, z, -y, tIgnore, &calib->sweep[1]);
 }
 
 static void idealToDistortedV2(const lighthouseCalibration_t* calib, const float* ideal, float* distorted) {
-  const float t30 = M_PI_F / 6.0f;
-  const float tan30 = 0.5773502691896258;  // const float tan30 = tanf(t30);
+  //COMMENTED FIRMWARE
+  // const float t30 = M_PI_F / 6.0f;
+  // const float tan30 = 0.5773502691896258;  // const float tan30 = tanf(t30);
 
-  const float a1 = ideal[0];
-  const float a2 = ideal[1];
+  // const float a1 = ideal[0];
+  // const float a2 = ideal[1];
 
-  const float x = 1.0f;
-  const float y = tanf((a2 + a1) / 2.0f);
-  const float z = sinf(a2 - a1) / (tan30 * (cosf(a2) + cosf(a1)));
+  // const float x = 1.0f;
+  // const float y = tanf((a2 + a1) / 2.0f);
+  // const float z = sinf(a2 - a1) / (tan30 * (cosf(a2) + cosf(a1)));
 
-  distorted[0] = lighthouseCalibrationMeasurementModelLh2(x, y, z, -t30, &calib->sweep[0]);
-  distorted[1] = lighthouseCalibrationMeasurementModelLh2(x, y, z, t30, &calib->sweep[1]);
+  // distorted[0] = lighthouseCalibrationMeasurementModelLh2(x, y, z, -t30, &calib->sweep[0]);
+  // distorted[1] = lighthouseCalibrationMeasurementModelLh2(x, y, z, t30, &calib->sweep[1]);
 }
 
 typedef void (* idealToDistortedFcn_t)(const lighthouseCalibration_t* calib, const float* ideal, float* distorted);
 
 static void lighthouseCalibrationApply(const lighthouseCalibration_t* calib, const float* rawAngles, float* correctedAngles, idealToDistortedFcn_t idealToDistorted) {
-  const double max_delta = 0.0005;
+  //COMMENTED FIRWARE
+  // const double max_delta = 0.0005;
 
-  // Use distorted angle as a starting point
-  float* estmatedAngles = correctedAngles;
-  estmatedAngles[0] = rawAngles[0];
-  estmatedAngles[1] = rawAngles[1];
+  // // Use distorted angle as a starting point
+  // float* estmatedAngles = correctedAngles;
+  // estmatedAngles[0] = rawAngles[0];
+  // estmatedAngles[1] = rawAngles[1];
 
-  for (int i = 0; i < 5; i++) {
-    float currentDistortedAngles[2];
-    idealToDistorted(calib, estmatedAngles, currentDistortedAngles);
+  // for (int i = 0; i < 5; i++) {
+  //   float currentDistortedAngles[2];
+  //   idealToDistorted(calib, estmatedAngles, currentDistortedAngles);
 
-    const float delta0 = rawAngles[0] - currentDistortedAngles[0];
-    const float delta1 = rawAngles[1] - currentDistortedAngles[1];
+  //   const float delta0 = rawAngles[0] - currentDistortedAngles[0];
+  //   const float delta1 = rawAngles[1] - currentDistortedAngles[1];
 
-    estmatedAngles[0] = estmatedAngles[0] + delta0;
-    estmatedAngles[1] = estmatedAngles[1] + delta1;
+  //   estmatedAngles[0] = estmatedAngles[0] + delta0;
+  //   estmatedAngles[1] = estmatedAngles[1] + delta1;
 
-    if (fabs((double)delta0) < max_delta && fabs((double)delta1) < max_delta) {
-      break;
-    }
-  }
+  //   if (fabs((double)delta0) < max_delta && fabs((double)delta1) < max_delta) {
+  //     break;
+  //   }
+  // }
 }
 
 void lighthouseCalibrationApplyV1(const lighthouseCalibration_t* calib, const float* rawAngles, float* correctedAngles) {
@@ -126,25 +129,29 @@ void lighthouseCalibrationApplyNothing(const float rawAngles[2], float corrected
 }
 
 float lighthouseCalibrationMeasurementModelLh1(const float x, const float y, const float z, const float t, const lighthouseCalibrationSweep_t* calib) {
-  const float ax = atan2f(y, x);
-  const float ay = atan2f(z, x);
-  const float r = arm_sqrt(x * x + y * y);
+  //COMMENTED FIRWARE
+  // const float ax = atan2f(y, x);
+  // const float ay = atan2f(z, x);
+  // const float r = arm_sqrt(x * x + y * y);
 
-  const float compTilt = asinf(clip1(z * tanf(calib->tilt) / r));
-  const float compGib = -calib->gibmag * arm_sin_f32(ax + calib->gibphase);
-  const float compCurve = calib->curve * ay * ay;
+  // const float compTilt = asinf(clip1(z * tanf(calib->tilt) / r));
+  // const float compGib = -calib->gibmag * arm_sin_f32(ax + calib->gibphase);
+  // const float compCurve = calib->curve * ay * ay;
 
-  return ax - (compTilt + calib->phase + compGib + compCurve);
+  // return ax - (compTilt + calib->phase + compGib + compCurve);
+  return 0;
 }
 
 float lighthouseCalibrationMeasurementModelLh2(const float x, const float y, const float z, const float t, const lighthouseCalibrationSweep_t* calib) {
-  const float ax = atan2f(y, x);
-  // const float ay = atan2f(z, x);
-  const float r = arm_sqrt(x * x + y * y);
+  //COMMENTED FIRWARE
+  // const float ax = atan2f(y, x);
+  // // const float ay = atan2f(z, x);
+  // const float r = arm_sqrt(x * x + y * y);
 
-  const float base = ax + asinf(clip1(z * tanf(t - calib->tilt) / r));
-  const float compGib = -calib->gibmag * arm_cos_f32(ax + calib->gibphase);
-  // TODO krri Figure out how to use curve and ogee calibration parameters
+  // const float base = ax + asinf(clip1(z * tanf(t - calib->tilt) / r));
+  // const float compGib = -calib->gibmag * arm_cos_f32(ax + calib->gibphase);
+  // // TODO krri Figure out how to use curve and ogee calibration parameters
 
-  return base - (calib->phase + compGib);
+  // return base - (calib->phase + compGib);
+  return 0;
 }
diff --git a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/lighthouse/lighthouse_geometry.c b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/lighthouse/lighthouse_geometry.c
index b5a860120..86a6654af 100644
--- a/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/lighthouse/lighthouse_geometry.c
+++ b/uboot-compiler/bm_crazyflie/FreeRTOS/Demo/CORTEX_A72_64-bit_Raspberrypi4/utils/src/lighthouse/lighthouse_geometry.c
@@ -127,18 +127,20 @@ void lighthouseGeometryGetBaseStationPosition(const baseStationGeometry_t* bs, v
 }
 
 void lighthouseGeometryGetRay(const baseStationGeometry_t* baseStationGeometry, const float angleH, const float angleV, vec3d ray) {
-    vec3d a = {arm_sin_f32(angleH), -arm_cos_f32(angleH), 0};  // Normal vector to X plane
-    vec3d b = {-arm_sin_f32(angleV), 0, arm_cos_f32(angleV)};  // Normal vector to Y plane
-
-    vec3d raw_ray = {};
-    vec_cross_product(b, a, raw_ray); // Intersection of two planes -> ray vector.
-    float len = vec_length(raw_ray);
-    arm_scale_f32(raw_ray, 1 / len, raw_ray, vec3d_size); // Normalize raw ray length.
-
-    arm_matrix_instance_f32 source_rotation_matrix = {3, 3, (float32_t *)baseStationGeometry->mat};
-    arm_matrix_instance_f32 ray_vec = {3, 1, raw_ray};
-    arm_matrix_instance_f32 ray_rotated_vec = {3, 1, ray};
-    mat_mult(&source_rotation_matrix, &ray_vec, &ray_rotated_vec);
+    //COMMENTED FIRWARE
+    // vec3d a = {arm_sin_f32(angleH), -arm_cos_f32(angleH), 0};  // Normal vector to X plane
+    // vec3d b = {-arm_sin_f32(angleV), 0, arm_cos_f32(angleV)};  // Normal vector to Y plane
+
+    // vec3d raw_ray = {};
+    // vec_cross_product(b, a, raw_ray); // Intersection of two planes -> ray vector.
+    // float len = vec_length(raw_ray);
+    // arm_scale_f32(raw_ray, 1 / len, raw_ray, vec3d_size); // Normalize raw ray length.
+
+    
+    // arm_matrix_instance_f32 source_rotation_matrix = {3, 3, (float32_t *)baseStationGeometry->mat};
+    // arm_matrix_instance_f32 ray_vec = {3, 1, raw_ray};
+    // arm_matrix_instance_f32 ray_rotated_vec = {3, 1, ray};
+    // mat_mult(&source_rotation_matrix, &ray_vec, &ray_rotated_vec);
 }
 
 bool lighthouseGeometryIntersectionPlaneVector(const vec3d linePoint, const vec3d lineVec, const vec3d planePoint, const vec3d PlaneNormal, vec3d intersectionPoint) {
-- 
GitLab