Juni 2018

  • Onderwerp starter Onderwerp starter Verwijderd lid 59
  • Startdatum Startdatum
  • Reacties 11
  • Weergaven 1026
Ik was liever iets verder geweest, maar er zijn wel wat leuke dingen te melden.

Zoals ik in de post van vorige maand als reactie had gezegd 'waren we eindelijk klaar voor drive management', maar toen ik ermee bezig was bleek er een foutje te zitten in de PCI functionaliteit (hoe we bepaalde info verwerken), dit is een redelijk klein foutje maar ik heb er nog niks aan kunnen doen helaas. PCI is erg belangrijk voor AHCI (SATA drive management). Ik moet even kijken hoe we dit het handigst gaan oplossen, maar ooit komt het goed.

Ja, ik heb dus vrij weinig... Ik heb wel een plan voor de komende maanden: de website van FeatherCode moet een keer verbeterd worden maar dat komt in de zomervakantie samen met (hopelijk) een groot deel van drive management. Dus dat zijn de plannen voor de komende maanden, maar dit is een multi-maand plan.

En... BirdOS heeft een nieuw logo (zie hieronder)! Weg met die rare B met dropshadow.
Wat wel leuk is is dat dit logo tot stand is gekomen door een tomaat. Iedereen die wel eens een tomaat doorgesneden heeft weet wel dat daar waar het stokje aan vast hoort het allemaal iets steviger en witter is, dit wordt in stroken minder. Toevallig was het zo dat dat stukje in een driehoek uitgesneden was. De tomaat is verantwoordelijk geweest voor zowel de indeling van het logo als de vorm.




 
Ik kom er letterlijk nu pas achter dat de titel van dit topic 'juni 2018' had moeten zijn in plaats van mei 2018.
 
@Abraham54 is het mogelijk (misschien voor jou) de titel van dit topic te veranderen naar 'Juni 2018'?
 
Done.
 
Dat is dan weer een stap vooruit.
 
Het PCI probleem was het resultaat van verkeerd omrekenen van opgevraagde resultaten. Hierbij gaat het om het volgende:

De kernel vraagt informatie op van een PCI apparaat via de PCI I/O poort, de opgevraagde informatie (inmiddels ontvangen door de kernel) betreft 32 bits. De 32 bits kunnen onderverdeeld zijn in WORDS (16 bits) of BYTES (8 bits). Om te weten te komen of je het correcte apparaat hebt moet je 2 BYTES controleren.

De kernel probeerde dit te doen met specifieke aparte functies, PCIgetBaseClass() en PCIgetSubClass(), die de 32 bits probeerde om te rekenen naar de opgevraagde BYTE die ze moesten teruggeven aan de kernel. De BaseClass, of officieel genaamd de Class, geeft aan wat voor soort apparaat het is (bijvoorbeeld Ethernet controller of Mass Storage controller). De SubClass geeft weer de specifieke functie aan (zoals bij de Mass Storage controller onder andere Floppy Disk of ATA).

De twee functies waren echter niet in staat om dit correct om te rekenen waardoor de kernel niet het correcte apparaat kon vinden.

Alle functies die deze, of een soortgelijke taak hadden zijn ingewisseld voor de twee functies getBYTE() en getWORD(), die weer overkoepeld zijn door de functie getPCIval().

De getPCIval functie krijgt doorgegeven wat de ontvangen informatie is (uint32_t address), of de kernel een WORD of een BYTE wilt weten (bool BorW) en welke BYTE of WORD (uint8_t start). Die geeft dan de informatie address en start door aan de juiste functie. Om te beoordelen welke functie juist is om te gebruiken gebruikt de functie BorW (FALSE is BYTE en TRUE is WORD). Deze benaderingswijze blijkt tot nu toe correct te werken.
 
Waarom? Verklaar je nader.
 
De kernel is op dit moment niet in staat om op correcte wijze een PCI apparaat te vinden. Hoewel we nog bezig zijn met onderzoek naar het probleem, hebben we het volgende probleem ondervonden:

De kernel is in de veronderstelling dat, wanneer het zoekt naar een SATA apparaat, het een apparaat kan vinden. Zelfs wanneer er geen SATA apparaten aanwezig zijn. Het apparaat dat gevonden wordt bevindt zich op bus 1, apparaat 0.

Wanneer de kernel de opdracht krijgt om een IDE apparaat (of welk ander dan ook) op te sporen, geeft het aan dat het er geen kan vinden.
Hierbij kan het mogelijk gaan om een rekenfout door het systeem.

De fout die gemaakt is tijdens het testen is dat er alleen getest is voor een SATA apparaat. Dit was een fout gemaakt door mij. Bij nader testen is gebleken dat het systeem niet in staat was enige apparaten te vinden op de juiste wijze.

Inmiddels hebben we, om ons te ondersteunen bij het onderzoek, er een tweede Developer bijgehaald. Hij heeft meer ervaring met besturingssystemen en weet hoe PCI werkt.

Tot op heden hebben hij en ik het probleem nog niet kunnen vinden. Ondertussen zijn we bezig met het kijken naar mogelijke andere manieren om dit probleem te onderzoeken.

Het spijt ons voor de misinformatie en we houden je up-to-date over het onderzoek. Ik kan helaas geen uitspraak doen over wanneer dit probleem verholpen is.
 
Laatst bewerkt door een moderator:
Ik kan mij ook heel goed voorstellen dat ook jij last hebt gehad van de lange periode met hitte en de warme nachten met weinig slaap.
 
Terug
Bovenaan Onderaan