CategoryProgramowanie

Początek prac nad kodem

Płytka została oddana do produkcji, więc ostatnio było trochę czasu, żeby usiąść do softu. W tym tygodniu udało mi się zrobić kilka rzeczy:

  • postawić projekt na STM32F4,
  • dodać najnowszą wersję systemu FreeRTOS – 9.0.0,
  • uruchomić framework do unit testów CppUTest.

Aktualny kod źródłowy projektu można znaleźć na moim GitHubie.

Czytaj dalej

C++ na STM32

Najczęściej wybieranym językiem do programowania mikrokontrolerów jest C. Popularna jest opinia, że C++ do tego zadania się nie nadaje. Najczęściej podawane argumenty to wolniejsze wykonywanie się kodu, większe zużycie pamięci programu i RAMu oraz częste wykorzystywanie dynamicznej alokacji pamięci. Ostatnio znalazłem na YouTube prezentację dotyczącą wykorzystania C++ przy programowaniu systemów embedded.

Autor udowadnia w niej, że argumenty dotyczące szybkości wykonania oraz zużycia pamięci nie są prawdziwe. Skłoniło mnie to do wykonania własnych eksperymentów z C++ na STM32, a przy okazji także do poznania C++, ponieważ wcześniej nie miałem z nim za dużo do czynienia.

Czytaj dalej

STM32 na Eclipse Neon

Ostatnio pisałem, jak uruchomić projekt na STM32 na Eclipse. Polecałem wtedy używać starszej wersji – Eclipse Mars, ponieważ na Eclipse Neon nie działają poprawnie używane przeze mnie pluginy. Ostatnio udało mi się uruchomić STM32 na nowej wersji Eclipse i w tym artykule opiszę swoje uwagi.

Do uruchomienia projektu na STM32 będziemy potrzebowali pluginów z pakietu GNU ARM Eclipse:

  • OpenOCD – plugin współpracujący z OpenOCD nieco inaczej niż za pomocą External Tools Configuration.
  • Packs – plugin zarządzający konfiguracją dla różnych procesorów. Ten plugin umożliwia podgląd rejestrów peryferiów procesora.
  • QEMU – plugin emulatora. Umożliwia uruchamianie programów bez podłączonego sprzętu. Ten plugin jest opcjonalny.

Czytaj dalej

Granie melodii na silnikach DC

Ostatnio opisywałem szablon projektu na STM32 i konfigurację środowiska, więc teraz pora na jakiś praktyczny projekt. Będzie nim program grający melodie na silnikach. Kiedyś napisałem taki programik, żeby sprawdzić czy działa sterowanie silnikami w moim robocie. W tym czasie na Forbot.pl był konkurs na robota z akcentem świątecznym i Wśród nocnej ciszy w wykonaniu mojego robota wygrało.

Pojawiła się propozycja, żeby z okazji zwycięstwa zagrać na silnikach We are the champions, ale poległem na tym zadaniu. Problemem było to, że za słabo znam się na muzyce i bazowałem tylko na nutach znalezionych w necie i jak coś było nie tak, nie umiałem tego poprawić. Ostatnio wróciłem do tematu i postanowiłem opublikować i trochę opisać kod na STM32F4 Discovery.

Czytaj dalej

Uruchomienie szablonu projektu STM32 pod Eclipse

Nie tak dawno temu opisywałem szablon projektu na STM32F4, którego używam. Dzisiaj omówię konfigurację środowiska Eclipse do pracy z projektem pod Windowsem. Aby uruchomić projekt, będziemy potrzebować:

  • kompilator ARM
  • debugger – OpenOCD
  • MinGW
  • Środowisko Eclipse C/C++

Czytaj dalej

Szablon projektu STM32

Dzisiaj opiszę używany przeze mnie szablon projektu STM32.  Szablon poza kompilacją głównego projektu umożliwia również dodawanie unit testów i testów na docelowym sprzęcie. W artykule omawiam strukturę folderów i konfigurację za pomocą Makefile, które sprawdzają się na moje potrzeby. Kod źródłowy szablonu udostępniłem na GitHubie.

Projekt generowany w IDE kontra własny szablon

Jeśli korzystamy z jakiegoś środowiska dedykowanego do pisania kodu na STM32 np. OpenSTM32, albo CooCox, gdy utworzymy nowy projekt i wyklikamy opcje w kreatorze, magicznie utworzy nam się konfiguracja zawierająca pliki inicjalizacyje, skrypt linkera, czy reguły kompilacji. Dodatkowo dołączone zostaną biblioteki z definicjami rejestrów i obsługą peryferiów. Jest to idealna sytuacja dla początkujących, którzy nie muszą dzięki temu poznawać skomplikowanych zagadnień związanych z inicjalizacją procesora do pracy i kompilacją projektu. Po prostu dostają działający projekt i mogą uczyć się podstaw. Jednak jeśli zdobędziemy już trochę doświadczenia i chcemy zrobić jakieś bardziej zaawansowane operacje, okazuje się, że IDE mają swoje ograniczenia. Częste problemy to na przykład dodawanie projektu do repozytorium kodu tak, żeby przenieść je na inną maszynę, czy wprowadzanie zmian w kodzie przez kilka osób na raz.

Czytaj dalej

Jak działa CRC (Cyclic Redundancy Check)

Jakiś czas temu w pracy dostałem zadanie uruchomienia modułu sprzętowego CRC na procesorze PIC32. W trakcie pracy wyszły pewne problemy, do rozwiązania których niezbędne było opanowanie teorii związanej z obliczaniem sum kontrolnych CRC. Zadanie to skłoniło mnie do dokładniejszej analizy problemu i podzielania się rezultatami w tym artykule.

CRC (Cyclic Redundancy Check) to kod o określonej z góry długości wygenerowany z ciągu danych wejściowych dodawany do oryginalnej wiadomości w celu zapewnienia integralności danych. CRC jest wykorzystywane między innymi do wykrywania przekłamań wiadomości przesyłanych przez łącza komunikacyjne, czy do sprawdzania poprawności danych zapisywanych na dysku. Zasada działania jest prosta. Nadawca (lub np. proces zapisujący dane na dysk) oblicza CRC dla wiadomości, którą chce wysłać i dodaje je do wysyłanych danych. Odbiorca (lub np. proces odczytujący dane z dysku) również oblicza sumę kontrolną danych, które otrzymał i porównuje ją z wartością CRC wysłaną przez nadawcę. Jeśli wyniki się różnią, doszło do przekłamania informacji.

Czytaj dalej

© 2017 ucgosu.pl

Theme by Anders NorénUp ↑