reklama
reklama
reklama
reklama
reklama
reklama
reklama
reklama
© kornwa dreamstime.com Technologie | 12 czerwca 2018

Wybór pamięci dla systemów wbudowanych OS i aplikacji IoT

Wraz z upływem czasu i rozwojem technologii węzły sieci IoT stają się coraz bardziej rozbudowane, a wymagania dotyczące przetwarzania danych wzrastają do poziomu, który wymusza użycie wbudowanych systemów operacyjnych (OS), takich jak Linux, w celu właściwego zarządzania wszystkimi uruchomionymi procesami.
Dodatkowo, im więcej przetwarzania wstępnego można przeprowadzić w zdalnym węźle IoT, tym mniej danych musimy przesłać z powrotem do centralnego huba, redukując tym samym obciążenie sieci. Jednym ze sposobów na szybsze działanie IoT jest umieszczenie takiego systemu wraz z kodem aplikacji na jednej karcie pamięci Flash microSDHC urządzenia. Należy jednak pamiętać, że większość takich kart jest zaprojektowana tylko do przechowywania danych, a nie do przechowywania systemu operacyjnego wraz z kodem programu. Poniżej opisane zostaną rozwiązania, które pozwalają obejść te ograniczenia.

Dlaczego warto korzystać z wbudowanego systemu operacyjnego?

Wyjściowo przetestowany wbudowany system operacyjny może obsługiwać złożone przetwarzanie wstępne, radząc sobie w sposób bardzo wydajny z wieloma pojedynczymi zadaniami. Może również wykonywać wiele zadań w sposób przewidywalny. To oczywiście powoduje, że pojawiają się dodatkowe wymagania dla mikrokontrolera – szybsze taktowanie i większa ilość pamięci. Zaletą dostępnego komercyjnie lub open-source gotowego systemu wbudowanego OS jest jego stabilność i sprawdzony kod, który nie wymaga częstych aktualizacji. Przykładem są dostępne wbudowane systemy operacyjne Linux, które aktualizowane są co kwartał, a poprawki bezpieczeństwa nawet co pół roku. Wbudowany system operacyjny i kod aplikacji mogą wymagać 8 Gb lub więcej przestrzeni na nośniku, a ponieważ system operacyjny jest rzadko aktualizowany, najwygodniejszym sposobem wydaje się przechowywanie systemu operacyjnego na karcie pamięci Flash microSDHC, która jest ręcznie aktualizowana (wymieniana) przez technika. Jest to również ważne, w przypadku przyszłej rozbudowy pamięci, ponieważ aktualna karta pamięci może zostać łatwo zastąpiona inną kartą, na przykład nową o większej pojemności, przy następnej wizycie technika.


Rysunek 1: Karta pamięci microSDHC S-140u Class 10 firmy Swissbit, która obsługuje prędkość do 104 MB/s - wystarczająca, aby uzyskać szybki dostęp do pamięci programu.

Przechowywanie gigabajtów wbudowanego systemu operacyjnego na karcie pamięci Flash microSDHC NAND, która jest fizycznie aktualizowana, ma kilka istotnych zalet, w stosunku do pamięci Flash aktualizowanej z sieci bezprzewodowej. W sieci bezprzewodowej, w zależności od zastosowanego schematu procesu, aktualizacja 4-gigabitowego lub większego systemu wbudowanego może na tyle obniżyć przepustowość sieci bezprzewodowej, że nie będzie możliwe przesyłanie żadnych danych operacyjnych. Aktualizowanie przez sieć wymaga również karty microSDHC, która posiada dwukrotnie większą pojemność od standardowo używanej, ponieważ konieczne jest jednoczesne zapewnienie wystarczająco dużo pamięci do uruchomienia systemu operacyjnego, jak i przychodzącej aktualizacji. Dodatkowo znacznie skraca się żywotność baterii ze względu na długą aktywność radiową, a także większy pobór prądu w czasie procesu zapisu. Wbudowany system operacyjny uruchamiany z pamięci Flash stawia również wyższe wymagania kartom microSDHC. Najczęstszym zastosowaniem komercyjnym jest użycie karty jako pamięci multimedialnej w urządzeniach mobilnych. Podczas gdy błędy wielu bitów w pliku wideo, obrazie lub pliku audio mogą pozostać niezauważone dla użytkownika końcowego, to pojedynczy błąd w pliku OS może spowodować całkowitą awarię systemu. Pamięć Flash posiada również swoją organiczną długość życia. W każdej specyfikacji wpisana jest pewna ograniczona liczba cykli kasowania / zapisu. Każda operacja zapisu w tablicy pamięci zmniejsza jej żywotność. Kiedy wartości te zbliżają się do swojego określonego limitu, prawdopodobieństwo uszkodzenia komórki pamięci rośnie, aż do jej uszkodzenia i braku możliwości zapisania nowego stanu. Jednym możliwym rozwiązaniem, aby temu zapobiec jest tzw. równoważenie zużycia (Wear Leveling). Zamiast zapisywania w tej samej lokalizacji, dane są równomiernie rozmieszczane w całej półprzewodnikowej pamięci Flash, zapewniając równomierną dystrybucję zapisów w macierzy pamięci.

Jak korygować błędy odczytu danych?

Pliki OS są odczytywane znacznie częściej niż pliki danych, czasami nawet w sposób ciągły, co może prowadzić do powstania błędów w bitach macierzy pamięci Flash. Dlatego tak ważne staje się korygowanie błędów. Pamięć Flash ułożona jest w bloki, a każdy zawiera wiele stron. Bloki są najmniejszymi częściami pamięci, które można wymazać, a strony są najmniejszymi częściami pamięci, które można odczytać lub zaprogramować. Typowy rozmiar bloku Flash wynosi 256 KB i zawiera 64 strony po 4 KB każdy. Każda strona zawiera również dodatkowe 64 bajty używane do korygowania błędów ECC (Error Correction Code), kasowania licznika oraz wykorzystywane przez mechanizm translacji adresów. Podczas odczytywania strony danych, przykładane jest małe napięcie odczytu do całego bloku, do którego należy strona, nawet jeśli potrzebne jest odczytanie tylko jednego bajtu na stronie. Ze względu na budowę komórki Flash, powoduje to również indukowanie się małego napięcia w otaczających stronach tego bloku. Wielokrotne odczytywanie tego samego bajtu, może nawet spowodować zaprogramowanie sąsiednich komórek na inną wartość (programowanie miękkie) lub zakłócić programowanie stron. Podczas gdy większość kart pamięci Flash microSDHC NAND ma jakąś formę korekcji błędów, tak aby poprawić błędy komórek, to może zdarzyć się, że liczba błędów spowodowanych przez programowanie miękkie będzie na tyle duża, że w pewnym momencie nie będzie możliwa już ich korekcja. Mikrokontroler odczyta inną wartość z lokalizacji bitu, powodując błąd odczytu danych (Read Disturb Error). Karta pamięci Flash microSDHC NAND używana do przechowywania danych nie zbyt często wykrywa błędy odczytu. Ze względu na operacje zapisu wykonywane na macierzy pamięci Flash, po operacji równoważenia zużycia, miejsca flashowania są przeprogramowane, eliminując wszelkie efekty miękkiego programowania. Jednak tablica w pamięci Flash używanej dla systemu wbudowanego OS jest tak rzadko programowana, że błąd odczytu może stać się rzeczywistością. Karty pamięci typu SLC (Single-Level Cel) posiadają możliwość miliona odczytów a MLC (Multi-Level Cel) – 100 tyś, zanim wystąpi błąd odczytu. Często producenci nie podają tych danych, uważając mylnie, że jest to nie zbyt często pojawiający się błąd.

RDM - metoda eliminacji błędów odczytu

Aby zapobiec błędom odczytu, firma Swissbit opracowała funkcję o nazwie Read Disturb Management (RDM). Kontroler karty pamięci Flash śledzi liczbę operacji odczytu dla każdego pojedynczego bloku. Kiedy blok osiąga wewnętrznie określoną liczbę operacji odczytu, sterownik przemieszcza dane do nowego bloku, podobnie jak w przypadku metody równoważenia zużycia używanej w operacjach zapisu. W razie potrzeby, podczas operacji zapisu do nowego bloku, kodowanie korekcyjne (ECC) kontrolera karty koryguje wszelkie uszkodzone dane. System RDM został zaimplementowany w karcie SLC Flash microSDHC - SFSD8192N1BM1MT-I-QG-221-STD firmy Swissbit o prędkości UHS-I Class 10. Seria tych kart S-450u, została zaprojektowana specjalnie do zastosowań przemysłowych z wykorzystaniem systemów wbudowanych. Pojemność 8 Gb pozwala na zainstalowanie wbudowanego systemu operacyjnego Linux i kodu aplikacji dla wielu złożonych węzłów sieci IoT. W trybie SDR104 prędkość dostępu do danych może wynieść do 104 MB / s.

Karta microSDHC jako pamięć programu

Jak wspominano wcześniej, karty microSDHC są zazwyczaj używane tylko do przechowywania danych, więc urządzenia peryferyjne, większości oparte o mikrokontrolery architektury Harvard, obsługują tylko dostęp do kart microSDHC jako pamięci danych. To ogranicza ich wybór. Istniejące rozwiązania odczytują kartę microSDHC i ładują pamięć programu do pamięci RAM, a następnie uruchamiają się z pamięci RAM. Układ nie tylko zwiększa dodatkowy koszt płyty, ale także ogranicza wielkość programu do ilości pamięci RAM dostępnej na płycie komputera PC.

Karty MicroSDHC mogą pracować w trybie magistrali SD lub SPI. Aby połączyć mikrokontroler z kartą microSDHC S-450u jako pamięcią programu, wybrany mikrokontroler musi obsługiwać jeden z dwóch protokołów magistrali microSDHC:

1. Kontroler trybu SD karty SDHC skonfigurowany jako pamięć programu. Może to być zewnętrzne urządzenie peryferyjne lub wewnętrzny sprzętowy mikrokontroler. Interfejs składa się z sześciu sygnałów: czterech bitów danych (DAT [0-3]), zegara (CLK) i dwukierunkowego sygnału CMD (Command / Response). Dane przesyłane są przez cztery bity na raz, co gwarantuje dużą szybkość wykonywania programu. Kontroler hosta lub mikrokontrolera udostępnia sygnał zegarowy karcie microSDHC.


Rysunek 2: Interfejs karty microSDHC w trybie SD wykorzystuje prosty interfejs sześciu sygnałów, aby zapewnić najszybszy dostęp do pamięci.

2. Konfigurowalny interfejs SPI z obsługą XIP (eXecute In Place). Wykonanie kodu programu następuje poprzez uzyskanie dostępu do karty microSDHC w trybie SPI. Transfer danych nie jest jednak tak szybki jak trybie SD. Pamięć XIP mapuje pamięć karty w przestrzeni pamięci programu mikrokontrolera, umożliwiając w ten sposób dostęp do karty microSDHC przez oprogramowanie hosta.

Karta microSDHC włącza się zawsze w trybie karty SD. Aby wybrać tryb SPI, w przeciągu pierwszych sześciu cykli zegarowych, zaraz po włączeniu zasilania, sygnał DAT3 musi osiągnąć poziom VDD, a jednocześnie polecenie RESET (000000b) musi zostać wysyłane na kartę poprzez obniżenie poziomu CMD do VSS. W ten sposób karta pozostaje w trybie SPI, dopóki nie zostanie wyłączona.

Przykładem mikrokontrolera przeznaczonym do węzłów Internetu Przedmiotów jest układ MAX32652 firmy Maxim Integrated. Wykorzystuje rdzeń ARM Cortex-M4 z FPU. Charakteryzuje się ultra niskim poborem mocy. Posiada wbudowany interfejs XIP QSPI, który po prawidłowym skonfigurowaniu jest w stanie wykonać kod z karty microSDHC. MAX32652 posiada również pełny interfejs SDHC, przeznaczony przede wszystkim do przechowywania danych.

Należy pamiętać, że interfejsy do mikrokontrolera muszą być programowymi interfejsami pamięci (PMI). Niezależnie od zastosowanego protokołu lub interfejsu magistrali, mikrokontroler będzie musiał zawierać pewien kod inicjalizujący, aby uruchomić interfejs karty microSDHC.

Bezpieczne gniazda

Jednym z elementów, często pomijanych w procesie projektowania są gniazda kart pamięci. W przypadku wymagających aplikacji, stopy cyny lub podobnych materiałów kontaktowych mogą z czasem tracić swoje właściwości elektryczne i mechaniczne. Złocone pokrycia, chociaż droższe, zapewniają stałe połączenie, które zachowuje swoją wytrzymałość mechaniczną w długim czasie. Przykładem jest złącze 10101704J6#2A firmy Amphenol przeznaczone dla kart typu UFS (Uniwersalny Flash Storage) oraz microSDHC, które zapewnia solidne połączenie dla każdej tego typu karty. Wyposażone zostało w styki zapobiegające zwarciu, które uniemożliwiają również zablokowanie kart pamięci w momencie wkładania i wyjmowania.


Rysunek 3. Złącze 10101704J6#2A firmy Amphenol dla kart pamięci typu UFS i microSDHC.



Rysunek 4. Widok karty microSDHC (po lewej) i karty UFS (po prawej). Karta UFS obsługuje dwa razy większą szybkość niż microSDHC z różnicowym, dwukierunkowym przesyłaniem danych.


Niektóre węzły sieci IoT mogą znajdować się w odległych lokalizacjach, w których Wi-Fi jest niedostępne lub niepraktyczne. W takich sytuacjach połączenie sieciowe może być realizowane za pomocą sieci GSM. Wymaga to użycia karty SIM abonenta, która również potrzebuje specjalnego gniazda. Prostym sposobem na zaoszczędzenie miejsca na płycie jest użycie wspólnego gniazda dla microSDHC i karty SIM, takiego jak 1041681620 firmy Molex. Gniazdo to posiada również złocone styki gwarantujące solidne połączenie w trudnych warunkach oraz kontakty zapobiegające zwarciu.


Rysunek 5. Widok karty 1041681620 firmy Molex z możliwością włożenia karty SIM i microSDHC.


Początkowo karty Flash microSDHC były przeznaczone tylko do przechowywania danych. Obecna ewolucja kart pamięci podąża w kierunku wsparcia unikalnych potrzeb IoT związanych z wykorzystaniem systemów wbudowanych OS i pamięci programów na tym samym nośniku. Część tych zmian obejmuje tworzenie szybszych pamięci Flash, które mogą obsługiwać stałe żądania odczytu oraz powstanie mikrokontrolerów, które będą mogły obsługiwać nowe, niezawodnie interfejsy pamięci, redukując lub eliminując błędy odczytu / zapisu danych w pamięci Flash.

Artykuł opublikowano dzięki uprzejmości firmy DigiKey

© DigiKey

Komentarze

Zauważ proszę, że komentarze krytyczne są jak najbardziej pożądane, zachęcamy do ich zamieszczania i dalszej dyskusji. Jednak komentarze obraźliwe, rasistowskie czy homofobiczne nie są przez nas akceptowane. Tego typu komentarze będą przez nas usuwane.
reklama
reklama
Załaduj więcej newsów
June 25 2018 09:38 V9.6.1-2