een print. hardware testen door middel van software

29
Een print

Upload: saskia-dijkstra

Post on 04-Jun-2015

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Een print. Hardware testen door middel van software

Een print

Page 2: Een print. Hardware testen door middel van software

Hardware testen

door middel van software

Page 3: Een print. Hardware testen door middel van software

Geheugen testen

Hoofdstuk 14,

Programming embedded systems

With C and GNU Development tools

Michael Barr& Antony Massa

O’Reilly

Page 4: Een print. Hardware testen door middel van software

Ontbreken van geheugen chips

Databus

Adresbus

CPU

MEMORY

MEMORY

Page 5: Een print. Hardware testen door middel van software

Ontbreken van geheugen chips

o Sommige geheugen testen:schrijven en lezen onmiddelijk daarna.

• Een ontbrekende geheugen chip hoeft niet altijd geselecteerd te worden

Door de capacitaire werking kan het zijn dat de waarde van het schrijfen nog op de lijn aanwezig is wanneer er gelezen wordt.

Page 6: Een print. Hardware testen door middel van software

Ontbreken van geheugen chips

1.Schrijf waarde naar geheugenadres1Lees waarde van geheugenadres1

2.Schrijf waarde naar geheugenadres2Lees waarde van geheugenadres2

Geheugentest zou er als volgt uitkunnen zien

• Niet aangesloten geheugen chip 2

• de ingelezen waarde is gelijk aan geschreven waarde

Page 7: Een print. Hardware testen door middel van software

Ontbreken van geheugen chips

1.Schrijf waarde1 naar geheugenadres12.Schrijf waarde2 naar geheugenadres23.Lees waarde1 naar geheugenadres14.Lees waarde2 naar geheugenadres2

Geheugentest zou er als volgt uitkunnen zien

• Niet aangesloten geheugen chip 2 de gelezen waarde van chip 2 is waarde 1

Page 8: Een print. Hardware testen door middel van software

Geheugenchips die fout ingeprikt zijn

Systeem zal zich gedragen alsof er een probleem is met de data en adres bus of dat een geheugenchip er niet erin zit

Een test van de data en adres lijnen en een test voor het ontbreken van geheugenchips komt het probleem vanzelf naar boven

Page 9: Een print. Hardware testen door middel van software

Ontwerpen van een test strategie

• Wees voorzichtig met het selecteren van de test data.

• Wees voorzichtig met de volgorde van de adressen.

• Deel het geheugen op in kleine testbare delen.

o Hoge test efficientie

o Hoge leesbare code

• Hoe specifieker de test des te meer informatie verkregen wordt.

Page 10: Een print. Hardware testen door middel van software

Ontwerpen van een test strategie

• Wees voorzichtig met het selecteren van de test data.

• Wees voorzichtig met de volgorde van de adressen.

• Deel het geheugen op in kleine testbare delen.

o Hoge test efficientie

o Hoge leesbare code

• Hoe specifieker de test des te meer informatie verkregen wordt.

Page 11: Een print. Hardware testen door middel van software

Ontwerpen van een test strategie

3 individuele testen

1. Device test

2. Databus test

Page 12: Een print. Hardware testen door middel van software

Device test

Test van de geheugen chip.

• Test of elke bit binnen de chip op 1 of 0 gezet kan worden.

• Makkelijk te implementeren maar moeilijk uit te voeren.

• Moet naar elke locatie geschreven en hierop gecontroleerd worden.

• Elke waarde voor de eerste helft, de geinverteerde voor de 2e helft.

Page 13: Een print. Hardware testen door middel van software

Device test

1. Doe een increment test

2. Doe een decrement test

Incrementele data patroon is adequaat en eenvoudig te berekenen

Page 14: Een print. Hardware testen door middel van software

Voorbeeld:

• Breedte databus is 8 bits

• 64 kbyte testen

Meest 16 rechtse bits

Page 15: Een print. Hardware testen door middel van software

Device test

Memory offset Binary value Inverted value

00h 00000001 11111110

001h 00000010 11111101

002h 00000011 11111100

003h 00000100 11111011

…….. …….. …….

0FEh 11111111 00000000

0FFh 00000000 11111111

Page 16: Een print. Hardware testen door middel van software

memTestDevice(volatile datum * baseAddress, unsigned long nBytes){ unsigned long offset; unsigned long nWords = nBytes / sizeof(datum); datum pattern; datum antipattern; /*Fill memory with a known pattern.*/ for (pattern = 1, offset = 0; offset < nWords; pattern++, offset++) { baseAddress[offset] = pattern; }/*Check each location and invert it for the second pass. */ for (pattern = 1, offset = 0; offset < nWords; pattern++, offset++) { if (baseAddress[offset] != pattern) { return ((datum *) &baseAddress[offset]); }

antipattern = ~pattern; baseAddress[offset] = antipattern; }

Page 17: Een print. Hardware testen door middel van software

/*Check each location for the inverted pattern and zero it. */ for (pattern = 1, offset = 0; offset < nWords; pattern++, offset++) { antipattern = ~pattern; if (baseAddress[offset] != antipattern) { return ((datum *) &baseAddress[offset]); } }

return (NULL);

} /* memTestDevice() */

Beschrijving zie: http://www.esacademy.com/faq/docs/memtest/index.htm

Page 18: Een print. Hardware testen door middel van software

Valideren van geheugen inhoud

Het maken van een geheugentest heeft niet veel zin bij ROM of hybride geheugens.

Hoewel sommige geheugens problemen kunnen optreden.

- Verkeert invoeren

Een bevestigingtest nodig

Page 19: Een print. Hardware testen door middel van software

Bevestiging (confirmation) technieken

Valideren van geheugen inhoud

- Checksum- Cyclic redundancy checks (CRC)

Page 20: Een print. Hardware testen door middel van software

Checksum

Is een manier om te bepalen of een programma goed in een non-volatile geheugen is opgeslagen.

Bereken de checksum voordat het in een geheugen gezet wordt.

Zet het programma of data in het geheugen.

Bereken opnieuw de checksum van het programma of data die opgeslagen is

Page 21: Een print. Hardware testen door middel van software

Checksum

Het berekenen van de checksum.

Eenvoudigste manier: Tel alle bytes op, negeer de carry.

Nadeel:

- Optelling van 00 bij elkaar blijft 0

- Werkt alleen wanneer 1 bit fout is.

Page 22: Een print. Hardware testen door middel van software

Checksum

Waar op te slaan:

- In routine die het geheugen checked

Nadeel:

Bij updates, checksum moet ook overschreven worden.

Oplossing: Zet checksum op een vaste plaats in het geheugen.

Page 23: Een print. Hardware testen door middel van software

Werking van flash geheugen

Lezen geen probleem.

Schrijven naar flash een aantal problemen

• Elke geheugenlocatie moet eerst ge-erased worden voordat deze herschreven kan worden.

• Oude data niet erased => het resultaat van een schrijf operatie is combinatie van oude en nieuwe waarden.

• Alleen een sector of block van een device kan per keer ge-erased worden.

• Er kan niet per byte ge-erased worden.• Het erase van oude data en het schrijven van nieuwe data is niet

uniform maar kan fabriek afhankelijk zijn.

Page 24: Een print. Hardware testen door middel van software

De databus (voorbeeld 8 bits)

Databus

Adresbus

CPU

Controle lijnen

MEMORY

MEMORY

D7

D6

D1

D0

Page 25: Een print. Hardware testen door middel van software

Foute verbindingen

Page 26: Een print. Hardware testen door middel van software

Dataline problemen

• Bits zouden stuk kunnen zijn.

• Twee of meer bits bevatten dezelfde waarde, ongeacht de gegevens worden overgedragen.

• Bit kan altijd 0 zijn.

• Bit kan altijd 1 zijn.

Bovenstaande problemen kunnen gedetecteerd worden, door de data-pinnen onafhankelijk van elkaar een 1 of een 0 te maken.

Page 27: Een print. Hardware testen door middel van software

Databus test

• Controleer of de waarde die op de bus gezet is door het geheugen goed ontvangen is.

• Test bit voot bit.

• Doe een “wandelende 1” test.

• Reduceer het aantal testpatronen van 2n naar n.

• Omdat het een databus test is, hoeft er maar naar 1 adres geschreven te worden

• Wanneer de databus gesplitst wordt zal naar elke uiteinde geschreven moeten worden

Page 28: Een print. Hardware testen door middel van software

Databus test

• 00000001• 00000010• 00000100• 00001000• 00010000• 00100000• 01000000• 10000000

Schrijf de eerste waarde naar het geheugen

Controleer de waarde door het terug te lezen

Schrijf de tweede waarde

Etc.

Page 29: Een print. Hardware testen door middel van software

datum memTestDataBus(volatile datum * address){ datum pattern;/** perform a walking 1’s test at the given address*/ for (pattern = 1; pattern != 0; pattern <<= 1) { /* write the test pattern */ *address = pattern;

/* read it back (immediately is ok for this test) */

if (*address != pattern) { return pattern; } } return 0;}

typedef unsigned char datum;