Het Dwengo-bord programmeren zonder programmer
Voor sommige toepassingen, bijv. onderwijs, is het nodig dat meerdere mensen verschillende Dwengo-borden kunnen programmeren terwijl je toch maar over één programmer beschikt. In plaats van die ene programmer rond te laten gaan, kan je het Dwengo-bord ook uitrusten met een bootloader. Dit maakt het mogelijk om het Dwengo-bord te programmeren via een USB-kabel zonder een programmer te gebruiken.
Installeren van de bootloader
Je kan steeds zelf gemakkelijk een bootloader op het Dwengo-bord programmeren. Hiervoor download je eerst het hex-bestand Dwengo-bootloader dat werd toevoegd aan deze pagina. Dit hex-bestand bevat de bootloader voor het Dwengo-bord. Met behulp van MPLAB programmeer je het Dwengo-bord met dit hex-bestand. De bootloader zal nu de eerste 8192 bytes (0x000-0x1FFF) innemen van het programma-geheugen.
Schrijven van het programma
Aangezien de bootloader de eerste 8192 bytes (0x000-0x1FFF) in beslag neemt van het programma-geheugen, moet je bij het schrijven van jouw programma op twee dingen letten: het hermappen van de interrupt-vectoren en het aanpassen van het linker-script.
Het hermappen van de interrupt-routines gebeurt met volgende code:
void YourHighPriorityISRCode(); void YourLowPriorityISRCode(); // vector remapping // Bootloader occupies addresses 0x000-0x1FFF and thus cannot be used. // Thus adresses 0x00, 0x08 and 0x18 (used for reset, high prior interrupt, // and low prior interrupt) have to be remapped. extern void _startup(void); #pragma code REMAPPED_RESET_VECTOR = 0x2000 void _reset(void) { _asm goto _startup _endasm } #pragma code REMAPPED_HIGH_INTERRUPT_VECTOR = 0x2008 void Remapped_High_ISR(void) { _asm goto YourHighPriorityISRCode _endasm } #pragma code REMAPPED_LOW_INTERRUPT_VECTOR = 0x2018 void Remapped_Low_ISR (void) { _asm goto YourLowPriorityISRCode _endasm } #pragma code HIGH_INTERRUPT_VECTOR = 0x08 void High_ISR(void) { _asm goto 0x2008 _endasm } #pragma code LOW_INTERRUPT_VECTOR = 0x18 void Low_ISR(void) { _asm goto 0x2018 _endasm } #pragma code // Interrupt handler routines #pragma interrupt YourHighPriorityISRCode void YourHighPriorityISRCode() { //Check which interrupt flag caused the interrupt //Service the interrupt //Clear the interrupt flag } #pragma interruptlow YourLowPriorityISRCode void YourLowPriorityISRCode() { // Check which interrupt flag caused the interrupt // Service the interrupt // Clear the interrupt flag }
Het linker-script moet aangepast worden zodat een stuk van het programma-geheugen voorzien wordt voor de bootloader. Daarnaast wordt ook een apart stuk voorzien voor de interrupt-vectoren. Volgende lijnen beschrijven een werkend linker-script om te gebruiken in combinatie met de bootloader:
LIBPATH . FILES c018i.o FILES clib.lib FILES p18f4550.lib CODEPAGE NAME=bootloader START=0x0 END=0x1FFF PROTECTED CODEPAGE NAME=vectors START=0x2000 END=0x2029 PROTECTED CODEPAGE NAME=page START=0x202A END=0x7FFF CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED ACCESSBANK NAME=accessram START=0x0 END=0x5F DATABANK NAME=gpr0 START=0x60 END=0xFF DATABANK NAME=gpr1 START=0x100 END=0x1FF DATABANK NAME=gpr2 START=0x200 END=0x2FF DATABANK NAME=gpr3 START=0x300 END=0x3FF DATABANK NAME=usb4 START=0x400 END=0x4FF PROTECTED DATABANK NAME=usb5 START=0x500 END=0x5FF PROTECTED DATABANK NAME=usb6 START=0x600 END=0x6FF PROTECTED DATABANK NAME=usb7 START=0x700 END=0x7FF PROTECTED ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED SECTION NAME=CONFIG ROM=config STACK SIZE=0x100 RAM=gpr3 SECTION NAME=USB_VARS RAM=usb4
Programmeren zonder programmer
Wanneer het programma klaar is en je een hex-bestand hebt aangemaakt, kan je het Dwengo-bord programmeren. Hiervoor dien je eerst het USB-raamwerk op de website van Microchip
te downloaden. Installeer het raamwerk en onder C:\Microchip Solutions\USB Device - Bootloaders\HID - Bootloader* vind je het programma *HIDBootLoader.exe. Start dit programma op. Indien het programma niet wil opstarten dan moet je eerst ook nog het Microsoft .NET-raamwerk
te installeren.
Hierna sluit je het Dwengo-bord aan op de computer met behulp van de USB-kabel (en dus zonder programmer). Reset vervolgens het Dwengo-bord terwijl je de C-knop ingedrukt houdt. Wanneer je nu de C-knop loslaat, staat het bord in bootloader-modus. Het Dwengo-bord zal nu gedetecteerd worden door het HIDBootLoader-programma. Met behulp van het HIDBootLoader-programma kan je het hex-bestand van jouw programma inladen en programmeren op het Dwengo-bord.
- Type:
- login of registreer om te reageren
-


Uw winkelwagen