Verplaatsbaar Wild Lessenaar (ARM MCU Team) (6 / 6 stap)

Stap 6: Kernel en Middleware - MCU ARM CORTEX-M3

Hoog niveau Graphics API

Ons doel is het implementeren van een grafische kaart met behulp van de Nexys 3 FPGA. De STM32 microcontroller zal worden het besturingssysteem en het zenden van de commando's naar de FPGA. De opdrachten worden verzonden via een bus verzekeren de communicatie van beide van de kaarten via de FSMC-randapparaat. Om dit proces te vergemakkelijken, we gemaakt primitieven, structuren en macro's. Deze drie hulpprogramma's naast een DOXYGEN documentatie helpen de gebruiker om de grafische kaart gemakkelijk te controleren. Het is het zelfde idee wat betreft de STM-bibliotheken.

Macro 's

De configuratie van een systeem vereist een echt hard werken van het onderzoek in de verschillende documentatie en broncode bestanden beschikbaar. Natuurlijk de functies van de bronbestanden rechtstreeks kunnen worden gewijzigd door de gebruiker, maar we moeten vermijden dat. Elke wijziging kan leiden tot een dysfunctie in een afsluitcode van het programma met behulp van deze bronbestanden en geschreven door een andere gebruiker. Om te voorkomen dat al deze risques, we toegevoegd in een bestand (macro) de informatie wijziging nodig zodat het programma werken.

Er zijn twee belangrijke categorieën voor de macro's:

  • Configuratie macro's:

Deze macro's geven de gebruiker de mogelijkheid van het wijzigen van de verschillende randapparatuur ingezet tijdens de communicatie. Door dit te doen, is er niet nodig om iets in het bronbestand te veranderen. Deze macro kan bijvoorbeeld volledig configureren voor de duur van de cycli van de FSMC.

  • Macro's opstellen van de technische specificaties:

Het hoofddoel van deze macro is om aan te geven van de specificatie van ons systeem, zoals de grootte van het scherm, de eerste adressen van de vliegtuigen en de adressen van de FSMC. Deze macro's garanties een API die kan worden gebruikt overal. We kunnen bijvoorbeeld een groter scherm veranderen door gewoon de juiste constante aanpassing.

De Doxygen documentatie bevat al de nodige uitleg om de macro's gebruiken.

Structuren

Met hetzelfde idee als de stuurprogramma's gemaakt voor de STM32, zijn alle structuren gemaakt voor deze API ontworpen om het gebruik van de primitieven en de opslag van de gegevens een stuk makkelijker maken. Het is bijvoorbeeld belangrijk om te houden in het achterhoofd in welk adres van de RAM een afbeelding is opgeslagen. As a matter of fact, kunt het adres van een afbeelding eventueel wijzigen in de FPGA na een bewerking, zoals het Bit Blit bijvoorbeeld. Als het oorspronkelijke adres niet ergens opgeslagen is, verliest de gebruiker de afbeelding.

  • De structuur van de afbeelding:

Het wordt gebruikt voor elke afbeelding gemaakt. De gebruiker identificeren de naam, grootte en het adres. Alles wat die we moeten doen nadat dit is om deze structuur als een parameter in een beweging Typ primitief in orde voor de exploitatie op het beeld plaatsvinden. De update van deze parameters is opgenomen in de operaties.

  • Kleurstructuur

Het is zeer nuttig voor de functies met behulp van kleuren. Deze structuur wordt toegepast om te voorkomen dat de 3 primaire kleuren en het niveau van de alpha transparantie op elk gebruik.

  • Vliegtuig-structuur

Onze GPU aankan tot 4 vliegtuigen. Dat is de reden waarom we 4 vliegtuig type structuur gemaakt voor elk van de 4 display-vliegtuigen. Wij verklaard de verwijzing in een globale variabele. Het is niet nodig voor het maken van een nieuwe vlak weergeven op deze FPGA, want 4 het maximale aantal toegestane is. Deze structuur bevat alle gegevens vereist voor het configureren van een laag: breedte, lengte, RAM adres, scrollen ovec X en Y.

  • ConfPlane structuur

Dit is de structuur van de configuratie voor de 4 lagen. Er is slechts één type van deze structuur in het programma, met een verwijzing als een globale variabele verklaard. Het helpt de gebruiker kiezen welke laag te activeren, activeren de transparantie of niet, te lanceren van een testprocedure voor de communicatie en activeren van het 4 display vliegtuigen of

Deze 4 structuren zijn niet gemaakt om rechtstreeks worden gewijzigd. Het is sterk aangeraden om de bijbehorende functies van elke structuur initialiseren of wijzigen van hen gebruiken. As a matter of fact, zijn de geschreven gegevens in deze structuur slechts de reflexion voor wat er binnen de FPGA-kaart. Het veranderen van de parameters slechts in de STM is nutteloos. Bijvoorbeeld, als wij handmatig wijzigen van de grootte van een laag willen, zal het niet gewijzigd op de GPU omdat de opdracht wordt niet toegestuurd. De bijbehorende functies helpt ook tot vaststelling van de communicatie tussen beide van de kaarten.

Stuurprogramma 's

Deze laag wordt gebruikt voor het configureren van de verschillende randapparatuur gebruikt voor de communicatie tussen de twee kaarten. Bijvoorbeeld, kunt we het initialiseren van de FSMC. De FSMC wordt geïnitialiseerd in een manier om hetzelfde gedrag zoals beschreven in de sectie 2.b. Een GPIO is ook om te kunnen spelen van de rol van de bezettoon gebruikt in de MCU-interface geïnitialiseerd.

Ook vinden we in deze laag de oorspronkelijke functies gebruikt om te lezen en schrijven in het bijbehorende adres van de PIN verbonden met de FPGA. De parameters voor deze functies zijn het adres van het register worden gewijzigd in de FPGA en de gegevens in het register worden geschreven.

De bijbehorende functies voor deze stuurprogramma's zijn niet gemaakt om direct worden gebruikt. Ze worden al gebruikt in de dienst laag. Niettemin, de gebruiker kan in sommige gevallen toegang tot deze functies om het wijzigen van de configuratie van de software.

Service functies:

De functies van de service zijn de belangrijkste functies van onze grafische kaart. In deze laag vinden we alle functies noodzakelijk zijn voor de uitvoering van de verschillende operaties van de GPU.

De details van deze functies zal beschikbaar zijn in de doxygen documentatie sectie. We moeten alleen verduidelijken dat het is mogelijk om een overmatige laag om te voldoen aan de meer complexe operaties met gebruikmaking van de oorspronkelijke functies geschreven in de laag van de dienst. Het is bijvoorbeeld mogelijk te maken een functie om te kunnen omgaan met een animatie. Deze functie zal de verplaatsing gebruiken om dat te doen.

Het hoge niveau audio API en Real-Time Operating systeem zijn nog niet geïmplementeerd.

Gerelateerde Artikelen

Verplaatsbaar Wild Lessenaar (GPU Team)

Verplaatsbaar Wild Lessenaar (GPU Team)

ContextOnze docenten gezocht voor ons project voor procestechniek, ons om de uitdagingen van het ontwerpen van een real-time systeem met relatief hoge prestaties op beperkte hulpbronnen (geheugen, bandbreedte).De specificaties vereisen een gokkenplat
Wederopbouw van een open haard Surround

Wederopbouw van een open haard Surround

dit Instructable (Instructanovel) gegevens het proces ging ik door naar een bestaande open haard surround gemaakt van flagstone slopen en te vervangen door een veel aantrekkelijker (althans in mijn ogen) een op maat gemaakt.Toen ik naar mijn huis ver
De naam tekenen CNC

De naam tekenen CNC

Dit instructable ontstond vervulling de project-eis van de Makecourse bij de Universiteit van Zuid-Florida (www.makecourse.com).Met dat in gedachten is het eindresultaat van dit project een CNC dat volledig kan worden uitgevoerd op GRBL, maar om te v
Slimme huis met arduino en jubito

Slimme huis met arduino en jubito

jubito is een software dat ik ontwikkelen op basis van jaNET kader. Een slimme Thuisserver waarmee interfaces tussen verschillende hardware (zoals arduino) en softwareonderdelen, geven de mogelijkheid om elkaar te communiceren en laat me toegang auto
Externe gecontroleerde relay

Externe gecontroleerde relay

In dit project ga ik om u te tonen hoe maak je een goedkope remote gecontroleerde relay met een zender en ontvanger. Deze draadloze relay kan worden gebruikt op om het even wat kunt u en prank uw vrienden door het te koppelen aan een lamp schrikken h
Brei je eigen Instructables Robot

Brei je eigen Instructables Robot

Gebreide Instructables RobotVergeten speelgoed dat zal praten met u, of dans voor u, of batterijen worden gespeeld met nodig. Laten we terug naar de basis met een goede oude ouderwetse plushie speelgoed. Iets om te knuffelen, maar iets dat past in de
Macht van uw Arduino/AVR met een batterij Hand-Cranked

Macht van uw Arduino/AVR met een batterij Hand-Cranked

als u ooit hebt willen macht uw Arduino of AVR uit een batterij voor het testen van de ontwikkeling (batterijen hebben verschillende macht levering kwaliteiten dan, zeg, getransformeerde AC of zelfs een gereglementeerde muur wrat in DC) testen maar w
Zinderende zeepokken, een andere fiets aanhangwagen!

Zinderende zeepokken, een andere fiets aanhangwagen!

ik wilde een eenvoudige fiets aanhangwagen dat zou sterk, lichtgewicht, weerbestendig en eenvoudig te maken. Mijn ontwerp werd beïnvloed door het materiaal dat ik had bij de hand van andere (huis) bouwprojecten, dus er kan beter ijzerhandel onderdele
Een ander Arduino teller

Een ander Arduino teller

Adaptieve rapportage delen batch tellerEen teller die zich aan de machine het aanpassen kan is gemonteerd op en rapportgegevens terug naar andere locaties bijvoorbeeld supervisor ReceptieHier is teller die ik gebouwd als een werkend prototype voor ee
DIY LED bord met MAX7219 Dot Matrix Module STM8S003F3 MCU voor AVR PIC MSP430 Arduino ARM STM32

DIY LED bord met MAX7219 Dot Matrix Module STM8S003F3 MCU voor AVR PIC MSP430 Arduino ARM STM32

om te voldoen aan de elektronische DIY hobbyisten, ICStation MAX7219 Dot Matrix Moduleheeft ontwikkeld. Het gebruikt de Max7219-chip die een geweldige job op besparing van MCU i/o. Het kan geen alleen controle over elk punt afzonderlijk, maar ook kan
MIJN GEWELDIGE TAMIYA WILD ONE!!

MIJN GEWELDIGE TAMIYA WILD ONE!!

this is my awesome tamiya wild one, it was released in 1985 and still runs like ice-cream on a sunny day.een van mijn vader's vrienden vond het op het puntje en ik ben herstellen, modding en re bouwen.met de slicks aan de achterkant zijn zo zacht dat
Edison Robotic Arm

Edison Robotic Arm

Welkom bij mijn eerste ooit Instructable. Voordat ik aan de slag, zou ik willen het Instructables team bedanken voor mij te voorzien van de Intel Edison kit met de geweldige add-ons in de recente Intel weggeven. Robotica is altijd verbaasd me dus het
Androïde slimme telefoon Bluetooth afstandsbediening intelligente slimme auto 51 MCU (Code STC89C52)

Androïde slimme telefoon Bluetooth afstandsbediening intelligente slimme auto 51 MCU (Code STC89C52)

aan het begin van het nieuwe jaar, Robot/Smart auto hobbyisten en studenten (zoals jullie allemaal) over techniek, wetenschap en technologie zijn bezig met de voorbereiding voor de robot wedstrijden nu.Het is de geweldige tijd om te laten zien de wer
Hoe Arm een schaal Model slagschip van kras te bouwen

Hoe Arm een schaal Model slagschip van kras te bouwen

Welkom in de fascinerende wereld van R/C grote GEWEER oorlogsschip bestrijden. Dus wat is precies R/C oorlogsschip bestrijden? Het is een hobby waar schaal model oorlogsschepen, bewapend met lagedruk CO2 kanonnen, brand kleine kogellagers op een tege