Szybkie szukanie |
Przerobienie raspberry pi na programator pamięci BIOS
|
10-09-2020, 14:47
Post: #1
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
Jakiś czas temu nabyłem sobie Raspberry Pi 4B i obudowę Argon One, bo miała ładnie wyprowadzone i opisane piny GPIO/SPI/I2C. Kiedyś kupiłem sobie także programator na USB CH341A z przejściówką SOP16/8-DIP8, do której można podłączyć klips SOIC-8, który to z kolei można podłączyć do kości BIOS'u. Tamten programator na USB działa dobrze, przynajmniej zapisuje i odczytuje to co się wgra na czipa. Teraz chciałem tego RPI przerobić na taki programator (ze starym klipsem), tylko coś tutaj chyba nie działa za bardzo. Tutaj piszą, że do pinów na RPI podłącza się 6 z 8 nóżek czipa. No to tak podłączyłem ale flashrom na RPI ma problem z wykryciem tego czipa. Połączenia zostały sprawdzone, więc jest wszystko podłączone tak jak piszą ale kości nie widać. Bawił się ktoś z was RPI w roli programatora i wie czego tutaj brakuje żeby to działało jak trza?
|
|||
10-09-2020, 16:19
Post: #2
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
Zajrzyj tam, wprawdzie opis nie dotyczy flashowania w trybie SPI, ale jest to zadanie wykonalne
http://forum.jdtech.pl/Watek-home-assist...3#pid48483 Generalnie flashowanie SPI wymaga dokładnie 6 pinów (zegar, chip select, MOSI, MISO, masa oraz zasilanie pamięci flash) fajny opis jest np. tam https://hackaday.io/project/7758-spi-flasher ba nawet jest projekt płytki z konwerterem poziomów umożliwiającego flashowanie pamięci wymagających napięć 1,8V, 3,3V lub 5V (a przy zasilaniu zewnętrznym też innych) https://github.com/hexeguitar/FLASH-Pi Statystyki Folding@home |
|||
10-09-2020, 17:04
Post: #3
|
|||
|
|||
RE: Przerobienie raspberry pi na programator pamięci BIOS
Chyba źle to opisałem.
Tu jest fotka jak to teraz wygląda: Zatem, czip jest w klipsie, wtyczka klipsa jest połączona przewodami do pinów RPI, bo wtyczka była zła... Jak widać 6 przewodów idzie do RPI, a 2 są nieużywane. Połączone jest niby tak jak piszą na necie. Czemu nie chce wykryć tego czipa? SPI na RPI jest włączone, urządzenie w /dev/ jest, flashrom działa ale coś czipa nie widać. |
|||
10-09-2020, 18:23
(Ten post był ostatnio modyfikowany: 10-09-2020 18:26 przez szopen.)
Post: #4
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
Kluczowe pytanie, to czy soft, który używasz do flashowania jest skonfigurowany do użycia tych pinów GPIO, które masz opisane jako MISO/MOSI/CLK i nie wiem pod co podpiąłeś CS (bo tak naprawdę nie ma musu, by używać akurat tych pinów - zwykle można też używać "zwykłych" pinów GPIO)?
Statystyki Folding@home |
|||
10-09-2020, 20:16
(Ten post był ostatnio modyfikowany: 10-09-2020 20:17 przez morfik.)
Post: #5
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
A jak mam to sprawdzić?
CS jest podpięte pod CE1, bo tak pisali. |
|||
10-09-2020, 23:37
Post: #6
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
morfik napisał(a):A jak mam to sprawdzić?przejrzeć pliki konfiguracyjne? defaultowo interfejs SPI w RPi jest zrealizowany na pinach 19=GPIO10=MOSI 21=GPIO09=MISO 23=GPIO11=CLK a CS na 26=GPIO07=CE1 lub 24=GPIO08=CE0 i faktycznie takie połączenia proponują w dokumentacji, którą podlinkowałeś Masz "czysty" system bez uruchomionego żadnego oprogramowania które mogłoby chcieć korzystać z portów GPIO 7-11? Moim zdaniem jednak problem może leżeć w kontakcie kości z klipem - próbowałeś użyć swojego dotychczasowego programatora bez odpinania programowanej pamięci od klipu? I jeszcze jedno (tak mi to przez myśl przemknęło, ale nie doczytałem wszystkiego do końca) "Note: The raspberry pi 3.3V rail is not sufficient to power the board during flashing, so external power supply might be required." nie wiem czy to dotyczy także RPi4 (bo opis, który podlinkowałeś pochodzi z "jedynki", a ona miała naprawdę biedny obwód zasilania), ale najlepiej byłby zmierzyć napięcie 3,3V czy nie spada drastycznie (sam mam zasilacz laboratoryjny, więc podanie zasilania o dowolnym napięciu nie stanowi nigdy problemu). PS tylko jeśli dobrze rozumiem, masz układ nie wlutowany w PCB? Statystyki Folding@home |
|||
11-09-2020, 09:55
Post: #7
|
|||
|
|||
RE: Przerobienie raspberry pi na programator pamięci BIOS
(10-09-2020 23:37)szopen napisał(a): Masz "czysty" system bez uruchomionego żadnego oprogramowania które mogłoby chcieć korzystać z portów GPIO 7-11? No czysty z włączonym SPI w konfiguracji RPI + wgrany flashrom. (10-09-2020 23:37)szopen napisał(a): Moim zdaniem jednak problem może leżeć w kontakcie kości z klipem - próbowałeś użyć swojego dotychczasowego programatora bez odpinania programowanej pamięci od klipu? No na tym programatorze USB bez problemu działa ale na 8 kabelkach. Jak odłączę te dwa co nie są podłączane do RPI, to system przestaje widzieć czipa. Może jednak te dwa pozostałe kable też trza gdzieś podłączyć? Kości z klipsa nie ruszam, więc ona nie zmienia położenia, jedynie przepinam kabelki, więc jakby coś nie stykało to by było widać i tu i tu. (10-09-2020 23:37)szopen napisał(a): "Note: The raspberry pi 3.3V rail is not sufficient to power the board during flashing, so external power supply might be required." Z tego co wyczytałem to te starsze RPI tak miały, że trzeba było zewnętrzne zasilanie. Od 3 już nie trzeba. (10-09-2020 23:37)szopen napisał(a):Chodzi o ten czip BIOS? No tak, nie jest wlutowany. |
|||
11-09-2020, 15:15
(Ten post był ostatnio modyfikowany: 11-09-2020 17:28 przez szopen.)
Post: #8
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
morfik napisał(a):No na tym programatorze USB bez problemu działa ale na 8 kabelkach. Jak odłączę te dwa co nie są podłączane do RPI, to system przestaje widzieć czipa. Może jednak te dwa pozostałe kable też trza gdzieś podłączyć? Kości z klipsa nie ruszam, więc ona nie zmienia położenia, jedynie przepinam kabelki, więc jakby coś nie stykało to by było widać i tu i tu o taką diagnostykę chodziło - to potwierdza, że po stronie klipsa połączenie jest OK musiałbym przebrnąć przez dokumentację tych kości, co to za 2 dodatkowe sygnały (ale jak znam życie jakie by nie były zapewne wystarczy je podciągnąć przez rezystor do masy lub zasilania) Używam interfejsu SPI do innych zastosowań niż programowanie flash i te 6 sygnałów wystarcza Statystyki Folding@home |
|||
11-09-2020, 15:52
(Ten post był ostatnio modyfikowany: 11-09-2020 15:53 przez morfik.)
Post: #9
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
No w tych tutorialach co na necie spotkałem, to też wszyscy używają 6 przewodów, więc ciekawe czemu im działa a mi nie chce.
Jeszcze coś takiego znalazłem: https://www.rototron.info/recover-bricke...pberry-pi/ Może to tak trzeba by podłączyć? |
|||
11-09-2020, 16:28
Post: #10
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
to jest właśnie to o czym mówiłem - podciągnięcie "wolnych" pinów do zasilania teoretycznie patrząc często układy mają wewnętrzne pull-up'y (szczególnie gdy np. zapis do nich jest czynnością domyślną np. wyświetlacze), ale zapewne akurat pamięci które używasz nie mają - dlatego trzeba czytać dokumentację, Write Protect raczej wewnętrznie domyślnie jest podciągnięty tak by przypadkowy zapis nie był możliwy Statystyki Folding@home |
|||
11-09-2020, 17:27
(Ten post był ostatnio modyfikowany: 11-09-2020 18:05 przez morfik.)
Post: #11
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
W tym artykule gościu ma dokładnie ten sam układ (ten sam laptop), choć wlutowany w płytę, ten sam klips, i chyba też te same kable. No i jak widać używa 6 połączeń. Więc to jest trochę dziwne, że coś mi nie działa.
Ciekawa obserwacja jeszcze. Jak odłączyłem te 2 kabelki przy adapterze USB, to chyba trochę system wariuje. Przez większość czasu nie wykrywa żadnego czipa ale jak się dość szybko wydaje polecenie flashrom, to można zauważyć takie komunikaty: Kod: root@raspberrypi:/home/pi# flashrom --programmer ch341a_spi Kod: root@raspberrypi:/home/pi# flashrom --programmer ch341a_spi Kod: root@raspberrypi:/home/pi# flashrom --programmer ch341a_spi Kod: root@raspberrypi:/home/pi# flashrom --programmer ch341a_spi Nawet idzie taki czip odczytać ale sumy kontrole za każdym razem są inne: Kod: root@raspberrypi:/home/pi# sha1sum backup* Więc raczej te dwa dodatkowe kabelki trzeba będzie podpiąć. A czy gdyby ten czip był na płycie to można by skorzystać z 6 kabli czy to nie ma znaczenia? |
|||
11-09-2020, 18:47
Post: #12
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
morfik napisał(a):A czy gdyby ten czip był na płycie to można by skorzystać z 6 kabli czy to nie ma znaczenia?Nie mam bladego pojęcia - trzeba znać schemat płyty głównej (ale logika nakazuje by te wejścia były podciągnięte do zasilania na PCB). Moim zdaniem musisz szukać dalej - może można ustawić bitrate? Skoro odczyt jest z błędami to i zapis będzie z błędami (no chyba, że masz problem jedynie z linią MISO). Jesteś pewien, że UART w RPi"1" i RPI4 jest taki sam? Statystyki Folding@home |
|||
11-09-2020, 19:06
Post: #13
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
Te testy wyżej były robione na adapterze USB podłączonym 6 kabelkami. Na RPI mi chyba w ogóle nie widzi tego czipa, nawet błędnie, albo za wolno wydaje polecenia i nie mogę trafić z moment, w którym go wykrywa.
Bitrate? Chodzi o spispeed? Jeśli tak to próbowałem to ustawić od 100 do 20K, bez rezultatu. Cytat:Jesteś pewien, że UART w RPi"1" i RPI4 jest taki sam?Czego jestem pewien? |
|||
11-09-2020, 20:10
Post: #14
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
morfik napisał(a):Czego jestem pewien?niczego przeczytałem tam coś czego nie napisałeś, a raczej nie przeczytałem kluczowej linijki UART masz przecież w adapterze, a ja się zastanawiałem z jakiej paki ten soft wykrywa CH340G morfik napisał(a):Te testy wyżej były robione na adapterze USB podłączonym 6 kabelkami. najprawdopodobniej błędy które obserwujesz to skutek stanów nieustalonych na wejściu Hold powinieneś mieć zarówno Hold# jak i WP# mieć podciągnięte do zasilania, by uniknąć takich stanów natomiast to w niczym nie zmienia kwestii dlaczego używając SPI@GPIO nie jesteś w stanie nic zrobić może trzeba się cofnąć do samych podstaw? włączyłeś w ogóle tryb master SPI? w /boot/config.txt Kod: dtparam=spi=on https://www.raspberrypi.org/documentatio.../README.md Statystyki Folding@home |
|||
11-09-2020, 20:34
(Ten post był ostatnio modyfikowany: 11-09-2020 20:42 przez morfik.)
Post: #15
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
Jak jest domyślnie wyłączony, to pewnie mam wyłączony. Jak przestaną ludziska filmy na kodi oglądać, to przełożę karty i sprawdzę.
Wygląda, że jest włączony bo ten dtparam=spi=on jest odkomentowany. |
|||
11-09-2020, 21:31
Post: #16
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
powiedziałbym tak - pomysły mi się skończyły - jeśli nie ma konfliktów na GPIO, SPI jest włączone, a soft w tej wersji, którą masz działa i jest skonfigurowany poprawnie, to nie widzę dziury w całym - to musi działać
Statystyki Folding@home |
|||
12-09-2020, 11:23
(Ten post był ostatnio modyfikowany: 12-09-2020 11:48 przez morfik.)
Post: #17
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
Zapuściłem ten test SPI, tj zwarłem MOSI i MISO i wyszło mi coś takiego:
Kod: pi@raspberrypi:~ $ ./spidev_test -D /dev/spidev0.0 Jest to prawie to samo co tam maja na stronie, za wyjątkiem tego spi mode -- u mnie 4 u nich 0. Ok jest przełom. Zmieniłem CE1 na CE0. Teraz przy 6 przewodach mam dokładnie takie samo zachowanie jak przy adapterze USB (też na 6 przewodach), tj. losowo wykrywa czipa no i każdy obraz przy odczycie ma inną sumę kontrolną. Czyli pozostała jeszcze opcja z tym podłączeniem tych 2 przewodów z rezystorami do zasilania. Założę się, że to zadziała. A to mogą być inne rezystory czy to musi być 1kohm? A co jakby to podłączyć bez rezystorów? |
|||
12-09-2020, 13:51
(Ten post był ostatnio modyfikowany: 12-09-2020 14:19 przez szopen.)
Post: #18
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
SPI mode jest konfigurowalne i jest to dość istotne ustawienie, bo wpływa na dogadywanie się sprzętu (jeśli masz zły tryb, to dane są czytane z błędami)
morfik napisał(a):Założę się, że to zadziała.1. No ja też stawiam na sukces. 2. Mogą być inne wartości (znowu miejsce na zajrzenie w dokumentację) 1kohm jest najbardziej typowy, ale myślę że można użyć wartości spokojnie do ~10kohm (chodzi o wymuszenie stanu logicznego 1 na wejściu, czyli podanie odpowiedniego napięcia na tym wejściu, a konkretnie o poziomie akceptowanym jako logiczna jedynka dla danego zakresu napięć pracy układu, zwykle to zakres od 0,7Vcc do 1Vcc) wewnątrz układu znajdują się jakieś elementy które mogą powodować istnienie potencjału na tym wejściu, czasem jest to po prostu dzielnik rezystorowy, bądź rezystor podciągający, zazwyczaj są diody zabezpieczające itd., w każdym razie chodzi o to aby stosunek tych rezystancji był właściwy. Uwaga przykład trochę od czapy (bo realny wymaga ślęczenia nad dokumentacją) - załóżmy że jest tam wbudowany pulldown 100kohm (pewnie taki nie jest ale to przykład), więc jeśli podepniesz pullup 100kohm to na wejściu będzie napięcie 0,5Vcc, czyli takie które nadal daje stan nieustalony. 3. Można zewrzeć bez opornika, ale po to on jest by ograniczyć prąd "w razie W" - (przykład tym razem zupełnie od czapy bo nie uwzględniłem wcale rzeczywistego schematu układu połączeń - dotyczy tylko idei stosowania rezystora, pominąłem fakt, że zwieramy wejście z Vcc i opisana sytuacja nigdy nie nastąpi) załóżmy, że omyłkowo podepniesz coś nie tak, na wejściu masz diody pracujące w kierunku zaporowym (czyli zasadniczo nigdy nie przewodzą prądu w warunkach normalnych), jeśli jednak zdarzy się, że podasz na wejście np. sygnał o wartości odpowiednio większej od Vcc (powiedzmy wyższej od Vcc choćby o coś między 0,6V a 1V) to popłynie przez te diody niczym nie ograniczony prąd, dynamiczna rezystancja diody maleje do zera przy odpowiednio wysokim napięciu (dla krzemu chodzi o napięcia wyższe od 0,6V) co kończy się po prostu nieodwracalnym uszkodzeniem układu (w ekstremalnym przypadku obudowa nawet wybuchnie), a to jest tylko jeden z potencjalnie możliwych przypadków. Jeśli masz na wejściu rezystor, to tłumi on ten niepożądany prąd do bezpiecznej wartości - załóżmy, że niechcący podałeś 1V tak jak to opisałem wyżej, to na rezystorze odłoży się 0,4V a na diodzie 0,6V przyjmijmy dla prostoty (to nie prawda, choć fajne przybliżenie), że dioda ma 0ohm w tych warunkach, więc prąd będzie ograniczany tylko przez rezystor 1k i zostanie ograniczony do dość nieszkodliwego 0,4mA. Gdyby układ był zwarty bez rezystora jedynym ograniczeniem byłaby wydajność zasilacza (oraz rezystancje doprowadzeń). Realnie sytuacja w której nastąpi przepływ niepożądanego prądu musiałby być radykalnie inna (i nie umiem sobie wyobrazić jaką sytuację przewidział tu projektant, może po prostu chodzi o poprawną pracę ogranicznika przepięć?), ale elektronikę zawsze się upraszcza do granic możliwości (tu przodują Chińczycy usuwając często potrzebne elementy, bez których układ "też działa"), więc skoro zalecany jest rezystor podciągający o konkretnej wartości, to niewątpliwie to wynika z założeń projektowych (i jego brak spowoduje jakieś problemy w potencjalnie realnej sytuacji, której nie umiem sobie wyobrazić ). PS sam stosuję czasem takie "rozwiązania na skróty", ale też się czasem zastanawiam czemu prosty układ nie działa choć powinien. Statystyki Folding@home |
|||
12-09-2020, 13:56
Post: #19
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
No to muszę pozyskać te rezystory i zobaczyć czy z nimi zadziała.
|
|||
12-09-2020, 15:06
(Ten post był ostatnio modyfikowany: 12-09-2020 15:08 przez szopen.)
Post: #20
|
|||
|
|||
Przerobienie raspberry pi na programator pamięci BIOS
PS
Taka dykteryjka mi się przypomniała: Elektronikę umownie dzielimy na analogową i cyfrową, ale tak naprawdę nie istnieje żadna "elektronika cyfrowa" - to jest wciąż "stary dobry analog" w którym zamiast wykorzystywać nieskończoną ilość możliwych stanów umawiamy się na podzielenie ich na przedziały - cześć z nich to "jedynka", cześć to "zero", a między nimi mamy spory przedział stanów nieustalonych. To samo dotyczy sygnałów cyfrowych - takowe nie istnieją, realnie są to nadal sygnały analogowe, tylko odpowiednio interpretujemy te przedziały. Powyższa dykteryjka opisuje zasady sprzed kilkudziesięciu lat - obecnie już umiemy interpretować znacznie więcej przedziałów. No a teraz do czego to odnoszę: do tej wartości "1kohm" w prostej "cyfrowej" elektronice kluczowe znaczenie ma rząd wielkości, a nie konkretna wartość (byleby finalny sygnał zmieścił się w bezpiecznym przedziale pożądanego zakresu). Oczywiście ta tolerancja się zmniejsza, gdy np. z różnych poziomów analogowego sygnału chcemy wydzielić nie 1 bit, a odpowiednio więcej (np. we współczesnych pamięciach flash stosowanych powszechnie w nośnikach pamięci masowej jak ssd czy karty pamięci, choć te konwersje są i tak realizowane wewnątrz układu). Prowizorycznie te piny możesz oczywiście podpiąć na krótko do zasilania (ale tu standardowy disclaimer: robisz to oczywiście na własne ryzyko). Statystyki Folding@home |
|||
« Starszy wątek | Nowszy wątek »
|
Podobne wątki | |||||
Wątek: | Autor | Odpowiedzi: | Wyświetleń: | Ostatni post | |
Raspberry Pi 4 B - co na początek? | Ekonomista | 37 | 11 324 |
30-11-2020 12:43 Ostatni post: szopen |
|
Prosty test działania Raspberry Pi | Ekonomista | 21 | 9 217 |
15-06-2020 14:24 Ostatni post: Ekonomista |
|
Oprogramowanie do testowania kart pamięci i dysków ssd [win] | szopen | 0 | 6 568 |
08-02-2020 02:52 Ostatni post: szopen |
|
Raspberry Pi 2 | spag | 12 | 11 149 |
12-02-2015 01:37 Ostatni post: VipeRsan |
|
Raspberry Pi i Aero2 | p4trykx | 14 | 17 047 |
12-04-2014 15:46 Ostatni post: spag |