Implementacja protokołu PTP IEEE 1588 V2 na mikrokontrolerze Kinetis K60
Oprogramowanie – system operacyjny czasu rzeczywistego MQX
MQX jest systemem operacyjnym czasu rzeczywistego (RTOS) autorstwa MQX Embedded i ARC International. Firma Freescale Semiconductor zaadoptowała tą platformę programową w rodzinach mikrokontrolerów ColdFire, Kinetis i Power Architecture. W porównaniu z oryginalnymi dystrybucjami MQX, dystrybucja Freescale MQX jest prostsza w konfiguracji i użytkowaniu. W najnowszym wydaniu znajduje się system operacyjny MQX wraz ze składnikami takimi jak stos TCP/IP, stos USB hosta i urządzenia, system plików i inne.
System Freescale MQX stanowi wiodącą technologię oprogramowania dla projektów wbudowanych opartych na mikroprocesorach i mikrokontrolerach Freescale. MQX oferuje bezpośredni interfejs API o modularnej architekturze opartej na komponentach, dzięki czemu łatwo go przystosować do własnych aplikacji. Pozwala również projektantom na dodawanie serwerów sieciowych, usługi e-mail, zarządzania siecią, funkcji bezpieczeństwa i routingu do swych projektów. Poszczególne komponenty są linkowane tylko wówczas, gdy zachodzi taka potrzeba, zapobiegając zajmowaniu pamięci przez nieużywane funkcje. Korzystając z silnej współpracy Freescale z partnerami, oprogramowanie Freescale MQX łatwo może zostać użyte wraz z niezależnymi programami i narzędziami, które rozszerzają funkcjonalność systemu MQX o rozwiązania takie jak oprogramowanie bezpieczeństwa, stosy protokołów przemysłowych i wtyczki graficzne.
Więcej informacji można uzyskać w podręczniku użytkownika Freescale MQX Real-Time Operating System User’s Guide, MQXUG lub Freescale MQX Real-Time Operating System Reference Manual, a także odwiedzając stronę internetową systemu operacyjnego Freescale MQX.
Oprogramowanie – biblioteka Freescale MQX1588
Biblioteka Freescale MQX1588 została stworzona jako wsparcie dla standardu IEEE 1588 V2 w systemie MQX oraz by dostarczyć użytkownikom łatwy sposob na tworzenie aplikacji wykorzystujących IEEE 1588 w systemach opartych na MQX. Biblioteka MQX1588 wykorzystuje oprogramowanie realizujące protokół IEEE 1588 V2 autorstwa IXXAT Automation GmbH, zaadoptowane do środowiska MQX.
Stos IXXAT IEEE 1588 V2 jest kompletną implementacją standardu IEEE 1588-2008 z następującymi blokami funkcjonalnymi:
- Zegary – zwyczajny i podłączony do zegara głównego (ordinary / boundary)
- Zegar korygujący opóźnienie (transparent)
- Komunikacja w trybie unicast
- Algorytm Best Master
- Praca jednokrokowa i dwukrokowa
- Mechanizm opóźnienia Peer-to-peer i nadawca-odbiorca
- Protokół i interfejs zarządzania
- Proste API do komunikacji z aplikacją
- Możliwość pracy zarówno pod kontrolą systemu operacyjnego, jak i bez niego
- Łatwość adaptacji na wybranym sprzęcie, stosie UDP/IP i systemie operacyjnym
- Zoptymalizowane algorytmy filtrujące do stosowania w standardowych sieciach Ethernet o dużym obciążeniu magistrali
Więcej informacji można odnaleźć w podręczniku użytkownika MQX IEEE1588 Communication Library User’s Guide MQX1588UG.
Oprogramowanie – pełny stos protokołów TCP/IP w systemie MQX
Pakiet komunikacyjny czasu rzeczywistego MQX TCP/IP (RTCS) jest szybkim wbudowanym stosem internetowym o niewielkim narzucie, który posiada wsparcie dla bogatego zestawu standardowych protokołów: FTP, Telnet, DHCP, DNS, a także SNMP. Pakiet ten oferuje dużą elastyczność, zaczynając od prostych aplikacji transmisji szeregowej przez Ethernet, aż po złożone systemy. Pozwala również projektantom na dodawanie do swych projektów serwerów sieciowych, usługi e-mail, zarządzania siecią, bezpieczeństwa i routingu.
Więcej informacji można uzyskać w podręczniku użytkownika Freescale MQX RTCS User’s Guide, MQXRTCSUG.
Szczegółowy opis oprogramowania demonstracyjnego IEEE 1588
W celu zaprezentowania funkcjonalności i sposobu użycia biblioteki MQX1588, została stworzona aplikacja demonstracyjna. Pokazuje ona, w jaki sposób:
- Skonfigurować wszystkie elementy aplikacji, wliczając w to RTCS
- Korzystać z biblioteki MQX1588
- Zaimplementować funkcje MQX1588 API możliwe do przeciążenia przez użytkownika
- Utworzyć pamięć nieulotną przy użyciu standardowego sterownika MQX NAND Flash
- Zaimplementować interfejs użytkownika dla aplikacji (powłoka, Telnet i serwer HTTP)
Program demonstracyjny jest dostarczany wraz z instalacją biblioteki MQX1588. Można go odnaleźć w folderze demo pakietu oprogramowania mqx1588lib. Projekty aplikacji znajdują się w następujących podfolderach:
- c10: dedykowany dla środowiska Code Warrior Deveopment Studio for Microcontrollers
- iar: dedykowany dla środowiska IAR Embedded Workbench for ARM
Najpierw należy otworzyć plik projektu iar\demo1588_two_step_twrk60n512.ewp w środowisku IAR Embedded Workbench dla ARM lub cw10\demo1588_two_step_twrk60n512.ewp w środowisku Codewarrior 10. Oba projekty zawierają trzy podstawowe opcje kompilacji:
- Flash Release – opcja odpowiednia do finalnego wdrożenia aplikacji. Po wgraniu do pamięci Flash, aplikacja uruchamia się natychmiast po zresetowaniu. Zmienne są alokowane w wewnętrznej pamięci SRAM.
- Flash Debug – podobnie jak wyżej, lecz wykorzystywane są biblioteki skompilowane z opcją debugowania. Ta opcja jest odpowiednia do testowania aplikacji przed ostatecznym wdrożeniem. Na płytkach bez pamięci zewnętrznej jest to jedyna skuteczna metoda debugowania większych aplikacji.
- Ram Release – wyłącznie do debugowania, kod zostaje umieszczony w wewnętrznej pamięci RAM. Plik wykonywalny aplikacji jest ładowany automatycznie do pamięci RAM przez debugger.
- Ram Debug – podobnie jak wyżej, przy czym wykorzystane są biblioteki z opcją debugowania. Opcja ta jest odpowiednia do testów przed wdrożeniem aplikacji.
Korzystanie z biblioteki MQX1588
W programie demonstracyjnym użyte zostały biblioteki binarne (tabela 1). Wersje przeznaczone do debugowania (z dopiskiem _d) są wykorzystane w opcjach typu debug, a wersja release obrazów binarnych została użyta w opcjach typu release.
Tab. 1. Lista wykorzystanych bibliotek binarnych z pakietu bibliotek MQX1588lib
mqx1588_common_two_step_d.a | Wersja debug MQX1588_common biblioteki dla implementacji dwukrokowych |
mqx1588_common_two_step.a | Wersja release biblioteki MQX1588_common dla implementacji dwukrokowych |
mqx1588_macnet_d.a | Wersja debug biblioteki MQX1588_macnet |
mqx1588_macnet.a | Wersja release biblioteki MQX1588_macnet |
Funkcje API dla biblioteki MQX1588 są zaimplementowane z pliku MQX1588user.c. W tym pliku zawarto dwie funkcje do zapisu i odczytu danych konfiguracyjnych MQX1588 do / z pamięci nieulotnej (zewnętrznej pamięci NAND Flash). Jest tam również jedna funkcja wywoływana w przypadku błędu.