Pine A64 -- Tryb FEL

Programowanie, Dostęp do GPIO, Systemy, Modyfikacje
Wszystko o Pine64
ODPOWIEDZ
Awatar użytkownika
SunRiver
Administrator
Posty: 361
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

Pine A64 -- Tryb FEL

Post autor: SunRiver » 10 lut 2018, 12:35

Pine A64 oparto o ciekawy układ SoC Allwiner A64 ... Dlaczego to jest on taki ciekawy ??
Miałem trochę czasu by go dogłębnie poznać od każdej strony jak też i stabilnośc urządzenia.

Obrazek

Jedną z ciekawostek jest sekwencja rozruchowa dla układów SoC AllWinner , która w tym 64bitowym
potworku pracuje i wykonuje początkowo kod 32bitowy. Ładowanie rozpoczyna wykonanie kodu BROM,
który jest osadzony w pamięci pod adresem 0x0000 i w zasadzie jest kodem ARM32 :)

Pełny BROM znajdziemy pod adresem 0x2c00 i ma długość 32KB.

Wejście do trybu FEL ogranicza się do uruchomienia płytki bez karty SD, dzieje się tak dlatego że kod nie wykrywa warunku FEL , to ładuje 32KB kodu z 16 sektora (8KB) z karty SD do pamięci SRAM i go wykonuje. Warto wiedzieć że pierwsze instrukcje tego kodu muszą być kodem 32bitowym ARM.

Obrazek

Takim więc trafem oprogramowanie układowe jest 32bitowe , U-Boot również jest 32bitowym programem ładowanym z karty SD z sektora 38192, ładowana jest też hackowana wersja ARM Trusted Firmware(ATM) do pamięci DRAM i kod zarządzania dla rdzenia ARISC do pamięci SRAM. Wykonany zostaje zapis RMR, i przywrócenie działania SoC w trybie AArch64 co skutkuje przeskoczeniem do punktu wejścia ATF, który jest umieszczony w rejestrze RVBAR. I teraz zostanie wykonana dziwaczna procedura co wygląda tak:

ATF zainicjuje rdzeń rozruchowy i wykona niezabezpieczoną sekwencję przejścia do niezabezpieczonego AArch32 EL1 i uruchomi U-Boot. Ten sobie działa w 32bitach. A dosłownie przed samym uruchomieniem jądra uzywa niestandardowego wywołania usługi smc z powrotem do "zaufanej" weesji ATF i przekazuje punkt wejścia jądra . ATF jest upartym kodem wiec wraca do niezabezpieczonego EL1_AArch64_ tyle że tym razem użyje dostarczonego punkt wejścia jądra , a nie
jak się spodziewaliśmy wróci do U_Boot..

Dlaczego o tym pisałem ?? ano zrozumienie i wiedza co w jakiej kolejności jest wykonywane pozwoli nam lepiej wykorzystać tryb ...

..>> FEL

Tryb FEL jest bardzo przydatny w takim wypadku gdy chcemy nieco zamieszać w rdzeniach, zmienić oprogramowanie układowe i wiele innych .

jak wspomniałem PineA64 przechodzi do trybu FEL jak nie wykryje na starcie karty SD .
Jakie wspaniałe i proste .. taaaa ale się nie dostaniemy do niego ...

Dlaczego ??

Dlatego że jedyne złącze wejściowe μUSB jest tylko gniazdem zasilania na naszej płytce Pine:) co za ironia ... nie jest podłączone do żadnego kontrolera USB w SoC Allwinnera. czyli de'facto mamy pozamiatane co nam z trybu FEL skoro się nie można do niego dobrać ...
a potrzebujemy OTG by tego dokonać , które jak widać na schemacie blokowym:

Obrazek

jak najbardziej dostępne i powinno być podłączone do SoC zatem do schematów PineA64 ....

Obrazek

o jak miło okazuje się że OTG jest podpięte do górnego złącza USB na płytce :)

Obrazek

hmm .... no tak ... super , ale jak się mamy podłączyć ??
no cóż potrzebny nam będzie przewód specyficzny USB A <> USB A\
czyli popularny USB DATA CABLE :)

Obrazek

Po takim podłączeniu powinno się dać znaleźć nowe urządzenie USB :

Bus 001 Device 065: ID 1f3a:efe8

wymagające sterowników niskiego poziomu. Zaś w oprogramowaniu terminalowym , jak TeraTERM czy SunDEBUNAL powinniśmy zobaczyć :

Obrazek

Do czego nam się to przyda ?? Powiemy później ...
Tymczasem warto zapoznać się z materałami grupy SunXI ...
 ! Wiadomość z: SunDUINO Info

Materiał powstał na podstawie Informacji zawartych na stronie Linuxowej Grupy SunXi , Dokumentacji układu SoC AllWinner A64 ,
Schematów Płytki PineA64 / A64+ oraz własnych doświadczeń i przemyśleń wraz z dostosowaniem do działania w środowisku windows
niektórych programów. Grzebanie w pamięci BROM oraz mieszanie sekwencjami startowymi przez osoby nieogarnięte w temacie ,
jak też śpecjalistów samozwańców może skończyć się uszkodzeniem układu SoC i tym samym płytki PIneA64.

Informacje tu zawarte mają charakter poglądowy i informacyjny mogą być przydatne we wtórnym wykorzystaniu starszych
urządzeń PDA zawierających układy AllWinner i Lub Procesory SnapDRAGON ...
.... z każdym bitem serca ....
💫SunDUINO
💦Google+
💦Kanał Youtube
💦Sotton

ODPOWIEDZ

Wróć do „Pine64”