Ke kākau ʻana i kahi bootloader OTA no ka ATmega128RFA1 (ma ke ʻano o ka hāmeʻa Smart Response XE)

Ke kākau ʻana i kahi bootloader OTA no ka ATmega128RFA1 (ma ke ʻano o ka hāmeʻa Smart Response XE)

Hoʻomaka ia me ka loaʻa ʻana e ka mea kākau ma ka mākeke lua o kahi mea hoihoi - Smart Response XE (ʻike pōkole). Manaʻo ia no nā kula: loaʻa i kēlā me kēia haumāna o ka papa kahi mea e like me ka puke leka uila a i ʻole ka unuhi ʻōlelo o nā makahiki he kanaiwa, nīnau ke kumu i kahi nīnau, a paʻi nā haumāna i nā pane ma nā kīpē o nā hāmeʻa e hiki mai ana ma luna o ka lekiō. (802.15.4) i ka mea hoʻokipa i pili i ka PC o ke kumu.

Ua pau ke kākoʻo no kēia mau mea hana i kekahi mau makahiki i hala aku nei, a he aha nā kula i kūʻai ai no $100-$200 i kēlā me kēia manawa i kēia manawa ma eBay no $10 a i ʻole. "Iron" i laila kūpono loa no nā hoʻokolohua geek:

  • keyboard me 60 kī
  • hōʻike me ka hoʻonā ʻana o 384 × 136, 2 mau ʻāpana no kēlā me kēia pika - like me BC, CGA, akā ʻaʻole 4 nā kala, akā nā gradations kukui.
  • microcontroller ATmega128RFA1 (128 kB flash, 4 kB ROM, 16 kB RAM, 802.15.4 transceiver)
  • waho (e pili ana i ka microcontroller, ʻaʻole ka mea holoʻokoʻa) hoʻomanaʻo uila no 1 megabit (128 kilobytes) me kahi interface SPI
  • keena no 4 mau mea AAA.

Ma ka inoa o ka microcontroller, maopopo ia no ka ʻohana AVR, ʻo ia hoʻi, ʻo ka hana ʻana i ka hāmeʻa Arduino-compatible ʻoi aku ia ma mua o ka hana liʻiliʻi ...

Mai ka lono mai hackaday ua ʻike ka mea kākau ua hana mua (ʻo ia ka loulou e haʻi i ka mea e hoʻopili ai i kahi), loaʻa ka manawa e holo pāʻani no Arduboy:


Akā ʻoi aku ka hoihoi o ka mea kākau i ka manawa kūpono ʻaʻole e pāʻani ma ka hāmeʻa, akā e aʻo:

  • hoʻomanaʻo uila me ka interface serial SPI
  • bootloaders no AVR
  • maʻamau 802.15.4

Hoʻomaka ka mea kākau ma ke kākau ʻana hale waihona puke (GPL v3) hiki iā ʻoe ke hoʻomaka i ka hōʻike, hōʻike i nā kikokikona a me nā ʻāpana ʻāpana, a komo i ka hoʻomanaʻo flash me kahi interface SPI. A laila hoʻomaka ʻo ia e hoʻopuka i nā manaʻo no ka hoʻohana pono ʻana o ka hāmeʻa: kahi VT-100 paʻa lima paʻa, nā pāʻani multiplayer. Ma hope o ka hana hou ʻana i ʻekolu mau mea hana, ua hoʻoholo ʻo ia e "aʻo" iā lākou pehea e loaʻa ai nā kiʻi "ma luna o ka lewa". ʻAʻole ia he mea hoihoi wale nō, akā he mea maʻalahi hoʻi: paʻakikī ke wehe i ka hihia o ka hāmeʻa i kēlā me kēia manawa, a ma lalo o ka uhi pākaukau he mau puka wale nō e hiki ai iā ʻoe ke hoʻopili i kahi polokalamu JTAG i ka papa.

Ke kākau ʻana i kahi bootloader OTA no ka ATmega128RFA1 (ma ke ʻano o ka hāmeʻa Smart Response XE)

Ua lawa kēia e hoʻopiha ai i ka bootloader Arduino, akā ʻaʻole ka sketch - ʻaʻole i lawe ʻia ka port serial ma laila, ʻaʻole hiki iā ʻoe ke hana me ka wehe ʻole i ka hihia. Eia kekahi, ʻo nā laina TX0 a me RX0 o ka port serial mua e pili ana i nā laina koho o ka matrix keyboard, ʻo ia hoʻi, nā mea i koho ʻia nā kī hana ma nā ʻaoʻao o ka hōʻike. Akā he aha kāu e hana ai - ua hana ka mea kākau i kēia:

Ke kākau ʻana i kahi bootloader OTA no ka ATmega128RFA1 (ma ke ʻano o ka hāmeʻa Smart Response XE)

Ua lawe mai ʻo ia i nā laina JTAG ma laila, a i kēia manawa ʻaʻole pono e wehe i ke keʻena pākahi. A i mea e hiki ai ke hoʻouka i nā kiʻi kiʻi, ua hoʻopili wau i nā awa serial ʻelua i ka mea hoʻohui like, me ka hoʻohui pū ʻana i kahi hoʻololi, no ka mea me ka hoʻokomo ʻia ʻana o nā pihi, ʻaʻole hiki ke hoʻopau ʻia ke kino ma kahi ʻano ʻē aʻe.

He manawa lōʻihi ka hana ʻana me ka hao hao, ka pahi kākāʻōlelo a me ka pū kepau. Ma keʻano laulā, ʻoi aku ka maʻalahi o ka hoʻouka ʻana i nā kiʻi "ma ka lewa", pono mākou e hana i kahi mea no kēia.

Hoʻohana ʻo Arduino IDE i kahi papahana e hoʻouka i nā kiʻi avrdude. E kamaʻilio me ka microcontroller me ka hoʻohana ʻana i ka protocol STK500, hiki iā ʻoe ke hoʻoili i nā faila ma nā ʻaoʻao ʻelua. ʻAʻole kūpono ʻole ia me nā kahawai kahi e hiki ai ke hoʻolōʻihi ʻia, distortion a me ka nalowale ʻikepili. Inā hele a rustles kekahi mea ma ka loulou serial, hiki iā ʻoe ke hele pupule e ʻimi i ke kumu. I ka manawa i hoʻomāinoino ai ka mea kākau iā ia iho no ka hapalua lā a ʻike ʻo ia he kelepona maikaʻi ʻole, a me ka mea hoʻololi hoʻololi CP2102 capricious. ʻO kahi microcontroller me kahi mea hoʻololi i kūkulu ʻia, no ka laʻana, ATmega32u4, hiki i kekahi manawa ke "ʻino". Ua ʻike kēlā me kēia mea hoʻohana Arduino ʻaʻole i maʻamau nā hewa hoʻouka sketch. I kekahi manawa hele maikaʻi ke kākau ʻana, akā hōʻike ka hoʻāʻo i kahi hewa. ʻAʻole kēia manaʻo aia ka hewa i ka wā kākau - ʻo ka hemahema i ka wā heluhelu. I kēia manawa e noʻonoʻo ʻoe i ka wā e hana ai "ma ka ea" ka mea like, akā ʻoi aku ka pinepine.

Ma hope o ka hoʻāʻo ʻana i nā ala like ʻole e hoʻoponopono ai i kēia pilikia, ua loaʻa ka mea kākau i kēia mau mea. He 128-kilobyte flash memory ka mea me ka SPI interface - loaʻa iā mākou ka ʻikepili ma o nā uea (e hoʻomanaʻo ua loaʻa i ka mea kākau hoʻokahi mea me kahi mea hoʻohui ma ka ʻaoʻao), e hoʻohana i kēia hoʻomanaʻo ma ke ʻano he pale, a hoʻouna i ka ʻikepili i kekahi mea ma o he lekiō. ʻO ia ke aloha mai Cybiko.

Ma hope o ke kākau ʻana i ke code no ka hana ʻana me ka lekiō, a me ka font, ʻoi aku ka lōʻihi o ka loader ma mua o 4 kilobytes. No laila, pono e hoʻololi ʻia ka waiwai o HFUSE mai 0xDA a i 0xD8. I kēia manawa hiki i ka loader ke piʻi i 8 kilobytes ka lōʻihi, a ua lilo ka helu hoʻomaka i 0x1E000. Hōʻike ʻia kēia ma ka Makefile, akā pono e noʻonoʻo i ka wā e hoʻouka ai mea hoʻouka ukana me ka hoʻohana ʻana i ka avrdude.

Ua hoʻolālā mua ʻia ka transceiver 802.15.4 i ka ATmega128RFA1 e hana me ka hoʻohana ʻana i ka protocol. Zigbee, he mea paʻakikī loa, no laila ua hoʻoholo ka mea kākau e hāʻawi wale i nā ʻeke. Hoʻokomo ʻia kēia i ka lako ma ka ATmega128RFA1, no laila pono ʻia nā code liʻiliʻi. Eia kekahi, no ka maʻalahi, ua hoʻoholo ka mea kākau e hoʻohana i kahi ala paʻa, ʻaʻole e ʻae iā ʻoe e koho me ka lima. Kākoʻo ka maʻamau 802.15.4 i nā kaha he 16 i helu ʻia mai ka 11 a hiki i ka 26. Ua paʻa loa lākou, ua poloka kekahi i nā kahawai WiFi (ʻulaʻula nā kahawai ZigBee, ʻulaʻula, ʻōmaʻomaʻo a me ka melemele ʻo WiFi).

Ke kākau ʻana i kahi bootloader OTA no ka ATmega128RFA1 (ma ke ʻano o ka hāmeʻa Smart Response XE)

Ua ʻike ʻia ʻo nā kahawai 15 a me 26 ka mea liʻiliʻi loa i ka hoʻopilikia ʻana mai WiFi. Ua koho ka mea kākau i ka lua o lākou. Hōʻole: ʻaʻole ʻike ka mea unuhi inā ʻae ʻia e hoʻomaʻamaʻa iā ZigBee ma kēia ʻano. He mea pono paha ka hoʻolālā ʻana a hoʻokō pono?

Ma ka mua o nā mea hana, pono e hoʻokō i kahi mīkini moku'āina e hoʻouna i ka ʻikepili me ka protocol STK500. ʻO ka hapa nui, ʻo nā memo i hoʻouna ʻia a loaʻa iā lākou iho, akā pili kekahi i nā mea i hele ma mua o ke kahawai. Hāʻawi ʻia ka wehewehe ʻana o ke kamaʻilio maanei.

ʻO kahi ʻāpana koʻikoʻi o kēia kamaʻilio ʻana ʻo ka hoʻouna ʻana i nā ʻeke i manaʻo ʻia e kākau ʻia i ka hoʻomanaʻo uila o ka mea e hele ai. No nā microcontrollers maʻalahi o ka ʻohana AVR, ʻo ka nui o ka ʻaoʻao he 128 bytes, akā no ka ATmega128RFA1 he 256. A no ka hoʻomanaʻo uila i hoʻopili ʻia ma o ka protocol SPI, ua like ia. ʻO ka papahana ma ka polokalamu mua, i ka wā e hoʻouka ai i ka sketch, ʻaʻole ia e hoʻololi koke iā ia i ka lua, akā kākau ia i kēia hoʻomanaʻo. Ke nānā ka Arduino IDE i ka pololei o ke komo ʻana, hoʻouna ʻia ka mea i kākau ʻia ma laila. I kēia manawa pono mākou e hoʻouna i ka ʻikepili i loaʻa ma luna o ka lewa i ka lua. I kēia hihia, hoʻololi pinepine ʻia ka hoʻololi ʻana mai ka hoʻokipa ʻana i ka hoʻouna ʻana a me ka hope. ʻAʻole makemake ka protocol STK500 i ka lohi, akā ʻaʻole ia e ʻae i ka nalowale o ka ʻikepili (mea ʻē, akā ua ʻōlelo ʻia ma luna o ka hoʻopaneʻe ʻana i ka hoʻoili ʻikepili e pili pū kekahi). A ʻaʻole hiki ke ʻae ʻia nā poho ma ka hoʻouna ʻole ʻole. Loaʻa i ka ATmega128RFA1 kahi hoʻokō paʻa i loko o nā noi pinepine i ka hihia o nā kānalua e pili ana i ka pololei o ka hoʻoili ʻana, akā ua hoʻoholo ka mea kākau e hoʻokō i ka papahana like ma kāna iho. Ua hoʻomohala ʻo ia i kahi protocol kahi i ʻoi aku ka nui o nā ʻikepili i hala ma kahi ʻaoʻao ma mua o kekahi.

ʻAʻole kūpono, akā hana. Hoʻokaʻawale ʻia kahi ʻaoʻao 256-byte i ʻehā mau ʻāpana, e hoʻouna ʻia kēlā me kēia ma luna o ka lewa ma ke ʻano he ʻeke. Hoʻopaʻa ka ʻeke i ka 125 bytes o ka ʻikepili me hoʻokahi byte no ka lōʻihi a ʻelua no ka CRC. No laila, waiho ʻia nā ʻāpana 64-byte, me nā helu ʻaoʻao a me nā māhele (mai 0 a 3). He ʻano hoʻololi ko ka mea hoʻouna e mālama i ka nui o nā ʻāpana i loaʻa, a i ka hiki ʻana mai o nā mea ʻehā, ʻike ka mea hoʻouna ua loaʻa ka ʻaoʻao holoʻokoʻa. ʻAʻohe hōʻoia (ʻaʻole i kūlike ka CRC) - hoʻouna hou mākou i ka ʻaoʻao holoʻokoʻa. I kēia hihia, ʻoi aku ka nui o ka wikiwiki ma mua o ka hoʻouna ʻana ma luna o ke kaula. Nānā:


Akā ma ka laulā, pono e hāʻawi i kahi ala kūpono e hoʻopili ai i kahi kaula i nā mea hana no ka hoʻouka ʻana i nā kiʻi kiʻi a ma o ia. No ka laʻana, e kau i ia mea hoʻololi hoʻololi ma ka CP2102 i loko, e like me ke kiʻi, a kāpili iā ia i ka papa i hiki iā ia ke pale i ka ikaika i ka wā e hoʻopili ai a wehe i ke kelepona Micro USB.

Ke kākau ʻana i kahi bootloader OTA no ka ATmega128RFA1 (ma ke ʻano o ka hāmeʻa Smart Response XE)

Loaʻa iā ia kahi mea hoʻoponopono 3,3V (a pehea e hoʻohana ai ia mea i loko o kahi mea mana 6V - ʻoiai ʻo ia ka mea hoʻoponopono hoʻokahi, a hiki iā ʻoe ke hoʻohui i ʻelua diodes e koho ʻokoʻa i ka mea e mana i ka hāmeʻa). Pono e hoʻoneʻe ʻia nā LED ʻekolu mai ka papa hoʻololi hoʻololi, inā ʻaʻole lākou e hoʻouka i nā pā i ka wā e hana ai mai ia mau mea, a me ka hoʻopili ʻana i ke koho balota a me ka hana ʻana me ka hoʻomanaʻo flash me kahi interface SPI.

ʻO ka ʻimi ʻana i kahi pahuhopu ua ʻoi aku ka hoihoi ma mua o ka hoʻokō ʻana (a ʻaʻohe pono o kēlā ʻakaʻaka e pili ana i ke kaʻa). Ua aʻo nui ka mea kākau e pili ana i nā bootloaders AVR, SPI flash memory, STK500 protocol a me 802.15.4 standard.

ʻO nā code ʻē aʻe a pau me ka waihona i hōʻike ʻia ma luna − maanei, a aia ma lalo o GPL v3. twitter a ka mea kākau maanei.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka