Fórum témák

» Több friss téma
Fórum » Bootloader PIC-hez
 
Témaindító: Thowra, idő: Jan 15, 2009
Témakörök:
Lapozás: OK   1 / 2
(#) Thowra hozzászólása Jan 15, 2009 /
 
Üdv mindenkinek!
Nemrég találkoztam egy számomra nagyon jónak tűnő pic programozási móddal, a bootloaderrel. Keresgéltem és találtam egy kapcsolást amit sikerült is megépíteni, letöltöttem hozzás a Proton IDE lite ot, abba volt a picbe égetendő hex is. 877A hoz szeretném használni. Volt 4 és 20 MHz es hex is, mindkettővel próbáltam, de sehogy se működik, a programba megnyitottam egy 877 re írt progit, bele akartam tölteni, a progi írja, hogy nyomjam meg a reset et, megtettem de semmi változás, nem indul el.
Használ valaki Bootloadert itt? Ha igen kérem segítsen, mi lehet a hiba? Milyen programot javasol hozzá?
A megépített kapcsolást mellékelem, a TX lábat a pic TX re, RX et a pic RX re kötöttem.
A segítséget előre is köszönöm.
(#) NeoCorteX válasza Thowra hozzászólására (») Jan 15, 2009 /
 
Hale!
Igen. mondjuk én 18f1320 ra használtam. TinyBootloader a neve. SZvSZ minimális hack-eléssel akármelyikre rá lehet implementálni amelyik képes valahogy a belső prg memóriáját írni. a 18F ek nagyon tudják, utasítás is van rá. egyszerű, némelyik 16F mintha az epromba írna csak odébb módszerrel ír a prg memóriába. Ha jól emlékszem... (a 18F ben biztos vagyok)

8MHz-s bootloadert raktam bele, hogy ha nem akarok külső osc-t akkor is elindul a belső default 8MHz-n.

Ez a változat nekem NAGYON bevált. a BL a prgmem végére íródik be.
Neked a program írásakor semmire nem kell ügyelned. a PC-s betöltő a prg mem végére egy goto valahovát ír be, amit Te a saját programod org 0 jához írtál.(bocs ennyire kell ügyelni hogy ezzel kezd... de sztem ez alap)
Ez a txrx dolog nekem zavaros volt, de a rajz kb ugyanaz. Jelzem ha a TinyBootloader-t választod ami ingyenes ahhoz is van rajz. A reset az nem kell. Csak a tápot akkor kell ráadni amikor a betöltő keresgéli a uC-t.
Sok sikert, jó az megy az, nem is ördöngősség(az alkalmazása)
(#) Thowra válasza NeoCorteX hozzászólására (») Jan 15, 2009 /
 
Üdv!
Köszönöm a segítséget, bár van némi homályos folt.
Egy már kész HEX et szeretnék beírni, sajnos abba már nem tudok módosítani. Ha jól értem kellene. Amit láttam ott a program kiírta, hogy resetelni kell, gomb megnyomása után (Szerintem tápfesz ki/be kapcsolás is jó) a progi beírta a picbe a programot. A TinyBootloadert megtaláltam, de nem találok 877 hez való HEX et.
A reset áramkör max232 ből kijön egy RX és egy TX (adó/vevő jel), ezeket kötöttem a pic azonos lábaira TX a TX re, RX az RX re.
(#) NeoCorteX válasza Thowra hozzászólására (») Jan 15, 2009 / 4
 
Idézet:
„Köszönöm a segítséget, bár van némi homályos folt.”

Éspedig.... ?
Idézet:
„Egy már kész HEX et szeretnék beírni, sajnos abba már nem tudok módosítani. Ha jól értem kellene.”

Nem feltétlen kellene. Sőt gyanítom nem kell.
Lehet HEX -ből ASM et csinálni decompilerrel. amit újra tudsz forgatni.
Ötlet: olvastasd vissza a "sima" égetőddel hogy egyáltalán írt e bele valamit. mert lehet hogy nem de az is lehet a beírt programot nem jó.
16F vagy 18F a piced? mert tinybld_16F876A_20MHz.HEX ilyet bootloader hexet én találtam
tinybld195.zip ezt használtam. (az előbb próbáltam mellékelni csak nem lehet mert a két mega az nagy !? és ezt is most újra be kell írnom)
(#) Thowra válasza NeoCorteX hozzászólására (») Jan 15, 2009 /
 
16F877 hez kellene. 876 al próbáltam.
Semmit se ír bele.
(#) Thowra hozzászólása Jan 15, 2009 /
 
Próbálkoztam de nem akar működni
A hardver nálad hogy néz ki?
(#) kissi válasza Thowra hozzászólására (») Jan 16, 2009 /
 
A DOWNLOADER működése a következő ( pl. 16F877-re):

A PIC-ben kell egy BOOTLOADER programnak már előre betöltve lennie ( ezt nem tudod a DOWNLOADER programmal betölteni, csak "rendes" égetővel, de lehet ilyet készen is venni tudomásom szerint a CHIPCAD-nél!).
Tudni kell, hogy a BOOTLOADER-t hogyan konfigurálták, hova "tették" a letöltő lábat.
Kell egy egyszerű letöltő ák. ( 1 nyomógomb, 1 tranzisztor, rossz egér soros kábele, 1 LED, 1 dióda, néhány ell. ).
A letöltő ák-t csatlakoztatod a letöltő lábra ( + táp ).
A 16F877-et reset-eled ( 1-es láb GND), közben! letöltő nyomógomb megnyom, RESET megszüntet, letöltő gomb elenged (sorrend nagyon fontos!) --> erre a LED-nek kettőt kell villannia!
Ezután lehet a DOWNLOADER programmal letölteni a programot, melyet sikeres letöltésnél 3 villanással nyugtáz a LED!

FONTOS: a programod csak! a 3-as memória helytől kezdődhet, amennyiben nem, akkor nem fogja letölteni!!

A hozzászólásodban írt soros portos MAX232 használható, de nem kell az adás és vételág!

Steve

(#) NeoCorteX hozzászólása Jan 16, 2009 /
 
Az én áramköröm egy mezei MAX232.
Semmi kacifánt nincs mellette.
A bootloader működése a következő.
A PIC ben amikor elindul a mikrokód, elősször a memória végén lévő bootloadra indul el. Elküld egy byteot soroson, majd választ vár. Kb 3 mp-is utána ugrik a felhasználói programra.(arra a címre amit te a te programod legelején (org 0) a goto utasításban megadtál)
A betöltő működése a következő.
Amikor rákeresek a vezérlőre vár egy byteot. Ha azt megkapja kész a kézfogás megtalálták egymást és minden jó. Lehet írni olvasni. De ha nem kap semmilyen byteot a betöltő ő is vár 5-6 mp is aztán szól hogy nem talált senkit a madzag végén.
Elképzelhető hogy illeszthetes néhány tranzisztorral meg ellenállással. Én pont erőteljesen kihasználom a soros kommunikációt és nem akartam gány megoldást.


G,
(#) kissi válasza NeoCorteX hozzászólására (») Jan 16, 2009 /
 
Milyen bootloader és downloader programot használsz?

Steve
(#) NeoCorteX válasza kissi hozzászólására (») Jan 16, 2009 /
 
Idézet:
„gen. mondjuk én 18f1320 ra használtam. TinyBootloader a neve.”
(#) kissi válasza NeoCorteX hozzászólására (») Jan 16, 2009 /
 
Ő nem erre kérte, én csak az általam leírtat ismerem 16F877-re ( ez a CHIPCAD-nél található), ha nem egyről beszélünk, akkor jó lenne látni a letöltő és a bootloader program linkjét!

Steve
(#) Thowra hozzászólása Jan 16, 2009 /
 
Üdv!
Bocs, hogy csak most válaszolok, de nem voltam gépközelbe.
A proton IDE lite ot szeretném használni.
http://www.mecanique.co.uk/code-studio/loader/index.html
A programhoz tartozott egy hex a 4 és egy a 20 megás 877 hez, ezekkel próbáltam, a program kiírja, hogy reseteljek, resetet megnyomom de nem történik semmi.
(#) icserny válasza Thowra hozzászólására (») Jan 16, 2009 /
 
Nem egészen világos számomra, hogy mit csináltál. A két hex fájl 4, illetve 20 MHz-es órajel frekvenciához való. Milyen kapcsolást használtál (a korábban már bemutatott RS-232 interfészen kívül)? Mivel írtad be a PIC-be a kiválasztott bootloadert? Ellenőrizted-e (pl. visszaolvasással)?
(#) Thowra válasza icserny hozzászólására (») Jan 16, 2009 /
 
Eredeti pic égetővel (ICD) írtam be a picbe a hexet.
A korábban mutatott kábelt csináltam meg hozzá.
(#) icserny válasza Thowra hozzászólására (») Jan 16, 2009 /
 
A "milyen kapcsolást használtál" kérdés még mindig megválaszolatlan! Kvarc, szűrések, miegyéb.
Ha van (még) ICD-d, akkor az is érdekes lehet kipróbálni, hogy működik-e egyátalán az adott kapcsolásban a PIC (pl. led villogtatással). Sőt, az is érdekes kérdés, hogy egy ICD-vel beégetett program tud-e kommunikálni a PC-vel (pl. Hyperterminálra kiíratni valamit)
(#) Thowra válasza icserny hozzászólására (») Jan 16, 2009 /
 
A kapcsolás működne, egy led volt a B0 ra kötve, azt kellett volna villogtatni. Ha a progit beégetem akkor szépen megy.
A kapcsolásba csak a led, 4, 20 MHz es kerámia/kvarc oszci volt, próbáltam mindkét értékkel, fajtával. és erre volt kötve a fentebb mellékelt max232 vel épített kábel, más nem volt rajta. A gyári égető már nincs nálam, próbáltam másik égetővel is előtte, a kódot tökéletesen beégeti az égető, a bootloader viszont oda se bagózik rá.
(#) icserny válasza Thowra hozzászólására (») Jan 16, 2009 /
 
Hát én ezek után a soros kapcsolatot venném szemügyre. Ha van hozzá PC-s program, akkor egy loopback teszttel (TX/RX összekötésével) vagy hasonlóval kezdeném.

(#) Thowra válasza icserny hozzászólására (») Jan 17, 2009 /
 
Üdv!
A progiba nincs teszt rész, hiába kötöm össze, nem csinál semmit, gondolom vár valami visszajelzést a pic felől.
(#) kissi válasza Thowra hozzászólására (») Jan 17, 2009 /
 
Én a Chipcad-féle Bootloader-t használtam, az nagyon egyszerűen működött a leírás alapján. Szerintem égesd be azt, vagy vegyél egy beégetett 16F877-et ( +100 Ft, ha jól tudom).
Ennél a loadernél viszont csak a 3-as helyen kezdheted a programod, tehát egy valahonnan szerzett HEX nem biztos, hogy menni fog!

Steve
(#) kissi válasza Thowra hozzászólására (») Jan 17, 2009 /
 
Most néztem rá a BOOTLADER-ed leírására.
Azt mondja, hogy a hex file elnevezésének a következőképpen kellene kinéznie:
"Például, a fájl 16F877_20.hexet arra kellene használni, hogy programozzon egy olyan eszközt, ami neki fog menni 20MHz."

És a másik fontos rész, hogy a program szerkezetének a következőképpen kell kinéznie:
ORG 0
GOTO STARTOFPROGRAM

ORG 5
StartOfProgram
; a programod megy itt

Ha a Te programod nem így van, akkor a loader nem fogja betölteni ( de egy "rendes" égető be tudja programozni, ezért mehetett Neked!).

Steve
(#) NeoCorteX válasza kissi hozzászólására (») Jan 17, 2009 /
 
Jóreggelt.
Így van. Mint ahogy a Tiny is ezen az elven működik.
De szerintem ez az összes bootloader leírásában le van írva. De az hogy a prg úgy indul hogy org 0 goto start, az kb alapvetés. Sztem ha valaki nem így kezdi a dolgokat anélkül hogy jó oka lenne rá, az még erősítsen rá mielőtt bootloadereket akar használni.
Uraim, jó munkát!
(#) Thowra hozzászólása Jan 17, 2009 /
 
Üdv!
Van mintaprogram is hozzá, azt se tudtam belevarázsolni, pedig az elvileg jól kezdődik.
(#) icserny válasza Thowra hozzászólására (») Jan 17, 2009 /
 
Idézet:
„A progiba nincs teszt rész”
Őszintén szólva nem is erre gondoltam, hanem arra, hogy -mivel a soros port a PC része - a PC-hez keresel az Interneten egy tesztprogramot a soros port teszteléséhez.

Nézd meg pl. ezt a leírást, eszerint a Hiperterminál program is megteszi. Fontos, hogy a XAX232 illesztőd i benne legyen a buliban!

(az ne zavarjon, hogy itt USB-soros átalalkítóról beszélnek. Annak a vége is egy soros port...)


A PIC ugyanis működik, a számítógéped is, a letöltő programot feltehetőleg már kipróbálták, mielőtt közzétették, így nincs más gyanús láncszem, mint a soros port és a hozzákapcsolt illesztőd.

A kapcsolási rajz jó, de távolról nem tudjuk ellenőrizni, ezt magadnak kell megtenni valahogyan.
(#) kissi válasza NeoCorteX hozzászólására (») Jan 18, 2009 /
 
Hát nem tudom, hogy "De az hogy a prg úgy indul hogy org 0 goto start, az kb alapvetés." mennyire helytálló, mert az általam ismert verziónál úgy kell indítani, hogy ORG 3 és akár írhatom is folyamatosan a programomat!
A másik dolog meg kifejezetten meglepett, hogy meg kell adnom az órajel frekvenciáját... a bootloaderes programok már egy beégetett processzorral rendelkeznek (szerintem általában tudom a környezetét, ezzel az órajelét is!).
Az általam használt program egy tesztsorozattal meghatározza a soros port sebességét és így végzi a letöltést ( nem kell neki megadni! ).

Steve
(#) NeoCorteX válasza kissi hozzászólására (») Jan 19, 2009 /
 
Idézet:
„általam ismert verziónál úgy kell indítani, hogy ORG 3 és akár írhatom is”
és ha interruptot akarsz használni???
(#) kissi válasza NeoCorteX hozzászólására (») Jan 19, 2009 /
 
Az "akár" szó a megszakítás nélküli programokra vonatkozott, de megszakításosnál is lehet például a következő módon:

ORG 3
GOTO START

INTERRUPT
.
.
.
RETFIE

Steve
(#) NeoCorteX válasza kissi hozzászólására (») Jan 19, 2009 /
 
Hmm-Hmm. Jóóó. lehet. De nekem az akkor sem elegáns. Azért van ennek egy szabványa.
De.
Abban egyetértünk hogy a bootloader leírásában elmondják hogy mihez ragaszkodjunk adott konfigurációk használatánál.
G,
(#) Thowra hozzászólása Jan 19, 2009 /
 
A cucc még nem üzemel, sajnos a próbakábel megadta magát, Szerdáig szünetel a próbálkozás
(#) bazs hozzászólása Feb 17, 2010 /
 
sziatsztok megeépitettem egy klomplett loadert és ha kell küldök szivesen rajzot és ha tudok szivesen segitek
(#) robotech hozzászólása Máj 17, 2010 /
 
Üdv Mindenkinek!

Petr Kolomaznik féle bootloadert szeretnék használni, de nem egyértelmű számomra, hogy a saját ASM programomban , hogy állítsam be a memória címeket.

Bootloader nélkül ugy úgy szoktam, hogy

ORG 0x00
goto main program
ORG 0x04
goto int

A bootloader programot úgy is át kell szerkeszteni, hogy beállítsam a saját oszcillátoromat (18.432MHz), ezért átnéztem, hátha találok valami utalást erre a kérdésre is, de sajnos nem látok ilyesmit.
Mellékelem a bootloader ASM-jét, meg tudnátok nezni, hogy szerintetek, hol kellene kezdődnie a főprogramomnak?

Ill. Szeretném megkérdezni, hogyan tudom lekorlátozni a z MPLAB-ot, hogy a 2K utolsó 256 Bytejába ha írnék, akkor hibaüzenetet adjon a program (hogy nehogy átírjam a bootloadert)?


Köszönöm előre is a segítséget!
Márk.

bootldr.asm
    
Következő: »»   1 / 2
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem