Jump to content
ELFORUM - Forumul electronistilor
Guest ceteras

PIC18F4550, usb bootloader

Recommended Posts

Guest ceteras

Salut!

 

Incercand sa invat sa programez cu 18F4550, am construit placa asta: http://eegeek.net/content/view/13/32/

 

Schema :Posted Image

 

Ideea e ca programezi un bootloader in microcontroller, apoi poti sa incarci cu o aplicatie de la microchip, prin usb, fisierele HEX pe care le vrei rulate.

 

Problema e ca tre sa instruiesti compilatorul sa mute totul sa inceapa de la adresa 0x800, si eu unul n-am reusit asa ceva.

 

Placa functioneaza, demo-ul de la microchip functioneaza. Am facut in assembler o mica aplicatie care aprinde ledurile pe portD, si asta merge (a fost f simplu sa mut totul la 0x800, cu un org).

 

Intrebare: a lucrat cineva cu un bootloader pe usb, in C?

Cum ati facut sa se compileze calumea codul, sa inceapa executia la 0x800?

 

Eventual daca-mi puteti da un exemplu de cod banal, in C pe MCC18, care sa aprinda un led, ceva simplu, sa vad, poate ma descurc de acolo.

N-am gasit decat exemple foarte complicate, cu aplicatii serioase (USB HID etc), pe care nu le-a putut digera din pacate.

 

Codul meu in C:

#include <p18f4550.h>// pentru relocare la 0x800extern void _startup (void);      #pragma code _RESET_INTERRUPT_VECTOR = 0x000800void _reset (void){    _asm goto _startup _endasm}#pragma code#pragma code _HIGH_INTERRUPT_VECTOR = 0x000808void _high_ISR (void){    ;}#pragma code _LOW_INTERRUPT_VECTOR = 0x000818void _low_ISR (void){    ;} // sfarsit sectiune pentru relocare la 0x800void main (void) {	INTCON = 0;	TRISD = 0;	PORTD = 0XAA;	}
Multumesc, dau o bere!
Link to comment
Share on other sites

Guest bytencoder

Compilatorul tau foloseste fisiere linker-script ? Daca da atunci cred ca ar trebui sa folosestei unul custom-built pentru bootloaderul tau...

Link to comment
Share on other sites

Din cate stiu eu, cand lucrezi cu bootloader, trebuie sa-i spui compilatorului chestia asta, astfel incat sa-ti lase zona de memorie folosita de bootloader in pace.Nu stiu cum e la compilerul de la uChip (banui ca asta reprezinta MCC18); la compilerele de la hi-tech poti "rezerva" memorie cu optiuni de compilare (ceva gen -RESROM1E00-1EFF). Banui ca si pentru MCC18 exista asa ceva, da' trebuie sa te uiti in documentatie. Si daca rezervi o zona de memorie la inceput, ar trebui sa-si "adapteze" singur "originea", nu?Ma rog,bootloaderul meu se aseaza la sfarsitul memoriei, ceea ce, cred, imi usureaza viata.A, inca ceva, s-ar putea sa ai nevoie de o functie pentru intreruperi (eventual goala). Din cate tin eu minte, la mine n-a functionat bootloaderul corect pana n-am facut chestia asta (acum se poate ca problema sa fi fost in cu totul alta parte, da' eu cu senzatia asta am ramas).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines