DiskIO JEDNOTKA PRO PRÁCI S RAM, ROM A FLASH DISKY. Příručka uživatele a programátora

Podobné dokumenty
PCKEYB JEDNOTKA PRO OBSLUHU KLÁVESNICE TYPU PC AT. Příručka uživatele a programátora

uioflex JEDNOTKA PRO KONFIGURACI DESKY IOFLEX01 Příručka uživatele a programátora

LZ77 KNIHOVNA PRO KOMPRESI A DEKOMPRESI DAT POMOCÍ ALGORITMU LZ77. Příručka uživatele a programátora

udspt10r JEDNOTKA IMPLEMENTUJÍCÍ DISPLEJ VZDÁLENÉ VARIANTY TERMINÁLU TERM10 Příručka uživatele a programátora

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora

uioct01 JEDNOTKA PRO MĚŘENÍ FREKVENCE (OTÁČEK) DESKOU IOCT01 Příručka uživatele a programátora

usimt03 JEDNOTKA IMPLEMENTUJÍCÍ OBJEKTY PRO SIMULACI TERMINÁLU TERM03 NA PC Příručka uživatele a programátora

uioadda1 JEDNOTKA PRO OVLÁDÁNÍ DESEK IOADDA01, IOADDA02 A IODA01 Příručka uživatele a programátora

usimt03r JEDNOTKA PRO SIMULACI VZDÁLENÉ VARIANTY TERMINÁLU TERM03 NA POČÍTAČI PC Příručka uživatele a programátora

Bitmaps SPRÁVCE BITMAP A POMOCNÉ FUNKCE PRO PRÁCI S BITMAPAMI. Příručka uživatele a programátora

uterm03r JEDNOTKA IMPLEMETUJÍCÍ VZDÁLENÝ TERMINÁL TERM03 Příručka uživatele a programátora

TKeypad KNIHOVNY DEFINIC KLÁVESNIC PRO TERMINÁLY TOUCH. Příručka uživatele a programátora

usimt10 JEDNOTKA IMPLEMENTUJÍCÍ OBJEKTY PRO SIMULACI TERMINÁLU TERM10 NA PC Příručka uživatele a programátora

usimt01 JEDNOTKA IMPLEMENTUJÍCÍ OBJEKTY PRO SIMULACI TERMINÁLU TERM01 NA PC Příručka uživatele a programátora

ucomm JEDNOTKA ZPROSTŘEDKOVÁVAJÍCÍ SLUŽBY BIOSU KITV40 PRO SÉRIOVOU KOMUNIKACI Příručka uživatele a programátora

uflx2pos JEDNOTKA PRO PRÁCI S INKREMENTÁLNÍMI ČIDLY V DESCE IOFLEX02 Příručka uživatele a programátora

urtotemp JEDNOTKA PRO PŘEVODY ODPORU ČIDLA NA TEPLOTU Příručka uživatele a programátora

Nastavení konstant regulátoru PID

upct01 SIMULÁTOR TERMINÁLU TERM01 NA POČÍTAČI PC Příručka uživatele a programátora

LdrLib KNIHOVNY PRO TVORBU ZAVADĚČE (LOADERU) ŘÍDICÍCH APLIKACÍ. Příručka uživatele a programátora

TEDrv OVLADAČE KLÁVESNICE, MYŠI A DISPLEJE EMULÁTORU TERMINÁLU PRO MS WINDOWS. Příručka uživatele a programátora

Termíny a definice TERMÍNY A DEFINICE POUŽÍVANÉ V MANUÁLECH FIRMY SOFCON. Příručka uživatele a programátora

Knihovna DataBoxLib TXV první vydání prosinec 2010 změny vyhrazeny

Nahrávání image flash do jednotek APT81xx, PPC81xx

COUDP KNIHOVNA PROTOKOLU UDP. Příručka uživatele a programátora

Začínáme s OS FreeDos na Kit188ER

utermchr JEDNOTKA PRO PRÁCI SE ZNAKOVÝM TERMINÁLEM Příručka uživatele a programátora

Software pro grafické terminály TERM10 a TERM03

XPE91B Windows XP Embedded pro jednotku AP9NW800L0G1

MCP BIOS řídicí jednotky Kit386EXR

G240x128 a G128x64 JEDNOTKY IMPLEMENTUJÍCÍ GRAFICKÉ OPERACE VE VIDEOPAMĚTI. Příručka uživatele a programátora

Programování v C++ 3, 3. cvičení

NAPOJENÍ ZAŘÍZENÍ S KOMUNIKACÍ BELIMO MP-BUS NA SÍŤ AUTOMATŮ MICROPEL

Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/

PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/ PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/ stran 1

uaterm JEDNOTKA PRO PRÁCI S ABSTRAKTNÍM TERMINÁLEM Příručka uživatele a programátora

Činnost počítače po zapnutí

Sada 1 - Základy programování

Přerušovací systém s prioritním řetězem

BIOS. Autor: Bc. Miroslav Světlík

LibVUtils UTILITY PRO BALÍK KNIHOVEN LIBV. Příručka uživatele a programátora

Řízení IO přenosů DMA řadičem

Uživatelská příručka

NumToStr JEDNOTKA PRO PŘEVODY ČÍSEL, DATUMU A ČASU A JINÝCH DATOVÝCH STRUKTUR NA ŘETĚZCE A ZPĚT. Příručka uživatele a programátora

Změny knihoven ZMĚNY NOVÝCH KNIHOVEN PRO PROSTŘEDÍ BP. Příručka uživatele a programátora

Proudový zdroj. Ovládací aplikace pro PC. 12/2016 ATEsystem s.r.o.

Beznárazové přepnutí aplikace

Práce se soubory. Základy programování 2 Tomáš Kühr

Aplikace. Hlásič SMS

Knihovna RecDBXLib ZÁZNAMY V DATABOXU TXV

AS-28T. Audio systém. Historie verzí. Verze as-28t_v_cz_101.doc

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ. MEIII Paměti konstant

Paměti a jejich organizace

Registrový model HDD

POPIS DRIVERU pro připojení modulu měření spotřeby EATON/Moeller k systému Control4

SPY PHONE - Odposlech SMS. Návod k obsluze ( doplněk k originálnímu návodu )

KS-VARIO LF2-2 Kamerový systém

KitKing POPIS VIZUALIZAČNÍCH KNIHOVEN PRO ŘÍDICÍ SYSTÉM KIT. Příručka uživatele a programátora

Alternativní použití analogových vstupů

Technické prostředky počítačové techniky

1. DATOVÉ SCHRÁNKY OBECNÝ PŘÍSTUP K DATOVÉ SCHRÁNCE DATOVÉ ZPRÁVY... 3

Souborové systémy a logická struktura dat (principy, porovnání, příklady).

Externí zařízení. Uživatelská příručka

Bootkity v teorii a praxi. Martin Dráb martin.drab@ .cz

SNAPARC Stahování archivů z řídicích stanic

Knihovna XmlLib TXV druhé vydání říjen 2012 změny vyhrazeny

Elektronické záznamové zařízení EZZ 01

Slovník pro Acronis True Image 2017

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění

Tick JEDNOTKA PRO PRÁCI SE SYSTÉMOVÝM ČASOVAČEM. Příručka uživatele a programátora

Ing. Igor Kopetschke TUL, NTI

- kvalitní dokumentace k SW je vyžadovaným STANDARDEM. vzájemná provázanost SW (IS) ve velkých společnostech. aktuální přehledná srozumitelná

Proudový zdroj. Ovládací aplikace pro PC. 3/2017 ATEsystem s.r.o.

Témata profilové maturitní zkoušky

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

MIRES CONTROL s.r.o. - Příslušenství REG10. MemoryMaker. Popis ovládání. Strana 1 (celkem 16) MemoryMaker.doc

Stručná instalační příručka SUSE Linux Enterprise Server 11

ORGANIZACE A REALIZACE OPERAČNÍ PAMĚTI

Systém souborů (file system, FS)

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Uživatelská Dokumentace

BASPELIN CPM. Popis komunikačního protokolu verze EQ22 CPM EQ22 KOMPR

Vstupně - výstupní moduly

Zobrazovací jednotky a monitory

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu

TP /b P - POPIS ARCHIVACE TYP Měřič INMAT 57 a INMAT 57D

Základní deska (1) Označována také jako mainboard, motherboard. Deska plošného spoje tvořící základ celého počítače Zpravidla obsahuje:

Zvyšování kvality výuky technických oborů

Motorola Phone Tools. Začínáme

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

POPIS DRIVERU pro připojení modulu měření teploty, vlhkosti a nastavení žádané teploty EATON/Moeller Room Control CRCA-00/05 k systému Control4

Dílčí projekt: Systém projektování textilních struktur 1.etapa: tvorba systému projektování vlákno - příze - tkanina

CA21 PŘÍRUČKA UŽIVATELE

Nástroj Setup. Uživatelská příručka

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

Technologické postupy práce s aktovkou IS MPP

Popis funkcí a parametrů programu. Reliance External communicator. Verze 1.5.0

Aktualizace softwaru Uživatelská příručka

Transkript:

JEDNOTKA PRO PRÁCI S RAM, ROM A FLASH DISKY Příručka uživatele a programátora SofCon spol. s r.o. Střešovická 49 162 00 Praha 6 tel/fax: +420 220 180 454 E-mail: sofcon@sofcon.cz www: http://www.sofcon.cz Verze dokumentu 2.00

Informace v tomto dokumentu byly pečlivě zkontrolovány a SofCon věří, že jsou spolehlivé, přesto SofCon nenese odpovědnost za případné nepřesnosti nebo nesprávnosti zde uvedených informací. SofCon negarantuje bezchybnost tohoto dokumentu ani programového vybavení, které je v tomto dokumentu popsané. Uživatel přebírá informace z tohoto dokumentu a odpovídající programové vybavení ve stavu, jak byly vytvořeny a sám je povinen provést validaci bezchybnosti produktu, který s použitím zde popsaného programového vybavení vytvořil. SofCon si vyhrazuje právo změny obsahu tohoto dokumentu bez předchozího oznámení a nenese žádnou odpovědnost za důsledky, které z toho mohou vyplynout pro uživatele. Datum vydání: 08.01.2004 Datum posledního uložení dokumentu: 08.01.2004 (Datum vydání a posledního uložení dokumentu musí být stejné) Upozornění: V dokumentu použité názvy výrobků, firem apod. mohou být ochrannými známkami nebo registrovanými ochrannými známkami příslušných vlastníků. Copyright 2003, SofCon spol. s r.o., Jan Hvozdovič

Obsah : 1.O dokumentu 5 1.1. Revize dokumentu 5 1.2. Účel dokumentu 5 1.3. Rozsah platnosti 5 1.4. Související dokumenty 5 2.Termíny a definice 5 3.Úvod 6 4.Popis konstant a proměnných 7 5.Popis typů 8 6.Funkce 8 6.1. InitDiskArea 8 6.2. DestroyDiskArea 8 6.3. GetDiskParam 9 6.4. WriteSector 9 6.5. ReadSector 9 6.6. CopySector 9 7.Příklad 10

1. O dokumentu 1.1. Revize dokumentu Verze dokumentu Verze SW Autor Datum vydání 1.00 1.XX Hv První vydání. Popis změn 1.10 1.XX Tu 19.5.2003 Úprava dokumentu dle ISO9000. 2.00 2.XX Hv 05.01.2004 Zveřejněna proměnná csectorsize Zpřesnění popisu 1.2. Účel dokumentu disky. Tento dokument slouží jako popis jednotky pro práci s RAM, ROM a FLASH 1.3. Rozsah platnosti Určen pro programátory a uživatele programového vybavení SofCon. 1.4. Související dokumenty Pro čtení tohoto dokumentu není potřeba číst žádný další manuál, ale je potřeba se orientovat v používání programového vybavení SofCon. Popis formátu verze knihovny a souvisejících funkcí je popsán v manuálu LibVer. 2. Termíny a definice Používané termíny a definice jsou popsány v samostatném dokumentu Termíny a definice. file:_v0200 08.01.2004 v2.00 5 / 11

3. Úvod Jednotka poskytuje základní diskové služby pro RAM, ROM a FLASH disky. Názvy těchto disků jsou odvozeny od paměti, ve které jsou vytvořeny a souhrnně se nazývají rozšířenými disky, protože jsou vytvořeny především v paměti nad 1MB viz dále. Data z nich mohou být čtena i zapisována, např. archivy dat z výrobního procesu, definice obrazovek, konstant aj. Poskytované služby, pracují s blokem dat, který se nazývá se sektor a má velikost 512B. Jednotlivé disky lze charakterizovat následujícím způsobem: RAM disk je vytvořen v paměti RAM a jeho obsah je zálohován baterií a lze jej měnit bez omezení. FLASH disk je vytvořen v paměti FLASH a jeho obsah lze měnit, ale počet zápisů do jednoho sektoru je zpravidla dán technologickými možnostmi paměti FLASH, max. 10000. ROM disk je vytvořen v paměti ROM a je pouze pro čtení. Jeho obsah je určen pevně při programování paměti v programátoru. Rozhraní rozšířených disků poskytuje pevně daný počet sektorů podle osazených pamětí a konfigurační tabulky v BIOS. Podle použitého čísla sektoru se přistupuje k patřičnému disk, viz obrázek. 0 1023 2047 4095 RAM disk ROM disk FLASH disk Příklad sektorů poskytnutých rozhraním rozšířených disků K základním službám rozhraní, které musí aplikace vždy volat, patří procedury InitDiskArea a GetDiskParam. Procedura InitDiskArea provede inicializaci řídicích struktur určujících počty sektorů pro jednotlivé disky. Procedura GetDiskParam vrátí strukturu, ve které jsou uloženy hodnoty prvního sektoru a počet sektorů pro jednotlivé typy disků. Podle těchto mezí se pak určuje přístup k jednotlivým diskům (RAM, ROM a FLASH) u služeb WriteSector, ReadSector a CopySector provádějících čtení, zápis a kopírování sektorů. Vzhledem k omezené adresaci reálného módu na 1MB a rozdělením paměťového prostoru ve stavebnici KIT ve standardní konfiguraci na 512kB pro paměť RAM a 512kB pro paměť ROM(FLASH) je v diskovém prostoru této jednotky také adresována paměť RAM nebo ROM(FLASH), která přesahuje 512kB a paměti v patici HIGH při 8b přístupu. (Pozn.: Pojem 8b přístup je podrobně popsán v manuálu KIT386EXR) Základní rozdělení paměťového prostoru mezi paměť RAM a ROM(FLASH) lze změnit pomocí konfigurační tabulky. (Pozn.: Práce s konfigurační tabulkou je popsána v manuálu RTD a popis tabulky je v manuálu BIOS 386EXR) Pozn.: V aplikaci, která používá rozšířené disky by se neměl používat chráněný režim a pracovat s A20 jinak může dojít k poškození dat, případně k chybovým hlášením při vykonávání výše uvedených služeb. file:_v0200 08.01.2004 v2.00 6 / 11

4. Popis konstant a proměnných cverno = např. $0251; { BCD formát } cver = např. '02.51,07.08.2003'; Číslo verze jednotky v BCD tvaru a v textové podobě včetně datumu změny. csectorsize = 512 proměnná určuje velikost sektoru, která je dána typem paměti a přístupu (8/16b). Tzn. tato jednotka podporuje paměti FLASH - AT29C010, AT29C020 a AT29C040A. IOResult : Byte = 0 proměnná obsahuje stav poslední operace s disky. Konstanty popisující stav poslední operace s rozšířenými disky: _OK = 0; operace proběhla bez chyby _FatalErr = 255; operace proběhla s chybou, kterou nelze blíže určit _MemoryErr = 1; struktury pro práci s rozšířenými disky nemohly být vytvořeny pro nedostatek paměti. _A20Err = 2; při provádění operace s rozšířenými disky bylo zjištěno nastavení A20. _CPUErr = 3; jednotka je určena pouze pro procesor typu 386 a vyšší. _SectorErr = 4; neplatné číslo sektoru. Číslo sektoru je mimo rozsah rozšířených disků. _WriteErr = 5; sektor nebyl zapsán. (možné poškození paměti) _ReadErr = 6; sektor nebyl přečten. (možné poškození paměti) _CopyErr = 7; sektor nebyl přečten. (možné poškození paměti) _FlashManErr = 8; neplatná konfigurační tabulka. _FlashTypeErr = 9; neplatná konfigurační tabulka. _GetParamErr = 10; poškozená nebo neinicializovaná struktura pro práci s rozšířenou pamětí. _DskStrucErr = 11; poškozená nebo neinicializovaná struktura pro práci s rozšířenými disky. file:_v0200 08.01.2004 v2.00 7 / 11

5. Popis typů Typ tsectparam slouží k předávání informace o prvním sektoru a počtu sektorů, který přísluší k danému typu disku. tsectparam = record FirstSector : LongInt; SectorCount : LongInt; Typ tdiskrecord, pdiskrecord slouží k předávání informace o všech typech disků. Jednotlivé položky pak obsahují informace o prvním sektoru a počtu sektorů pro daný disk. Pomocí těchto mezí se při práci s disky (zadává se sektor) určuje typ disku tj. paměti. 6. Funkce pdiskrecord = ^tdiskrecord; tdiskrecord = record RAM : tsectparam; ROM : tsectparam; FLASH : tsectparam; 6.1. InitDiskArea Procedura provede inicializaci struktur pro práci s rozšířenými disky. Při jejich inicializaci je použita konfigurační tabulka v BIOSu, která lze v případě uložení BIOS v paměti FLASH modifikovat pomocí RTD. Pokud je konfigurační tabulka neplatná pro osazené typy pamětí (použit Default mode při zapnutí KIT386EXR), může při pokusu o zápis nebo čtení z rozšířeného disku dojít k restartu celého systému. Proto je důležité vždy, před vlastním spuštěním aplikace pracující s rozšířenými disky, nastavit správně všechny propojky. procedure InitDiskArea; žádný V proměnné IOResult je uložen stav operace. 6.2. DestroyDiskArea Procedura provede uvolnění všech struktur, které jsou používány při práci s rozšířenými disky. procedure DestroyDiskArea; žádný Nastaví IOResult na _OK. file:_v0200 08.01.2004 v2.00 8 / 11

6.3. GetDiskParam Procedura nastaví do zadané struktury adiskparam popis rozšířených disků, viz 5, Popis typů. Tento popis poté slouží k určení prvního a posledního sektoru vybraného disku, viz výše. procedure GetDiskParam(aDiskParam:pDiskRecord); žádný adiskparam je ukazatel na strukturu tdiskrecord obsahující čísla sektorů určujících rozdělení disků. V proměnné IOResult je uložen stav operace. 6.4. WriteSector Procedura provede zápis bloku dat z adresy aaddr o délce 512B a na sektor asectnumber. Typ disku je určen číslem sektoru. Pozn.: Rozdělení čísel sektoru mezi jednotlivé disky se provede v proceduře InitDiskArea. procedure WriteSector(aAddr:Pointer;aSectNumber:LongInt); aaddr adresa bloku dat o délce 512B, který je zapsán do paměti spravované touto jednotkou (zpravidla nad 1MB). asectnumber číslo sektoru, na který je zapsán blok dat. V proměnné IOResult je uložen stav operace. 6.5. ReadSector Procedura přečte blok dat o velikosti 512B ze sektoru asectnumber a data zapíše na adresu aaddr. Typ disku je určen číslem sektoru. Pozn.: Rozdělení čísel sektoru mezi jednotlivé disky se provede v proceduře InitDiskArea. procedure ReadSector(aSectNumber:LongInt; aaddr:pointer); asectnumber aaddr číslo sektoru, z kterého je přečten blok dat. adresa, na kterou jsou zapsána přečtená data o velikosti 512B. V proměnné IOResult je uložen stav operace. file:_v0200 08.01.2004 v2.00 9 / 11

6.6. CopySector Procedura přečte blok dat ze sektoru asectsource a zapíše ho na sektor asectdest. Procedura přenáší data pomocí pomocného bufferu, což jí umožní provádět operace čtení a zápisu sektorů na stejném disku. Pozn.: Rozdělení čísel sektoru mezi jednotlivé disky se provede v proceduře InitDiskArea. procedure CopySect(aSectSource:LongInt; asectdest:longint); 7. Příklad asectsource asectdest číslo sektoru, z kterého je přečten blok dat. číslo sektoru, do kterého se provede zápis přečteného bloku dat. V proměnné IOResult je uložen stav operace. Příklad ukazuje použití jednotky pro práci s rozšířenými disky uses,...; var apole:array [0..cSectorSize-1] of Byte; { datova oblast } adiskarea:tdiskrecord;... { definice vlastnich typu, konstant, promennych, funkci a procedur } InitDiskArea; { inicializace struktur jednotky } if IOResult<>_OK then... { obsluha chyby } GetDiskParam(@DiskArea); if IOResult<>_OK then... { obsluha chyby} { vypis cisel prvniho sektoru a poctu sektoru jednotlivych typu rozsirenych disku } if IOResult=_OK then with adiskarea.ram do Writeln('RAM: '); Writeln('... First sector : ',FirstSector); Writeln('... Sector count : ',SectorCount); with adiskarea.rom do Writeln('ROM: '); Writeln('... First sector : ',FirstSector); Writeln('... Sector count : ',SectorCount); file:_v0200 08.01.2004 v2.00 10 / 11

with adiskarea.flash do Writeln('FLASH: '); Writeln('... First sector : ',FirstSector); Writeln('... Sector count : ',SectorCount); { priklad zapisu bloku dat na sektoru cislo 100 } { Pri rozdelení cisel sektoru mezi jednotlive typy rozsirenych disku nasledujicim zpusobem: RAM : 0.. 1023 ( FirstSector = 0; SectorCount = 1024) ROM : 0.. 0 ( FirstSector = 0; SectorCount = 0) FLASH : 1024.. 2047 ( FirstSector = 0; SectorCount = 1024 } Pak bude zapis proveden na RAM disk, v pripade zapisu na sektor cislo 1050 by doslo k zapisu na FLASH disk. } WriteSector(@aPole,100); Writeln('Stav zapisu : ',IOResult); if IOResult<>_OK then... { obsluha chyby } { priklad cteni sektoru cislo 100 } ReadSector(100, @apole); Writeln('Stav cteni : ',IOResult); if IOResult<>_OK then... { obsluha chyby } { priklad kopirovani mezi sektory 0 a 300 na RAM disku} CopySector(0,300); Writeln('Stav kopirovani : ',IOResult); if IOResult<>_OK then... { obsluha chyby }... file:_v0200 08.01.2004 v2.00 11 / 11