SafeRTOS - dwa pytania odnośnie tego systemu czasu rzeczywistego

0
  1. Czy to prawda, że SafeRTOS nie obsługuje dynamicznego przydzielania pamięci, w przeciwieństwie do FreeRTOS'a ? Z jakich powodów coś takiego się stosuje?
  2. Czy to prawda, że w pewnych zastosowaniach embedded nie wolno stosować unii? Np. kiedy odczytujemy dwa 2-bitowe rejestry i zapisujemy je do tablicy 4 char'ów by mieć potem wartość typu float?
2

ad.1 Jeżeli to prawda, to dlatego, że jest SAFE. Co, jeżeli w rakiecie/samolocie/pociągu nie powiedzie się alokacja komunikatu stopu?
więcej o tym np. tu https://stackoverflow.com/questions/36618043/alternatives-to-dynamic-allocations-in-safety-critical-projects-c
ad.2 Przed C99 to jest UB i to nie tylko embedded. Wiele kompilatorów obsługuje to dobrze i wielu nawet doświadczonych programistów powie, że tak się robi, ale z pktu widzenia standardu <C99 to jest nadal UB.
Chyba, że chodzi Ci o MISRA?

1

ad.1 Alokajca pamięci na strukturę danych zawierającą komunikat; tutaj stopu. Skrót myślowy, nic więcej.
ad. 2 Zachowanie niezdefiniowane, kompilator może zrobić co chce, w gestii programisty leży tak nie pisać.
https://blog.regehr.org/archives/213
ad. 3 Ustandaryzowany zestaw zasad pisania w C (o ile wiem w C++ też, ale to rzadziej stosowane) w zastosowaniach o wysokim poziomie bezpieczeństwa funkcjonalnego.
https://en.wikipedia.org/wiki/MISRA_C

1 użytkowników online, w tym zalogowanych: 0, gości: 1