Waxaan u qoraynaa bootloader OTA ATmega128RFA1 (iyada oo qayb ka ah aaladda Jawaabta Smart XE)

Waxaan u qoraynaa bootloader OTA ATmega128RFA1 (iyada oo qayb ka ah aaladda Jawaabta Smart XE)

Waxaas oo dhami waxay ku bilaabmeen qoraaga oo iibsanaya qalab xiiso leh suuqa sare - Jawaabta Smart XE (sharaxaad gaaban). Waxaa loogu talagalay dugsiyada: arday kasta oo fasalka ku jira wuxuu helayaa qalab la mid ah buug-gacmeedka elektarooniga ah ama tarjumaan sannadihii sagaashamaadkii, macalinka ayaa waydiinaya su'aal, ardayduna waxay ku qoraan jawaabaha kiiboodhka qalabka, kuwaas oo lagu helo a kanaalka raadiyaha (802.15.4) ee qaataha ku xidhan kombayutarka macalinka.

Qalabkan ayaa la joojiyay dhowr sano ka hor, iyo waxa dugsiyada lagu gato $100-$200 midkiiba hadda waxa uu ku soo baxayaa eBay $10 ama ka yar. Qalabka halkaas ku yaal aad buu ugu habboon yahay tijaabooyinka geeky:

  • 60 kiiboodhka muhiimka ah
  • soo bandhigid leh xallinta 384Γ—136, 2 bits per pixel - la mid ah BC, CGA, laakiin 4 ma aha midabyo, laakiin grades of dhalaalka
  • microcontroller ATmega128RFA1 (128 kB flash memory, 4kB ROM, 16kB RAM, 802.15.4 transceiver)
  • dibadda (marka loo eego microcontroller, ma aha qalabka oo dhan) 1 megabit (128 kilobyte) xusuusta flash oo leh interface SPI
  • qolka loogu talagalay 4 walxood AAA.

Laga soo bilaabo magaca microcontroller waxaa iska cad in ay iska leeyihiin qoyska AVR, taas oo macnaheedu yahay samaynta aaladda Arduino-ku-waafajin waa hawl aad u yar oo ka badan ...

Laga soo bilaabo wararka Hackaday qoraagu waxa uu ogaaday hore u sameeyey (isku xirka isku midka ah ayaa kuu sheegaya waxa aad ku xiri karto meesha), helitaanka fursada aad ku socodsiiso ciyaaraha Arduboy:


Laakiin qoraagu wuxuu aad u xiiseynayaa fursadda inuusan ku ciyaarin aaladda, laakiin inuu barto:

  • xusuusta flash oo leh interface SPI taxane ah
  • bootloaders ee AVR
  • heerka 802.15.4

Qoraagu wuxuu ku bilaabay qoraal maktabadaha (GPL v3), kaas oo kuu ogolaanaya inaad bilawdo bandhigga, qoraalka wax soo saarka iyo leydiyada, iyo helitaanka xusuusta SPI. Kadibna wuxuu bilaabay inuu la yimaado fikrado loogu talagalay isticmaalka dhabta ah ee qalabka: terminal jeebka VT-100 ku habboon, ciyaaraha badan. Isagoo dib u dhisay saddex qalab, wuxuu go'aansaday inuu " baro" si ay u helaan sawir-gacmeedyo "hawada." Maxay noqon lahayd mid xiiso leh oo kaliya, laakiin sidoo kale aad u habboon: kiiska qalabka waa ay adag tahay in la furo mar kasta, iyo hoosteeda daboolka batteriga waxaa jira godad kaliya oo kuu ogolaanaya inaad ku xirto barnaamijka JTAG ee guddiga.

Waxaan u qoraynaa bootloader OTA ATmega128RFA1 (iyada oo qayb ka ah aaladda Jawaabta Smart XE)

Tani waxay ku filan tahay in la soo geliyo Arduino bootloader, laakiin ma aha sawir-gacmeedka - deked taxane ah kuma xirna halkaas, markaa wali ma sameyn kartid adigoon furin kiiska. Sidoo kale, khadadka TX0 iyo RX0 ee dekeda taxan ee ugu horeysa waxay la socdaan khadadka codbixinta ee matrixka kiiboodhka, kuwaas oo ah kuwa codeeya furayaasha shaqada ee dhinacyada bandhigga. Laakiin maxaad samayn kartaa - qoraagu wuxuu dhisay sidan:

Waxaan u qoraynaa bootloader OTA ATmega128RFA1 (iyada oo qayb ka ah aaladda Jawaabta Smart XE)

Waxa uu keenay xadhkaha JTAG, oo hadda looma baahna in la furo qaybta baytariyada. Oo si sawir-gacmeedyo loo dhejiyo, waxaan ku xiray labada dekedood ee taxanaha ah isku xiraha isku midka ah, sidoo kale waxaan ku daray beddelka, sababtoo ah baytariyada lagu rakibay, jir ahaan waa wax aan macquul aheyn in la damiyo qalabka si kale.

Waxay qaadatay wakhti aad u badan in lagu shaqeeyo birta alxanka, mindida tamarta iyo qoriga xabagta. Guud ahaan, ku dhejinta sawir-gacmeedka "hawada" ayaa aad uga habboon; waxaan si degdeg ah ugu baahanahay inaan wax u hindiso tan.

Arduino IDE waxay isticmaashaa barnaamijka si ay u geliyaan sawir-gacmeedyo avrdude. Waxay la falgashaa microcontroller-ka iyadoo adeegsanaysa borotokoolka STK500, kaas oo kuu ogolaanaya inaad ku wareejiso faylasha labada dhinac. Si liidata uma la jaanqaadi karto kanaalada halka ay suurtagal tahay daahitaanka doorsoomayaasha, qallooca iyo luminta xogta. Haddii ay wax ku dhacaan kanaalka taxanaha ah, waxaad ku waalan kartaa raadinta sababta. Mar uu qoraagu la ildaran yahay nus maalin ilaa uu ogaaday in dhibaatadu tahay fiilo xun, iyo sidoo kale beddelka interface CP2102. Xataa kontaroolaha yar-yar ee leh is-beddelka ku dhex-yaalla, tusaale ahaan, ATmega32u4, ayaa mararka qaarkood u dhaqmi kara sidan oo kale. Isticmaale kasta oo Arduino ah waxa uu ogaaday in khaladaadka marka la soo gelinayo sawir-gacmeedyadu aanay aad dhif u ahayn. Mararka qaarkood duubistu si fiican ayey u socotaa, laakiin inta lagu jiro imtixaanka akhri qalad ayaa la ogaadaa. Taas macnaheedu maaha in uu khalad dhacay markii wax la qorayay - waxaa jirtay guuldarro markii wax akhrinaysay. Hadda qiyaas in marka aad ka shaqaynayso "hawada" wax la mid ah ayaa dhici doona, laakiin marar badan.

Ka dib markii uu isku dayay siyaabo kala duwan oo uu uga gudbi karo dhibaatadan, qoraagu wuxuu la yimid arrimahan soo socda. Qalabku waxa uu leeyahay 128 KB flash memory oo leh interface SPI – waxa aanu ka helnaa xogta fiilooyinka (xusuusnow in qoraagu uu hore u haystay hal qalab oo xidhiidhiye ka yahay dhinac), u isticmaal xusuustan sidii kayd, oo xogta ku dir raadiyaha. kanaalka qalab kale. Hello ka Cybiko.

Ka dib markii la qoro koodka si uu ula shaqeeyo kanaalka raadiyaha, iyo sidoo kale font, loader-ku wuxuu noqday mid ka dheer 4 kilobytes. Sidaa darteed, qiimaha HFUSE waa in laga beddelo 0xDA loona beddelo 0xD8. Hadda bootloader-ku wuxuu noqon karaa ilaa 8 kilobytes, ciwaanka bilawga ah hadda waa 0x1E000. Tani waxay ka muuqataa Makefile, laakiin sidoo kale waa in la tixgeliyaa marka la buuxinayo bootloader via avrdude.

Transceiver 802.15.4 ee ATmega128RFA1 waxaa markii hore loogu talagalay inuu ku shaqeeyo nidaamka Zigbee, taas oo aad u dhib badan, sidaa darteed qoraaga ayaa go'aansaday in uu gudbiyo baakadaha. Tan waxaa lagu hirgeliyay qalabka ATmega128RFA1, markaa kood yar ayaa loo baahan yahay. Sidoo kale, si fudud, qoraagu wuxuu go'aansaday inuu isticmaalo kanaal go'an, oo aan kuu oggolaanin inaad doorato xitaa gacanta. Heerka 802.15.4 wuxuu taageeraa 16 kanaal oo leh lambarro 11 ilaa 26. Aad ayay u camiran yihiin, qaar ayaa sidoo kale isku dhejiya kanaalada WiFi (casaan waa kanaalada ZigBee, buluug, cagaar iyo huruud waa WiFi).

Waxaan u qoraynaa bootloader OTA ATmega128RFA1 (iyada oo qayb ka ah aaladda Jawaabta Smart XE)

Waxaa soo baxday in kanaalada 15 iyo 26 ay ugu yar yihiin faragelinta WiFi. Qoraagu wuxuu doortay kan labaad. Afeef: Turjumaanku ma garanayo in loo oggol yahay in sidan loo fududeeyo ZigBee. Ma laga yaabaa in aan samayno barnaamijyo yar oo dheeraad ah oo aan si buuxda u hirgelinno?

Qalabka ugu horreeya, waa lagama maarmaan in la hirgeliyo mishiinka gobolka ee xaddidan oo gudbiya xogta iyada oo loo marayo nidaamka STK500. Inta badan, fariimaha la gudbiyo iyo kuwa la helo waa kuwo isku filan, laakiin qaarkood waxay ku xiran yihiin kuwii hore u soo maray kanaalka. Sharaxaada wada hadalka ayaa la bixiyay halkan.

Qayb muhiim ah oo ka mid ah wada-hadalladan waa gudbinta baakadaha loogu talagalay in lagu qoro xusuusta tooska ah ee aaladda loo socdo. Microcontrollers fudud ee qoyska AVR, cabbirka bogga waa 128 bytes, laakiin ATmega128RFA1 waa 256. Iyo xusuusta flash-ka ee ku xiran borotokoolka SPI, waa isku mid. Barnaamijka ku jira aaladda koowaad, marka la dhejiyo sawir-gacmeed, isla markiiba kuma wareejinayo kan labaad, laakiin wuxuu u qoraa xusuustan. Marka Arduino IDE uu hubiyo saxnimada gelitaanka, waxaa loo soo diraa wixii halkaas ku qornaa. Hadda waxaan u baahanahay inaan u gudbino xogta la helay iyada oo loo marayo kanaalka raadiyaha aaladda labaad. Isla mar ahaantaana, ka beddelashada qaadashada una beddelo gudbinta iyo dhabarka ayaa dhacda marar badan. Nidaamka STK500 waa mid aan dan ka lahayn dib u dhigista, laakiin uma dulqaadanayo luminta xogta (wax yaab leh, laakiin waxaa kor lagu sheegay in dib u dhacu sidoo kale saameynayo wareejinta xogta). Iyo khasaaraha inta lagu jiro gudbinta wireless waa lama huraan. ATmega128RFA1 waxay leedahay hirgalinta qalabka dhismaha ee codsiyada soo noqnoqda marka ay jiraan shakiyo ku saabsan saxnaanta wareejinta, laakiin qoraaga ayaa go'aansaday inuu ku fuliyo isla software laftiisa. Waxa uu sameeyay hab-maamuus ay xog aad uga badan midda kale u socoto.

Ma fiicna, laakiin way shaqeysaa. Bogga 256-byte wuxuu u qaybsan yahay afar qaybood, mid kasta oo ka mid ah waxaa lagu kala qaadaa hawada sida baakidh ahaan. Baakidhku waxa uu hayn karaa ilaa 125 bytes oo xog ah oo lagu daray hal byte dherer ahaan iyo laba bytes ee CRC. Markaa jajab 64 bytes oo dheer oo ay la socdaan bogag iyo lambaro (laga bilaabo 0 ilaa 3) ayaa la dhigayaa halkaas. Aaladda hesha waxa ay leedahay doorsoome u oggolaanaya in uu la socdo inta qaybood ee la helay, iyo marka ay afartu yimaadaan, qalabku waxa uu helayaa xaqiijin ah in dhammaan bogga la helay. Wax xaqiijin ah ma jiro (CRC kuma eka) - dib u soo dir bogga oo dhan. Xawaaruhu wuu ka sii badan yahay marka la isku gudbinayo fiilada. Fiiri:


Laakiin guud ahaan, waxay noqon doontaa lagama maarmaan in la bixiyo hab ku habboon oo lagu xiro fiilada qalabka loogu talagalay dhejinta sawirada iyo iyada oo loo marayo. Tusaale ahaan, ku rid gudaha gudaha beddelaha interface-ka CP2102, sida sawirka, oo ku dheji guddiga si ay u adkeyso awoodda marka la isku xirayo oo la jarayo fiilada Micro USB.

Waxaan u qoraynaa bootloader OTA ATmega128RFA1 (iyada oo qayb ka ah aaladda Jawaabta Smart XE)

Waxa kale oo ay leedahay 3,3-volt stabilizer (iyo sida loogu isticmaalo qalab leh koronto 6-volt ah - haddii kaliya ay leedahay stabilizer isku mid ah, waxaadna ku dari kartaa laba diode si aad si toos ah u doorato midka iyaga ka mid ah) . Dhammaan saddexda LED-yada waa in laga soo iibiyaa guddiga beddelka interface-ka, haddii kale waxay ku dhejin doonaan baytariyada marka ay ku shaqeynayaan, iyo sidoo kale inay farageliyaan codbixinta kumbuyuutarka oo ay ku shaqeeyaan xusuusta flash-ka ee SPI.

Raadinta yoolku wuxuu noqday mid ka xiiso badan gaaritaanka (oo uma baahnid kaftankaas baska). Qoraagu wuxuu wax badan ka bartay bootloaders AVR, SPI flash memory, borotokoolka STK500 iyo heerka 802.15.4.

Dhammaan koodka kale marka lagu daro maktabadda kor lagu sharaxay waa - halkan, iyo sidoo kale waxay hoos timaadaa GPL v3. Twitter-ka qoraaga - halkan.

Source: www.habr.com

Add a comment