Hackathon?

Zapewne części z Was za dobrze ideę hackathonu – wydarzenia, w czasie którego grupka zapaleńców (programistów) staje przed zadaniem rozwiązania określonego problemu w ograniczonym czasie. Wynik ich pracy jest różny. Czasami powstaje tylko proof-of-concept, a czasami gotowy produkt – w zależności od stopnia złożoności zadania. Bez względu jednak na efekt końcowy, zawsze najcenniejsze są doświadczenie i wiedza zdobyta w trakcie. Dlatego dziś chciałbym spojrzeć na projekt Sto Dni w Kolorze jako właśnie swego rodzaju ekstremalną formę hackathonu, którego celem jest stworzenie od podstaw konkretnego systemu wbudowanego, pogłębienie wiedzy z zakresu programowania/elektroniki oraz podzielenie się nią z Wami. Szczególny nacisk chciałbym położyć na dwie ostatnie kwestie. A więc do dzieła…

Któż z nas nie słyszał o Arduino czy RaspberryPi? Systemy wbudowane dawno przestały być już domeną grupki zapaleńców i trafił “pod strzechy”. Zwłaszcza pojawienie się w ostatnich latach wygodnych i zunifikowanych platform, spowodowało szerokie upowszechnienie tej tematyki. Internet obecnie pełen jest wszelkiego rodzaju kursów programowania dla systemów wbudowanych – możemy wybrać niemal dowolny poziom zaawansowania, język programowania, platformę.

Czy warto zatem rozpoczynać “jeszcze jeden blog o mikrokontrolerach”?

Tak, o ile podejdziemy do tematu w trochę inny sposób niż ma to zazwyczaj miejsce. Naturą systemów wbudowanych jest wzajemne przenikanie się programowania i sprzętu, więc spójrzmy na to z perspektywy obu tych warstw…

Oprogramowanie:

Moim celem nie jest na pewno stworzenie kolejnego kursu programowania w C/C++ dla mikrokontrolerów. Pisząc tego bloga chciałbym skupić się raczej na zagadnieniach związanych z projektowaniem architektury systemu, dekompozycji na moduły i warstwy – innymi słowy na szeroko rozumianej inżynierii oprogramowania.

Dlaczego?

W przypadku systemów embedded operowanie na konkretnych przykładach implementacji powoduje, że w mniejszym lub większym stopniu uzależniamy się od wybranej rodziny mikrokontrolerów, platformy czy języka programowania. Podejście od strony architektury pozwala uniknąć tych ograniczeń i spojrzeć na dany problem w szerszej perspektywie, skupiając się przy tym bardziej na starannym dobraniu struktury kodu, niż na szczegółach implementacji. Poprawnie zaprojektowane oprogramowanie zawsze będzie łatwiejsze do przetestowania, utrzymania czy nawet przeniesienia na inną platformę sprzętową.

Ok, ale czy to znaczy, że nie będę zamieszczał przykładów kodu źródłowego?

Aż tak minimalistycznie nie będzie. Na pewno od czasu do czasu pojawią się fragmenty, dotyczące algorytmów, trików programistycznych, sprytnych optymalizacji, itp. Będę natomiast starał się unikać zamieszczania kodu specyficznego dla danej architektury sprzętowej, takich jak obsługa peryferiów czy przerwań. A skoro jesteśmy bliżej sprzętu…

Sprzęt:

Podobnie jak w przypadku oprogramowania, nie będzie to kolejny, internetowy kurs podstaw elektroniki cyfrowej. Należy pamiętać, iż celem projektu jest stworzenie bardzo konkretnego urządzenia, a nie jedynie połączenie kilku gotowych modułów przewodami. Dlatego też najwięcej uwagi chciałbym poświęcić praktycznym aspektom projektowania i prototypowania układów z mikrokontrolerami oraz rozwiązywaniu problemów na jakie możemy się wówczas natknąć. Dołożę przy tym wszelkich starań, aby informacje te były podane w sposób przystępny i zrozumiały nawet dla początkujących adeptów elektroniki.

Posted in Sto dni w kolorze and tagged , , , , , .