mitescu Postat August 3, 2010 Partajează Postat August 3, 2010 M-am lovit de o situatie la care eu nu am gasit (pana acum) rezolvare Datele sunt: placa cu ATmega128, program bootloader 4kw In cadrul programului am o matrice care depaseste marimea flash-ului alocat (4kw) si doresc sa il plasez in zona cu inceput de adresa 0x1000. Matricea este de tipul: flash char matrix[128][128]={1,2,3......... }Deci in total are 8kw - 16kbytes complilatorul imi trece matricea imediat dupa jump-urile de la intreruperei si prin urmare da overflow la memoria flash Intrebare : cum reusesc sa "conving" compliatorul sa imi plaseze matricea la adresa 0x1000.? Link spre comentariu
Laci Postat August 6, 2010 Partajează Postat August 6, 2010 Daca descarci cu bootloader atunci nu trebuie sa plasezi tabelul, lasa cam face compliatorul.Bootloaderul se afla la "capatul" flashului, nu la inceput :)Daca vrei sa plasezi un tabel undeva poti sa faci cu directive asm .ORG .DSEG sau definesti sectiuni .section (valabil pentru avr-gcc), momentan nu am acces la laptopul meu personal unde am cateva exemple. Link spre comentariu
mitescu Postat August 7, 2010 Autor Partajează Postat August 7, 2010 In primul rand , nu descarc cu un bootloader. Programul pe care il scriu este de tip bootloader.In al doilea rand (si aici este greseala mea ca n-am specificat) , compilatorul utilizat este CodeVision. Acesta plaseaza tabelele imediat dupa vectorii de intrerupere. Nu stiu cum face avr-gcc, dar codevision nu ma lasa sa pun datele unde doresc. Pentru varianta cu declararea tabelului in asm, nu este nicio problema, se poate. Ideea era sa accesez zona tabelara prin intermediul unei matrici direct, fara sa apelez la asm. Si apropo, se cunoaste vreo librarie care face "SPM"? si daca da care este aceea? Link spre comentariu
Laci Postat August 7, 2010 Partajează Postat August 7, 2010 Pai in codevision e foarte simplu: project -> configure -> c compiler options -> program type (vezi poza)[attachment=0]codevision-boot.JPG[/attachment]nu stiu daca codevision are sau nu librarii pentru scriere in flash, parca nu, avr-gcc are vezi boot.hEu am gasit una pe net in asm, si am portat/modificat dupa nevoile mele 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