2006/59– 20.12.2006
Aplikace programátoru pamětí flash pro procesory STi 5518 Microsystems Ing. Milan Tannenberg
[email protected] Ústav biomedicínckého inľenýrství Vysoké učení technické v Brně Fakulta elektrotechniky a komunikačních technologií
Změna zdrojového kódu procesoru je často realizována finančně nákladným programátorem externích pamětí pro již osazené desky plošných spojů. Článek popisuje základní principy a mechanismy vývoje programátoru pamětí typu flash pro procesory STi Microsystems. Dále se zaměřuje na jeden z možných postupů vývoje aplikace tohoto charakteru a její rozšíření
1 Úvod a Kompatibilita Vývoj měřících a řídících systémů vyžaduje časté změny v chování zařízení. Změna zdrojového kódu pro řídící procesory se provádí nejčastěji formou programování externích pamětí flash. Elektronické obvody systému jsou nejprve osazeny do desky plošných spojů a následuje oživení této desky. Programování externích a interních pamětí procesoru je nejčastěji prováděno programátory jejichž cena není zanedbatelná. Pro práci vývojového týmu toto znamená velmi vysoké náklady. Ukazuje se efektivní zakoupit jeden profesionální programátor a dále vytvořit aplikaci softwarového programátoru dostupného na každém pracovišti. Při vývoji zařízení jako jsou například moduly příjmu digitální televize a zpracování VF signálů pro mobilní komunikaci se jeví tato alternativa jako velmi zajímavá. Tento článek popisuje jeden z možných konkrétních přístupů pro tvorbu těchto programátorů a na závěr popisuje možnosti vylepšení. Níže uvedený software byl vytvořen v MS Visual Studiu C++, knihovny MFC. Systémová kompatibilita: MS Windows 98, MS Windows Me, MS Windows 2000, MS Windows NT, MS Windows XP je zajištěna volně dostupným driverem portu LPT. Kompatibilita pamětí procesoru je zajištěna pro Top boot block devices: M29W320DT, M29W160DT, M29W800DT, AT49BV322AT, TC58FVT321FT a Bottom boot block devices: M29W320DB, TC58FVB321FT. Další rozšíření kompatibility je zapsáním architektury této paměti do aplikace programátoru.
2 Tvorba logiky Boundary Scan pro obvod STi 5518 Napěťový snižující měnič z 5V na 3.3V Napěťový snižující měnič bylo nutné použít pro konverzi úrovní logiky 5V (TTL) na paralelním portu na úrovně logiky 3.3V rozhraní JTAG [3]. Měnič lze jednoduše realizovat například pomocí obvodu TC74VHC244FT. Obvod reprezentuje neinvertující třístavový zásobník. Na obrázku 1 je zobrazeno blokově propojení mezi JTAG rozhraním a PC.
59-1
2006/59– 20.12.2006
Obrázek 1 Blokový diagram HW propojení
Komunikace s paralelním portem, rozhraní JTAG Pro komunikaci s paralelním portem byla využita volně dostupná knihovna pro práci s LPT portem pro systémy Windows 98 a vyšší. Obrázek 2 představuje komponenty, které tvoří základní prvky logického testovacího obvodu: Přístupový testovací port TAP (Test Acces Port), TAP řadič (TAP controller), registry testovacích dat (Test Data Registers) a instrukční register (Instruction Register). V JTAG1 [3] obvodu STi5518 [1] jsou použity direktivy EXTEST, SAMPLE/PRELOAD a IDCODE. Tabulka 1 popisuje signály TAP.
Obrázek 2 Testovací logický obvod Boundary-scan
59-2
2006/59– 20.12.2006 Tabulka 1 Signály TAP (Test Access Port)
TAP kontrolér je 4-bitový stavový automat pracující dle principu na obrázku 3. TAP kontrolér používá dva řídící vstupy TMS a TCK, které vytvářejí řízení a hodiny pro zbytek logické architektury. Ke změně stavu dochází vždy na základě stavu TMS a nástupné hrany TCK nebo po připojení napájení. Po připojení napájení vstoupí TAP kontrolér do stavu Test Logic Reset. K zajištění resetu kontroléru z jakéhokoliv jiného možného stavu musí být signál TMS na úrovni log. 1 alespoň po 5 cyklů TCK.
Obrázek 3 Stavový diagram TAP kontroléru Obrázek 4 reprezentuje časový průběh signálu JTAG Boundary-scan rozhraní a popisuje funkci TAP kontroléru.
59-3
2006/59– 20.12.2006
Obrázek 4 Časový průběh signálů JTAG Boundary-scan rozhraní Obrázek 5 tvoří detailní popis a blokové schéma JTAG Boundary-scan obvodu.
Obrázek 5 Blokové schéma JTAG Boundary-scan obvodu
Verifikace stavového slova Instrukční registr neobsahuje bit parity a má délku 5 bitů. Stavové slovo je nahráváno jako binární hodnota 00001 do instrukčního registru během stavu Capture IR Stavového automatu. Verifikace stavového slova je primární krok kontroly funkce TAP kontroléru.
59-4
2006/59– 20.12.2006
Verifikace identifikačního kódu Identifikační kód(IDCODE) je načítán z registru identifikace zařízení, v našem případě STi5518. Register IDCODE je 32 bitů dlouhý a podává uživateli informace o typu zařízení (Tabulka 2). Tabulka 2 Popis identifikačního kódu
3 Flash paměti STi M29W320DT Popis a stručná charakteristika Obrázek 6 popisuje obvod paměti flash a jeho konfiguraci pinů.
Obrázek 6 Logický diagram paměti flash Uveďme jako příklad paměť M29W320D [2]. Jedná se o nevolatilní, opakovatelně programovatelnou (zápis i čtení) paměť velikosti 32 Mbit (4Mb x8 nebo 2Mb x16). Operace s pamětí využívá napětí 2.7-3.6V. Po připojení napájení je paměť v módu čtení. Paměť je rozdělena na bloky, které je možné mazat nezávisle. Každý blok může být uzamčen nezávisle pro případ nehody (příkazy Erase a Program). Příkazy Program a Erase jsou zapisovány do příkazového rozhraní. Množina příkazů doporučených k řízení a práci s pamětí je konzistentní se standardem JEDEC. Řídící vstupy Chip Enable, Output Enable a Write Enable umožňují jednoduché připojení k většině mikroprocesorů bez přídavné logiky [2].
59-5
2006/59– 20.12.2006
4 Tvorba aplikace Funkce programu Zjednodušená funkce programu je popsána na obrázku 7 formou vývojového diagramu. Cílem programu je provádět základní operace s pamětí flash. Základními operacemi jsou mazání, nezávislé mazání jednotlivých bloků paměti, zápis a zálohování obsahu paměti.
Obrázek 7 Vývojový diagram funkce programátoru 59-6
2006/59– 20.12.2006
Přehled úrovní vývoje aplikace Tabulka 3 stručně popisuje postup vývoje programování a ladění funkcí aplikace od tvorby primitivní komunikace po LPT, rozhraní JTAG až po výslednou aplikaci na úrovni 5. Tabulka 3 Úrovně vývoje funkcí aplikace
Výsledná aplikace úrovně 5 je založena přehledně na dialogových oknech a záložkách vytvořených s podporou knihoven MFC MS Visual Studia. Dále se podívejme na vizualizaci a jednotlivé funkce programátoru. 1.
Inicializace zařízení - v této záložce je inicializován LPT port, procesor a paměť flash. Obrázek 8 předvádí postup inicializace. Před spuštěním programu je nutné nastavit rozsah adres přiřazených LPT portu a typ paměti flash. Nejdříve je provedena kontrola komunikace LPT portu. Pokud je komunikace s portem na vybraném rozsahu adres úspěšná, je považován test LPT komunikace za ukončený. Následuje kontrola stavového slova. Jedná se o primární kontrolu TAP kontroléru. Dalším krokem je identifikace zařízení, která podává uživateli informaci o zabudovaném typu zařízení (tabulka 2). Posledním krokem je inicializace a test vlastní pamětí flash. Je kontrolováno číslo zařízení, výrobní identifikační kód a číslo prvního chráněného nebo vadného bloku v paměti. Paměť v této aplikaci nesmí mít chráněné ani vadné bloky.
59-7
2006/59– 20.12.2006
Obrázek 8 Inicializace zařízení 2.
Operace s pamětí flash. Pokud byla inicializace úspěšná (ověřena komunikace s pamětí), umožňuje nám program postoupit k dalším dvěma záložkám pro práci s pamětí. První funkce "Flash Chip Erase" umožňuje mazání celého čipu. Druhá funkce "Flash Block Erase" umožňuje nezávisle vymazat v paměti jen vybrané bloky. Poslední funkce "Flash Program" zapisuje do paměti vybraný soubor s řídícím operačním kódem v hexadecimálním formátu. Obrázek 9 prezentuje grafické uživatelské rozhraní těchto funkcí.
59-8
2006/59– 20.12.2006 Obrázek 9 Operace s pamětí typu flash 3.
Operace "Read /Save" (přečti a ulož) - tato operace umožňuje číst paměť flash a ukládat obsah této pamětí do uživatelem pojmenovaného souboru v hexadecimálním formátu. Po spuštění je volána standardní API funkce pro vytvoření názvu a urční místa uložení souboru. Hlavní využití funkce je zálohování obsahu paměti flash.
Obrázek 10 Operace Read/Save (přečti a ulož)
5 Závěr Tato aplikace výše popsaného programátoru byla vytvořena pro kompenzaci vysoké pořizovací ceny originálních programátorů STi Microsystems. Jednoduchými změnami v programu lze docílit adaptace na další procesory i paměti a zajistit tak její vyšší robustnost. Jedná se o jednoduché a efektivní řešení, jehož jedinou nevýhodou je snížená rychlost proudu toku dat na paralelním portu LPT. Vhodnou variantou je využití portů USB standardu 2.0 nebo standardu FireWire IEEE 1394. Pro zvýšení efektivnosti a optimalizace kódu aplikace programátoru je vhodné vytvářet kritické rutiny v assembleru. Postup i samotná aplikace byla testována při vývoji řídících prvků elektronických zařízení pro zpracování zvuku a obrazu. Tato práce byla podpořena výzkumným programem Vysokého učení technického v Brně č. MSM 0021630513.
6 Použitá literatura [1]
[2]
STi Microsystems Data Sheet: STi5518 Single-Chip Set-Top Box Decoder With Mp3 And Hard Disk Drive Support, Confidential Data. [cit. 2006-03-01] Dostupné na:
STi Microsystems Data Sheet: M29W320DT, M29W320DB 32 Mbit (4Mb x8 or 2Mb x16, Boot Block) 3V Supply Flash Memory. [cit. 2006-03-11] Dostupné na:
59-9
2006/59– 20.12.2006 [3]
[1]
Loomis, John, S.: Introduction to JTAG Boundary Scan. [cit. 2006-03-09] Dostupné na:
Joint Test Action Group - Jedná se o standard definovaný normou IEEE 1149.1, tzv. Standard Test Access
Port (TAP). Jedná se architekturu Boundary-Scan pro testování plošných spojů, programování FLASH pamětí, apod.
59-10