PIC bootloader - Printerisõbralik versioon +- Elektroonikafoorum.com (https://elektroonikafoorum.com) +-- Foorum: Arutelud (https://elektroonikafoorum.com/forum-3.html) +--- Foorum: Programmeerimine (https://elektroonikafoorum.com/forum-5.html) +--- Teema: PIC bootloader (/thread-588.html) |
PIC bootloader - felch - 31-12-2014 Hei, elektroonikud! Ma olen siin juba paar päeva vaevelnud probleemi kallal, kuidas kirjutada läbi omtehtud bootloaderi PICi konfi baite. Konkreetne kivi on PIC18F46K80. Kõik muu kirjutub ilusasti kuid konfiga tekib jama - esimene bait aardressil 0x30 00 00 on progejaga tagasi lugedes alati 00. Kommenteerides konfiala kirjutamise jupi välja, viga kaob. Muud konfibaidid kirjutatakse õigesti. Data kirjutamise puhvrisse tuleb õige (debug-väljatrükk näitab). Toimetan nii: - kustutan konfiala 15 baiti - kirjutan baidid TBLWRT*+ käsuga - sätin biti WR mis peaks käivitama kirjutamise Enne kustutamist ja kirjutamist sean TBLPTR= 0x 30 00 00 JA ikka.... Mis loll viga see on, mida ma ei suuda näha? PHP Kood: clrwdt Head aastavahetust ! /Felch RE: PIC bootloader - A.R. - 01-01-2015 (31-12-2014, 09:35 PM)felch Kirjutas: movlw 0x0CMinusugune laiskvorst Kirjutab C-s ja laseb valmis bootloaderil laadida. Aga PIC*4550 jutus nad teevad seda kirjutust terake teisiti. Kas nad on jobud või peabki see nii olema? MOVLW D’32’ ; number of bytes in holding register MOVWF COUNTER WRITE_BYTE_TO_HREGS MOVF POSTINC0, W ; get low byte of buffer data MOVWF TABLAT ; present data to table latch TBLWT+* ; write data, perform a short write ; to internal TBLWT holding register. DECFSZ COUNTER ; loop until buffers are full BRA WRITE_WORD_TO_HREGS Head ja transleeruvat uut aastat. A.R. RE: PIC bootloader - madis - 01-01-2015 Ivanovi lihtmeetod: topi iga käsu vahele 10 nop-i Kui korda läheb, teab timingu probleeme otsida. Noh, ja errata-dest on ka palju huvitavat välja tulnud, ei usu et see PIC erand on RE: PIC bootloader - felch - 02-01-2015 Niipaljukest ma kodutööd enne tegin, et lugesin errata lehte - selle asja kohta polnud midagi öeldud.NOP on hea lahend aga hetkel tundub mitte see olevat. Flashi koodibaidid kirjutatakse ju täpselt analoogse rutiiniga ja toimib. Konfiala on samuti prose enda sisemine flash, vaid aadress on teine. Kogu toimetamine käib prose ränikivises kõhus, mingeid perifeeriaseadmeid ei kasutata ja kirjutamise ajal on ka kõik katkestused keelatud. See on nagunii viimane etapp, peale seda tehakse reset. A.R., su viidatud kood on ju sama mis minulgi! Vaid baitide arv on teine ja kirjutamise käske pole näidatud (otse flashi kirjutamise sest TBLWRT kirjutab vaid mäluregistritesse). Konfibaidid kirjutuvad aga esimene läheb alati aia taha. Tundub, et siin on mingi kiiks...mida ma sellest hiljem teades ka ise DS-is selgelt näeks. Aga paraku veel ei tea... Miks ma teen ise bootloaderit? Sest see peab töötama MODBUS protokolliga ühel tellimustööl - spetsiifiline plaat. Minu teada ei töeta ükski bootloader modbus'i käske. Asi iseenesest tuli suht talutav - elab üle ka voolukatkestused bootloadimise ajal jne. Kui sellest viimasest veast ka üle saaks... RE: PIC bootloader - A.R. - 03-01-2015 (02-01-2015, 08:36 PM)felch Kirjutas: A.R., su viidatud kood on ju sama mis minulgi!Jäi silma väike vahe nimedes. *** 0. aadresile ei kirjuta! Kas 1. saab 0. või 1. sisu? Kas need teised TBLWT käsud ( TBLWT*, TBLWT*+, TBLWT*-, TBLWT+*) saavad sellele 0. pihta? Vast annab seda 0. sisu eraldi, mitte tsüklis, kirjutada? Kas oled seda kirjutist proovinud ka mõne teist marki PICi peal? Võib ju olla sellel tüübil mingi käsu anomaalia. RE: PIC bootloader - madis - 07-01-2015 Felch, kas leidsid kala üles ? Valgusta teisigi ! RE: PIC bootloader - felch - 09-01-2015 Veel ei ole leidnud, panin ta mõneks ajaks kõrvale. Ilmselt pean varsti edasi tegelema. Kui vea leian, annan kindlasti teada. |