Acties:
  • 0 Henk 'm!

  • dj_dysaster
  • Registratie: Januari 2003
  • Laatst online: 21:48
Na wat posts in de EL kroeg en een nacht prutsen later kom ik er niet meer uit.Als test wil ik is wat experimenteren met een bootloader op een 18F4550.

Mijn opstelling is als volgt:

-PIC18F4550
-Easypic5
-MPLAB met de C18 compiler (student versie)

Het easypic bord heeft een usb uitgang die aangesloten is op de pic. In feite heb ik nu dus de zelfde opstelling als een PICDEM Full Speed USB dev bord.
Vervolgens heb ik het MCHPFSUSB v2.2 USB Framework gedownload welke ook op het PICDEM bord gebruikt wordt. Dit framework bevat de bootloader hexfile voor de pic en de zogenaamde PICDEM FS USB Demo Tool, waarmee ik nieuwe hexfiles in de pic zou moeten flashen.

De bootloader wordt weggeschreven in de 1e geheugenbank van de pic welke loopt tot 007FF. Dit betekend dat mijn eigen programma dus pas vanaf 00800 mag worden weggeschreven.

Vervolgens ben ik zelf een klein testprogrammatje gaan schrijven in C18, welke PORTA.0 zou moeten gaan toggelen.

Klik voor main.c

Klik voor 18f550_bl.lkr

Een aantal bronnen op internet bevestigen mij dat dit "the way to go" is. Wil ik nu met de PICDEM Bootloader tool mijn hex erin schieten krijg ik een write error... Het lijkt er dus op dat mn bootloader overschreven wordt want na deze actie was de bootloader stuk.

Flash uitlezen/ereasen etc gaat gewoon goed, totdat het op schrijven aan komt.

Iemand nog een tip, idee of whatever. In een andere programmertaal/dicalect mag ook.

Alvast bedankt :*)

Acties:
  • 0 Henk 'm!

  • DaWaN
  • Registratie: Oktober 2002
  • Laatst online: 16:40

DaWaN

'r you wicked ??

Je hebt je linker ook verteld dat het programma op adres 800 moet beginnen ?

En waar heeft zo'n PIC18 eigenlijk zijn interruptvectoren zitten ? Kun je die met zo'n bootloader nog wel gebruiken ??

If you do not change direction, you may end up where you are heading


Acties:
  • 0 Henk 'm!

  • dj_dysaster
  • Registratie: Januari 2003
  • Laatst online: 21:48
In mn linkerfile heb ik het volgende gezet

code:
1
2
CODEPAGE   NAME=boot       START=0x0            END=0x7FF
CODEPAGE   NAME=vectors    START=0x800          END=0x829          PROTECTED


Er wordt dus wat vrij gehouden voor mn boot en mn vectors die ik remap in mn main.c

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma code _RESET_INTERRUPT_VECTOR = 0x000800
void _reset (void)
{
    _asm goto _startup _endasm
}
#pragma code
#pragma code _HIGH_INTERRUPT_VECTOR = 0x000808
void _high_ISR (void)
{
    ;
}
#pragma code
#pragma code _LOW_INTERRUPT_VECTOR = 0x000818
void _low_ISR (void)
{
    ;
}


Als ik een hexfiletje maak en hem bekijk met een hexeditor komt mn programma nooit bij 0x800, zou wel moeten lijkt me. 8)7

Acties:
  • 0 Henk 'm!

  • DaWaN
  • Registratie: Oktober 2002
  • Laatst online: 16:40

DaWaN

'r you wicked ??

Je kunt bij Microchip gewoon een voorbeeld project downloaden voor C files, misschien moet je dat maar eens doen, de linker settings die zij aanraden zijn ook wat uitgebreider:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Sample linker command file for 18F4550 with Bootloader
LIBPATH .
FILES c018i.o
FILES clib.lib
FILES p18f4550.lib
CODEPAGE NAME=boot START=0x0 END=0x7FF PROTECTED
CODEPAGE NAME=vectors START=0x800 END=0x829 PROTECTED
CODEPAGE NAME=page START=0x82A 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

If you do not change direction, you may end up where you are heading


Acties:
  • 0 Henk 'm!

  • dj_dysaster
  • Registratie: Januari 2003
  • Laatst online: 21:48
De pdf waar je linker file uit komt had ik ook gevonden, enkel deze file gebruiken verandert de zaak niks bij mij. Toen ben ik opzoek gegaan naar het demoproject waar je het over hebt en naar wat gegoogle kwam ik erop uit dat dit in een file en021827.exe moet zitten.

Je raad het natuurlijk al, die file is nergens meer te vinden |:(

* dj_dysaster is der ff klaar mee, ga morgen wel weer verder prutsen ofzo

Acties:
  • 0 Henk 'm!

  • DaWaN
  • Registratie: Oktober 2002
  • Laatst online: 16:40

DaWaN

'r you wicked ??

Gevonden na 2 minuutjes googlen:
http://www.eegeek.net/random_serve/PIC/USBDemo.zip
Daar zit de voorbeeld C code in, succes ermee :P

If you do not change direction, you may end up where you are heading


  • dj_dysaster
  • Registratie: Januari 2003
  • Laatst online: 21:48
Goed, toch maar weer is verder geprutst. Na wat gemartel de usbdemo code die je gaf gecompiled zonder wijzigingen aan te brengen, vervolgens geprobeerd de hex te flashen met de bootloader en weer Failed to program flash.

Ik ben nu echt ff draad kwijt. Code protect heb ik allemaal uit staan dus dat kan het ook niet zijn, maar wat wel |:(
Pagina: 1