Dobór kart SD i czytników pod kątem mikrokomputerów

Karty SD, SDHC są tanie, powszechne i potrafią mieć sporą pojemność. Znajdziemy je w aparatach fotograficznych, telefonach, tabletach, kamerach wideo i wielu innych podobnych urządzeniach. Główną cechą oprócz pojemności jest klasa szybkości określająca prędkość z jaką karta jest w stanie zapisać lub odczytać "testowy" plik. Im szybciej tym np. aparat szybciej zapisze zdjęcie, albo kamera będzie w stanie "na żywo" zapisywać dane. Nie zawsze jednak ten parametr jest istotny. W przypadku mini-komputerów jak Raspberry Pi, czy urządzeń mobilnych wykorzystujących włożoną przez nas kartę microSD do przechowywania wielu (niedużych) plików parametry wynikające z klasy szybkości szybko przestają odpowiadać rzeczywistości.

Odroid-X2 i karta SD SanDiska

Wprowadzenie

Karty SD są optymalizowane pod pojedynczy zapis dużych plików, lub strumienia danych (zdjęcie, klip wideo). W przypadku systemu plików - gdy mamy cały system operacyjny na karcie SD, albo pliki aplikacji Androidowych dochodzi do operacji na wielu plikach, w różnych miejscach pamięci karty. Większość kart będzie osiągać bardzo niskie prędkości dla losowego zapisu lub losowego odczytu małych plików, co widać m.in. po testach przeprowadzonych przez tomshardware.com.

Zarówno we wspomnianym teście, jak i na forum Raspberry Pi można znaleźć grupę kart osiągających znacznie lepsze wyniki. Prymat wiodą karty SD firmy Sandisk. Nie są to karty najtańsze, ale nawet te wolniejsze wydają się najlepszym wyborem dla mikrokomputerów. Dzięki efektywnej obsłudze wielu małych operacji zapisu/odczytu zyskamy co najmniej szybsze instalowanie aktualizacji, czy lepsze osiągi serwerowe.

W przypadku Raspberry trzeba wziąć pod uwagę także kompatybilność niektórych kart SD z urządzeniem. Karty niektórych producentów mogą być bardziej problematyczne w użyciu niż pozostałych.

Czytniki kart SD i prędkości zapisu/odczytu

Mając do wypalenia duży obraz systemu dla mikrokomputera liczący sobie kilkaset MB albo nawet kilka GB warto zrobić to jak najszybciej. Posiadanie szybkiej karty SD tego od razu nie gwarantuje. Limitować może nas czytnik kart, a po drugie - niektóre czytniki mogą wypalać niebootowalne obrazy (np. w zależności od rozmiaru obrazu).

W moim przypadku czytnik kart dostępny w laptopie potrafi wypalać poprawnie małe obrazy (coś poniżej 1GB), natomiast nie radzi sobie z obrazami kilku gigabajtowymi (Linaro Ubuntu dla Odroid-X2). System się nie uruchamia z tak wypalonej karty, co ponoć jest dość częste dla wbudowanych czytników (pisano o tym na forum Hardkernela). Z zewnętrznych czytników na USB mogę polecić czytnik Kingstona USB3, który jak na razie bezproblemowo wypala nawet i duże obrazy.

Co do prędkości to USB2 teoretycznie wystarcza bo jego transfer maksymalny to 60 MB/s, a tylko nieliczne i bardzo drogie karty są szybsze. Niemniej czytnik Kingstona nie jest specjalnie droższy z racji nowszego interfejsu USB. Na pewno jest trochę dziwny w obsłudze - po wsunięciu karty trzeba podnieść kołnierz, w którym karta się schowa.

Test prędkości zapisu i odczytu

Czas zrobić szybki test prędkości zapisu i odczytu dla dwóch kart - Sony SDHC 8GB klasy 4 oraz Sandisk Extreme 16GB SDXC UHS-I klasy 10.

Sony podaje 15 MB/s transfery i "wolniejszą" prędkość zapisu (klasa 4 to teoretycznie 4MB/s zapisu/odczytu). Sandisk podaje natomiast prędkości zapisu/odczytu do 45MB/s.

Korzystając z gnome-disk-utils przeprowadziłem test zapisu/odczytu dla 10MB próbek. Karty były podłączane do czytnika wbudowanego w laptopa, a także do czytnika Kingstona podłączanego do portu USB3 jak i USB2. Oto wyniki:

Prędkości uzyskiwane przez kartę Sandiska

Prędkości uzyskiwane przez kartę Sandiska

Jak widać z powyższego zestawienia czytnik wbudowany w laptopie wypadł najwolniej z nieznanych powodów. Czytnik Kingstona niezależnie czy podłączony do USB2 czy USB3 pozwolił osiągnąć najwyższe prędkości obsługiwane przez kartę. Co ciekawe dla wolniejszej karty Sony różnice były prawie niewidoczne.

Prędkości operacji na karcie Sony w zależności od użytego czytnika

Prędkości operacji na karcie Sony w zależności od użytego czytnika

Prędkości operacji na karcie Sandiska w zależności od użytego czytnika

Prędkości operacji na karcie Sandiska w zależności od użytego czytnika

Jak widzimy wolniejsza karta Sony daje praktycznie identyczne wyniki w obu czytnikach. Prędkość zapisu odpowiada klasie 4.

Różnice w przypadku karty Sandiska można tłumaczyć znacznie nowszym standardem, którego czytnik w laptopie może nie obsługiwać. Karta Sandiska to SDXC - standard obsługujący nośniki o rozmiarze do 2TB oraz UHS-I - czyli obsługa zegara o częstotliwości 100 MHz - czterokrotnie większej od standardowej. Częstotliwość ta przekłada się na szybszy transfer!

Jak dobrać kartę SD dla mikrokomputera?

Raspberry, Odroid, czy inne mikrokomputery wykorzystujące karty SD zadowolą się zazwyczaj i przeciętną kartą SD. Z drugiej strony jeżeli nie chcemy spowalniać systemu kartą SD możemy wybrać nieco lepszą. Na pewno nie potrzebujemy strasznie dużej karty (chyba że chcesz np. zmodyfikować obraz i wykorzystać do czegoś tą przestrzeń). Nie ma też co inwestować w ekstremalnie szybkie karty SD. Zyskamy szybsze wypalanie obrazu, lecz nasz mikrokomputer raczej nie będzie w stanie obsłużyć nowszych standardów zapewniających ten szybszy transfer (warto sprawdzić specyfikację, czy zapytać twórców). Dodatkową przestrzeń na dane może zapewnić pendrive, czy podłączony na USB dysk (w zależności od mikrokomputera potrzebny może być aktywnie zasilany HUB USB). Raspbian zmieści się na 4 GB karcie. Linaro Ubuntu dla Odroida i innych wspieranych płytek zmieści się na karcie 8 GB.

Dla Raspberry zaleca się karty SDHC, a karty SDXC mogą nie działać poprawnie (lub wstecznie zgodnie z prędkością klasy 10 SDHC). Mikrokomputer ten stosuje kontroler kart firmy Arasan (specyfikacja, strona 65), który implementuje specyfikację SD w wersji 3.0. Standard UHS-I pojawił się dopiero w specyfikacji 3.1. Modyfikacja częstotliwości zegara dla karty to dość długi wątek na forum Raspberry (dla mocno zaawansowanych).

Instalacja poza kartą SD

System musi wystartować z karty SD, ale reszta może znajdować się na innym nośniku. W przypadku Raspberry można użyć berryboot, który zainstaluje część rozruchową na karcie SD a resztę na wybranym dysku, czy pendrivie.

eMMC

Niektóre mikrokomputery mogą korzystać także z kart eMMC (jak np. Odroid). Karty te wykorzystywane są przez urządzenia mobilne, czy Chromebooki Samsunga oparte na procesorach ARM. W odróżnieniu od kart SD używają 8 a nie 4 bitowego interfejsu, co pozwala osiągnąć znacznie lepszą wydajność (Samsung oferuje nawet karty klasy 1500!). Kart tego typu nie kupimy niestety w sklepie, są dostępne raczej tylko w obiegu rozwiązań przemysłowych i dla producentów sprzętu. Hardkernel oferuje karty eMMC wraz z czytnikiem przy zakupie mikrokomputera.

Karta eMMC
RkBlog
Comment article
Comment article RkBlog main page Search RSS Contact