Archiwa tagu: samsung-s6500d

Smartfony #2: Działający telefon? A komu to potrzebne?

samsung-s6500d:

Ten telefon ma „działający” port systemu pmos, o ile za działający uznać telefon, który restartuje się zawsze po 2 minutach. Chciałem jednak spróbować wgrać na niego najnowszy kernel Linuxa, gdzie pojawia się problem.

Przed powstaniem kernela, który używa dosyć prostych w edycji i utrzymaniu plików dtb wszystkie informacje o telefonie, SoC i innych komponentach były bezpośrednio wkomponowane w pliki źródłowe kernela, co utrudnia edycję oraz aktualizację do nowego kernela. Musiałbym więc napisać od zera plik dtb opierając się na plikach źródłowych starej wersji kernela dostępnej dla tego urządzenia. Jako że miło jest widzieć co się robi, potrzebuję jakiegoś rodzaju wyjścia, żeby wiedzieć co się dzieje w środku telefonu. Niestety, pisząc plik dtb od zera muszę się pogodzić z tym, że nie będzie działać dźwięk, wyświetlacz, USB i w zasadzie nic co mogłoby mi pomóc :/. Jest jednak jedna rzecz, która powinna działać zawsze: UART(patrz słowniczek), czyli stary dobry tryb tekstowy.

Tutaj pojawia się problem, a w zasadzie kilka problemów. Pierwszy problem to gdzie znajduje się fizycznie w urządzeniu port UART, co na szczęście w Samsungach nie powinno stanowić dużego problemu. Wtyczka micro-USB posiada 5 pinów, w przeciwieństwie do czterech w standardowej wtyczce USB w komputerze. Podłączając różne oporniki pomiędzy uziemienie i pin ID (to ten dodatkowy) telefon zmienia działanie portu USB.

Gdy piny te są niepodłączone port USB działa w swoim normalnym trybie, umożliwiając podłączenia do komputera; 300kΩ — telefon wchodzi do trybu download/fastboot, a na niektórych urządzeniach znika żółty trójkąt ostrzegający o nieoficjalnym oprogramowaniu (niestety nie tutaj).

Jednak tryb UART sprawił mi pewien kłopot, ponieważ istnieje kilka trybów o podobnych nazwach, ale tylko kilka z nich będzie spełniać mój cel. Zbudowałem więc małe pudełko żeby móc przetestować wszystkie popularne wartości oporników, co powinno mocno ułatwić tę część zadania.

Drugi problem jest taki, co jest potrzebne w samym pliku dtb żeby uruchomić port UART lub wypisać jakikolwiek tekst na wyjście szeregowe, co pozostaje na razie zagadką którą będę chyba musiał rozwiązać eksperymentalnie. Na razie myślę nad kilkoma rozwiązaniami: pierwsze to użyć „earlycon”, który, w teorii, wymaga tylko podania adresu gdzie jest UART i nadziei, że wszystko stanie się automatycznie; druga opcja natomiast wymaga zdefiniowania gdzie jest port UART, jakie ma parametry, z czego korzysta itp, a to wiąże się z przeczesywaniem plików starego kernela w poszukiwaniu odpowiedzi.

 

posłowie:

Nieco się rozpisałem w tym wpisie, jeżeli chodzi o telefony to pewnie skupię się na Samsungu, natomiast kolejna część cyklu będzie musiała nieco zaczekać gdyż mam kilka ważniejszych spraw na oku, w niedalekiej przyszłości jest możliwość pojawienia się krótkiego wpisu o VR z wykorzystaniem Google Cardboard 🙂

słowniczek:

SoC – serce twojego smatfona, jeden chip zawierający w sobie procesor, kartę graficzną, modem(to co odpowiada za połączenie z siecią komórkową) i kilka innych rzeczy

DTS to skompilowany plik DTB, czyli Device tree, pliku zawierającego informację o wszystkich podzespołach urządzenia, takich jak procesor, pamięć, wyświetlacz itd., co pozwala zamiast kompilować osobny kernel dostosowany do jednego urządzenia zrobić jeden ogólniejszy, który to podczas startu odczyta jakie sprzęty są dostępne i je uruchomi.

UART (znane również jako połączenie szeregowe, rs232, port COM)— bardzo prosty sposób komunikacji, bardzo niskie wymagania odnośnie wymaganej pracy zanim zacznie działać