Projektanci wbudowanego oprogramowania muszą zadbać o wygenerowanie zoptymalizowanych kodów, minimalizację rozmiaru kodu, dużą szybkość wykonywania i niezawodność. Osiągnięcie tego wszystkiego razem nie jest łatwe.
Choć opracowywanie oprogramowania użytkowego dla każdego środowiska charakteryzuje się podobnymi cechami, programy do wbudowanego sterowania narzucają bardziej rygorystyczne warunki i ograniczenia. Prędkość wykonywania, kwestie synchronizacji, wielkość pamięci, rozciągłość partycji testujących i zabezpieczających ? w zależności od stopnia krytyczności aplikacji ? wszystkim tym parametrom stawia się wyższe wymagania niż w oprogramowaniu dla PC o ogólnym zastosowaniu.
Kolejną różnicą cechującą oprogramowanie wbudowane lub dedykowane jest bezpośrednia interakcja ze sprzętem docelowym, zamiast z linijkami programowego kodu. Aby zapewnić oczekiwane zachowanie się sterowników i chipów wbudowanych w maszyny,należy sprawić, by symulacja i emulacja stanowiły integralną część procesu programowania. No i oprogramowanie musi być odporne na częste zmiany wersji.
Wielkość kodu, prędkość wykonywania
? Niezależnie od tego, czy przygotowywany jest program o ogólnym zastosowaniu, czy też wbudowano sterujący, projektanci muszą walczyć z wielkością kodu, prędkością wykonywania oraz czasem opracowania ? zauważa Nathan John, dyrektor marketingu strategicznego firmy Cypress MicroSystems, przedsiębiorstwa kontrolowanego przez Cypress Semiconductor Corp. Jednakże właśnie względne znaczenie tych czynników rozróżnia te dwa obszary działania.
? Na przykład dla programu wbudowanego, wielkość kodu jest prawie zawsze decydująca ? mówi John. ? Większości wbudowanych aplikacji brakuje przestrzeni kodowej, a nieefektywne wykorzystanie przestrzeni jest po prostu niedopuszczalne. Projektanci pracujący nad oprogramowaniem ogólnego zastosowania natomiast rzadko narzekają na ograniczenia przestrzeni kodowej. Jeśli chodzi o prędkości wykonywania programów, projektanci programów wbudowanych muszą sprostać wymogom aplikacji końcowej, ale już dalsza optymalizacja prędkości nie przynosi żadnych korzyści. ? Na przykład, gdybyśmy spróbowali przyspieszyć ruch robota (jeśli jest to w ogóle wykonalne), nikt nie cieszyłby się, gdyby pojawiał się on na swoim miejscu wcześniej, a potem czekał na kolejną sekwencję montażową ? dodaje John. Marzenia o szybszej pracy komputera osobistego, to już zupełnie inna sprawa.
David Barnett, dyrektor zarządzający produktami w Green Hills Software Inc., zauważa, że wbudowane oprogramowanie użytkowe wymaga zdecydowanie bardziej rygorystycznego działania w czasie rzeczywistym niż normalne oprogramowanie, by zagwarantować, że ?nadąży? za sterowanym procesem czy systemem. Ponadto zaangażowanie zasobów: pamięci, czasu procesora i innych, musi być zminimalizowane dla zapewnienia optymalizacji wykorzystania zasobów aplikacji, z niezawodnością włącznie. Barnett cytuje różne argumenty przemawiające za taką minimalistyczną filozofią. W zależności od konkretnych potrzeb są to: minimalizacja kosztów wielkoobjętościowych aplikacji, minimalizacja zużycia energii do zasilania z baterii oraz minimalizacja rozpraszania energii cieplnej w przypadkach gdy w grę wchodzą kwestie środowiskowe lub czynniki kształtu.
Dyrektor wspomina również o potrzebie zwiększonej niezawodności w procesach, w których programy sterują aplikacjami przemysłowymi, gdzie realizacja celu aplikacji ma znaczenie zasadnicze: w przemyśle medycznym, motoryzacyjnym czy lotniczym. ? Wyższy poziom zabezpieczenia jest konieczny w przypadku programów wbudowanych w celu ochronienia ich przed atakami zewnętrznymi, jak również dla zapewnienia partycjonowania aplikacji najważniejszych dla bezpieczeństwa, tak aby można było zapewnić bardziej rygorystyczne gwarancje jakości tym częściom oprogramowania, które wymagają najwyższej niezawodności (funkcjom sterowniczym zamiast interfejsom użytkownika) ? wyjaśnia Barnett.
Przebieg procesu projektowania aplikacji PSoC
* ? wskazuje przycisk oprogramowania
** ? wskazuje funkcję automatycznej generacji kodu projektu (make)
Źródło: Control Engineering USA w oparciu o dane Cypress MicroSystems
Rys. Zintegrowane środowisko projektowe (IDE ? Integrated Devolopment Environment) dla systemów programowalnych wbudowanych w układy scalone (PSoC ? Programmable System on Chip) firmy Cypress MicroSystems posiada urządzenie nowej generacji (Device Editor) ułatwiające użytkownikom zarządzanie procesem projektowania wbudowanych aplikacji.
Zalety programów narzędziowych
Wind River uważa, że opracowywanie wbudowanego oprogramowania sterującego opiera się na mnogości narzędzi o wyspecjalizowanych funkcjach, od projektowania aplikacji do narzędzi tradycyjnych, takich jak kompilatory, programy debugujące i narzędzia testujące. Jedną z cech wyróżniających tego typu oprogramowanie, jak wyjaśnia Marc Serughetti, dyrektor marketingu firmy Wind River, jest to, że użytkownicy opracowują swoje aplikacje na standardowych komputerach centralnych (na przykład PC czy stacji z Uniksem), ale przeznaczeniem tworzonych aplikacji nie jest praca na tych komputerach. ? Oprogramowanie użytkowe dla aplikacji wbudowanych jest zaprojektowane do pracy na konkretnych urządzeniach docelowych, o określonej funkcji ? mówi Serughetti. A wszystkie te narzędzia mogą być używane do wizualizacji na komputerze głównym, pokazując wykonanie programu na sprzęcie docelowym.
Programy narzędziowe skracają cykle projektowania wbudowanego sterowania ruchem
Sterowanie ruchem (napędami) i silnikami to główny, ciągle rozrastający się nurt zastosowania wbudowanych aplikacji. Ostatnie wspólne przedsięwzięcie firm The MathWorks i Texas Instruments umacnia ten obraz. Współpraca przyjęła formę nowego narzędzia MathWorks ? ?Embedded Target for TI 2000?, które pozwala inżynierom projektować, wdrażać i weryfikować sterowanie w czasie rzeczywistym oraz algorytmy przetwarzania sygnałów bezpośrednio na sterownikach Texas Instruments TMS320C24x oraz C28x. Ponadto prace prowadzone są wizualnie, bez ręcznego kodowania (patrz: rysunek).
Dzisiaj projektanci systemów sterowania ruchem uciekają się do zaawansowanych procesorów, które dokonują kontroli bardziej intensywnych obliczeniowo algorytmów sterujących, aby sprostać wymogom klientów oczekujących bardziej precyzyjnego pozycjonowania, wyższych prędkości oraz sterowania momentem obrotowym. Równie wszechstronne programy narzędziowe są potrzebne do efektywnego wykorzystania takich procesorów, jak: TI C2000, ze zwiększoną funkcjonalnością, kilkoma urządzeniami peryferyjnymi w strukturze półprzewodnikowej i wysokimi prędkościami procesora.
? ?Embedded Target? dla TI 2000 skraca cykle projektowania aplikacji przez automatyczne, wydajne generowanie kodu i obsługę programowania urządzeń peryferyjnych zapewnione przez Simulink ? wyjaśnia Arun Mulpur, menedżer produktu DSP (DSP = cyfrowe przetwarzanie sygnałów) w firmie Math-Works. Narzędzie to współpracuje bezkonfliktowo ze zintegrowanym środowiskiem tworzenia aplikacji TI, wykorzystując Matlab Link dla Code Composer Studio, co pozwala na wykonywanie komend CCStudio służących do analizowania, debugowania i automatycznego weryfikowania kodów Matlab. Wynikające z tego zalety dla użytkownika obejmują:
Rys. Program narzędziowy ?Embedded Target for TI C2000? firmy Math-Works pozwala użytkownikom na tworzenie dla sterowników C2000 Texas Instruments zaawansowanych implementacji sterowania silnikami przy zastosowaniu wyjść PWM bezpośrednio z układu scalonego (on-chip outputs).
|
Według Serughettiego przy opracowywaniu programów wbudowanych szczególnie ważna jest możliwość debugowania. Spośród różnych produktów Wind River wymienia on rodzinę vision Trace, która potrafi monitorować zintegrowany przepływ (wykonywanie się) programu w celu szybszego debugowania kodów. Program ten zapewnia rozwiązania śledzące, służące do rekonstrukcji wykonywania się programu za pomocą informacji z CPU w celu uzyskania dostępu do kodu oraz danych z wewnętrznej pamięci podręcznej i cykli magistrali zewnętrznej.
Przy opracowywaniu programów kluczową rolę odgrywają również kompilatory, które optymalizują generowanie i wielkość kodu, jak również czas wykonania, w celu uzyskaniaoptymalnej wydajności urządzenia docelowego. Bardziej zwarty kod oznacza mniej potrzebnej pamięci, co bezpośrednio wpływa na koszt urządzenia z wbudowanym oprogramowaniem.
W aplikacjach sterujących szczególnie przydatne są kompilatory, które dodają nowy poziom optymalizacji do narzędziowej technologii generowania kodów. ? Kompilatory wyposażone w najnowsze technologie optymalizacyjne rutynowo generują kody o 20?30% szybciej niż kompilatory standardowe, a w niektórych przypadkach 2?3 razy szybciej ? stwierdza Serughetti.
Inne programy narzędziowe wymieniane przez Wind River służą do wizualizacji zachowania się programu w czasie rzeczywistym. StethoScope, monitor graficzny czasu rzeczywistego, zapewnia użytkownikom podgląd dowolnej zmiennej lub lokacji pamięci w ich systemie, podczas gdy kod pracuje nieprzerwanie. Można obserwować, analizować i zapisywać wartości szczytowe i anomalie kodów. Inne narzędzie analityczne, CoverageScope, pokazuje część kodu, która rzeczywiście się wykonywała podczas przeprowadzania testu. Precyzyjne testowanie kodu może wykryć i usunąć ukryte błędy przed załadowaniem programu. Wczesne wprowadzanie poprawek, na etapie tworzenia programu, oczywiście oszczędza czas, wysiłek i pieniądze.
? Zwiększenie wydajności to pierwsza korzyść dla twórców oprogramowania wbudowanego wynikająca ze stosowania dobrych narzędzi programowych ? mówi John z Cypress MicroSystems. Wraz ze skracaniem harmonogramów projektowych narzędzia programistyczne muszą sprostać wyzwaniom zwiększonej produktywności.
Cypress MicroSystems oferuje zintegrowane środowisko tworzenia aplikacji (IDE) dla swoich urządzeń ? programowalnych układów systemowych (Programmable System-on-Chip ? PsoC), o konstrukcji macierzy z sygnałami mieszanymi (mixed signal array devices). Graficzny ?Edytor Urządzenia?, będący czołowym interfejsem tej aplikacji, oferuje zupełnie unikalne cechy. Łączy programistów z elementami logicznymi, nazywanymi ?UserModules? (modułami użytkownika), które zapewniają funkcje wyższego poziomu takie, jak: zegary, modulatory szerokości impulsu oraz konwertery A/D (patrz: schemat PSoC). Elastyczna struktura półprzewodnikowa współgra ze środkami programowymi, co pozwala użytkownikom konfigurować podstawowe komponenty sprzętowe, zarówno analogowe, jak i cyfrowe, przez proste ustawienia rejestrów. ? UserModules zawierają również procedury interfejsu aplikacji służące do komunikacji z funkcją z poziomu kodu użytkownika. Projektant zajmujący się programami wbudowanymi poświęca duzo czasu na manipulacje urządzeniami peryferyjnymi, a ten program narzędziowy pozwala na znaczne jego skrócenie ? mówi John.
Kwestia czasu wykonywania cykli
Green Hills podkreśla duże znaczenie zależności od czasu w przygotowywaniu i testowaniu oprogramowania czasu rzeczywistego. Praca w takim środowisku staje się wyzwaniem, któremu w coraz większym stopniu muszą sprostać nowe programy narzędziowe. ? Błędy programowe często występują w sposób nieciągły ? mówi Barnett. ? Złożone zależności (wątki) i różne rodzaje wejść programowych powodują pojawiające się nieregularnie problemy synchronizacyjne, których nie da się wykryć metodami tradycyjnymi, takimi jak pojedyncze taktowanie procesora za pomocą tradycyjnego programu debugującego i/lub aplikacji instrumentalnej kodu, ponieważ zakłócają synchronizację właśnie.
Dwa wprowadzone ostatnio przez Green Hills narzędzia przynoszą rozwiązanie. Próbnik Super Trace może wychwycić w czasie rzeczywistym aż 1 GB pierwotnych danych aplikacji z chipa, bez stosowania narzędzi śledzącuch program w ruchu i dogłębnego debugowania inwazyjnego. Wychwytywanieodbywa się z prędkością ponad 300 MHz, ale ze względu na kompresję logiczną odpowiada to dwóm miliardom cykli procesora (przy taktowaniu zegarem do 1,2 GHz). Jeśli występuje błąd, program debugujący TimeMachine analizuje wychwyconą historię w trybie autonomicznym (offline). Pozwala to programistom na wykonywanie debugowania wstecz, od wystąpienia błędu do jego przyczyny źródłowej, podczas przeglądania kodu źródłowego i danych. Narzędzie to umożliwia kompletny i precyzyjny wgląd w zachowanie się aplikacji zarówno w przód, jak i wstecz po osi czasu ? dodaje Barnett.
Jenifer Loy, menedżer produktu LabView Real Time w firmie National Instruments, rozpatruje dwie metody rozwijania wbudowanych programów sterujących z perspektywy historycznej. ? Narzędzia dedykowane, które są optymalizowane dla specyficznych rodzajów aplikacji, reprezentują jedną metodę ? zauważa. Przykładem tutaj byłby sterownik PLC ? idealny do cyfrowych systemów logicznych ? skupiony na aplikacji przez zaprogramowane wstępnie bloki. ? Drugi sposób to wyposażenie projektantów w nieograniczoną elastyczność przez elementy czasu rzeczywistego (systemy operacyjne i procesory) zaprogramowane za pomocą IDE ANSI C (wbudowanego interfejsu dla programów użytkowych w ANSI C) ? mówi Loy. ? Każda metoda była stopniowo udoskonalana, zyskiwała nowe elementy, takie jak pomiary analogowe dla urządzeń PLC oraz zintegrowane biblioteki dla systemów operacyjnych czasu rzeczywistego. Zapotrzebowanie na wbudowane narzędzia programowe wzrasta i jest wyzwaniem. Wielu nowym użytkownikom brakuje przygotowania i doświadczenia wymaganego przez narzędzia tradycyjne.
W wyniku połączenia dwóch powyższych podejść do wbudowanego sterowania powstała nowa kategoria narzędzi. Jest ona optymalizowana dla sprzętu docelowego, pozwala inżynierom skupić się na konkretnych aplikacjach, zamiast na szczegółach programów. Za pomocą jednego narzędzia nowego typu inżynierowie opracowują program na poziomie systemowym, a narzędzie generuje kod C. Jednakże przełożenie nigdy nie jest doskonałe, w celu osiągnięcia wymaganej optymalizacji inżynier musi ręcznie poprawiać kod C.
Programowanie wizualne
Graficzne narzędzia programowe firmy National Instruments, takie jak LabView Real Time i LabView FPGA, pozwalają użytkownikom na opracowywanie wbudowanych aplikacji w wizualnych technikach programowania, bez dodatkowej translacji kodu. Kod LabView jest kompilowany bezpośrednio do kodu maszynowego.
Programowanie wizualne jest jednym z przykładów uzyskiwania większej wydajności dzięki wbudowanym narzędziom programowym (patrz: rysunek ?Narzędzia programowe? z boku) ? Programowanie wizualne to naturalny etap ewolucji dla społeczności projektantów programów wbudowanych, gdzie zdążyło się już mocno zakorzenić ? mówi John z Cypress MicroSystems. ? Szacuję, że 10 lat temu 80% projektów sporządzanych było w asemblerze, a dzisiaj sytuacja jest odwrotna ? 80% jest pisanych w języku C.
? Wraz ze wzrostem zawartości oprogramowania w urządzeniach wbudowanych programy narzędziowe, narzędzia pomocnicze oraz inne narzędzia specjalistyczne muszą współpracować w obrębie otwartego zintegrowanego środowiska tworzenia aplikacji ? sugeruje Serughetti z Wind River. Reorganizowana ostatnio Eclipse Foundation jest przykładem takiej właśnie otwartej platformy.
Eksperci konkludują, że wraz ze zwiększaniem się możliwości zastosowania wbudowanego oprogramowania w aplikacjach związanych z bezpieczeństwem, coraz więcej uwagi będzie się poświęcać testowaniu i niezawodności.
Cypress MicroSystems ? www.cypressmicro.com
National Instruments ? www.ni.com/poland
The MathWorks ? www.mathworks.com, www.ont.com.pl