Introducing 

Prezi AI.

Your new presentation assistant.

Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.

Loading…
Transcript
  • system komputerowy będący częścią jakiegoś urządzenia
  • najczęściej stałe oprogramowanie
  • stały zestaw sprzętu
  • reakcja w czasie rzeczywistym
  • przewidywalny czas wykonania operacji
  • przewidywalny i ograniczony z góry czas reakcji
  • ścisłe reguły szeregowania
  • wykorzystanie systemu przerwań

Prototypowanie systemów wbudowanych

Seminarium Niezawodność Systemów Współbieżnych i Obiektowych

Adam Morawski

MIMUW

30 listopada 2011

Realizacja

API

  • C, oddzielne funkcje dla każdego interfejsu
  • w tej chwili SPI (głównie master), GPIO
  • struktury danych do konfiguracji i ustawiania parametrów bardziej złożonych transferów
  • oddzielne funkcje realizujące proste transfery
  • tworzenie kilku interfejsów logicznych dla jednego fizycznego (SPI)
  • podpinanie przerwań

System wbudowany

FreeRTOS

Implementacja na MCU

  • korzysta z STM32_StdPeriphLib
  • DMA dla dużych transferów

Komunikacja z przejściówką

  • System operacyjny czasu rzeczywistego, dostępny dla wielu mikrokontrolerów, GPL
  • Uruchamianie zadań o różnych priorytetach + idle, ścisłe trzymanie się priorytetów przy szeregowaniu, tryb wywłaszczeniowy lub współpracujący
  • Mechanizmy synchronizacyjne: kolejki, semafory, muteksy, sekcja krytyczna, sleep, uwzględnienie obsługi z przerwań
  • Różne sposoby zarządzania pamięcią
  • Zużywa jedno przerwanie zegarowe - tu abstrakcja sprzętu, poza tym sprzętem się nie zajmuje
  • API
  • Implementacja na MCU
  • komunikacja z przejściówką
  • Implementacja na PC
  • Obsługa przerwań
  • Uruchamianie zadań na przejściówce
  • Komunikacja między zadaniami uruchomionymi na różnych urządzeniach
  • USB - bulk, być może interrupt
  • protokół: operacje na pamięci, obsługa interfejsów (ustawienie+transfer) - przesyłanie struktur (działa z 32-bitowym linuksem na intelu, kompilowane GCC), zarządzanie zadaniami i przerwaniami, komunikacja między zadaniami

Sposoby implementacji

System czasu rzeczywistego

Rodzaje obsługiwanych urządzeń

  • wymagające szybkiej reakcji (interrupt)
  • wymagające dużej przepustowości (bulk)
  • wymagające regularnej obsługi (isochronous)

Uruchamianie kodu na przejściówce

  • wielka pętla
  • wszystko w przerwaniach
  • pojedynczy program + przerwania
  • [RT]OS + przerwania

Szybkość reakcji vs przepustowość

Przykłady urządzeń

  • czujnik uderzenia
  • karta pamięci
  • przetwornik analogowo-cyfrowy
  • kompromisy przy szeregowaniu pozwalają zwiększyć przepustowość
  • częste, szybkie reagowanie na zdarzenia przeszkadza w zadaniach wymagających dużej przepustowości
  • kod linkowany z uwzględnieniem miejsca, do którego będzie wgrany (nie przenośny)
  • kod powinien wykorzystywać fragmenty stałego oprogramowania przejściówki (realizacja API, komunikacja, funkcje FreeRTOS, inne standardowe funkcje)
  • umieszczany w RAM lub Flash

Implementacja na PC

Pomysły 1

Mikrokontroler

  • linux, libusb
  • obsługa dużych transferów
  • kompilowanie kodu dla przejściówki, wgrywanie go i uruchamianie/podpinanie pod przerwania

Przykładowe peryferia

  • GPIO
  • kontroler przerwań
  • Timery - liczniki, PWM...
  • Interfejsy komunikacyjne
  • Przetworniki AC, CA, komparatory
  • Sterowanie zasilaniem, taktowaniem
  • Kontroler DMA
  • Uniwersalne, rozszerzalne API (C) dla interfejsów szeregowych (głównie SPI, I2C, głównie master)
  • Implementacja na jakimś mikrokontrolerze
  • Stworzenie "przejściówki" pozwalającej uruchamiać program (prototyp aplikacji) na PC korzystającej przez to API z fizycznych interfejsów - łatwiejsze prototypowanie i debuggowanie
  • Praca magisterska "Wspomaganie projektowania aplikacji wykorzystujących interfejsy szeregowe" pod kierunkiem dr Marcina Peczarskiego
  • CPU + pamięci + peryferia
  • sprzętowe układy komunikacyjne
  • możliwości debuggowania
  • warunki ekonomiczne użycia

Etapy prototypowania

Skutki uboczne

  • logiczny podział komponentów
  • minimalizowanie komunikacji poprzez bezpośrednie pisanie po pamięci
  • usunięte lub odłożone w czasie stosowanie rozwiązań specyficznych dla danego sprzętu
  • przenoszenie ułatwia wyłapanie czegoś co działa, ale nie wiadomo dlaczego
  • narzut na wydajność
  • prototypowanie można zakończyć w dowolnym momencie
  • urządzenie samodzielne lub sterowane z komputera

STM32F107VCT6

Interfejsy komunikacyjne

Pomysły 2

USB

  • interfejs szeregowy + protokół
  • urządzenia mogą tworzyć drzewiastą sieć
  • 1 host i wiele urządzeń (device)
  • komunikację zawsze inicjuje host
  • kanały logiczne - endpointy - 4 rodzaje
  • Rdzeń ARM Cortex-M3, do 100MHz, 256kB Flash, 64kB RAM
  • Kontrola nad częstotliwością taktowania i zasilaniem
  • SPI, I2C, USART, CAN, przetw. AC, CA
  • USB 2.0 full speed - host, device, OTG
  • Ethernet MAC
  • 12 kanałowy DMA
  • LQFP64, 28.69PLN
  • proste szeregowe: I2C, SPI, USART, one-wire...
  • CAN
  • USB
  • Interfejsy "pamięciowe"
  • Ethernet

Co by tu zweryfikować?

  • Uruchamianie zadań na "przejściówce" - fragmenty krytyczne czasowo, płynne przenoszenie prototypu aplikacji
  • Konieczne rozszerzenie API o obsługę GPIO
  • Implementacja jakichś mechanizmów synchronizacyjnych (wzorowane na FreeRTOS)
  • czasy: reakcji na zdarzenie, obsługi, oczekiwania na wybudzenie zadania
  • własności żywotności i bezpieczeństwa - uwzględnienie asynchroniczności przerwań
  • własności użycia pamięci (niewychodzenie poza stos, niepisanie tam gdzie nie trzeba)
  • zbadanie własności części pośredniczącej (poprawność, opóźnienia)
Learn more about creating dynamic, engaging presentations with Prezi