Een print. Hardware testen door middel van software.

Slides:



Advertisements
Verwante presentaties
Extern-Geheugen Henry van Aarssen 2009/2010 Extern-Geheugen
Advertisements

Test computertermen: Deze test gaat over de vorige les. Je krijgt steeds een vraag te zien waarop je het juist antwoord moet aanklikken. Is je antwoord.

PROS2 Les 13 Programmeren en Software Engineering 2.
Hoe werkt een rekenmachine?
Serieel naar parallel omzetting
Embedded systemen Embedded software.
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 3(2): Instructietypen.
Blok 7: netwerken Les 6 Christian Bokhove. Internet Protocol - IP  De Internet Service verschaft een dienst die: – Vebindingsloos is – Onbetrouwbaar.
Hardware (1) SGDB Informatica.
Par. 3.1 Computers zijn overal
Hardware (1) NSG Informatica.
Week 1: overzicht computersysteem-organisatie
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 4(2): Digitale.
Extern Geheugen Lol.
BESTURINGS SYSTEMEN Vincent Naessens.
1 Device driver. 2 Hardware Operating Systeem Prog1Prog2 System calls/ API Device drivers Gebruiker afschermen van de hardware.
bus DE BUS Controller: de electronica die het apparaat bestuurd Transport van bits over de bus.
Week 2: Microarchitectuur niveau ALU en datapad
Computerarchitectuur
automatiseringselektronica
Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.

Hoofdstuk 6: Controle structuren
De processor.
De grafiek van een lineair verband is ALTIJD een rechte lijn.
Exploratie van de ontwerpruimte 3. Prototypes, emulatie en simulatie Prof. dr. ir. Dirk Stroobandt Academiejaar
Instructie Programmeren Task 5
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 1(2): overzicht.
Geheugenbeheer ICT Infrastructuren hoofdstukken 7 en 8.1.
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
Het verbeteren van een modulaire verificatie techniek voor aspect georiënteerd programmeren Alfons Laarman.
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
Bluetooth Communicatie tussen computer en Brick Computer zet de connectie op, Brick wacht Enkel communicatie van de Brick naar de computer Lejos API: NXTConnecion.
Hoe werkt een rekenmachine?
Assembly-taal Namen:Danny van Waes Rohan Schenk Klas:EM4 Docent:Dhr. Ing. JA Verhage Embedded systems.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 4 - onderwerpen Multiplexen.
SPAM SPAM. Heeft u veel SPAM? Kan uw provider het niet tegenhouden?
Power PC Assembler. Assembler toolkit bevat Assembler zelf Linkerlibrarian.
Event Handling in Embedded Systems.  Wat is een event?  Welke events zijn het meest “time-critical”?  Welke toestand wordt door de CPU opgeslagen?
Klik ergens op het witte deel van deze pagina om verder te gaan
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (2)
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Digitale logica niveau: “systeem-architectuur” cpu-chips.
<HTML> <HEAD> <TITLE>Eerste script </TITLE>
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
Les 2: Interactie in je space door middel van klikbare objecten en actionscript. Wat is actionscript en programmeren?
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
1 Introductie next MCT - Programmeren 2 © S. Walcarius Waarom java? programma machinetaal (.exe) compilen platformspecifiek Een exe programma.
Spreadsheets. Testen. Met spreadsheets.. |  Spreadsheet, het meest gebruikte (test) tool in de wereld …  Aan de slag: Spreadsheet PRA  Risico’s en.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 4 - onderwerpen DB038 hardware : luidsprekertje.
Onze doelen en visie in beeld
Codetuts Academy Les 6 Module 2a Php Fundamentals 1.
Inhoud Breuken (optellen, aftrekken, vermenigvuldigen en delen).
Programmeren. Wat is programmeren? Het schrijven van opdrachten voor de processor De processor “spreekt” machinetaal:
Milo van der Zee
Programmeren.
Berekening van de Orde Van een Algoritme
Programmeren met Reeksen
Gevorderde EV3 PROGRAMMEER LES
Gevorderde programmeer Les
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
3 Hardware 3.1 De processor en intern geheugen
De grafiek van een lineair verband is ALTIJD een rechte lijn.
M5 Datacommunicatie Netwerklaag
Vergelijkingen van de vorm x + a = b oplossen
Vergelijkingen van de vorm x + a = b oplossen
Python – For loop + strings
Transcript van de presentatie:

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

Ontbreken van geheugen chips Databus Adresbus CPU MEMORY

Ontbreken van geheugen chips oSommige 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.

Ontbreken van geheugen chips 1.Schrijf waarde naar geheugenadres1 Lees waarde van geheugenadres1 2.Schrijf waarde naar geheugenadres2 Lees waarde van geheugenadres2 Geheugentest zou er als volgt uitkunnen zien Niet aangesloten geheugen chip 2 de ingelezen waarde is gelijk aan geschreven waarde

Ontbreken van geheugen chips 1.Schrijf waarde1 naar geheugenadres1 2.Schrijf waarde2 naar geheugenadres2 3.Lees waarde1 naar geheugenadres1 4.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

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

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.

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.

Ontwerpen van een test strategie 3 individuele testen 1. Device test 2. Databus test

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.

Device test 1. Doe een increment test 2.Doe een decrement test Incrementele data patroon is adequaat en eenvoudig te berekenen

Voorbeeld: Breedte databus is 8 bits 64 kbyte testen Meest 16 rechtse bits

Device test Memory offsetBinary valueInverted value 00h h h h …….. ……. 0FEh FFh

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; }

/*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:

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

Bevestiging (confirmation) technieken Valideren van geheugen inhoud - Checksum - Cyclic redundancy checks (CRC)

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

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.

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.

Cyclic Redundancy checke Is een speciaal soort checksum test Werkt met een stream van bits die door een polynoom van k termen gedeeld wordt. De rest wordt ervan afgehaald. v.b. polynoom: X 16 +X 15 +X 2 +1

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.

De databus (voorbeeld 8 bits) Databus Adresbus CPU Controle lijnen MEMORY D7D7 D6D6 D1D1 D0D0

Foute verbindingen

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.

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 2 n 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

Databus test Schrijf de eerste waarde naar het geheugen Controleer de waarde door het terug te lezen Schrijf de tweede waarde Etc.

/******************************************************** * *Function: memTestDataBus() * *Decription: Test the data bus wiring in a memory region by * performing a walking 1’s test at a fixed address * within that region. The address (and hence the * memory region) is selected by the caller. * * Returns: 0 if the test succeeds * A nonzero result is the first pattern that failed * *********************************************************/

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;