Czy potrafisz oprzeć komputer na 32-bitowym mikrokontrolerze?

9

Wszyscy mamy (głównie) 32-bitowe maszyny w naszych domach. Ale maszyny 32-bitowe mają mikroprocesor. Czytałem artykuł o ARM Cortex. Jest to 32-bitowy mikrokontroler. To zaintrygowało mnie pytanie. Mikrokontrolery zostały stworzone w celu zmniejszenia zewnętrznego obwodu wokół mikroprocesora, następnie mikroprocesory stały się mocniejsze, podczas gdy mikrokontrolery pozostawały w nich 8-bitowe formy przez zbyt długi czas. Ale teraz, kiedy mamy 32-bitowe mikrokontrolery, czy nie możemy mieć komputera opartego na tych rzeczach?

Rick_2047
źródło
Powiązane: chiphacker.com/questions/1092/...
endolit

Odpowiedzi:

11

To zależy od tego, jak zdefiniujesz „komputer”.

Na mniejszym końcu skali, co można by nazwać tradycyjnymi mikrokontrolerami, nie ma zarządzania pamięcią i rzadko widzi się więcej pamięci RAM niż niewielka ilość wbudowana w układ. Przyznaję, że bardzo mało wiedzy na temat architektury dostępnych bardziej wydajnych mikrokontrolerów, ale istnienie (lub jej brak) tych funkcji jest prawdopodobnie kluczem do odróżnienia urządzenia najlepiej przystosowanego do aplikacji osadzonych lub do obliczeń ogólnego przeznaczenia .

Mówiąc o „zarządzaniu pamięcią”, mam na myśli możliwość uruchamiania programów w wirtualnych przestrzeniach adresowych i mapowania ich na fizyczną pamięć RAM dostępną w systemie, funkcję wykonywaną przez tak zwaną jednostkę zarządzania pamięcią (MMU).

Bez MMU, jeśli spróbujesz uruchomić wiele procesów, wszystkie z nich są zmuszone do współużytkowania jednej przestrzeni adresowej, a to oznacza, że ​​dopóki wszystkie zaangażowane procesy nie będą przestrzegać twojego schematu alokacji pamięci, jeden proces może bardzo łatwo zawiesić inny. Jeśli więc masz całkowitą kontrolę nad projektowaniem wszystkich procesów, tak jak w przypadku systemu osadzonego, nie stanowi to większego problemu. Jeśli jednak próbujesz wesprzeć obliczenia ogólnego przeznaczenia, nie możesz zagwarantować, że cały kod, który zostanie wykonany, będzie przestrzegał schematu alokacji pamięci, a system będzie raczej delikatny.

Brak pamięci RAM również nie stanowi większego problemu dla systemów wbudowanych (1), ponieważ zwykle jest dużo pamięci flash, a (2) brak bycia komputerem ogólnego przeznaczenia oznacza, że ​​nie musisz się martwić uruchamianiem nieoczekiwanych programów na żądanie użytkownika. Z góry znasz sumę całego oprogramowania, które będzie działało w systemie, i potrzebujesz tylko pamięci RAM dla zmiennych dla tego oprogramowania. Gdy jednak spróbujesz przekształcić system w komputer ogólnego przeznaczenia, użytkownicy będą oczekiwać, że będą w stanie uruchomić wszystko, co im odpowiada, a to wymaga pamięci RAM.

Teraz absolutnie dobrze jest wykonywać obliczenia ogólnego przeznaczenia na urządzeniach bez MMU i niewielkiej ilości pamięci. Oryginalny komputer IBM PC z pamięcią 128K RAM, oparty na 8088 (16 bitów) nie dał rady, o ile wystarczyło uruchomić tylko jeden program na raz.

Jeśli więc chcesz zdefiniować „komputer” jako coś w rodzaju technologii z 1982 r., Odpowiedź brzmi zdecydowanie tak. Lub jeśli masz zamknięty system, w którym możesz złagodzić problemy z brakiem MMU i / lub dużej ilości pamięci RAM (np. Telefony komórkowe) poprzez staranne kontrolowanie projektu oprogramowania, również tak. Lub, jeśli twój mikrokontroler ma wbudowaną MMU i mnóstwo pamięci RAM (lub może pomieścić je zewnętrznie), powinieneś być w stanie zbudować system, który bardziej przypomina obecne komputery.

JustJeff
źródło
Rozwój kompilatorów just-in-time dla rzeczy takich jak Java sprawia, że ​​MMU może być mniej konieczne niż byłoby to w przeszłości. W przypadku braku błędów związanych z JIT można mieć wiele niezależnych procesów działających na niezależnych platformach na wirtualnych maszynach Java bez MMU i izolować je od siebie, ponieważ JIT nie wygeneruje instrukcji dla jednego programu, który niewłaściwie uzyskałby dostęp do pamięci używane przez drugiego.
supercat
16

Absolutnie! Spójrz, jak prawie każdy telefon komórkowy. Na przykład Motorola Droid korzysta z mikrokontrolera opartego na TI OMAP ARM z systemem Android na Linuksie. Zasadniczo jest w nim pełnowymiarowy system operacyjny komputera i wiele innych gadżetów. W niektórych produktach, które buduje mój klient, używają one 32-bitowego procesora / kontrolera FreeScale PowerQuicc I i II, który może na nich obsługiwać Linuksa. PowerQuicc mają w zasadzie rdzeń PowerPC wraz z oddzielnym procesorem RISC do obsługi wszystkich urządzeń peryferyjnych w wysoce konfigurowalny sposób. To uwielbiony mikrokontroler.

Trzeba też pamiętać, że lata temu komputery nie działały na procesorach 32-bitowych, ale bardziej jak procesory 8-bitowe (wówczas 4-bitowe), takie jak Commodore 64. Następnie migrowały do ​​16-bitowych, 32-bitowych itp. Naprawdę nie ma dużej różnicy między mikrokontrolerem a mikroprocesorem o równoważnej architekturze bitowej i szybkości. Mikrokontrolerom zwykle brakuje jednostki zmiennoprzecinkowej, ale można to naprawić za pomocą matematyki o stałym punkcie. Na przykład oryginalny procesor Motorola 68000 (16 bitów) został użyty do zasilania tych starych komputerów Macintosh, a następnie został przekształcony w wersję mikrokontrolera dla wielu wbudowanych aplikacji elektronicznych przez lata.

Musisz przyjrzeć się roli mikrokontrolera, aby zrozumieć, w jaki sposób jest on używany. Zwykle, kiedy projektujesz za pomocą mikrokontrolera, masz na myśli wysoce wyspecjalizowaną aplikację i starasz się zmieścić ją w mniejszej przestrzeni niż, powiedzmy, wieża komputerowa. Podczas gdy komputer ma bardzo ogólny cel: numery crunch i przetwarzanie danych wejściowych użytkownika. Kiedy szukasz mikrokontrolera, szukasz takiego, który będzie obsługiwał rodzaj interfejsu, który budujesz dla swojej aplikacji. Czy potrzebujesz 3 portów USB, 2 portów Ethernet, 2 UART, portu SPI, ATM i interfejsu CAN? Niektóre z tych interfejsów nie są dostępne na typowym komputerze, takim jak SPI, ATM i CAN, a mikrokontroler ma je wbudowane w celu zmniejszenia miejsca na płycie. Możesz patrzeć na mikrokontrolery jako procesory zaprojektowane dla konkretnego rozwiązania.

Jay Atkinson
źródło
Nie sądzę, aby jakikolwiek „komputer ogólnego zastosowania” używał czegoś mniejszego niż 8-bitowy procesor. Komputery ogólnego przeznaczenia muszą mieć dostęp do wystarczającej ilości pamięci RAM, aby pomieścić użyteczny program, i nie znam żadnych czterobitowych komputerów, które mają magazyn kodów pamięci RAM o użytecznej wielkości.
supercat
może nie komercyjnie, ale wielu hakerów zrobiło to, w tym mój dziadek. Miał w swoim warsztacie 4-bitowy komputer, zanim Commodore 64 i TRS-80 były popularne. Miał też RAM (stosy DIP).
Jay Atkinson
Czy masz dokumentację na temat fizycznie skonstruowanych 4-bitowych maszyn architektury Von-Neumann?
supercat
5

Zdecydowanie możemy. Na przykład iPad używa procesora ARM Cortex A8 dla swojego mózgu.

pingswept
źródło
2
Jest to mikroprocesor, a nie mikrokontroler, jak zauważa JPC poniżej
Kortuk
3

Warto zauważyć, że wspomniane ARM-y (OMAP i A8) są mikroprocesorami bez pamięci Flash i pamięci RAM (nie do końca prawdziwe dla A8). Mikrokontroler Cortex-M3 jest mniejszy, ma małą wbudowaną pamięć i łatwiejszy dostęp do urządzeń peryferyjnych.

Między nimi jest dość duża różnica (pod względem wydajności i funkcji).

jpc
źródło
+1 za wskazanie różnicy między seriami Cortex-A i Cortex-M ...
Johan
1
mikrokontroler ma wbudowaną pamięć flash i ram. Mikroprocesory mają swoją pamięć zewnętrznie.
Kortuk
2

Nie próbuję wskrzesić starego wątku, ale mój Zaurus SL5500 działał na wbudowanym systemie Linux na procesorze ARM z dużą ilością pamięci RAM i kolejnymi dużymi ilościami pamięci za pośrednictwem gniazd CF i SD. O ile mi wiadomo, MMU zostało zaimplementowane głównie w oprogramowaniu (co zresztą ma sens w systemie Linux). Obliczenia ogólnego przeznaczenia były nie tylko możliwe, ale także w pełni dostępne za pośrednictwem oprogramowania, kompilatorów i elastycznej powłoki poleceń zapewniającej większość standardowych narzędzi i funkcji * nix.

Nie był to najszybszy komputer GP na świecie, ale z pewnością sprawił, że ARM (i / lub odpowiedniki Samsunga - nie jestem w 100 procentach pewien, które zawierał) wyglądał niesamowicie zdolnie. Pod względem funkcji i wydajności jest całkiem ładnie porównywany z WinMobile Ipaq o znacznie nowszym rocznika (wyraźny klon Samsung StrongArm). Obie maszyny miały dużo pamięci RAM i dużo pamięci, więc zarządzanie pamięcią trwa - przypuszczam, że musimy nieco zatrzeć granicę między mikroprocesorami a mikrokontrolerami, kiedy osiągniemy ten poziom wydajności.


źródło
2

Wspominasz o „mikroprocesorach” i „mikrokontrolerach”, ale coraz częściej pojawia się trzecia kategoria urządzeń znana jako „SOC” (skrót od „system-on-chip”, co uważam za dość mylące)

Mikrokontrolery mają bardzo małe ilości pamięci RAM i zazwyczaj nie mają mapowania pamięci i bardzo ograniczoną ochronę pamięci. To sprawia, że ​​nie nadają się do użytku jako komputery ogólnego przeznaczenia.

SOC można postrzegać jako środek między konwencjonalnymi mikrokontrolerami, które mają wszystko zintegrowane w jednym układzie, a konwencjonalnymi mikroprocesorami, które wymagały dużych ilości obwodów podtrzymujących. SOC mają rdzeń procesora i urządzenia peryferyjne zintegrowane w jednym układzie, ale w przeciwieństwie do mikrokontrolerów używają pamięci zewnętrznej. Zazwyczaj te SOC mają pełną MMU, która może stworzyć wirtualną przestrzeń adresową dla różnych aplikacji. Wiele układów SoC ma również specjalne bloki funkcyjne do grafiki 3D, DSP, kodowania / dekodowania wideo itp.

SOC nie są tak wydajne jak nowoczesny komputer stacjonarny, ale w połączeniu z nieskażonym środowiskiem programowym są wystarczająco wydajne i funkcjonalne, aby zaliczyć je do „komputerów ogólnego przeznaczenia”.

Peter Green
źródło