Telefon komórkowy jako mikrokontroler

19

Mam kilka telefonów komórkowych, z których jeden to ten: http://www.gsmarena.com/sony_ericsson_elm-3057.php


Możliwe jest wyczyszczenie pamięci flash i zastąpienie jej programem ładującym, a następnie przesłanie szkiców arduino lub szkice pic32 (C # / C ++).

Wpadłem na ten pomysł, ponieważ jest to bardzo tania platforma do opracowywania projektów sprzętowych. (Dostajesz ekran, przyciski, wejścia / wyjścia audio, internet itp., Dostajesz wszystko za bardzo niską cenę w porównaniu do tego, co dostajesz, kupując każdą część osobno.)

Czy można usunąć pamięć flash i zainstalować moduł ładujący w telefonie, aby używać go jako komputera wbudowanego?

Harry Svensson
źródło
3
Dlaczego głosowanie w dół, to doskonałe pytanie.
Rocketmagnet
To naprawdę musi zostać oczyszczone. (Nie oddałem głosu, ale iIMade oczekującą edycję, która naprawdę
wyjaśnia
Być może interesuje Cię projekt Rockbox, który robi coś podobnego z odtwarzaczami mp3. Zaangażowani w to ludzie mogą powiedzieć, jak trudno jest uzyskać informacje o zastrzeżonym sprzęcie.
Jeanne Pindar
@CyberMen Nie jestem pewien, co masz na myśli przez „Jak sformatować pamięć flash w telefonie i zainstalować”
varesa
@varesa nie pytaj mnie, pytaj OP. Wykorzystaj swoje umiejętności dedukcyjne w języku angielskim.
CyberMen

Odpowiedzi:

1

Koszt nigdy nie stanowi problemu. Wielu entuzjastów będzie skłonnych zapłacić umiarkowaną cenę za łatwo hakujące urządzenia z wyższej półki. Problem polega na tym, że ARM to zamknięta platforma. Zwykle na silikonie SoC (system na chipie) jest część o nazwie prywatna pamięć ROM. Blokuje ponowne użycie.

Ta część ROM jest odpowiedzialna za wybranie bootloadera w określonej kolejności: Z-Modem na szeregowy, zewnętrzny Nand, szeregowy ROM, SDCard, zewnętrzny USB. Dla każdego urządzenia zamówienie jest indywidualne i słabo udokumentowane, zwykle należy przytrzymać kilka przycisków podczas włączania do alternatywnego modułu ładującego. Obraz bootloadera, jeśli przez większość czasu sprawdzany jest podpis cyfrowy właściciela platformy. Więc nie ma szczęścia.

W przypadku jednorazowego projektu można wybrać losowe urządzenie. Ale być może bardziej zainteresuje Cię dobrze znane urządzenie, z opublikowanymi schematami i dostępnym kodem źródłowym dla systemu Linux, Android itp.

Więc proponuję spojrzeć na urządzenia otoczone przez aktywne społeczności użytkowników : Raspberry Pi, BeagleBone, BeagleBoard, niektóre platformy testowe Samsung (PandaBoard?)

Moje osobiste doświadczenia z TI AM35XX zakończyły się rozczarowaniem złożonością wszystkiego. Najmniejszy Linux na świecie o nazwie Angstrom ma obraz dystrybucji 3 GB. Dokumenty dotyczące żetonów to 4000-5000 stron. Nie przypominało to hobby i nie było przyjemne.

Sytuacja może się zmienić, gdy Intel Atom SoC stanie się popularny. Spodziewam się ogromnego zainteresowania użytkowników i podążę za tłumem w kierunku najmniejszego możliwego Atomu z ekranem. Mam nadzieję, że ktoś ukończy element do montażu panelowego o rozmiarze karty kredytowej i GPIO. Będzie fajnie.


źródło
2
W rzeczywistości TI AM35XX jest niesamowity - najmniejszy Linux na tej platformie mieści się poniżej 3 MB. Ja osobiście używam tych (i AM33XX) do wielu rzeczy, kiedy przejdziesz przez kłopot z kompilacją, masz dobrze obsługiwany, dobrze udokumentowany sprzęt. Tak, jest to skomplikowane, a TRM (5000 stron) to ogromna cegła, ale ma ona charakter dokumentu referencyjnego, a nie kołysanki (możesz też jako taki służyć)
qdot
+1. Tak Zgadzam się, że TI ARM jest prawdopodobnie najlepszy, jaki można znaleźć. Miałem na myśli tylko moje osobiste doświadczenie jako hobbysty. Gdyby moim zadaniem było zmaganie się z ARM w zespole, byłoby znacznie więcej zabawy.
Cóż, zmagałbym się z obezwładnioną maszyną, niż ogólnie słabą maszyną. Oczywiście nie jest to Arduino, ale jest to Linux, kiedy już uruchomisz jądro, nie różni się niczym od żadnej innej platformy crossdev. Zbuduj trochę przestrzeni użytkownika (lub
stwórz
5

Przed laty istniał projekt zrobienia czegoś podobnego (inżynieria wsteczna taniej i bardzo popularnej rodziny telefonów).

http://nokix.pasjagsm.pl/help/blacksphere/sub_050main.htm

I tak, opcja Androida jest prawdopodobnie najłatwiejsza .. lub Windows Mobile, jest również dość otwarta.

qdot
źródło
Chwila, czy niskopoziomowe rzeczy na WP też są otwarte?
varesa
WP czy WM? Windows Phone, tj. Wersja 7 i wyższa, jest czymś, z czym mam ograniczone doświadczenie, ale myślę, że nadal może on uruchamiać natywne pliki binarne C. Wersja 6, która stanowi większość starych, ale niezwykle wydajnych telefonów PDA, jest bardzo otwarta - obsługuje natywny kod C, można go skompilować z MSVC i GCC, nie ma prawie żadnych zabezpieczeń. Dosłownie można uruchomić bootloader jako zwykła aplikacja i przeskakuje do jądra Linuksa :)
qdot
Próbowałem tego bardzo wiele lat temu na moim HTC Touch Pro i mogę ręczyć, że tak, możesz wskoczyć do jądra Linux (lub niestandardowej wersji Androida). Nie oznacza to, że rozmowa z całym sprzętem jest równie łatwa lub wykonalna. (niestety, ponieważ nienawidziłem WM6 z pasją, ale nie było sposobu, abym mógł zachować ten sam poziom funkcjonalności z innym systemem operacyjnym)
Alexios
qdot, dlaczego nie powiesz nam więcej o podejściu od zakupu telefonu z systemem Windows 6/7 ze sklepu do uruchomienia własnego kodu kontrolującego, powiedzmy 5 serwomechanizmów przez port szeregowy.
Harry Svensson,
1
@qdot możesz przekazać niektóre z tych informacji, aby link był tylko odnośnikiem, teraz jest podatny na zgniliznę linków.
Kortuk
3

Nie mam na to doświadczenia, ale nie sądzę, że byłoby to łatwe (jeśli w ogóle możliwe). Myślę, że można zapomnieć o programowaniu w C ++ lub C #, a raczej w ASM + C. Nie byłby kompatybilny ze szkicami arduino, kodem PIC32 ani czymkolwiek innym, co nie jest przeznaczone dla konkretnego procesora. Wiele nowych telefonów ma coś w rodzaju rdzenia ARM.

Naprawdę nie wiem, jak zaprogramowałbyś urządzenie, ale zakładam, że jest to możliwe, ponieważ zazwyczaj mogą zaktualizować oprogramowanie, jeśli wyślesz je do serwisu.

Będziesz także musiał kodować własne sterowniki dla całego sprzętu (wyświetlacza, sieci WLAN, czujników itp.), Co byłoby naprawdę trudne bez dodatkowych informacji na temat sprzętu, którego producent telefonu prawdopodobnie nie wyda .

Myślę, że najłatwiejszym sposobem byłby stary telefon z Androidem, ponieważ możesz pobrać kod źródłowy ze sterownikami i wszystkimi rzeczami niskiego poziomu za darmo. Możesz zgrać lub użyć interfejsu użytkownika i innych komponentów widocznych dla użytkownika. Ale prawdopodobnie nie jest to, czego chcesz, chyba że masz jakieś stare telefony z Androidem.

Ponadto, jeśli telefon został „zhakowany” w celu uruchomienia dowolnego innego systemu operacyjnego, zwłaszcza takiego jak Android, możesz być w stanie uzyskać źródła dla portu do grania.

Varesa
źródło
Czy nie byłoby możliwe odczytanie wszystkiego z pamięci flash i odczytanie / zmodyfikowanie pamięci flash?
Harry Svensson,
@HarrySvensson Cóż, musiałbyś albo bezpośrednio zmodyfikować pamięć, albo użyć jakiegoś portu programistycznego / nagłówka, który może być tam do aktualizacji oprogramowania. Możliwe, ale niełatwe.
varesa
2
Dlaczego losowe głosowanie w dół?
varesa
@HarrySvensson, zakładając, że masz narzędzia do zrzucenia całej pamięci flash (może istnieć kilka układów flash przeznaczonych do przechowywania różnych rzeczy, takich jak bezpieczne programy ładujące, a co nie, niektóre mogą wymagać zastrzeżonych narzędzi), czy byłbyś wygodny w dekodowaniu wszystkich z tego ręcznie? Nie oczekuj, że wszystko będzie w ładnym formacie systemu plików, który możesz po prostu zamontować na komputerze jak pamięć USB. Możesz zobaczyć wiele zastrzeżonych i nierozpoznawalnych rzeczy lub po prostu przeciągnij surowy kod asemblera, gdzie może być jakiś kod programu.
Jon L
2

Robienie wszystkiego samemu będzie w najlepszym wypadku trudne. Będziesz miał dużo łatwiejszy czas z jednym z urządzeń obsługiwanych przez projekt Rockbox , który jest oprogramowaniem układowym typu open source dla odtwarzaczy mp3. Niektóre z tych urządzeń są niedrogie i oferują wiele zalet, o których wspomniałeś, i mają na celu aktualizację oprogramowania układowego przez USB. Będziesz miał pomoc aktywnej społeczności, która już nauczyła się podstawowych problemów dotyczących kompilatorów, programów ładujących itp., A także kodu źródłowego na początek.

Przyjemną cechą Rockboksa jest to, że konfiguruje urządzenia do podwójnego rozruchu, dzięki czemu można ich nadal używać zgodnie z ich pierwotnym przeznaczeniem, gdy nie używasz nowego oprogramowania układowego.

Jeanne Pindar
źródło
0

Nie.

Dokumentacja publiczna tego telefonu (na przykład na stronie, do której prowadzi łącze) nie podaje nawet typu procesora. Nawet gdyby tak było, potrzebujesz schematu (w tym numerów części wszystkich układów scalonych), aby móc napisać dla niego kod. Byłoby to zastrzeżone dla Sony / Ericsson, więc nie dostaniesz tego). To samo dla każdego innego telefonu komórkowego.

W mało prawdopodobnym przypadku, gdy masz całą dokumentację dotyczącą procesora, pamięci flash itp., Może być możliwe napisanie bootloadera kompatybilnego z Arduino po spędzeniu kilku tygodni czasu. Oczywiście wymagałoby to stworzenia środowiska programistycznego dla telefonu, które prawdopodobnie kosztowałoby setki, jeśli nie tysiące dolarów.

Nawet jeśli były w stanie napisać bootloader Arduino kompatybilne, to byłoby niemożliwe powtórzyć niemożliwe , aby przesłać i uruchomić Arduino szkice, ponieważ 1) kompilator dla Arduino będzie emitujących kod dla mikrokontrolera Arduino kompatybilnym (ATmega, PIC32 itd.) , a telefon na pewno nie będzie z nich korzystać - najprawdopodobniej będzie to jakiś wariant ARM); oraz 2) porty I / O nie będą znajdować się w tych samych miejscach (portach) w telefonie komórkowym, jak w Arduino.

Zauważ, że istnieją telefony komórkowe typu open source , ale nie będziesz mógł uruchamiać oprogramowania Arduino na tych samych urządzeniach, które wymieniłem powyżej (niezgodność procesora i sprzętu). Niektóre inne odpowiedzi sugerują Androida, ale zauważ, że nie ma go na liście telefonów open source z powodu zastrzeżonych sterowników. I znowu pytanie brzmiało: czy można na nich uruchomić kod Arduino, a odpowiedź zdecydowanie nie.

Więc jest to sposób tańszy tylko zacisnąć zęby i uzyskać Arduino pokładzie oraz urządzeń peryferyjnych.

tcrosley
źródło
0

Co trzeba zrobić, by zmienić „codzienny” sprzęt w platformy mikrokontrolerów? Mody Sprite są doskonałym źródłem inspiracji. Daje dobre wyjaśnienie procesu potrzebnego do „otwarcia” urządzeń i przejęcia nad nimi kontroli. TL; DR: Linux można uruchomić na karcie SD i na dysku twardym. Nie, nie używając dysku twardego. Na dysku twardym - na dość mocnym procesorze, który jest kontrolerem napędu.

Przywróć Monikę
źródło
Router Linksys WRT54G był popularnym urządzeniem hack, ponieważ używane oprogramowanie open-source, więc Linksys został zobowiązany do uwolnienia kodu źródłowego. Skończyło się na konfigurowalnej platformie z systemem Linux, z wbudowanymi portami Ethernet i Wi-Fi.
tcrosley