Fórum témák
» Több friss téma |
Ü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.
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)
Ü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. 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)
16F877 hez kellene. 876 al próbáltam.
Semmit se ír bele.
Próbálkoztam de nem akar működni
A hardver nálad hogy néz ki?
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
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,
Milyen bootloader és downloader programot használsz?
Steve Idézet: „gen. mondjuk én 18f1320 ra használtam. TinyBootloader a neve.”
Ő 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
Ü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.
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)?
Eredeti pic égetővel (ICD) írtam be a picbe a hexet.
A korábban mutatott kábelt csináltam meg hozzá.
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)
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á.
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.
Ü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.
É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
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
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!
Üdv!
Van mintaprogram is hozzá, azt se tudtam belevarázsolni, pedig az elvileg jól kezdődik. Idézet: Ő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. „A progiba nincs teszt rész” 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.
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 Idézet: és ha interruptot akarsz használni??? „általam ismert verziónál úgy kell indítani, hogy ORG 3 és akár írhatom is”
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
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,
A cucc még nem üzemel, sajnos a próbakábel megadta magát, Szerdáig szünetel a próbálkozás
sziatsztok megeépitettem egy klomplett loadert és ha kell küldök szivesen rajzot és ha tudok szivesen segitek
Ü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. |
Bejelentkezés
Hirdetés |