GOWIN-logo

GOWIN FPGA Development Board RISCV-programmering

GOWIN-FPGA-Development-Board-RISCV-Programming-product-image

Copyright © 2022 Guangdong Gowin Semiconductor Corporation. Alle rechten voorbehouden.
is een handelsmerk van Guangdong Gowin Semiconductor Corporation en is geregistreerd in China, het US Patent and Trademark Office en andere landen. Alle andere woorden en logo's die als handelsmerken of dienstmerken worden geïdentificeerd, zijn eigendom van hun respectieve houders. Geen enkel deel van dit document mag worden gereproduceerd of verzonden in enige vorm of met enige aanduiding, elektronisch, mechanisch, door fotokopieën, opnamen of anderszins, zonder de voorafgaande schriftelijke toestemming van GOWINSEMI.

Vrijwaring
GOWINSEMI aanvaardt geen aansprakelijkheid en biedt geen garantie (expliciet of impliciet) en is niet verantwoordelijk voor enige schade aan uw hardware, software, gegevens of eigendom als gevolg van het gebruik van de materialen of intellectuele eigendom, behalve zoals uiteengezet in de GOWINSEMI Algemene voorwaarden van Verkoop. Alle informatie in dit document moet als voorlopig worden beschouwd. GOWINSEMI kan te allen tijde zonder voorafgaande kennisgeving wijzigingen in dit document aanbrengen. Iedereen die op deze documentatie vertrouwt, dient contact op te nemen met GOWINSEMI voor de huidige documentatie en errata.

Revisiegeschiedenis

Datum Versie Beschrijving
04/29/2019 1.0E Eerste versie gepubliceerd.
 

11/11/2022

 

1.1E

  • AndeSight RDS v311-software bijgewerkt.
  • Referentieontwerp bijgewerkt.
  • De beschrijving van het downloaden van ingebedde projectcompilatieresultaten via SPI Flash is bijgewerkt.

Invoering

AE250 Introductie

AE250 is een 32-bits RISC-V MCU-systeem; de structuur ervan wordt getoond in figuur 1-1.

GOWIN-FPGA-Development-Board-RISCV-Programmering-1

Figuur 1-1 Structuurdiagram AE250

Gebaseerd op het Gowin FPGA-ontwikkelbord, wordt het RISC-V AE250 MCU ontwikkelings- en foutopsporingssysteem weergegeven in figuur 1-2.

GOWIN-FPGA-Development-Board-RISCV-Programmering-2

Figuur 1-2 Systeemstructuurdiagram voor ontwikkeling en foutopsporing

De FPGA-chip op het ontwikkelingsbord is geconfigureerd als een AE250 MCU met behulp van Gowin Programmer op de pc. Nadat de debug-kabel is aangesloten, kunt u de ingebouwde programma-ontwikkeling en foutopsporing uitvoeren met AndeSight RDS v311-software.

Voorbereidingen

Voordat Gowin FPGA en AE250 worden gebruikt voor ontwikkeling en foutopsporing, moeten de volgende tools worden voorbereid:

  1. Gowin GW2A-serie FPGA-ontwikkelbord.
  2. Gowin Software-installatiepakket voor het configureren en downloaden van de FPGA-chip.
  3. AndeSight RDS v311 installatiepakket voor het ontwikkelen en debuggen van het ingebedde programma.
  4. Debug Cable wordt gebruikt voor het downloaden en debuggen van het ingebedde programma, en de standaardwaarde is AICE-MINI+; gebruikers moeten het zelf kopen.

Opmerking! 

  1. Als het informatie via UART moet uitvoeren, is een UART-naar-USB-kabel nodig.
  2. Er zijn andere te gebruiken randapparatuur vereist.
Stappen voor het ontwikkelen en debuggen

De basisstappen voor het ontwikkelen en debuggen van de RISC-V AE250 MCU op basis van het GW2A-55C ontwikkelbord zijn als volgt:

  1. Software installeren: Gowin-software wordt gebruikt om het AE250 RTL-ontwerp te configureren en te genereren en de Bitstream te genereren file van het ontwerp; AndeSight RDS v311-software wordt gebruikt om ingebedde programma's te ontwikkelen en te debuggen; andere software en stuurprogramma's voor foutopsporing zijn ook vereist.
  2. Configureer de voeding en downloadkabel van het ontwikkelbord. De Bitstream file van AE250_chip wordt gedownload naar de FPGA-chip op het ontwikkelbord met behulp van Gowin Programmer, en AE250 draait op het ontwikkelbord.
  3. Open RDS-software om een ​​nieuw ingebed project te maken of open een bestaand project voor codering, compilatie en andere bewerkingen. Sluit de debugkabel aan die wordt gebruikt voor het debuggen van de AE250, download het projectcompilatieresultaat naar het instructiegeheugen (ILM) in de AE250 en begin met het debuggen van de chip.
  4. Tijdens het debuggen kunt u de UART-naar-USB-kabel gebruiken om de UART-interface van de AE250 op de pc aan te sluiten, en de ingebouwde seriële terminal in RDS gebruiken om de invoer- en uitvoerbewerkingen uit te voeren. U kunt GPIO gebruiken om verbinding te maken met LED-indicatoren, toetsen of externe pinnen voor invoer-/uitvoerbewerkingen; I2C, SPI, Ethernet en andere randapparatuur kunnen ook worden geselecteerd om te gebruiken.
  5. AE250 kan via SPI verbinding maken met een Flash, het compilatieresultaat van een ingebed programma naar Flash downloaden met behulp van Gowin Programmer; wanneer de chip wordt ingeschakeld, leest de AE250 automatisch het ingebedde programma in SPI Flash en start het. U kunt de Flash die de FPGA Bitstream opslaat hergebruiken; sommige kunnen de FPGA-bitstream opslaan, en andere kunnen de compilatieresultaten van ingebedde programma's opslaan. Dit is een praktische en economische methode.
    U kunt hoofdstuk 2 Instructies voor debuggen van kabelverbindingen raadplegen, hoofdstuk
    3 Gebruiksinstructies voor RDS en hoofdstuk 4 Referentieontwerp voor gedetailleerde stappen.

Instructies voor het debuggen van kabelverbindingen

RDS + AE250 gebruiken standaard AICE-MINI+ debug-kabel; de buitenkant wordt links getoond in Figuur 2-1, en de pinnen worden rechts getoond in Figuur 2-1. Het is een 12-pins interface. Opgemerkt moet worden dat pin 1 in de figuur blanco is. Wanneer de kabel correct is aangesloten en RDS wordt geopend, gaat het rode LED-lampje, gemarkeerd met een geel vakje in de afbeelding, uit.
Afbeelding 2-1 AICE-MINI+-foutopsporingskabel en zijn pinnen

GOWIN-FPGA-Development-Board-RISCV-Programmering-3

De pindefinitie van de AICE-MINI+ debug-kabel is zoals weergegeven in Tabel 2-1. Opgemerkt moet worden dat Pin 1 is gedefinieerd als Geen verbinding (NC), overeenkomend met de blanco. VREF moet een 3.3V-voedingspin aansluiten en GND hoeft alleen pin 3 of pin 5 aan te sluiten.

Tabel 2-1 AICE-MINI+ Debug-kabelpindefinitie

Pinnummer AICE-MINI+ Debug-kabelpen
1 NC
2 TSRST_N
3 GND
4 TTMS
5 GND
6 TCK
7 VREF
8 NC
9 NC
10 TTRST_N
11 TTDO
12 TTDI

Gebruiksinstructies voor RDS

RDS-installatie

Pak het installatiepakket uit en voer Windows/Disk1 in; dubbelklik op setup.exe om het te installeren. Er zijn geen speciale instellingen vereist tijdens de installatie. Tijdens de installatie verschijnt er een dialoogvenster met de vraag of u het stuurprogramma wilt installeren. Selecteer Ja. Voor installatiestappen, zie
AndeSight_RDS_v3.2_Installation_Guide_UM207_V1.0.pdf, te vinden in het installatiepakket.

  1.  Wanneer u het installatiepad en het werkruimtepad instelt, mag u geen Chinese tekens of spatie gebruiken, anders krijgt u een runtime-fout.
  2. De huidige versie van RDS ondersteunt standaard AICE-MINI+-kabel.
  3. GOWIN Programmer kan mogelijk geen verbinding maken met het ontwikkelbord na het installeren van RDS. Dit kan worden verholpen door het Gowin Programmer-stuurprogramma opnieuw te installeren.
  4. Voor serienummer en certificaat files, neem dan contact op met Gowin Semiconductor Corp.
Een nieuw project maken

Klik File > Nieuw > Project > Andes C-project > Volgende op de RDS-interface om de configuratie-interface van New C Project te openen, zoals weergegeven in Figuur 3-1.

Afbeelding 3-1 Een nieuw project maken

GOWIN-FPGA-Development-Board-RISCV-Programmering-4

Voor het nieuwe C-project moeten de volgende parameters worden geconfigureerd:

  1. Projectnaam
  2. Locatie: De standaardlocatie is de huidige werkruimte.
  3. Verbindingsconfiguratie is ingesteld op ICE, wat aangeeft dat het ontwikkelbord is aangesloten met behulp van een ICE-foutopsporingskabel. Als de emulator als testplatform wordt gebruikt, selecteer dan SID.
  4. Voor Chip Profile, selecteer ADP-AE250-N25-GOWIN, die is geoptimaliseerd volgens Gowin FPGA.
  5. Projecttype omvat een leeg project en een Hello World ANSI C-project.
  6. Voor Toolchains is nds32le-elf-mculib-v5m de standaard.
    Nadat u een nieuw project hebt gemaakt, klikt u met de rechtermuisknop op de projectnaam in de Projectverkenner, selecteert u Project bouwen in het vervolgkeuzemenu of klikt u op " " op de werkbalk om het project te compileren en te koppelen; selecteer Project opschonen in het vervolgkeuzemenu om het project schoon te maken.
Importeer en exporteer een project

Klik met de rechtermuisknop op de ruimte van Project Explorer en selecteer “Importeren” of “Exporteren”, zoals weergegeven in Figuur 3-2.

GOWIN-FPGA-Development-Board-RISCV-Programmering-5

Afbeelding 3-2 Een project importeren/exporteren

Klik op “Importeren > Algemeen > Bestaand project in de werkruimte” om een ​​project te importeren, en de interface is zoals weergegeven in Figuur 3-3. Wanneer u “Select root directory” selecteert, importeert u het project in de map; Wanneer u “Selecteer archiefbestand” selecteert, importeert u het project in zip.

GOWIN-FPGA-Development-Board-RISCV-Programmering-6

Figuur 3-3 Een project importeren

Selecteer “Exporteren… > Archief File' om de exportprojectinterface te openen, zoals weergegeven in Figuur 3-4. Nadat u het te exporteren project, het compressieformaat, het opslagpad, enz. hebt geselecteerd, kunt u de export voltooien.GOWIN-FPGA-Development-Board-RISCV-Programmering-7

Figuur 3-4 Een project exporteren

Programma's downloaden naar Flash

AE250 ondersteunt het starten vanuit Flash, leest vervolgens het ingebedde programma uit Flash via de SPI-interface en slaat het op in ILM, waarna het ingebedde programma wordt uitgevoerd. De aanbevolen methode is om SPI Flash te hergebruiken waarmee FPGA Bitstream wordt opgeslagen; gebruik de eerste helft van Flash om de FPGA Bitstream op te slaan, en de resterende helft om het binaire bestand op te slaan files van ingebedde programma's.

  1. Open de IP-kerngenerator in Gowin Software en roep AE250 RTL-parameters op. Dubbelklik op de SMU om de SMU-interface te openen en stel “System Reset Vector Default” in op 0x80400000, zoals weergegeven in Figuur 3-5. Stel de ruimte van SPI Flash 0~0x400000 in met een totaal van 4M bytes als het opslagadres van Bitstream; beginnend bij 0x400000 wordt gebruikt als het opslagadres van binair bestand files van ingebedde programma's.
    Afbeelding 3-5 Systeemresetvectorstandaard
    GOWIN-FPGA-Development-Board-RISCV-Programmering-8
  2. Dubbelklik op SPI1 om de SPI1-interface te openen, vink “SPI1 Support” aan en stel “SPI1 Memory Map Space Base Address” in op 0x80400000, zoals weergegeven in Figuur 3 6.
    Afbeelding 3-6 SPI1-configuratie
    GOWIN-FPGA-Development-Board-RISCV-Programmering-9
  3. In de fysieke beperkingen van het RTL-ontwerp moet de SPI1-interface worden aangesloten op SPI Flash en moet de SPI1-interface fysiek worden beperkt volgens de volgende tabel. Voor verschillende FPGA-chips is de locatie van de MSPI-interface ook anders, en de beperking moet specifiek zijn voor de specifieke situatie.
    Tabel 3-1 Fysieke beperkingen van de SPI1-interface
    AE250 SPI1-interface FPGA MSPI-interface
    CSN MCSN
    KLIK MCLK
    MISO MSO
    MOSI MSI
  4. Hergebruik de MSPI-interface als gewone IO. Klik in het venster “Proces” van Gowin Software met de rechtermuisknop op “Plaats & Route”, selecteer “Configuratie” in het pop-upmenu; selecteer het tabblad “Dual Purpose Pin”, vink “Gebruik MSPI als gewone IO” aan en klik op “OK” om de plaatsing en routering te voltooien.
    Afbeelding 3-7 Stel de MSPI-interface in op reguliere IO
    GOWIN-FPGA-Development-Board-RISCV-Programmering-10
  5. Wijzig de parameterinstellingen van ingebedde programma's. Wijzig eerst de parameters van de bootloader in het linkerscript. Omdat het linkerscript in het ingebedde AE250-programma automatisch door SAG wordt gegenereerd file, moet dit in de SAG worden gewijzigd file. Open ae250.sag, zoek BOOTLOADER en wijzig deze naar de waarde van System Reset Vector Default in RTL-ontwerp, zoals weergegeven in Figuur 3-8. Wijzig vervolgens config.h. Open src/bsp/config/config.h en zoek de macrodefinitie
    “BUILD_MODE” en wijzig het in “BUILD_BURN”.
    Afbeelding 3-8 Parameterinstelling ae250.sag bootloader
    GOWIN-FPGA-Development-Board-RISCV-Programmering-11

Opmerking!

    • De parameter moet consistent zijn met de waarde van System Reset Vector Default van de RTL-parameter.
    • Wijzig de compilatie-instellingen; klik met de rechtermuisknop op de naam van het ingebedde project en selecteer Build-instellingen; selecteer het tabblad “Objcopy > Algemeen” en schakel “Uitschakelen” uit. (Genereer niet automatisch uitvoer file.)

Hercompileer het ingebedde programma om binaire bestanden te genereren files van het ingebedde project en download de files naar SPI Flash 0x400000-adres met behulp van de externe Flash C Bin-modus van Gowin Programmer.
Synthetiseer en plaats en routeer het gewijzigde RTL-ontwerp opnieuw, en download het naar het SPI Flash 0x000000-adres met behulp van de externe Flash-modus van Gowin Programmer.

Debuggen op de chip

Na compilatie kunnen de compilatieresultaten van het ingebedde project worden gedownload naar het ontwikkelbord voor foutopsporing op de chip.
Wijzig configuratie.h; open src/bsp/config/config.h en zoek de macrodefinitie BUILD_MODE; wijzig het in BUILD_LOAD en compileer het ingebedde programma opnieuw.
Klik met de rechtermuisknop op de projectnaam in de Projectverkenner en selecteer 'Debug as > MCU Program' in het vervolgkeuzemenu. Voor de eerste keer verschijnt er een dialoogvenster waarin u “Debug Configuration” kunt instellen, zoals weergegeven in Figuur 3-9.

GOWIN-FPGA-Development-Board-RISCV-Programmering-14

Afbeelding 3-9 Foutopsporingsconfiguraties

Vink op het tabblad “Opstarten” de optie “Reset and Hold” aan om het programma te stoppen voordat u de eerste instructie uitvoert. Voer load in het parametervak ​​onder deze optie in om de compilatieresultaten van het ingebedde project naar de ILM te downloaden vóór debuggen op de chip.
Vink in “Runtime-opties” “Set breakpoint at” aan. Voer een label in, zoals hoofd, in het invoervak. Het kan een breekpunt instellen aan het begin van de hoofdfunctie. Vink “Hervatten” aan en het zal de continue werking direct starten na het invoeren van de foutopsporing op de chip.
Bij het invoeren van on-chip debug gaat het automatisch naar debug view en er wordt een gebied weergegeven, zoals weergegeven in Figuur 3-10. Dit gebied is het werkgebied voor foutopsporing op de chip. In het rode vak worden enkele sneltoetsen voor foutopsporing weergegeven. Van links naar rechts betekenen ze het opnieuw starten van DEBUG, doorgaan met uitvoeren, opschorten, beëindigen, loskoppelen, koppelen aan één proces, instappen, overstappen, stap terug, en instructiestapmodus; in deze modus wordt elke keer dat het een risk – v-assemblage-instructie uitvoert, anders elke keer dat het een C-instructie uitvoert.

Opmerking!
De grijze pictogrammen betekenen dat ze momenteel niet beschikbaar zijn.
Dubbelklik links op het regelnummer in de codetekst om snel breekpunten in te stellen of breekpunten te annuleren, en klik met de rechtermuisknop in de codetekst om 'uitvoeren naar regel' te selecteren in het pop-upmenu.GOWIN-FPGA-Development-Board-RISCV-Programmering-13

Afbeelding 3-10 Introductie van debugknoppen

Figuur 3-11 is een venster met assemblage-instructies waarin de inhoud van assemblage-instructies wordt weergegeven die in realtime in ILM worden uitgevoerd.

GOWIN-FPGA-Development-Board-RISCV-Programmering-14

Afbeelding 3-11 Venster met montage-instructiecode

Gebruik van RDS ingebouwde seriële terminal

Figuur 3-12 toont de ingebouwde RDS-interface van de UART-terminal. Als u dit wilt gebruiken, klikt u op 'Venster> Tonen' View > Terminal” in het hoofdmenu om het venster “Terminal” te openen en klik vervolgens op “open a terminal” om een ​​nieuwe seriële terminal te maken. Na het instellen van het poortnummer (dat kan zijn viewin hardwarebeheer), baudsnelheid en andere parameters, klikt u op "OK" om te beginnen met gebruiken.

GOWIN-FPGA-Development-Board-RISCV-Programmering-15

Afbeelding 3-12 Ingebouwde RDS-seriële terminal

Zie het document voor meer informatie
AndeSight_RDS_v3.1_User_Manual_UM170_V1.0.pdf, te vinden in het documentpad van de installatiemap.

Referentie ontwerp

Projectcode

De sleutel fileDe instellingen in de ingebedde projectsjabloon van de AE250 zijn als volgt:

  1. src/bsp/ae250/ae250.h: dit file bevat de systeemklokdefinitie, perifere registerdefinitie, perifere registeradrestoewijzingsdefinitie en onderbreekt de bronnummerdefinitie. De klokdefinitie moet consistent zijn met de configuratie van de AE250-parameters.
  2. src/bsp/ae250/ae250.c: De reset_handler-functie is het item om het ingebedde programma te starten. In de invoer wordt de UART-initialisatie uitgevoerd voordat de hoofdfunctie wordt uitgevoerd. De vereiste UART-poort wordt geselecteerd en de vereiste baudsnelheid wordt geconfigureerd volgens de parameterconfiguratie van AE250.
  3. src/bsp/ae250/interrupt.c: dit file is de definitie van interrupthandlerfuncties van AE250
  4. src/bsp/config/config.h: dit file bevat de macrodefinitie die de compilatiemethode bestuurt. #define BUILD_MODE kan worden gedefinieerd als BUILD_LOAD of BUILD_BURN. BUILD_LOAD betekent dat het programma rechtstreeks in ILM wordt geladen en doorgaans wordt gebruikt bij het opsporen van fouten. BUILD_BURN betekent dat het programma wordt gedownload naar SPI Flash en dat het programma eerst wordt gelezen van SPI Flash naar ILM nadat het is ingeschakeld en vervolgens wordt uitgevoerd, wat van toepassing is op de releaseversie van het programma.
  5. Start.S: De starter file geschreven in assembleertaal.
  6. src/bsp/loader.c: bootloader file, die wordt gebruikt om te starten vanuit SPI Flash.
  7. ae250.sag: Sag is het script voor het scattering-and-gathering-formaat. Het wordt gebruikt om linkerscript te genereren. Opgemerkt moet worden dat de geheugenkaartparameters in ae250.sag consistent moeten zijn met die in AE250.
  8. src/bsp/driver: Deze map bevat twee mappen, ae250 is de AE250-stuurprogrammacode, include is de oproepinterface van stuurprogrammafuncties.
  9. src/bsp/lib: Het bevat er twee fileS. In printf.c wordt de vorm van de subfunctie in de standaard C-bibliotheek opnieuw gedefinieerd om printf-informatie uit te voeren via UART. In read.c is er een eenvoudige functie om invoerinformatie via UART te lezen.
Referentie ontwerp

Na de installatie zijn verschillende basisreferentieontwerpen te vinden in de demomap van de installatiemap of in de referentieontwerp-zip op de webplaats; het referentieontwerp kan via import in RDS worden geladen om te testen, te debuggen en opnieuw te ontwikkelen. De referentieontwerpen worden als volgt weergegeven:

  1. ae250_demo: Demonstreert UART-invoer/uitvoer en GPIO-uitvoer van de AE250.
  2. ae250_plic: Demonstreert de reactie van de interruptcontroller op interrupts, en biedt demonstraties van de machinetimer en pittimer.
  3. ae250_freertos: Demonstreert dat de AE250-poorten zijn ingebed
    real-time besturingssysteem FreeRTOS multi-threading actief programma.
  4. ae250_ucosiii: Toont aan dat de AE250-poorten een realtime besturingssysteem uC/OS-III multi-threading actief programma bevatten.

Documenten / Bronnen

GOWIN FPGA Development Board RISCV-programmering [pdf] Gebruikershandleiding
FPGA Development Board RISCV-programmering, Board RISCV-programmering, FPGA-ontwikkeling RISCV-programmering, RISCV-programmering, Board RISCV

Referenties

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *