
Programator powstał dzięki prośbie znajomego, który potrzebuje zaprogramować pamięci flash od czasu do czasu, jak i również dla własnej potrzeby podnoszenia swoich umiejętności programistycznych

Założenia były dwa:
-ma czytać, kasować, programować pamięci flash
-komunikacja musi odbywać się za pośrednictwem interfejsu USB
Na poczatku programator miał być oparty na mikrokontrolerze z rodziny LPC arm7. Niestety implementacja klasy hid, którą jako jedyną udało mi się napisać, mimo poprawnej komunikacji z programem na PC, nie była dla mnie zadowalająca ze względu na prędkość transferu.
Drugie podejście to chip ftdi - tu tak samo mimo dobrych chęci nie udało mi się "wyciągnąć" maksymalnej prędkości 3mbit.
W końcu z szuflady została wyciągnięta płytka Stellaris Launchpad. Implementacja klasy bulk (dość mocno przerobiony program przykładowy) okazała się strzałem w 10.
Programator wykorzystuje sprzętowy SPI:
PD2 - MISO --> flash(soic8) SO pin2
PD3 - MOSI --> flash(soic8) SI pin5
PD0 - CLK --> flash(soic8) SCK pin6
PA3 - CS --> flash(soic8) CS pin1
Flash Pin3(WP) i pin7(HOLD) podłączone są do vcc (3,3v) .
Sama płytka Stellaris Launchpad jest dostępna do zakupienia na stronach Texas Instrumensts za $7.99 (aktualnie promocja), więc wydaje się, że sam programator stał się chyba najtańszym urządzeniem z interfejsem USB na rynku

Po stronie PC napisałem program, który jak to się mówi w żargonie programistów "nie jest odporny na idiotów", czyli wykonywanie czynności, które zgodnie z logiką nie powinny być wykonywane, może spowodował błąd programu (np. wgrywanie do flash mniejszego wsadu niż pojemność flash) lub nawet zawieszenie (odłączenie USB w trakcie odczytu czy programowania).
Oprócz pliku wykonywalnego w folderze musi znajdować się plik settings.ini gdzie znajdują się informacje o wykorzystanych pamięciach. Plik ustawień ma specyficzną budowę i umożliwia użytkownikowi dopisanie własnej pamięci. Do programu dołączam przykładowy plik konfiguracyjny. Tak więc plik konfiguracyjny jest podzielony na sekcje, gdzie dana linijka w jednej sekcji opisuje ten sam flash co linijka na tej samej pozycji w innej sekcji.
Sekcja [flash] zawiera nazwę flash, która pojawi się w rozwijalnej liście w programie oraz identyfikator pamięci, który należy wyszukać w datasheet pamięci. Dla ułatwienia po naciśnięciu w programie przycisku "Wykryj flash" zostanie wyświetlony nam identyfikator, dzięki czemu możemy dopisać z łatwością nasz flash jeżeli znamy jego pojemność a nie mamy datasheet, żeby sprawdzić ID.
Sekcja [opis] jest czysto opisowa i linijka zostanie pokazana w programie na pasku statusu.
Sekcja [iloscop] zawiera ilość stron do zaprogramowania podzielone przez 4 (do programatora wysyłane są paczki po 1024 bajty) i minus 1 (strony liczone są od zera).
Jeżeli nasz programowany flash jest kompatybilny z innym znajdującym się w settings.ini możemy wybrać z listy rozwijalnej już wpisany flash.
Zamieszczone pliki:
wsad.zip - program dla Launchpad
sterowniki.zip - jak sama nazwa wskazuje, sterowniki USB programatora
programatorspi.zip - program wykonywalny dla pc z systemem Windows (testowane na XP i 7) i plik konfiguracyjny
Póki co - projekt uważam za skończony, jednak jeżeli zajdzie potrzeba to dodam programowanie wg sektorów i tryb OTP.
Na zdjęciu Launchpad z adapterem do adaptera z test socket.
Cool? Ranking DIY