Strona główna
Witaj na stronie Chopina!
Czwarta wersja distortos - 0.4.0
Wpisany przez Freddie Chopin   
Sobota, 11 Marzec 2017 20:37

Od poprzedniej wydanej wersji - 0.3.0 - mineło 107 dni, a w repozytorium pojawiło się 431 commitów, więc czas najwyższy na kolejną wersję! Dziś wydałem więc czwartą wersję RTOSa dla mikrokontrolerów napisanego w C++ - pojawiła się paczka z distortos 0.4.0. Dzięki dodaniu wsparcia dla całej rodziny STM32F7 (a wraz z nią dla płytki 32F746GDISCOVERY), liczba obsługiwanych układów wzrosła do 395. Dodatkowo warto wspomnieć jeszcze o dwóch opcjach (każda w dwóch wariantach) pozwalających na wykrycie przepełnienia stosu oraz o opcji włączającej sprawdzanie kontekstu funkcji, które nie mogą być używane w przerwaniach (wszystkie funkcje blokujące, wszystkie funkcje klasy Mutex oraz wszystkie funkcje z namespace'a ThisThread). Dwie ostatnie nowości pozwalają na wykrycie najpopularniejszych problemów z którymi muszą się borykać twórcy wielowątkowych aplikacji embedded, a które naprawdę ciężko jest wyłapać innymi sposobami - miałem okazję przekonać się o tym nie raz. Całkiem niedawno nawet przeżyłem ciężki szok gdy (właśnie dzięki jednej z nowych opcji) odkryłem, iż twórcy bibliotek USB z firmy ST nie mają najmniejszego problemu aby sobie wesoło alokować dynamicznie pamięć w przerwaniach...

Zmieniony: Sobota, 11 Marzec 2017 21:02
 
Kolejna wersja OpenOCD - 0.10.0 - już dostępna
Wpisany przez Freddie Chopin   
Poniedziałek, 23 Styczeń 2017 21:20
Nieco ponad półtora roku po wydaniu poprzedniej wersji, wczoraj wreszcie ukazała się kolejna edycja OpenOCD oznaczona numerkiem 0.10.0. Już dziś z działu Download > Programy > OpenOCD można pobrać najnowszą wersję skompilowaną dla Windows. Paczka z poprzednią wersją została pobrana rekordowe 31000 razy, co daje jakieś 75GB transferu (; Co nowego możemy znaleźć w tej wersji? Najlepiej odpowie na to oficjalna informacja o tym wydaniu zamieszczona na stronie projektu.
Zmieniony: Poniedziałek, 23 Styczeń 2017 22:51
 
distortos 0.3.0 wydany
Wpisany przez Freddie Chopin   
Piątek, 25 Listopad 2016 21:16

Wczoraj finalizacji doczekała się trzecia wersja distortos - RTOSa nad którym pracuję już ponad 2 lata, skierowanego przede wszystkim do miłośników C++. W najnowszej wersji - obsługującej dokładnie 302 mikrokontrolery - pojawiło się sporo nowości, większość dotyczy chyba wbudowanego w system HALa. Ważniejsze zmiany w najnowszej wersji (w kolejności chronologicznej) to:

Swoją drogą zupełnie zapomniałem tutaj napisać o wydanej już dawno temu wersji 0.2.0. Korzystając z okazji wspomnę więc, że największymi zmianami w poprzedniej wersji było dodanie wsparcia dla architektury ARMv6-M (m.in. ARM Cortex-M0), rodziny układów STM32F0 oraz STM32F1.

Paczki z kodem źródłowym, najnowszą dokumentację i changelog ze wszystkimi zmianami można znaleźć oczywiście na stronie projektu.

Zmieniony: Piątek, 25 Listopad 2016 22:06
 
Jak działa wielowątkowość?
Wpisany przez Freddie Chopin   
Sobota, 12 Listopad 2016 18:29

Osoby zainteresowane tematem zapraszam do zapoznania się z pierwszym artykułem z cyklu wprowadzającego do podstaw systemów czasu rzeczywistego (RTOSów) - Multitasking explained. Artykuł traktuje o absolutnych podstawach, ale w końcu od czegoś trzeba zacząć (;

EDIT (03.12.2016): Po dłuższej przerwie wrzuciłem kolejny artykuł o stanach wątków i przejściach między nimi - Task states. Tym razem tekst jest o bardziej zaawansowanych sprawach, choć starałem się aby całość była przyswajalna nawet dla osób które pierwszy raz w życiu czytają coś o RTOSach. Nie wiem czy mi się udało, ale mam nadzieję że tak. Teraz prace nad kolejnymi artykułami powinny nieco przyspieszyć, a przynajmniej taki właśnie jest plan.

Zmieniony: Sobota, 03 Grudzień 2016 20:56
 
(R)ewolucja w bleeding-edge-toolchain?
Wpisany przez Freddie Chopin   
Środa, 12 Październik 2016 12:07

Jako że znudziło mnie już rozwiązywanie problemów stworzonych przez dziwaczny workflow pracowników firmy ARM, a do tego rozwiązywanie problemów kompatybilności pomiędzy dystrybucjami Linuxa jest chyba rzeczą wręcz niemożliwą, postanowiłem pójść krok dalej. Przedstawiam więc "preview" nowego skryptu "all-in-one" do kompilacji toolchaina, którego ideą jest lekka zmiana aktualnej formy bleeding-edge-toolchain.

Skrypt testowałem na razie tylko na Linuxie (u siebie, na innym komputerze oraz w systemie Travis-CI - Ubuntu 12.04.5 LTS "precise"), wkrótce testy generacji wersji na Windowsa. Nie da się wykluczyć, że nawet teraz ten skrypt powinien zadziałać w środowisku MSYS2 na Windowsie, ale jeszcze tego nie sprawdzałem. Idea jest taka, że toolchainów dla Linuxa nie będę udostępniać w formie "binarnej" - skrypt pozwoli każdemu skompilować toolchaina, który na pewno będzie działał na danej dystrybucji. Wiem że taka kompilacja nie trwa 30 sekund, ale pół dnia też nie - u mnie wszystko (włącznie z pobraniem wszystkich źródeł) trwa 22 minuty. Na wyjątkowo powolnym wirtualnym systemie Travis-CI trwa to 80 minut. Myślę że są to czasy które można raz na pare miesięcy poświęcić, zwłaszcza że w trakcie takiej kompilacji można przecież robić coś innego [; Zresztą jakby ktoś chciał znacząco skrócić czas kompilacji całości, to można znaleźć w skrypcie linijkę z "--with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r" i po prostu wyłączyć to czego się nie używa (UWAGA - linijka ta występuje tam 2x, obie wersje powinny być identyczne!). Wersje dla Windows zapewne nadal będą udostępniane w formie "binarnej", bo akurat na tej platformie nie ma problemów z kompatybilnością bibliotek.

W każdym razie skrypt zasadniczo robi wszystko co jest potrzebne - pobiera źródła toolchaina i wymaganych bibliotek w odpowiedniej wersji, rozpakowuje je, a następnie konfiguruje i kompiluje w odpowiedniej kolejności. Idea oczywiście nie jest nowa i takich skryptów jest wiele, choć te które znam są już albo nierozwijane, albo nie do końca takie jak należy. Generalnie do działania tego skryptu nie powinny być wymagane żadne dziwne narzędzia poza tym co jest w "standardzie" w każdej dystrybucji Linuxa - jedynym wyjątkiem mogą być programy do generacji dokumentacji ("makeinfo", wchodzący zwykle w skład paczki typu "texinfo"). Zachęcam do testów, jeśli coś nie działa to piszcie w komentarzach, albo od razu zgłaszajcie problem na GitHubie. Jeśli działa to oczywiście też chętnie usłyszę takie info (;

Aktualne wersje narzędzi w toolchainie są - zgodnie z ideą - najnowsze (; Nowsze niż w toolchainie od ARM <:

  • gcc-6.2.0 + multilib patch
  • newlib-2.4.0.20160923
  • binutils-2.27
  • gdb-7.12
  • expat-2.2.0
  • gmp-6.1.1
  • isl-0.16
  • libelf-0.8.13
  • mpc-1.0.3
  • mpfr-3.1.5
  • zlib-1.2.8
Zmieniony: Piątek, 14 Październik 2016 10:33
 
«PoczątekPoprzednia12345678910NastępnaOstatnie»

Strona 1 z 10