Linux na serii ARM Cortex-M3

29

Jestem nowy w ARM i trochę mylony ze wszystkimi różnymi seriami.

Muszę zbudować bramę o niskiej mocy (Ethernet, Wi-Fi ...), więc myślę, że kora-M lub kora-R będzie dobrym punktem wyjścia. Ale nie znalazł żadnej płyty deweloperskiej z, powiedzmy, korą-m3 (która wydaje się dość popularna) obsługującej Linux.

Wydaje się, że to możliwe, linuxM3 , więc zastanawiam się, dlaczego nie ma projektu linux wokół na przykład mbed lub LPCXpresso ?

Czy ktoś może wskazać mi deskę deweloperską, której szukam, lub wyjaśnić, dlaczego „cortex m” + linux nie ma więcej odpowiedzi?

jojo l'abricot
źródło
NXP ma wsparcie dla Linuksa dla innych procesorów, które nie są pewne co do tego konkretnego.
kenny,
2
Jak niska musi być moc? Udało mi się zbudować 1/2 Wata pełnego systemu Linux opartego na Freescale iMX283. 1/2 W przy normalnym obciążeniu bez Ethernet, 1 W z Ethernet, <1,5 W Ethernet przy pełnym obciążeniu ... Ethernet PHY to połowa mocy systemu przy normalnym obciążeniu.
darron

Odpowiedzi:

18

W odniesieniu do ARM Cortex-M3:

Linux wymaga modułu MMU (Memory Management Unit). ARM Cortex-M3 nie ma takiego. Niemożliwe jest uruchomienie jądra Linuksa na ARM Cortex-M3.

Istnieje jednak wariant jądra Linux dla procesorów MMUless o nazwie uCLinux .

Przewodnik po systemie Linux na M3

Nota aplikacyjna ST dotycząca uCLinux

Jednak, jak zauważyli inni, Linux raczej nie będzie praktyczny na M3. Nie będzie działać bez zewnętrznej pamięci RAM. Uważam, że nawet największe części Cortex-M3 mają tylko 1 MB pamięci flash, więc prawdopodobnie będziesz potrzebować dodatkowej pamięci.

Toby Jaffey
źródło
12

Cortex-M nie sprosta zadaniu, potrzebujesz ARM926EJ-S

Wyszukiwanie „Cortex-M + Linux” nie daje wielu odpowiedzi, ponieważ Cortex-M nie jest przeznaczony dla systemu Linux. Najmniejszą wydajnością ARM ogólnie uważaną za zdolną do uruchomienia pełnego systemu operacyjnego, takiego jak Linux, jest seria ARM926EJ-S , która wykorzystuje architekturę ARMv5. Jest to klasyczny procesor o szerokim zastosowaniu (można go znaleźć w wielu urządzeniach NAS, starszych smartfonach i Chumby Classic) oraz z dużym wsparciem, ale jest nieco mniej wydajny niż jego następcy. Ma architekturę ARMv5 i działa na kilkuset MHz.

Tego naprawdę chcesz, ale nie możesz tego mieć

Myślę, że procesorem, który naprawdę chcesz, jest Cortex-A5: zaprojektowany, aby zastąpić ARM11 (i być nieco bardziej wydajny), ale o wiele bardziej energooszczędny i na bardziej nowoczesnym procesie. (Uwaga: nie ma nic wspólnego z A5 firmy Apple, to specjalny Cortex-A9). Zostało to ogłoszone w 2009 roku i czekamy na zobaczenie krzemu „teraz każdego dnia”. Nikt jeszcze nie wyprodukował SoC ogólnego zastosowania dla tego procesora, ponieważ smartfony napędzają rynek i rynek między bardziej wydajnym A9 a starszym ARM11 po prostu nie jest przekonujący. Zobacz tę dyskusję, aby uzyskać więcej informacji: http://forum.beyond3d.com/archive/index.php/t-60145.html

Bardziej zaawansowane opcje

ARMv6 w ARM11 jest nieco bardziej wydajny, ale także bardziej wydajny (więc możesz nie widzieć żadnych oszczędności w budżecie mocy). Obsługuje mniej starych smartfonów, takich jak iPhone 3G, a także iPod Touch, Kindle i Zune i działa z częstotliwością 500-800 MHz. Najnowsza architektura ARMv7 to seria Cortex. Cortex-A8 i -A9 zasilają najnowsze smartfony i tablety z częstotliwością 800 MHz - 1,2 GHz, prawdopodobnie będziesz chciał trzymać się mniejszych, wolniejszych procesorów, jeśli dążysz do minimalistycznego wzornictwa. Wydajność na wat tych procesorów jest fantastyczna, ale korzystanie z części ARMv5 może być bezpieczniejsze (i na pewno mniej skomplikowane).

Kevin Vermeer
źródło
2
Uwaga: Cortex-A5 jest już w sprzedaży, a Atmel twierdzi, że zapewnia obsługę Linuksa dla jego wersji: atmel.com/Microsite/sama5d3/...
pjc50
10

Proszę sprawdzić tę stronę pod kątem niektórych platform Cortex-M3, które obsługują Linux (uClinux):

http://www.emcraft.com/

Z powodzeniem uruchamiamy uClinux na następujących MCU Cortex-M3: LPC1788 NXP, STM32F2 STmicro, SmartFusion Actela i jesteśmy w trakcie dodawania obsługi jeszcze kilku: Freescale Kinetis, STM32F4 (te dwa to Cortex-M4 zamiast Cortex-M3) .

To prawda, że ​​Linux (wraz z uClinux) wymaga do działania zewnętrznej pamięci RAM - zintegrowana pamięć SRAM Cortex-M nie jest wystarczająco duża, nawet w przypadku bardzo małej konfiguracji Linuksa; potrzebujesz praktycznych konfiguracji co najmniej 4 MB zewnętrznej pamięci RAM. Im więcej, tym lepiej - jeśli twoja aplikacja potrzebuje „funkcji”, Linux obsługuje prawie wszystko i nie będziesz żałować, że dodałeś więcej pamięci RAM niż mniej.

W odniesieniu do konkretnych urządzeń, które mają być używane do zewnętrznej pamięci RAM, wszystko to jest zdefiniowane przez interfejs pamięci zewnętrznej zapewniany przez konkretny MCU. STM32F i SmartFusion obsługują tylko SRAM; można uzyskać PSRAM 16 MB 70ns (z trybem strony dla szybszej pracy) za 6-7 USD; LPC1788 obsługuje szybsze pamięci SDRAM; Kinetis K70 obsługuje DDR2 (5 USD za urządzenie o pojemności 64 MB) itp. Wszystkie te pamięci pobierają moc na poziomie zaledwie uA w czasie statycznym.

Potrzebujesz czegoś do załadowania bootowalnego Linuksa, ale może to dotyczyć wszystkiego - sieci, karty SD, SPI EEPROM, NOR lub NAND Flash itp.

Podsumowując, twierdzę, że Linux jest całkowicie praktyczną opcją dla projektu Cortex-M3.

Aktualizacja

Istnieje wiele wrażliwych na zużycie aplikacji, w których urządzenie jest bezczynne przez większość czasu, jednak podczas działania musi być w stanie wykonać wiele rzeczy, które nie będą łatwe do osiągnięcia przy użyciu mniejszego RTOS. Bezpieczne połączenia, VLAN, tunelowanie TCP / IP, SNMP, karta SD, urządzenie / host USB, WiFI itp., A lista wymagań jest długa.

Przy mniejszym RTOS niektóre z tych funkcji będą dostępne, inne nie, ale to tylko część historii. Coraz częściej widzimy u naszych klientów, że projekty osadzone wykorzystujące Cortex-M3 nie potrzebują tylko 1 lub 2 z tych zaawansowanych funkcji, potrzebują wielu z nich z jednego urządzenia. Nawet jeśli RTOS zapewnia wszystkie funkcje, których projekt potrzebuje od razu, wciśnięcie go do pamięci na chipie będzie wyzwaniem. uClinux czy nie, domyślam się, że trend będzie taki, że coraz więcej projektów opartych na Cortex-M będzie używać pamięci zewnętrznej. Oczywiście, kiedy w twoim projekcie pojawi się zewnętrzna pamięć RAM, uClinux zaczyna mieć więcej sensu.

Jeśli chodzi o niską moc obliczeniową zapewnianą przez Cortex-M (mierzoną w stosunku do wymagań jądra Linuksa), jako ostatnie doświadczenie właśnie włączyliśmy uClinux na Freescale K70 MCU. To jest Cortex-M4 (który jest taki sam jak Cortex-M3 plus sprzętowe jednostki FP i DSP); interfejsy na chipie do pamięci RAM o dużej gęstości (DDR2) i Flash (NAND), z buforami 2x8 KB. Rdzeń Cortex-M 120 MHz, a wkrótce pojawi się części 150 MHz.

Linux (uClinux) działa po prostu pięknie na tym urządzeniu. Korzystając z „dhrystone”, uzyskujemy około 50% wydajności, którą uzyskujemy na pudełku Freescale PowerPC 250 MHz. Szybkie uruchamianie, dużo pamięci RAM (moduł TWR-K70 zapewnia 128 MB pamięci RAM i 256 MB pamięci NAND Flash), praca w sieci, JFFS2, bufor ramki, SSH, HTTPD, Qt / E - wszystko działa dobrze na K70. Ogólne wrażenia użytkownika to Twój zwykły „wbudowany Linux” na mikroprocesorze pełnym MMU.

Oto wskaźnik do filmu z sesji na żywo uClinux na Freescale Kinetis K70 Cortex-M4 MCU:

http://www.youtube.com/watch?v=UZjJrLG9CeA

Vladimir Khusainov
źródło
5

Bez jakiegoś wsparcia dla pamięci zewnętrznej (zarówno RAM, jak i Flash) niemożliwe jest dopasowanie nawet najmniejszej dystrybucji linuksa (powiedzmy uclinux) do wbudowanych zasobów wymienionych urządzeń.

Zazwyczaj oznacza to, że 32-bitowa magistrala jest odsłonięta w celu podłączenia dodatkowych układów. Właśnie dlatego bardziej popularne są komputery z pojedynczą płytą (SBC) z dodatkową pamięcią RAM i układami flash w zakresie megabajtów używanym do uruchamiania systemu Linux. Wymienione mikrokontrolery tego nie oferują. Z mojego punktu widzenia kora-m0 / m3 jest przeznaczona raczej do zastosowań, w których 8-bitowa mikroprocesor nie wystarcza (lub ledwo) - dlatego wszystkie potrzebne zasoby są wbudowane w układ.

Aby lepiej odpowiedzieć na to pytanie, rozsądnie byłoby przeanalizować wymagania dla osadzonego linuksa. Zazwyczaj oznacza to możliwość dopasowania bootloadera, jądra i systemu plików - i oczywiście rzeczywistą aplikację użytkownika i biblioteki wymagane do jej uruchomienia. Zsumuj to, a wkrótce zobaczysz, że możesz potrzebować kilku megabajtów pamięci RAM i Flash, aby zrobić coś pożytecznego.

Jon L.
źródło
3

Na STM32 nie ma MMU, więc musisz użyć ucLinux.

Szybkie google dla ucLinux wyśle ​​cię we właściwym kierunku. https://www.google.com/search?q=stm32+uclinux

Ale z drugiej strony, Linux nie jest tak przydatny na tego rodzaju małym mcu i przez większość czasu potrzebujesz zewnętrznego RAM i karty SD, aby go uruchomić. A potem cennik zamyka projekty takie jak Rasperry PI, więc musisz pomyśleć o swoich potrzebach.

Może inny mniejszy system operacyjny jest lepszym wyborem? Nawet jeśli miło jest mieć Linuksa wszędzie ...

Johan
źródło
3

Istnieje kilka aplikacji o niskim zużyciu energii, takich jak inteligentne spotkania, w których naprawdę przydatne jest używanie Cortex-M3 z zewnętrzną pamięcią z systemem Linux. Nie myśl w kategoriach całkowitego kosztu (płyty będą kosztować prawie tyle samo, co szybszy rdzeń), ale w kategoriach zużycia energii.

Jeśli żyjesz z baterii i jesteś w trybie bezczynności przez większość czasu, wykonując pomiar może co minutę lub mniej więcej, a następnie wysyłając go przez sieć, fajnie byłoby móc korzystać z infrastruktury dostarczonej przez Linux dla TCP / IP, szyfrowanie itp.

Na tegorocznej Wystawie Światowej Pengutronix pokazał linux na płycie prototypowej od EnergyMicro z uruchomionym uCLinux na Cortex-M3 z zewnętrzną pamięcią RAM i zużyciem mocy 1,6 mW w trybie bezczynności. Energy Micro ma w swojej ofercie kilka niesamowitych MCU Cortex-M3 i M4 o niskiej mocy, specjalnie zoptymalizowanych do zastosowań o małej mocy, które potrzebują około 16 mW mocy podczas pracy z częstotliwością 32 MHz podczas wykonywania kodu z pamięci RAM. Dzięki temu Linux może działać na różnych urządzeniach zasilanych bateryjnie, w których większe i szybsze procesory po prostu nie pasują do twojego budżetu energetycznego. Z drugiej strony nie uzyskasz dużo mocy obliczeniowej z tych ...

Więc w zasadzie jeśli żyjesz z baterii i nie potrzebujesz dużej mocy obliczeniowej, może to być rozwiązanie dla ciebie, jeśli nie, możesz wybrać większy rdzeń ARM z MMU.

Sztylet
źródło