Menu
AKTUALNOŚCI

Maszyna wirtualna z SDK dla ISIX

/2014-10-24 15:57:39/

Stworzono wirtualne środowisko dla VirtualBox zawierające SDK dla systemu ISIX

Toolchain GCC4.7.2 dla Windows

/2012-10-21 12:27:50/

Dodano toolchain dla Windows bazujący na nowej wersji GCC 4.7.2 i obsługą rdzeni CORTEX-M4

ISIX RTOS 1.2 został wydany

/2011-05-14 10:03/

Została wydana wersja 1.2 systemu ISIX RTOS, która dodaje szereg nowych funkcjoności i poprawek

ISIX RTOS na GPLv3

/2009-12-29 15:45:57/

Dodano podstronę z systemem operacyjnym ISIX mojego autorstwa przeznaczoną dla małych mikrokontrolerów wydanego na licencji GPLv3

Aktualizacja toolchaina i386

/2009-05-03 20:51:53/

W dziale LinARM zaktualizowano 32-bitowy kompilator dla procesorów ARM.

Obsługa portów GPIO w Linuksie

/2009-05-03 19:18:53/

W dziale różne zamiesczono artykuł dotyczący różnych sposobów obsługi portów GPIO w linuksie.

Aktualizacja kompilatorow

/2009-02-15 10:39:08/

Aktualizacja pakietu LinARM oraz nowy pakiet LinCortex.

Książka o ARM9

/2009-01-19 21:03:19/

Dziś nakładem wydawnictwa BTC ukazała się moja kolejna publikacja "Mikrokontrolery z rdzeniem ARM9"

isixrtos

ISIX-RTOS -Jądro systemu operacyjnego dla mikrokontrolerów ARM

Aby ułatwić korzystanie z SDK dla systemu ISIX przygotowano maszynę wirtualną zawierającą jednolite środowisko programistyczne dla systemu ISIX.
Maszyna wirtualna przygotowana jest dla programu VirtualBOX Środowisko bazuje na dystrybucji ArchLinux Zachęcamy do pobierania

Wersja ISIX 1.2 została wydana. Aktualna wersje developerską wraz z przykładami można pobrać lub przeglądać z repozytorium GIT https://www.boff.pl/cgit/public/isixsamples (polecenie git clone --recursive https://www.boff.pl/cgit/public/isixsamples) lub z działu download

W nowej wersji 1.2 dokonano szeregu zmian w funkcjonalności i ulepszeń. Przy czym najważniejsze zmiany to:

  • Możliwość bezproblemowej kompilacji w środowisku Windows, z wykorzystaniem kompilatora CodeSoucery, bez konieczności instalacji środowiska Cygwin.
  • Całkowita reorganizacja plikow Makefile projektu
  • Dodano API dla wirtualnych timerów umożliwiające wykonywanie, zadań w kontekście przerwania zegarowego
  • Dodano funkcję wait_for_multiple_objects, umożliwiającą uśpienie wątku, w oczekiwaniu na wystąpienie dowolnego zdarzenia z listy obiektów oczekujących
  • Dodano pełne wsparcie dla wyjątków C++ oraz biblioteki standardowej STL
  • Migracja repozytorium kodu z Baazar-a na Mercuriala
  • Dodano bibliotekę libstmdrv-stm32 zawierającą sterowniki dla systemu do najpopularniejszych układów peryferyjnych

W internecie można znaleźć wiele różnych systemów operacyjnych (prostych schedulerów) przeznaczonych dla mikrokontrolerów. Niestety wszystkie wspomniane wcześniej systemy cechują się rozbudowanym API, skomplikowaną konfiguracją uzależnioną od platformy, a czasami dużym rozmiarem. Wspomniane wyżej cechy skłoniły mnie do rozpoczęcia prac nad nowym prostym systemem, zawierającym minimalistyczne API, które będzie łatwe do nauczenia w kilkanaście minut. Można powiedzieć że jest on bardziej biblioteką obsługi wątków/procesów na mikrokontrolerach niż pełnym systemem operacyjnym. Cały system powstał z myślą o 32-bitowych mikrokontrolerach ARM, oraz wsparciu dla języka C++.

Pisząc programy dla mikrokontrolerów często stajemy przed problemem realizacji czasochłonnego zadania, które nie może blokować działania reszty aplikacji. Na przykład obsługa portu RS232 nie powinna blokować obsługi wyświetlacza LCD. W takim przypadku pisząc oprogramowanie dla mikrokontrolerów najczęściej posługujemy się maszyną stanów, dzieląc zadania na mniejsze fragmenty. Maszyna stanów oparta o konstrukcję switch ... case posiada zasadniczą wadę w postaci znacznego jej skomplikowania, oraz podatności na błędy powstałe podczas kodowania. Wspomniana wyżej maszyna stanów zakodowana ręcznie w programie jest de fakto prostym schedulerem (przełącznikiem zadań), który za każdym razem i wraz z każdą nową aplikacją jest pisana od nowa, więc takie rozwiązanie jest bardzo podatne na błędy. Dużo lepszym rozwiązaniem jest zamknięcie odpowiedniego schedulera wraz z mechanizmami komunikacji międzyprocesowej w bibliotece, którą będziemy mogli użyć w wielu aplikacjach. Tak właśnie powstał system ISIX. System ten jest biblioteką obsługi wątków wraz z prostym mechanizmem komunikacji międzyprcesowej.

System ISIX posiada następujące właściwości:

  • Klasyczny scheduler z priorytetyzacją zadań
  • Dowolna liczba priorytetów dla zadań (ograniczona pamięcią)
  • Wywłasczanie zadań oraz algorytm ROUND-ROBIN dla zadań o takim samym priorytecie
  • Komunikacja między procesowa oparta o semafory i kolejki FIFO
  • Wsparcie dla języka C++ oraz wrappery klas dla języka C++
  • Inicjalizacja peryferiów mikrokontrolera poza biblioteką systemu w postaci oddzielnej biblioteki
  • Bardzo małe zasoby zajmowane przez system. (Umożliwia działanie nawet na najmniejszych uC np. STM32F101CTC6)

Obecnie system dostępny jest na mikrokontrolery z rdzeniem ARM-CORTEX-M3/M4, nic nie stoi na przeszkodzie, aby rozszerzyć go obsługę platformy ARM7. Dodatkowo do systemu obecnie dostępne są biblioteki peryferyjne dedykowane dla mikrokontrolerów STM32. System dostępny jest na licencji GPLv3 z dodatkową klauzulą zezwalającą na linkowanie aplikacji z systemem ISIX bez konieczności redystrybucji kodu źródłowego aplikacji. Zmiany w samym kodzie systemu zgodnie z licencją wymagają redystrybucji kodu źródłowego wprowadzonych zmian. Dokumentację API dla systemu ISIX możemy znaleźć TUTAJ.

Materiały, przykłady, dodatkowe artykuły doszkalające wkrótce będą dostępne na stronie stm32.eu, oraz na łamach czasopisma Elektronika Praktyczna.
Dla systemu ISIX dostępne jest wsparcie komercyjne świadczone przez firmę BoFF.
Aktualną wersję systemu można pobrać z CGIT



Ostatnia modyfikacja: 2016-12-02 18:51:58.