Een week verder en een week wijzer.
De week begon hoopgevend. We hadden de ontwikkelaars gevonden van de software (OSELAS-Linux) die voorgeprogrammeerd stond op het doelplatform. Via online speurwerk in feite, want dat stond in de manual nergens duidelijk aangeduid. Op de site vonden we een quickstart guide toegespitst op de I.MX27, het model van microcontroller in kwestie dus. We bezochten de irc chatroom en troffen daar enkele ontwikkelaars aan, die ons wisten te melden dat er voor de camera in de komende weken een startklare driver wordt geschreven.
Verder leek deze nieuw ontdekte bron uitgeput, behalve dan dat we er een handig kanaal bij hadden om vragen aan te stellen. Maar dan ontdekten we in de quickstart iets dat we eerst over het hoofd hadden gezien: de mogelijkheid om voorgemaakte testprogrammatjes te runnen rechtstreeks vanaf de console, in seriële verbinding met het doelplatform. Hierbij gaat het om fbtest (framebuffertest - toont een reeks van afbeeldingen op het scherm), ts_test (laat de gebruiker een crosshair rondslepen / tekenen op het aanraakscherm) en ts_calibrate (calibreert het aanraakscherm).
Hieruit leerden we dus dat de voorbeelden gebruik maken van het linux begrip framebuffer. Dit leek een zeer interessante nieuwe weg om in te slaan.
Ons eerste reactie was uiteraard "Waar kunnen we de broncode vinden van die 3 tests?". Beginnend bij fbtest, vonden we na lang zoeken uiteindelijk een C broncode met dezelfde naam. Dit bleek niet de broncode van de test in kwestie te zijn, maar beschikte over een rijke bibliotheek met een aantal interessante methoden. Bijvoorbeeld put_char, draw_rect, clear_screen, tastbare zaken.
Deze code runnen was niet evident, maar na de nodige eliminaties is het toch gelukt om de essentie te doen werken; het aanspreken van het LCD scherm, en het laden van een pointer naar de juiste plaats in het geheugen voor weergave van pixels.
Via een for lus die de geheugenlocaties verwijzend naar de pixels op het scherm aanspreekt, slaagden we erin het scherm op te vullen met een kleur naar keuze. Een random kleur toewijzen in elke binnenste for-iteratie gaf een nog interessanter effect. Een hele overwinning weer, hoewel er ook enkele vreemde stippellijnen verschenen. Maar dit beschouwden we als zorgen voor later, en we herschikten de methodes zodat we een logisch werkend geheel kregen om daarop dan te kunnen verderbouwen.
Trots legden we deze nieuwe stap voor aan onze stagementor, Mr. Halluin, die ook enthousiast was, maar erop wees dat die stippellijnen waarschijnlijk veroorzaakt werden door een corrupte initialisatie van het LCD scherm in de code.
Bijvoorbeeld, de dimensies van het scherm; deze moeten in principe automatisch gedetecteerd worden, maar in ons bestaande code was dat niet het geval. Met als gevolg dat het programma bij het tekenen van een rechthoek kleiner dan het scherm, 3 keer opnieuw begon, 3 verschillende rechthoeken naast elkaar. Dit was dan ook de verklaring van de stippellijnen; deze verschenen op de plaatsen tussen waar het programma telkens opnieuw begon te tekenen.
Hier trapten we bijgevolg weer even ter plaatse, we vielen weer terug op de 3 testprogramma's, meerbepaald de ts_test (touchscreen test). Dit bleek - dit stond zo op het schermpje te lezen bij het runnen ervan - gebruik te maken van een bibliotheek tslib. Deze bibliotheek vonden we direct online en beschikt over een heel arsenaal aan methoden waarbij de initialisatie van het LCD scherm veel duidelijker verloopt.
We hadden dus een nieuwe uitvalsbasis, de tslib! Deze bibliotheek beschrijft de touchscreen-mogelijkheden, maar ook natuurlijk methoden om te schrijven op het scherm. Methoden die veel duidelijker zijn en meer controle bieden dan wat we tot dan toe hadden gebruikt.
We konden experimenteren met gekleurde vierkanten, lijnen, strings,... De uitdaging waar we nu mee bezig zijn is het omzetten van een BMP bestand naar zijn pixelwaarden, met als doel het bedrijfslogo van Dioptik af te beelden met de woorden "Tapez l'écran pour continuer".
Dat en de touchscreen functies. Het inladen van het touchscreen device in de broncode verloopt tot op heden nog niet zoals het hoort. Er zijn bepaalde modules die niet worden gevonden.
Verder is er straks nog een meeting gepland met Mr. Faugeras, de directeur van Dioptik. Hij komt even polsen naar onze vooruitgang.
Groeten vanuit het vandaag zeer natte Brive!
Abonneren op:
Reacties posten (Atom)
Geen opmerkingen:
Een reactie posten