RISCOS 'POST'

over hoe Charles Deckers het knipperen van een lampje volgt

RISCOS 3.0 t/m 3.7 voert na het inschakelen van de machine een hardware-test uit. De z.g. Power On Self Test (POST). Of dit ook zo is bij RISCOS 4 weet ik niet; maar het lijkt mij wel aannemelijk. Misschien weet ik dat over een paar maanden zodra ik ben overgestapt naar RO4.

Indien de computer geen fatale hardware-fout heeft waardoor hij helemaal niets meer doet, verschijnt na het inschakelen van de netspanning op de computer eerst een paars scherm op de monitor (monitor tijdig van te voren ingeschakeld).

Dit paarse scherm geeft aan dat de POST is gestart.

Tijdens het eerste deel van de POST worden summier de ROM's en DRAM's gecontroleerd. Verder worden de IOC (Input/Output controller) en de VIDC (video en geluid controller) geïnitialiseerd. Indien tijdens het eerste gedeelte van de POST de computer vast loopt is er een fatale fout, meestal in 't I/O-gedeelte. Wat je dan moet doen is mij niet bekend. Na afloop van dit eerste deel verandert de kleur op het beeldscherm van paars naar blauw.

In het tweede gedeelte van de POST wordt een uitgebreidere DRAM test uitgevoerd en de VIDC en IOC worden opnieuw gecontroleerd. Aan het eind van dit tweede gedeelte wordt het beeldscherm weer paars.

In het derde gedeelte van de POST wordt gecontroleerd of de ARM-processor werkt (aanwezig is?), mits door de POST geen 'fout' in het DRAM is gesignaleerd.

Als laatste actie van de POST verandert de kleur van het beeldscherm van paars naar groen indien geen fouten zijn geconstateerd in de hardware, gaat het ledje van de floppy-drive slechts éénmaal branden en start de machine door naar het RISCOS welkomscherm te gaan en daarna de !Boot uit te voeren.

Indien ergens iets mis is met de hardware (ik betwijfel of podules worden gecontroleerd) verandert de kleur van het beeldscherm van paars naar rood (ik heb ook wel eens een zwart scherm gezien met een rode rand) en gaat het ledje op de floppy-drive 32 keer knipperen (8 groepjes van 4 maal). Na korte tijd wordt het beeldscherm zwart en de computer hangt zich op.

Aan de lengte van het oplichten van het floppy-ledje kun je zien of 'n bepaald gedeelte van de POST wel goed of niet goed is verlopen. Kort oplichten is O.K.; lang oplichten geeft aan dat er een fout is. De betekenis is als volgt:

flashes 1 t/m 12 altijd kort (niet gedefinieerd in de POST)

led flash 13: reserved

led flash 14: long (D)RAM test failed

led flash 15: (D)RAM control line failure

led flash 16: CMOS unreadable

led flash 17: VIDCsound (Sirq) timing failure

led flash 18: VIDCvideo (Virq) timing failure

led flash 19: reserved

led flash 20: IOC register test failed (alleen Risc PC)

led flash 21: MEMC protection failed (alleen Risc PC)

led flash 22: MEMC CAM mapping failed (alleen Risc PC)

led flash 23: ROM failed checksum test

led flash 24: CMOS RAM checksum error

led flash 25: VRAM present (alleen Risc PC?)

led flash 26: Integrated I/O controller fitted

led flash 27: Long memory test disabled (via 'n bit in CMOS)

led flash 28: ARM3 fitted (or ARM ID detected for RiscPC)

led flash 29: Long memory test performed

led flash 30: Self test due to test link

led flash 31: Self test due to interface hardware

led flash 32: Self test due to power on

De laatste acht (led flash 25 t/m 32) zijn z.g. status bits. De belangrijke zijn die welke aangeven dat er iets mis is, n.l. de flashes 13 t/m 24. Bij bepaalde fouten in de hardware stopt de machine voortijdig of begint niet eens met de POST. Welke fouten dit zijn? Ik ga ze bewust creëren, voordat ik de gevolgen hiervan overzie.

De POST-sequence van Risc OS 3,0; 3,10 en 3,11 wordt uitgevoerd in een 15KHz schermmode (TV-mode, Monitortype 0 en Sync 1; het manual zegt echter Sync 0). Dus niet zichtbaar op 'n VGA monitor.

Ik verwacht dat de RiscPC de POST uitvoert in 'n VGA-mode. Dit kan ik echter niet testen omdat ik 'n High-Resolution monitor heb (Hor. freq. 60 KHz) die pas beeld geeft nadat de monitor definitie file is geladen van de harddisk.

Indien de computer gewoon goed werkt, volgen de opstartkleuren elkaar zo snel op dat dit niet of nauwelijks te zien is. Bij 'n A300 nog wel, maar niet meer op 'n RiscPC.

De tijdsduur tussen twee opeenvolgende keren oplichten van het floppy-ledje bedraagt ongeveer één seconde. Ik heb verscheidene keren geprobeerd met een potloodje in de hand de volgorde van 'korte' en lange' lichtpulsjes op papier te krijgen. Dat bleek geen succes. Halverwege de serie van 32 liep ik achter.

Vervolgens een cassette-recorder met microfoontje erbij gehaald en maar roepen "lang", "kort", "kort", "kort" ,"kort", "lang Oh nee dat moet een korte zijn", enz. Je begrijpt het al. Ook geen bevredigende methode. Na veel oefenen bleken het er steeds te veel of te weinig te zijn!

De volgende stap:

Meten is weten

M.b.v. een LDR (lichtgevoelige weerstand), een gewone weerstand, 'n basic-programmaatje en de ADC-ingang van 'n Electron met PLUS1. De LDR met een wasknijper en 'n stukje tape tegen het floppy-ledje gefixeerd. Dat was geen geweldig succes, de responsie-tijd van de LDR was te traag. Verder had ik veel problemen met het voldoende afschermen van de LDR tegen omgevingslicht. Mijn windjack moest er op 'n gegeven moment zelfs aan te pas komen.

In plaats van de LDR een paar fotodiodes uit de rommelbak geprobeerd, maar dat waren vermoedelijk alleen (infra)-rood gevoelige diodes.

Uiteindelijk de knoop maar doorgehakt en het aanvankelijke plan om een opto-coupler te verbinden met de pootjes van de LED in de floppy-drive en de ADC-ingang (analoog to digital converter) van de Electron. En zowaar: een fantastisch goede registratie van het periodiek oplichten van het floppy-ledje. Geen last van omgevingslicht en geen probleem met traagheid van reageren.

Omdat de computer toch open moet als zich dergelijke problemen voordoen, is het -denk ik- geen probleem om tijdelijk twee draadjes te solderen aan de pootjes van het LEDje in de floppy-drive. Er kan niets mis gaan zolang je maar niet de soldeerbout gebruikt van de loodgieter die zojuist de dakgoot heeft gerepareerd en de netsteker van de computer uit het stopcontact trekt tijdens het solderen van deze draadjes.

Met een universeelmeter heb ik bepaald wat de anode (+) van het ledje in de floppydrive was. Even de computer aanzetten. Dit punt van het ledje komt dan via een draadje en 'n weerstand van 470 Ohm aan de anode van de fotodiode (pen 1) in de opto-coupler CNY 57. Het andere draadje tussen de kathode van het ledje en pen 2 (kathode) van de fotodiode in de opto-coupler.

Het schemaatje hiernaast laat verder zien hoe de ADC-ingang van de PLUS1 op de opto-coupler aangesloten moet worden. De basis van de fototransistor in de opto-coupler wordt nergens op aangesloten.

Op sommige floppydrives zit de kathode van het ledje aan aarde. Een simpele spanningsdeler met twee weerstandjes is dan al voldoende om de ADC-ingang van de PLUS1 aan te sturen. Ik heb echter voor 'safety' gekozen door de opto-coupler te gebruiken. Er is dan gegarandeerd een elektrische scheiding tussen de floppy-drive (in dit geval 'n A5000) en de ADC-ingang van de PLUS1. Misschien is het ook mogelijk om het signaal 'MOTOR ON' in de flatcable (pen 16) naar de floppy-drive te gebruiken in plaats van het solderen van twee draadjes op de floppy-led.

Ik heb dat niet uitgezocht.

Om de maximale snelheid van de Electron te benutten laat ik tijdens het meten van de spanning op de ADC-ingang van de PLUS1 de Electron werken in schermmode 4. Omdat ik nadat de 32 keer oplichten is geregistreerd een totaal overzicht hiervan op de monitor van de Electron wil hebben, claim ik bij het opstarten van het basic-programma de geheugen indeling van de Electron zodanig dat ik voor het tonen van dit overzicht kan omschakelen naar schermmode 3. Dat gebeurt in regel 40 van het programma. Om de tijdsduur van het oplichten van het floppy-ledje te registreren moet de ADC-ingang op de PLUS1 worden geactiveerd. Dat doe je met *FX 16,1 en *FX 17,1.

De PROCled_off is actief zolang het LEDje brandt en houdt er mee op op het moment dat het LEDje dooft. De tijdsduur dat het floppydrive ledje brandt wordt gemeten en opgeslagen in een array. Evenzo de spanning die gemeten wordt door de ADC-ingang van de PLUS1.

Nadat het ledje gedoofd is wordt PROCled_on geactiveerd (sorry voor de wat misleidende namen van deze twee PROCEDURES). De tijdsduur en de spanning op de ADC-ingang wordt weer gemeten en opgeslagen in het array. Na 32 keer oplichten van het lampje is de FOR ... NEXT loop klaar. Dan wordt de PROCshow gestart. In regel 350 schakelt de electron over naar schermmode 3, waardoor ik op een overzichtelijke manier alle gemeten waarde krijg te zien. Zie de listing.

In plaats van een Electron/PLUS1 kan natuurlijk ook 'n BBC worden gebruikt, die heeft namelijk ook 'n ADC-ingang. Voor de duidelijkheid van afdrukken in het clubblad heb ik het programma iets aangepast zodat dit beter te lezen valt. Overbodige franjes heb ik weggelaten. Iedereen die er behoefte aan heeft om dit programma te gebruiken kan het naar eigen behoefte aan passen.

Ik heb bovenstaande informatie ontleend aan:

- Application Note 225 (2-aug-1993)

- FAQ 4.3 (21-apr-1998)

- Technical Reference Manual Risc PC met ARM 610 (sept. 1994).

De App. Notes (soms met enige omissies) zijn o.a. te vinden op:

- Acorn User CD 1 t/m CD4

- Acorn CD nov. '97

- AcornWorld CD 1997

- StrongArm CD

- RiscDisc 3 en vermoedelijk op nog andere CD's.

De FAQ (Frequently Asked Questions) heb ik een hele tijd geleden gedownload van het UniCorn BBS.

De App. Notes en de FAQ's bevatten zeer veel informatie, die niet te vinden is in de gebruikshandleidingen bij de respectievelijke computers. Als je ze allemaal uitprint heb je een dikke ordner vol met wetenswaardige informatie. Zover ik weet worden de (Acorn) Application Notes niet meer ge-updated (helaas!).

Als laatste rest mij nog te vertellen wat de aanleiding voor dit verhaaltje is. Ik probeer het geheugen van een A5000 met 2MB op het moederbord en 2MB op een expansionkaart uit te breiden naar > 4MB. Tijdens een van de stapje voor stapje aangebrachte wijzigingen aan de A5000 hing de machine zich op. Hij was wel zo vriendelijk om middels het oplichten van het floppy-ledje te laten zien in welke richting ik moet gaan zoeken om dat probleem op te lossen. Vandaar dat ik mij o.a. in de POST-sequence heb moeten verdiepen en de behoefte ontstond om op een betrouwbare manier het oplichten van het floppy-ledje vast te leggen. Dat laatste is goed gelukt, de geheugenuitbreiding echter nog niet. Het verhaal over de geheugenuitbreiding van de A5000 hebben jullie nog te goed. Mits het lukt!

Charles Deckers (040-2052238;

AcoNet 77:8500/504.15)