RS232 hex bootloader PIC18 mikrovezérlőhöz

A megvalósítandó cél

Olyan PIC-es eszközök építésekor, amiken az RS232 port ki van alakítva, jól jön, ha ezen a porton keresztül le tudunk tölteni új firmware-t az eszközre. Ilyenkor szügségtelenné válik az eszközön az ICSP port kialakítása. Erre ad megoldást a bootloader.

A program megírásakor a fő cél az volt, hogy külön program nélkül, az egyébként is minden operációs rendszerben rendelkezésre álló egyszerű terminálprogrammal legyen használható (én a Windows Hyperterm-jét használtam). Így a megírt program .hex állományát egyszerű szövegként a terminálprogramon keresztül az eszközre elküldve a programozás megvalósul.

A bootloader jellemzői

Természetesen a bootloader is a PIC erőforrásait használja, ezért a letöltendő program megírásakor bizonyos követelményeket figyelembe kell venni. Ezek:

A bootloader használata

A bootloadert lefordítva majd a PIC-be égetve máris használatra kész. Természetesen a PIC RX és TX lábait egy megfelelő RS232 szintillesztővel (pl. MAX232) egy megfelelő csatlakozóra kell kivezetni, hogy a programozandó eszköz összeköthető legyen a számítógéppel.

A számítógépen bármilyen soros kommunikációs program használható. A soros kommunikáció a bootloaderrel "19200bps, no parity, 8 data bits, 1 stop bit" beállítással, XON/XOFF (szoftveres) átvitelvezérléssel történik. A felhasználói programként előállított .hex file-t a bootloader bejelentkezése után egyszerű szövegfile- küldéssel kell az eszközre küldeni. A bootloader a file sorainak vételét 1-1 karakterrel fogja nyugtázni, ami a terminálprogramban látszik, így követhetjük a programozási folyamatot.

Egy tipikus kimenet a terminálon:

-A......!....!....!....!....!....!....!....!....!....!....!....!....!....!....!.
...!....!....!....!....!....!....!....!....!....!....!....!....!....!....!....!.
...!....!....!....!....!....!....!....!....!....!....!....!....!....!....!....!.
...!....!....!....!....!....!....!....!....!....!....!....!....!.....!....!....!
....!..ACCCCCCCCCCCAEEEEEEEEEEEE!
OK

A bootloader által visszaküldött karakterek a következőket jelentik:

Az utolsó sor tartalmazza a művelet sikerességét ("OK") vagy sikertelenségét ("x ERR"). Sikertelenség esetén a következő üzenetek jelenhetnek meg:

A bootloaderrel rendelkező PIC-re a fentebb említett megszorításokkal kell programot írni. Ezt segíti a csomagban megtalálható "my18f2321b.lkr" linker script file, ami tartalmazza a bootloader által lefoglalt erőforrások kizárását a felhasználó elöl. Ha ezzel a scripttel fordítjuk a projektünket, valamint a RESET, INT és INTH belépési pontoknak 0x0400, 0x0408 és 0x0418 címeket használunk, akkor a projektünk betölthető és futtatható lesz a bootloaderrel már felprogramozott PIC-kel.

A csomagban megtalálható egy kis tesztprogram .hex fileja is, ami a PORTB kimeneteken pörget egy bitet (PORTB-re kötött LED-eken futófény látszik). A tesztprogram akarattal elrontott .hex fileja is a csomagba került, ezzel ki lehet próbálni, milyen, ha hibára fut a programozási folyamat ("C ERR"-rel megáll).


b18ldr.zip: a bootloader filejai