To ja może przeskoczę na razie to jak upchnąłem dość istotny program rozruchowy w 2kB kodu. I przeniosę się miesiąc-dwa dalej. Zostałem wezwany do HQ firmy na coś co na podlaskich wsiach nazywają "tłoką". Czyli ludzie z iluśtam oddziałów zjeżdżają się kończyć projekt pod czujnym okiem Żółtego Pana.
Czyli jednak musiałem coś zjebać, prawda?
Wyglądało na to że tak. Otóż lokalny dział utrzymania jakości stwierdził, że czasem telewizor się nie uruchamia. No bo tym urządzeniem był telewizor.
No jak to czasem? A tak z raz na 50-100 razy.
Chryste, trzymajcie mnie.
Wiedziałem, że nieprędko opuszczę tamten (umiarkowanie) piękny kraj. Kto śledzi moje wpisy zorientuje się jaki.
Dali mi listwę z prztyczkiem i rzeczywiście. Czasem nie startuje. Świeci się diodka, na chipie jest napięcie.
Co pokazuje debuger z jtaga? No coś zadziałało, a potem wyjątek. Najczęściej nielegalna instrukcją. Coś jakby program leciał w krzaki. Mój program. Gdzieś w tych 2kB. Za każdym razem w innym miejscu.
Dotarcie do tego wniosku zajęło pewnie tydzień po 14h dziennie. Głównie dlatego że trudno było to wywołać.
Znalazłem za to płytę, która nie startowała raz na 10 razy. Elegancko.
Po wielokrotnej lekturze instrukcji do flasha i soca coś mi zaświtało. Może Flash nie zdąży załadować mojego programu do "okienka" NAND, a SoC już zaczyna wykonywać kod?
Oczywiście złożyłem wizytę panom od HW, którzy wreszcie poznali swojego nemezis z nic nieznaczącego dalekiego kraju. Nie chcieli mi dać oscyloskopu. W końcu dali mi to - najlepszy oscyloskop na świecie - Yokogawa DL1740. Z drukarką termiczną! Drukującą przebiegi jak jakieś EKG. I całe szczęście, bo rzeczywiście flash startował zaraz po chipie i tylko wewnętrzna inicjalizacja SoCa powodowała wystarczające opóźnienie, żeby w ogóle coś ruszyło. Wszystkie układy na płytce miały tę samą linię resetu, tożsamą z zasilaniem. VCC zwalniało reset wszędzie.
Ale te krótkie siusiaczki nie chciały nawet wyjść do mnie z kanciapy. Tylko w kółko, żebym dodał jakiś sleep czy coś. No dałem, na samym początku. I tak płyta zamiast umierać raz na 10 razy umierała raz na 50. Całe szczęście oscyloskop miał tę drukarkę bo mogłem do nich chodzić i rysować na wykresie napięcia zasilania.
Na szczęście bali się mojego szefa z UK. Nie wiem czy chodziło o szacunek dla stanowiska czy o to że wyglądał jak Shrek, zresztą tak o nim mówili.
Obiecali że poprawią.
Rano moja płyta była jakaś inna. Pobrudzona, ktoś ją ruszał, a ja wychodziłem po 22. Ninja jakiś?
Odwróciłem ją w powietrzu do góry nogami i odpadły 3 kondensatory. Takie SMD, plastikowe, nie przewlekane.
Płyta ponownie wróciła po obiedzie. No, było lepiej, choć dalej losowo zdychała. Wincyj kondensatorów przy linii zasilania, czyli gładsze i wolniejsze narastanie, ale nadal loteria. No to jeszcze raz pokombinują. Tymczasem ja im mówię i objaśniam, że przecież są układy opóźniające reset, można sobie dobrać opóźnienie, wlutować i jazda.
Następny dzień i działa! Wreszcie.
Wyłączyłem TV z pilota, wracam po obiedzie, oglądam czy znowu mi czegoś nie podrzucili, a ten flash jakiś taki ciepły.
Przylutowali zasilanie flasha do zasilania standby. Pstrykając listwą zasilającą a nie pilotem byłem w stanie dokładnie tak samo popsuć jak przedtem.
Ktoś gdzieś się wkurwił, panowie od HW zamułki, gdzieś zniknęli a Shrek wyprawił mnie samolotem do domu.
Ale miałem jeszcze wrócić.

