claudio Postat Octombrie 12, 2012 Partajează Postat Octombrie 12, 2012 Salutare,Vreau sa-mi fac un bootloader simplu, fara prea multe complicatii.Am studiat pe net diferite variante si mi-am facut o idee.Acum e partea in care vreau sa-l implementez.Ca si suport folosesc AVRStudio5, ExtremeBurner, USBasp.Pentru inceput o sa fac o aplicatie care va fi scrisa la adresa de boot si la rulare sa aprinda un LED.Cum procedez ca acest program (HEX) sa fie scris in boot si nu la adresa 0x0000?Mutlumesc. Link spre comentariu
claudio Postat Octombrie 23, 2012 Autor Partajează Postat Octombrie 23, 2012 Salutare, Am reusit sa fac ce mi-am propus, iar mai jos sunt explicatii pentru cei care au nevoie de ajutor. La pornire uC va rula aplicatia din bootloader (BlinkLED-boot.c) astfel ledul de pe un PORTA va licarii de 32 ori la 100ms, face o pauza de 1sec apoi porneste aplicatia propriu-zisa (BlinkLED-main.c) in care ledul va licarii la 500ms. Sursa BlinkLED-boot.c #define F_CPU 16000000UL#include <avr/io.h>#include <util/delay.h>int main(void){ DDRA=0xFF; PORTA=0x00; while(1) { for (uint8_t i=0; i<32; i++) { PORTA=0xFF; _delay_ms(100); PORTA=0x00; _delay_ms(100); } _delay_ms(1000); asm("jmp 0x0000"); }}Inainte de compilare trebuie sa faceti urmatoarea setare in AVRStudio5: 1. Click dreapta pe proiect -> Properties 2. la Memory trebuie completat: MemoryType: Flash Name: .text Address: 0x3C00 Sursa BlinkLED-main.c #define F_CPU 16000000UL#include <avr/io.h>#include <util/delay.h>int main(void){ DDRA=0xFF; PORTA=0x00; while(1) { for (uint8_t i=0; i<8; i++) { PORTA=0xFF; _delay_ms(500); PORTA=0x00; _delay_ms(500); } _delay_ms(1000); }} Pentru a obtine un singur fisier HEX, am concatenat cele doua HEX-uri obtinute, folosind Srecord http://srecord.sourceforge.net/ prin comanda "srec_cat BlinkLED-main.hex -intel BlinkLED-boot.hex -intel -o APP.hex -intel". Bitii "Fusebits" au valoriile: LF: 0xFF HF: 0xDA Microcontrolerul este ATmega32. Link spre comentariu
claudio Postat Octombrie 23, 2012 Autor Partajează Postat Octombrie 23, 2012 Am uitat sa specific: Multumiri userului "ole" pentru suport Link spre comentariu
claudio Postat Noiembrie 22, 2012 Autor Partajează Postat Noiembrie 22, 2012 Acum m-am lovit de urmatoarea problema: cum scriu fuse bytes prin bootloader?Pana in momentul de fata am reusit sa-i citesc si sa-i afisez in Hyperterminal.Pe net sunt ceva documentatii, dar sunt doar pentru LOCK BITS.Oare nu se poate scrie LOW FUSE, HIGH FUSE si EXTENDED FUSE prin bootloader?Multumesc. Link spre comentariu
ole Postat Noiembrie 28, 2012 Partajează Postat Noiembrie 28, 2012 Fusebitii se pot programa doar folosind un programator. Din interiorul uC-ului (bootloader) se pot programa doar Lock bitii. Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum