c: hi-tech 9,80, interrupt asm
Hynek Sladky
econf na centrum.cz
Pondělí Březen 31 12:10:12 CEST 2014
Prekladac 9.83 a ted XC8 1.12.
Projekty, ve kterych to pouzivam, mam prekladane s offsetem 0x800 -
ladim to bez bootloaderu, proto se musi z reset vektoru i interrupt
vektoru skocit do ladeneho kodu, kdyz tam bootloader pri ladeni neni. To
je take nejspis duvod, proc jsem s tim zatim nemel problem. Ale kdyz
jsem hledal nejake reseni, jak napsat aplikaci s podporou bootloaderu,
tak jsem taky musel projit mnoho slepych cest, ale prece jen je to uz
docela davno.
Instrukce goto akceptuje 11-bitovou hodnotu, proto to maskovani - hlavne
kvuli tomu, abych si pri pripadne zmene vzpomnel, ze tam nejde napsat
rovnou adresa.
Napada me akorat napsat si zacatek Flash v assembleru, aplikaci posunout
a doplnit skoky z reset vektoru a low_interrupt vektoru.
Uplne nejlepsi by dle meho bylo napsat si obsluhu high_interruptu v
cistem assembleru a nechat na linkeru, aby to spravne slinkoval, ale to
jsem v tomto prekladaci jeste nedelal. Respektive nektere slozitejsi
veci me rpesvedcily, abych se do toho nepoustel a vysledkem byl vyse
zminovany postup.
Hynek Sladky
Dne 31.3.2014 10:12, Miroslav Draxal napsal(a):
>
> Co používáte za překladač?
>
> Nějak mi nedochází "goto 0x804 & 0x7FF"k čemu je to dobré?
>
> to je přesně ta konstrukce, kterou bych očekával, jenže hi-tech to
> vyhodí takhle.
>
> :0 warning: segment "_vectors_text" (0-5) overlaps segment "reset_vec"
> (0-3)
>
> l.obj: (1343) hexfile data at address 0x0 (0x56) overwritten with 0x80
> (warning)
>
> a po disis.. to vypadá takhle
>
> 1 0000 EF80 vectors GOTO 0x300
>
> 2 0002 F001 NOP
>
> 3 0004 0012 RETURN 0
>
> 4 0006 FFFF NOP
>
> 5 0008 FFFF NOP
>
> 6 000A FFFF NOP
>
> 7 000C FFFF NOP
>
> 8 000E FFFF NOP
>
> 9 0010 FFFF NOP
>
> 10 0012 FFFF NOP
>
> 11 0014 FFFF NOP
>
> 12 0016 FFFF NOP
>
> 13 0018 CFD8 interrupt_low MOVFF STATUS, 0x6B
>
> 14 001A F06B NOP
>
> 15 001C CFE8 MOVFF WREG, 0x6C
>
> Prostě místo na adresu 0x08 to plácne na RESET vektor.
>
> *From:*Hw-list [mailto:hw-list-bounces na list.hw.cz] *On Behalf Of
> *Hynek Sladky
> *Sent:* Monday, March 31, 2014 7:24 AM
> *To:* HW-news
> *Subject:* Re: c: hi-tech 9,80, interrupt asm
>
> Pro PIC16F182x pouzivam napr. tuto konstrukci:
> static void vectors (void) @ 4 {
> #asm
> movlp 0x08
> goto 0x804 & 0x7FF
> #endasm
> }
>
> Ma to tak pouzite v aplikaci s bootloaderem pro premapovani
> interruptu. Treba to pujde pouzit i pro PIC18...
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140331/2c703ee2/attachment.html>
Další informace o konferenci Hw-list