Sari la conținut
ELFORUM - Forumul electronistilor

Relocare user code pentru folosire cu bootloader


Eugen_B

Postări Recomandate

Salut ,

pe un pic 18f4450 am scris USB bootloader-ul de la microchip (varianta HID) . Bootloader-ul pare a functiona, cand tin apasat pe butonul desemnat a porni bootloader -ul , si il conectez la USB , este recunoscut , si pot folosi aplicatia lui pentru a scrie programul. Bootloader-ul ocupa portiunea de memorie 0x00h - 0xFFFh.

Problema mea este ca eu vreau sa folosesc impreuna cu acest bootloader hex-uri compilate cu HI-TECH PICC18. Printre unele proiecte de la microchip (cu compilator C18 de la microchip) am vazut ca pentru a fi folosite cu bootloader se reloca vectorul de reset si cei 2 vectori de intrerupere de la adresele 0x00h , 0x08h respectiv 0x18h la adresele 0x1000h, 0x1008h respectiv 0x1018h .

Cum realizez aceasta operatie in PICC18 ? Eu am incercat cu adaugarea comenzii "--codeoffset=1000" la commandline-ul linker-ului. Din fisierul *.map generat:

TOTAL           Name          Link     Load   Length  Space        CLASS   CODE                           reset_vec     1000     1000        4     0                intcode       1008     1008       10     0                init          1018     1018       24     0                end_init      103C     103C       12     0                text0         1210     1210       82     0                text1         104E     104E      1C2     0
observ ca mi-a plasat cum trebuie vectorul de reset si intrerupere la adresele potrivite , dar problema este ca probramul nu merge. Programul este unul simplu , un buton aprinde un led , testat fara "--codeoffset=1000" si scris direct in pic , programul fiind functional.

Unde gresesc ? De ce nu merge programul incarcat cu bootloader-ul ? Am incercat si cu comanda "-a1000h" impreuna cu "--codeoffset=1000" si nici asa nu merge.

Daca cineva are mai multa experienta cu bootloader-e si m-ar putea ajuta , as fi recunoscator.

Link spre comentariu
  • Răspunsuri 1
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Eugen_B

    2

Zile populare

Top autori în acest subiect

Hm.. se pare ca mege programul cu bootloader, cu "--codeoffset=1000" , dar trebuie modificat hex-ul si adaugat ":020000040000FA" la inceput, altfel nu e scris.Dar acum am alta problema , intr-un program generez 4 sunete cu un squarewave cu ajutorul intreruperii unui timer , durata timerului este o diviziune a frecventei sunetelor, astfel in functie de sunetul dorit numar in functia de intrerupere diviziuni si la numarul dorit de diviziuni inversez un pin. Cand programul ruleaza fara bootloader totul merge bine , cand ruleaza cu bootloader-ul insa sunetele sunt mai inalte , si distorsionate .Inteleg ca rutina de intrerupere este intarziata de un salt de la 0x08 la 0x1008 , dar de ce sunetul este distorsionat ? (in loc doar sa fie mai inalt/ mai jos).

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări