Dzień dobry.
Uboot dla procesorów ALI będzie ciekawym narzędziem do napraw dekoderów, tylko niestety jest problem z komunikacją przez UART.
Kupiłem drugi dekoder żeby sprawdzić, czy to wina ustawień procesora i chyba jednak to nie to. Opiszę testy w punktach, żeby łatwiej było się połapać w problemie.
1. Dekoder Globo N3 wyświetla napisy po uruchomieniu oryginalnego softu i po resecie i podmiana napięci z ubootem bez wyłączania zasilania. Czyli działa jeśli zostają jakieś wpisy w rejestrach.
2. Dekoder Globo czasem napisy z uboota wyświetliły się jeśli przed właczeniem dekodera z ubootem, na klawiaturze komputera trzymałem enter, który wysyłał do dekodera Hyperterminal. Ta metoda działa rzadko i tylko na Globo. Na drugim dekoderze nie udało się ani razu.
3. Dokupiłem dekoder cabletech 195 z tym samym procesorem. NIe ma on klawiszy na panelu dekodera. Na tym dekoderze nie ma testtoola. Odpalenie uboota po resecie nie wyświetla napisów innych niż UP.
4. Sprawdziłem deasemblerem jak działa uboot i wychodzi na to że wyświetla on tylko napis UP, bo jest on wyświetlany komendą 0x2573. czyli %s.
inne komendy 2566, 2578, 2561, które są używane nie wyświetlają.
Obstawiam, że w rejestrach do których są zapisywane adresy danych do wyświetlenia, jest jakiś błąd. Jeśli soft oryginalny coś tam wpisze, to napis się wyświetla, a jak nie to nie.
Napis UP jest wyświetlany trochę inaczej, bo zapis jest do rejestru nr2, nie do 0.
ROM:AFC04FF0 C1 AF 02 3C 40 94 42 24 la $v0, aUp # "UP"
ROM:AFC04FF8 03 00 00 10 b loc_AFC05008 # Branch Always
ROM:AFC04FFC 00 00 00 00 nop
ROM:AFC05000 # ---------------------------------------------------------------------------
ROM:AFC05000
ROM:AFC05000 loc_AFC05000: # CODE XREF: sub_AFC04E0C+1DCj
ROM:AFC05000 C1 AF 02 3C 44 94 42 24 la $v0, aDown # "DOWN"
ROM:AFC05008
ROM:AFC05008 loc_AFC05008: # CODE XREF: sub_AFC04E0C+1ECj
ROM:AFC05008 25 30 40 00 move $a2, $v0 <<<<<<<<<<<<<< Tu przepisanie adresu napisu UP do rejestru 2 i to się wyświetla, a dane z 0 tylko czasami.
ROM:AFC0500C 18 00 C5 8F lw $a1, 0x70+var_58($fp) # Load Word
ROM:AFC05010 C1 AF 02 3C lui $v0, 0xAFC1 # Load Upper Immediate
ROM:AFC05014 4C 94 44 24 addiu $a0, $v0, (aPinDIsNowS - 0xAFC10000) # "Pin %d is now %s!\n\r"
ROM:AFC05018 25 01 F0 0F jal sub_AFC00494 # Jump And Link
ROM:AFC0501C 00 00 00 00 nop
Można spróbować skopiować rejestr który otrzymuje podprogram do wyświatlania napisów gdzieś do RAM i porównać to co się zapisuje bez softu oryginalnego z tym co się zapisze po resecie..
Nie potrafię tego teraz znaleźć. Za mało znam MIPS.
5. Udało mi się uzyskać coś co można nazwać echem po wysłaniu danych.
Jeśli po starcie nic nie dotykam to po kilku minutach naciśnięcie klawisza w górę powoduje wyświetlenie UP.
Jeśli jednak po włączeniu nacisnę i przytrzymam jakiś znak na klawiaturze, około 10-20 sekund. To naciśnięcie klawisza na panelu już nie wyświetli napisu UP, ale "krzaczki w hex".
To zapis z logera binarnego.
FF E0 FF FF
00 00 FF FF FF FF FF
FF FF FF
FF FF FF FF FF FF
E0 FF FF
FF FF FF FF FF FF
C0 FF
FF FF E0
00 FF FF FF 00 00
Ewidentnie wciśnięcie klawisza powoduje odpowiedź, ale już nie wyświetla napisu UP.
Prosiłbym autora tematu o dodanie do uboota odczytu przy starcie rejestru procesora B8000000 wielkość może 0x100. Skoro wyświetlają się stany pinów PIO, to i można dać listę i niech odczyta te 40 pozycji. Adres odczyt można później zmienić hex edytorem i odczytać coś innego, czyli rejestr UART, czy I2c itp. Albo można zapisać dane z rejestrów wyświetlających napisy, do RAM i podmienić uboot na taki, który pokaże ten wynik i jakoś dojść do tego co jest problemem.
Boot oryginalny sprawdza wersję sprzętu właśnie gdzieś pod B80000xx.