Bezpłatna biblioteka techniczna ENCYKLOPEDIA RADIOELEKTRONIKI I INŻYNIERII ELEKTRYCZNEJ Programowanie układów pamięci FLASH. Encyklopedia elektroniki radiowej i elektrotechniki Encyklopedia radioelektroniki i elektrotechniki / Mikrokontrolery Reprogramowalne układy pamięci tylko do odczytu z elektrycznym kasowaniem danych, wykonane w technologii FLASH, zajęły silną pozycję w elektronice i technice komputerowej, wypierając inne typy nośników nieulotnych. Ich główną zaletą jest możliwość przeprogramowania „w systemie” bez konieczności wylutowywania chipa z płytki drukowanej lub wyjmowania go z panelu. Duża dopuszczalna liczba cykli przeprogramowania umożliwia budowanie na takich mikroukładach „dysków FLASH” o pojemności kilkudziesięciu megabajtów, które różnią się od konwencjonalnych dysków twardych lub dyskietek magnetycznych całkowitym brakiem ruchomych części. Dzięki temu są trwałe i mogą pracować w warunkach silnych wibracji np. na samochodach i innych poruszających się obiektach. Opublikowany artykuł poświęcony jest zagadnieniom programowania układów pamięci FLASH. Tym, co odróżnia układy pamięci FLASH od innych typów pamięci ROM, jest obecność wbudowanego „programatora” – maszyny kasującej i zapisującej (AC3) – bezpośrednio w chipie. Eliminuje to konieczność podawania zwiększonego napięcia na zaciski mikroukładu podczas procesu programowania i tworzenia określonych sekwencji impulsów. AC3 robi to wszystko samodzielnie i niezauważenie przez użytkownika, który może jedynie za pomocą odpowiedniego polecenia wskazać adres komórki i kod, który należy w nią wpisać, i poczekać na zakończenie operacji. W wielu przypadkach długą operację (np. kasowanie bloku danych) można wstrzymać, odczytać potrzebne informacje z innego obszaru pamięci, a następnie kontynuować. Dziś wiele firm (najbardziej znane to Intel. AMD. Atmel. Winbond) produkuje duży asortyment układów pamięci FLASH o pojemności do 4 MB. Ich interfejs zewnętrzny może być równoległy lub szeregowy. Mikroukłady z interfejsem szeregowym przeznaczone są przede wszystkim do przechowywania niewielkich ilości danych w małych lub wyspecjalizowanych urządzeniach, na przykład do przechowywania stałych ustawień odbiornika radiowego lub programu operacyjnego domowego urządzenia elektrycznego. Następnie porozmawiamy o „równoległych” mikroukładach FLASH, które pod względem fizycznej i logicznej konstrukcji interfejsu z procesorem nie różnią się od konwencjonalnych pamięci ROM, z tym wyjątkiem, że podobnie jak pamięć RAM mają wejście umożliwiające zapis. To w takich mikroukładach przechowywane są kody BIOS nowoczesnych komputerów. Organizacja danych może być ośmio- lub 16-bitowa. Często można to wybrać, podłączając specjalnie dostarczony terminal do wspólnego przewodu lub źródła zasilania. Oprócz szyn adresowych i danych do mikroukładów dostarczane są trzy sygnały sterujące: wybór kryształu (CE), zezwolenie na wyjście (OE) i zezwolenie na zapis (WE). To drugie ma miejsce tylko w przypadku konieczności zaprogramowania mikroukładu. Minimalny czas trwania cyklu odczytu wynosi 70...150 ns. W pierwszych układach FLASH układ komórek pamięci stanowił pojedynczy blok, a dane można było całkowicie usunąć jedynie z całego układu. W wielu nowoczesnych mikroukładach pamięć jest podzielona na bloki, a usunięcie danych w jednym z nich nie ma wpływu na dane przechowywane w pozostałych. Rozmiary bloków są bardzo zróżnicowane - od 128 bajtów do 128 KB lub więcej. Jednak podczas odczytu danych cała pamięć mikroukładu jest traktowana jako pojedyncza tablica. to, że jest fizycznie podzielony na bloki, nie ma znaczenia. Zwykle bloki są takie same i mają równe prawa, ale mogą być również różne. Przykładowo chipy Intel serii 28Fxxx posiadają tzw. blok startowy o pojemności 16 KB i dwa bloki parametrów po 8 KB każdy. Następny jest blok 96 KB, a reszta pamięci składa się z bloków 128 KB. Właściwości tych bloków są nieco inne. Bootloader ma sprzętową ochronę przed zapisem i kasowaniem. Włącza się go, przykładając odpowiedni poziom logiczny do specjalnie dostarczonego pinu mikroukładu. Bloki parametrów są przeznaczone do przechowywania często zmienianych danych i wytrzymują większą liczbę cykli kasowania/zapisu niż inne. Każdy z mikroukładów rozważanej serii produkowany jest w dwóch wersjach, różniących się rozmieszczeniem bloków w przestrzeni adresowej. W mikroukładach o indeksie B (na dole) są one zlokalizowane, zaczynając od adresu zerowego, w kolejności wskazanej powyżej. W produktach z indeksem T (góra) kolejność jest odwrotna (boot - w obszarze wysokich adresów). Obecnie produkowane układy pamięci FLASH przystosowane są do nominalnego napięcia zasilania od 2.7 do 5 V. Podwyższone napięcie (12 V) nie jest dla nich w ogóle wymagane lub jest konieczne tylko w niektórych specjalnych trybach. W stanie pasywnym („niewybranym”) takie mikroukłady pobierają ze źródła prądu prąd nie większy niż 1 mA (w większości przypadków kilkadziesiąt razy mniej). Czasami dostępny jest specjalny tryb całkowitego wyłączenia (tryb uśpienia), w którym zużycie jest znikome. To prawda, że \u3b\uXNUMXbnie można odczytać danych z „uśpionego” mikroukładu, ale „obudzić” go. czasami zajmuje to kilkadziesiąt mikrosekund. Pobór prądu w trybie aktywnym wynosi dziesiątki miliamperów, a jeśli przełączysz mikroukład, którego ACXNUMX wykonuje długoterminową operację (na przykład kasowanie danych), do stanu pasywnego, prąd nie zmniejszy się, dopóki nie zostanie zakończony. Dużą uwagę przywiązuje się do ochrony danych zapisanych w pamięci FLASH przed przypadkowymi zmianami, zwłaszcza pod wpływem szumów i stanów nieustalonych podczas włączania i wyłączania zasilania. W większości przypadków istnieją trzy rodzaje ochrony sprzętu. Pierwszym jest to. że mikroukład nie reaguje na impulsy w obwodzie WE o czasie trwania krótszym niż 15...20, po drugie, gdy poziom logiczny na wejściu OE jest niski, żadna manipulacja sygnałami na pozostałych wejściach nie może spowodować rejestracji , trzecie to to. że gdy napięcie zasilania spadnie poniżej pewnego poziomu, AC3 zostanie wyłączony. Dla różnych typów mikroukładów próg wyłączenia mieści się w zakresie 1.5...3.8V. Czasami można całkowicie zabronić zmiany i usuwania całej tablicy danych lub jej części. Nałożenie lub zniesienie takiego zakazu zwykle wymaga „nadzwyczajnych” środków (na przykład krótkotrwałego przyłożenia zwiększonego napięcia do niektórych zacisków). Zapewniona jest również ochrona oprogramowania. Do zmiany zawartości komórki nie wystarczy pamięć FLASH, jak w konwencjonalnej pamięci RAM. napisz jeden kod pod jednym adresem. Wymagane jest polecenie składające się z kilku kodów zapisanych pod określone adresy. Dowolny chip FLASH jest w stanie przekazać swój typ urządzeniu, w którym jest zainstalowany, co pozwala na automatyczny dobór odpowiednich algorytmów zapisu i kasowania danych. Dostępne są odpowiednie polecenia służące do programowego włączania i wyłączania trybu odczytu identyfikatora. Po włączeniu pod adresem OH odczytywany jest identyfikator producenta, a pod adresem 1H urządzenia (identyfikatory niektórych mikroukładów podano w tabeli). W tym samym trybie, ale pod różnymi adresami, w niektórych przypadkach można uzyskać dodatkowe informacje, np. o stanie sprzętowej ochrony przed zapisem. Do trybu odczytu identyfikatora można przejść bez polecenia, podając na wejście adresowe A9 napięcie +12 V. Dopuszczalna odchyłka jego wartości jest różna dla różnych typów mikroukładów. W niektórych przypadkach nie jest to więcej niż ±5%. w innych wystarczy, że napięcie przekroczy tylko określoną wartość, np. 10 V. Identyfikatory odczytywane są pod powyższymi adresami, ustawiając je bez uwzględnienia cyfry A9. Ta metoda jest zwykle stosowana w programatorach uniwersalnych. AC3 większości układów pamięci FLASH akceptuje polecenia wydawane zgodnie z tzw. standardem JEDEC, choć zdarzają się wyjątki. Czasami podczas aktualizacji mikroukładów ich system poleceń jest uzupełniany standardowymi kombinacjami kodów, zachowując jednak stare polecenia (jest to konieczne, aby ulepszone kryształy mogły działać we wcześniej wydanych urządzeniach). Intel korzysta z własnego systemu poleceń. Zanim szczegółowo przyjrzymy się poleceniom, opowiemy trochę o podłączaniu chipów FLASH. Mikroukłady tego samego typu produkowane są zwykle w kilku typach opakowań, różniących się umiejscowieniem, rasterem i liczbą pinów. Często dostępne są opcje „lustra”, które pozwalają zainstalować mikroukłady po dowolnej stronie płytki bez zmiany topologii drukowanych przewodów. Numery pinów na poniższych schematach są standardowe dla układów pamięci 512 KB w najpopularniejszych 32-pinowych obudowach PLCC i PDIP. „Pinout” mniejszych mikroukładów jest podobny, ale piny najbardziej znaczących bitów nie są połączone (na przykład Am29F010 ma wolny 30. i 1. bit). Obwód podobny do pokazanego na ryc. 1 stosuje się w przypadku konieczności kasowania i zapisu danych bez wyjmowania chipa z układu mikroprocesorowego. Zakłada się, że systemowa magistrala danych jest ośmiobitowa, adresy 16-bitowe. ROM ma przydzielone 32 KB przestrzeni adresowej, resztę może zająć RAM.Ponieważ pojemność pamięci Am29F040 wynosi 512 KB, zapewniony jest rejestr stronicowy pamięci FLASH, który kontroluje najważniejsze bity adresu. Do odczytu i zapisu danych można zastosować następujące proste procedury (napisane w Pascalu): Jeżeli zajdzie potrzeba zaprogramowania chipa FLASH poza urządzeniem, w którym będzie on pracował, można go podłączyć do komputera osobistego. Najłatwiej to zrobić, instalując w komputerze dodatkową równoległą kartę wejścia/wyjścia. Takie płytki, na przykład PCL-731 firmy Advantech, DIO-48 firmy IOP DAS czy PET-48DIO firmy ADLink, są dostępne w handlu. Z reguły mają 48 wejść/wyjść i działają podobnie jak dwa mikroukłady 8255 (KR5806V55A) w trybie O z tymi samymi portami informacyjnymi i sterującymi, nawet jeśli w rzeczywistości nie zawierają takich mikroukładów. W razie potrzeby można samodzielnie wykonać równoległą płytkę wejścia/wyjścia, korzystając z artykułu N. Wasiljewa „PC Interface Expander” (Radio, 1994, nr 6, s. 20, 21). Do odczytu lub programowania chip FLASH podłącza się do portów dwóch układów 8255 zgodnie ze schematem pokazanym na ryc. 2. Port RA pierwszego z nich służy do wejścia/wyjścia danych, poszczególne bity jego portu PC służą do wyprowadzenia sygnałów sterujących CE, OE i WE. Porty PA, PB i PC drugiego tworzą 24-bitową magistralę adresową układu FLASH. Jeśli mniejsza szerokość bitowa tej magistrali jest wystarczająca, odpowiednia liczba bitów wyższego rzędu portu PC nie jest podłączona. Porty karty we/wy i stałe pomocnicze muszą być opisane w programie w następujący sposób: Opisane powyżej procedury dostępu do pamięci FLASH zostają zastąpione następującymi: м Teraz - a właściwie o programowaniu chipów FLASH. Zgodnie ze standardem JEDEC każde polecenie rozpoczyna się od wpisania kodu OAAN pod adresem 5555H. Następnie zapisz kod 55H pod adresem 2AAAN i na koniec kod wykonywanej operacji pod adresem 5555H. Mówiąc np. o poleceniu 40H będziemy mieli na myśli właśnie taką sekwencję z liczbą 40H jako kodem operacji. Po włączeniu zasilania każdy chip FLASH automatycznie wchodzi w ten tryb i nie ma potrzeby instalowania go specjalnym poleceniem. Wymagany jest jednak np. powrót z trybu odczytu identyfikatorów. Nazywa się to czasem poleceniem resetowania lub konfiguracją wstępną. Aby wprowadzić niektóre mikroukłady w tryb odczytu tablicy, wystarczy jeden cykl zapisu kodu 0F0H pod dowolnym adresem. Cykl zapisu następujący po poleceniu 0A0H zawiera adres programowalnej komórki i zapisany w niej kod. W większości przypadków zapis do każdej komórki wymaga osobnego polecenia. Należy pamiętać, że podobnie jak w przypadku konwencjonalnych pamięci EEPROM, w bitach programowalnej komórki można zastąpić jedynie logiczne zerami. Aby wykonać operację odwrotną, zwykle konieczne jest najpierw wymazanie zawartości całego bloku pamięci i powtórzenie programowania wszystkich jego komórek. Należy pamiętać, że AC3 wielu chipów FLASH nie rozpoznaje takich błędów i raportuje pomyślną operację. Aby zapewnić prawidłowe programowanie, niezbędny jest testowy odczyt zarejestrowanych danych. W mikroukładach Winbond o wielkości bloków 128 bajtów programowanie dowolnej komórki jest automatycznie poprzedzone skasowaniem wszystkich danych w bloku ją zawierającym. Dlatego zawsze należy najpierw skopiować blok do pamięci RAM, dokonać niezbędnych zmian w kopii i ponownie zaprogramować wszystkie 128 bajtów. Po otrzymaniu polecenia OAON, adresu i pierwszego z programowalnych bajtów, AC3 wprowadza je do wewnętrznego bufora bloku i czeka 200 μs bez rozpoczynania programowania. Jeżeli w tym czasie otrzymane zostanie kolejne polecenie OAON i kolejny bajt, to ono również trafi do bufora, a AC3 będzie czekać kolejne 300 μs na kolejne. To trwa do tego czasu. aż do odebrania wszystkich 128 bajtów bloku lub przerwa przekroczy dopuszczalną wartość (300 µs). Następnie AC3 kasuje blok i rozpoczyna właściwe programowanie. Kolejność zapisywania danych do bufora dla poszczególnych komórek w bloku nie ma znaczenia, ale te komórki, dla których dane nie zostały odebrane, po zaprogramowaniu będą zawierać kody 0FFH. Istnieją dwa sposoby zapisywania danych programowych w takim chipie. Pierwszy z nich (zwykły dla innych) nazywany jest chronionym oprogramowaniem. Każdy zapisany bajt musi być poprzedzony poleceniem OAON. Jednakże zabezpieczenie można wyłączyć wydając sekwencyjne polecenia 80H i 20H. Następnie bajt zapisany pod dowolnym adresem wchodzi do wewnętrznego bufora mikroukładu, a tryb ten utrzymuje się nawet po wyłączeniu i włączeniu zasilania. Zostawiają to na polecenie ONZ. Aby zapisać dane w mikroukładzie Intel FLASH, dostępne są dwie równoważne opcje poleceń. Przede wszystkim pod dowolnym adresem zapisywany jest jeden z kodów 40H lub 10H. a następnie - programowalny kod pod żądanym adresem. Polecenie „Skasuj całą pamięć”. Układ AC3 FLASH rozpoczyna tę ważną operację od otrzymania sekwencji dwóch poleceń – 80H i 10H. Chipy Intela otrzymują podobne polecenie poprzez zapisanie kodów 20H i 0D0H pod dowolne adresy Kasowanie całej zawartości pamięci trwa od kilkudziesięciu milisekund do kilku sekund. Niektóre mikroukłady umożliwiają wstrzymanie tego procesu poprzez zapisanie kodu OVON pod dowolnym adresem. Po wpisaniu (również pod dowolny adres) kodu 30H (dla układów Intel - ODOH) kasowanie będzie kontynuowane. Polecenie Usuń blok. Aby skasować zawartość bloku pamięci, należy wydać dwie komendy. Pierwszy z nich to 80Н, drugi różni się tym, że jego kod operacji 90Н należy zapisać nie pod adresem 5555Н, ale pod adresem dowolnej komórki kasowanego bloku. Polecenie „Odczytaj identyfikatory”. Aby przejść do tego trybu, użyj polecenia 90H, ale czasami wymagana jest sekwencja dwóch poleceń - 80H i 60H. W mikroukładach Intela wystarczy wpisać kod 90H pod dowolnym adresem. Wyjdź z tego trybu za pomocą polecenia „Odczytaj tablicę danych” omówionego powyżej. Jak mogę sprawdzić zakończenie długich poleceń programowania i kasowania? Najłatwiej jest użyć danych referencyjnych mikroukładu i zapewnić wygenerowanie oprogramowania odpowiednich opóźnień. Jednak rzeczywisty czas wykonania niektórych operacji często znacznie odbiega od wartości odniesienia, nawet dla różnych ogniw i bloków tego samego mikroukładu, zwiększając się w miarę „starzenia się” tego ostatniego. Odczyt rejestru stanu AC3 pozwala dowiedzieć się dokładnie, kiedy operacja się zakończy. Układ FLASH wyprowadza zawartość tego rejestru na szynę danych przez cały czas, gdy AC3 jest zajęty wykonywaniem procedury kasowania lub programowania. Istnieją dwa znaki, że proces nie został zakończony. Po pierwsze, wartość bitu D7 rejestru stanu jest odwrotna w stosunku do wartości zapisanej do tego samego bitu komórki pamięci (podczas kasowania jest równa 0). Po zakończeniu operacji będzie ona zgodna z zarejestrowaną. Drugim znakiem jest „migotanie” bitu D6 (jego wartość zmienia się z każdym odczytem rejestru, aż do zakończenia operacji). Z reguły obserwuje się oba znaki, ale są wyjątki. Na przykład w mikroukładach Intela nie ma „migoczącego” bitu, a bit D7 podczas programowania ma wartość 0, niezależnie od zapisywanego kodu. Koniec operacji w tym przypadku jest oznaczony przez D7=1. W mikroukładach z zapisem blokowym (na przykład z Winbond) wartość bitu D7 jest odwrotna do tego samego bitu, co ostatni kod zapisany w buforze blokowym - Zwykle po zakończeniu programowania lub kasowania chip FLASH automatycznie powraca do trybu odczytu tablicy danych, jednak chipy Intel wymagają do tego odpowiedniego polecenia. Jeśli chip jest uszkodzony, długa operacja może nigdy nie zostać ukończona, co powoduje zawieszenie się komputera programującego. Aby tego uniknąć, należy sprawdzić czas trwania operacji kasowania i programowania, a w przypadku przekroczenia rozsądnej wartości włączyć wyjście „awaryjne” z komunikatem o błędzie. Czasami, szczególnie podczas pracy z mikroukładami, które przeszły prawie maksymalną liczbę cykli kasowania/programowania, sensowne jest kilkukrotne powtórzenie nieudanej operacji. Jedna z prób może zakończyć się sukcesem. Na zakończenie kilka słów o narzędziach pozwalających zaktualizować BIOS komputera zapisany w pamięci FLASH. Są one opracowane dla każdego typu płyt systemowych (płyt głównych) i uwzględniają możliwości podłączenia chipów FLASH do magistral systemowych. Dlatego próby użycia narzędzia przeznaczonego dla jednego typu płyty do aktualizacji BIOS-u innego często prowadzą do całkowitej awarii komputera. Narzędzie uruchamia się jako zwykły program aplikacyjny, podając jako parametr nazwę pliku zawierającego kody nowej wersji BIOS-u. Odczytuje ten plik, tworząc w pamięci RAM tablicę danych, które mają zostać zapisane w pamięci FLASH. Następnie określa rodzaj chipa i dobiera odpowiednie procedury do pracy z nim. Następnie stare dane zaczynają być usuwane i zapisywane nowe dane, w tym czasie program nie może korzystać z żadnych funkcji BIOS-u, w tym wyświetlania informacji na ekranie lub odpytywania klawiatury. Jeśli jest to nadal konieczne, niezbędne podprogramy są zawarte w samym narzędziu. Po zakończeniu programowania i sprawdzeniu jego poprawności komputer zwykle uruchamia się ponownie i rozpoczyna nowe życie ze zaktualizowanym BIOS-em. Autor: A. Dołgij, Moskwa Zobacz inne artykuły Sekcja Mikrokontrolery. Czytaj i pisz przydatne komentarze do tego artykułu. Najnowsze wiadomości o nauce i technologii, nowa elektronika: Hałas drogowy opóźnia rozwój piskląt
06.05.2024 Bezprzewodowy głośnik Samsung Music Frame HW-LS60D
06.05.2024 Nowy sposób kontrolowania i manipulowania sygnałami optycznymi
05.05.2024
Inne ciekawe wiadomości: ▪ Sztuczny kotlet uprawiany i spożywany ▪ Yaogan-30-09 Satelity teledetekcyjne ▪ TPS62510 — Konwerter buck 1,5 A do urządzeń przenośnych ▪ Prąd Zatokowy zwolnił z powodu globalnego ocieplenia Wiadomości o nauce i technologii, nowa elektronika
Ciekawe materiały z bezpłatnej biblioteki technicznej: ▪ sekcja witryny Wzmacniacze mocy. Wybór artykułów ▪ artykuł Delikatny i niesamowity. Popularne wyrażenie ▪ artykuł Dlaczego A. V. Suworow otrzymał tytuł hrabiego Rymnika? Szczegółowa odpowiedź ▪ artykuł O Księżycu, rtęci i trzęsieniach ziemi. Laboratorium naukowe dla dzieci
Zostaw swój komentarz do tego artykułu: Wszystkie języki tej strony Strona główna | biblioteka | Artykuły | Mapa stony | Recenzje witryn www.diagram.com.ua |