Táimid ag scríobh bootloader OTA le haghaidh ATmega128RFA1 (mar chuid den ghléas Smart Response XE)

Táimid ag scríobh bootloader OTA le haghaidh ATmega128RFA1 (mar chuid den ghléas Smart Response XE)

Thosaigh sé ar fad nuair a cheannaigh an t-údar feiste suimiúil ar an margadh tánaisteach - Smart Response XE (cur síos gairid). Tá sé beartaithe do scoileanna: faigheann gach dalta sa rang gléas cosúil le leabhar nótaí leictreonach nó aistritheoir ó na nóchaidí, cuireann an múinteoir ceist, agus clóscríobhann na scoláirí na freagraí ar mhéarchláir na ngléasanna, a fhaightear trí mheán a cainéal raidió (802.15.4) chuig glacadóir atá ceangailte le ríomhaire an mhúinteora.

Cuireadh deireadh leis na gléasanna seo roinnt blianta ó shin, agus tá an méid a cheannaigh scoileanna ar $100-$200 an ceann ag dul suas ar eBay anois ar $10 nó níos lú. Tá na crua-earraí ann an-oiriúnach le haghaidh turgnaimh geeky:

  • 60 eochair méarchlár
  • taispeáint le taifeach 384×136, 2 ghiotán in aghaidh an picteilín - cosúil le BC, CGA, ach 4 ní dathanna, ach gráduithe gile
  • microcontroller ATmega128RFA1 (cuimhne flash 128 kB, 4 kB ROM, 16 kB RAM, trasghlacadóir 802.15.4)
  • seachtrach (maidir leis an micrea-rialtóir, ní an gléas iomlán) cuimhne flash 1 meigeavata (128 cilibheart) le comhéadan SPI
  • urrann le haghaidh 4 eilimint AAA.

Ó ainm an microcontroller tá sé soiléir go mbaineann sé leis an teaghlach AVR, rud a chiallaíonn go bhfuil an gléas Arduino-comhoiriúnach ina thasc níos mó ná fánach ...

Ón nuacht ar aghaidh Hackaday fuair an t-údar amach cad é atá ann déanta cheana féin (Insíonn an nasc céanna duit cad a nascfaidh tú cá háit), beidh deis agat cluichí a reáchtáil do Arduboy:


Ach tá níos mó suim ag an údar sa deis gan imirt ar an bhfeiste, ach staidéar a dhéanamh ar:

  • cuimhne flash le comhéadan SPI sraitheach
  • Íosluchtaigh tosaitheoir do AVR
  • 802.15.4 caighdeánach

Thosaigh an t-údar ag scríobh leabharlanna (GPL v3), a ligeann duit an taispeáint a thúsú, an téacs aschuir agus na dronuilleoga, agus rochtain a fháil ar chuimhne splanc SPI. Ansin thosaigh sé ag teacht suas le smaointe maidir le húsáid phraiticiúil an fheiste: críochfort póca VT-100-comhoiriúnach, cluichí il-imreora. Tar éis dó trí ghléas a atógáil, shocraigh sé iad a “theagasc” chun sceitsí a fháil “thar an aer”. Cad a bheadh ​​ní hamháin suimiúil, ach freisin an-áisiúil: tá an cás feiste deacair a oscailt gach uair, agus faoi chlúdach urrann na ceallraí níl ach poill a ligeann duit ríomhchláraitheoir JTAG a nascadh leis an mbord.

Táimid ag scríobh bootloader OTA le haghaidh ATmega128RFA1 (mar chuid den ghléas Smart Response XE)

Tá sé seo go leor chun an bootloader Arduino a uaslódáil, ach níl an sceitse - níl an port srathach ceangailte ann, mar sin ní féidir leat a dhéanamh fós gan an cás a oscailt. Chomh maith leis sin, déantar na línte TX0 agus RX0 den chéad phort sraitheach a chomhcheangal le línte vótaíochta an mhaitrís méarchláir, is iad sin iad siúd a dhéanann vótaíocht ar na heochracha feidhme ar thaobh an taispeántais. Ach cad is féidir leat a dhéanamh - thóg an t-údar é seo:

Táimid ag scríobh bootloader OTA le haghaidh ATmega128RFA1 (mar chuid den ghléas Smart Response XE)

Thug sé na línte JTAG ann, agus anois níl aon ghá leis an urrann ceallraí a oscailt. Agus ionas go bhféadfaí sceitsí a uaslódáil, cheangail mé an dá phort sraitheach leis an gcónascaire céanna, ag cur lasc leis freisin, mar gheall ar na cadhnraí a shuiteáil, tá sé dodhéanta go fisiciúil an gléas a mhúchadh ar aon bhealach eile.

Thóg sé roinnt mhaith ama a bheith ag obair le iarann ​​sádrála, scian fóntais agus gunna gliú. Go ginearálta, tá sé i bhfad níos áisiúla sceitsí a uaslódáil “thar an aer” ní mór dúinn go práinneach rud éigin a chumadh chuige seo.

Úsáideann Arduino IDE an clár chun sceitsí a uaslódáil uaigneas. Idirghníomhaíonn sé leis an microcontroller ag baint úsáide as an prótacal STK500, a ligeann duit comhaid a aistriú sa dá threo. Tá sé comhoiriúnach go dona le bealaí inar féidir moilleanna athraitheacha, saobhadh agus cailliúint sonraí. Má thagann rud éigin scaoilte nó meirge sa chainéal sraitheach, is féidir leat dul ar mire ag lorg an chúis. Chomh luath agus a d'fhulaing an t-údar ar feadh leath lae go dtí gur thuig sé go raibh an fhadhb cábla olc, chomh maith le tiontaire comhéadan capricious CP2102. Is féidir le fiú microcontroller le tiontaire comhéadan ionsuite, mar shampla, ATmega32u4, gníomhú mar seo uaireanta. Thug gach úsáideoir Arduino faoi deara nach bhfuil earráidí nuair a bhíonn sceitsí á n-uaslódáil chomh annamh. Uaireanta téann an taifeadadh go maith, ach le linn léamh tástála aimsítear earráid. Ní chiallaíonn sé seo go raibh earráid ann le linn na scríbhneoireachta - bhí teip ann le linn na léitheoireachta. Anois samhlaigh go dtarlóidh an rud céanna agus tú ag obair “thar an aer”, ach i bhfad níos minice.

Tar éis dó bealaí éagsúla a thriail chun an fhadhb seo a shárú, tháinig an t-údar suas leis na nithe seo a leanas. Tá cuimhne flash 128 KB ag an bhfeiste le comhéadan SPI - faighimid sonraí thar na sreanga (cuimhnigh go bhfuil gléas amháin ag an údar cheana féin le cónascaire ar an taobh), bain úsáid as an gcuimhne seo mar mhaolán, agus seol na sonraí thar an raidió cainéal chuig gléas eile. Dia duit ó Cybiko.

Tar éis an cód a scríobh chun oibriú leis an gcainéal raidió, chomh maith leis an gcló, tháinig an lódóir níos faide ná 4 cilibheart. Mar sin, b'éigean luach HFUSE a athrú ó 0xDA go 0xD8. Anois is féidir leis an bootloader a bheith suas le 8 kilobytes ar fad, agus is é an seoladh tosaigh anois 0x1E000. Léirítear é seo sa Makefile, ach ba cheart é a chur san áireamh freisin agus é á líonadh tosaitheoir via avrdude.

Tá an transceiver 802.15.4 san ATmega128RFA1 deartha ar dtús chun oibriú ag baint úsáide as an bprótacal Zigbee, atá casta go leor, agus mar sin chinn an t-údar ach paicéid a tharchur ina ionad. Cuirtear é seo i bhfeidhm i gcrua-earraí san ATmega128RFA1, mar sin níl mórán cód ag teastáil. Chomh maith leis sin, ar mhaithe le simplíocht, chinn an t-údar cainéal seasta a úsáid, gan ligean duit é a roghnú fiú de láimh. Tacaíonn an caighdeán 802.15.4 le 16 cainéal le huimhreacha ó 11 go 26. Tá siad sách plódaithe, forluíonn cuid acu cainéil WiFi freisin (tá dearg ar chainéil ZigBee, is WiFi iad gorm, glas agus buí).

Táimid ag scríobh bootloader OTA le haghaidh ATmega128RFA1 (mar chuid den ghléas Smart Response XE)

Iompaigh sé amach go bhfuil bealaí 15 agus 26 a laghad so-ghabhálach do chur isteach ó wifi Roghnaigh an t-údar an dara ceann acu. Séanadh: níl a fhios ag an aistritheoir an bhfuil sé ceadaithe ZigBee a shimpliú ar an mbealach seo. B'fhéidir gur cheart dúinn beagán níos mó ríomhchlárúcháin a dhéanamh agus é a chur i bhfeidhm go hiomlán?

Ar an gcéad fheiste, is gá meaisín stáit chríochnaithe a chur i bhfeidhm a tharchuireann sonraí tríd an bprótacal STK500. Den chuid is mó, tá na teachtaireachtaí a tharchuirtear agus a fhaightear féin-leordhóthanach, ach tá cuid acu ceangailte leo siúd a chuaigh tríd an gcainéal níos luaithe. Tugtar cur síos ar an agallamh anseo.

Comhpháirt thábhachtach den idirphlé seo is ea tarchur paicéid a bheartaítear a scríobh chuig splancchuimhne an ghléis sprice. I gcás microcontrollers simplí den teaghlach AVR, is é 128 bytes méid an leathanaigh, ach don ATmega128RFA1 tá sé 256. Agus maidir leis an gcuimhne flash atá ceangailte tríd an bprótacal SPI, tá sé mar an gcéanna. Ní aistríonn an clár sa chéad fheiste, nuair a bhíonn sceitse á uaslódáil, láithreach go dtí an dara ceann é, ach scríobhann sé chuig an gcuimhne seo é. Nuair a sheiceálann an Arduino IDE cruinneas na hiontrála, seoltar an méid a scríobhadh ann. Anois ní mór dúinn na sonraí a fuarthas a tharchur trí chainéal raidió chuig an dara gléas. Ag an am céanna, tarlaíonn aistriú ó fháil go tarchur agus ar ais go minic. Níl an prótacal STK500 neamhleor maidir le moill, ach ní fhulaingt sé caillteanas sonraí (aisteach, ach dúradh thuas go gcuireann moilleanna isteach ar aistriú sonraí freisin). Agus tá caillteanais le linn tarchur gan sreang dosheachanta. Tá cur i bhfeidhm crua-earraí tógtha ag an ATmega128RFA1 ar iarratais arís agus arís eile nuair a bhíonn amhras ann faoi cheartacht an aistrithe, ach chinn an t-údar an rud céanna a chur i bhfeidhm i mbogearraí é féin. D'fhorbair sé prótacal ina sreabhann i bhfad níos mó sonraí bealach amháin ná an bealach eile.

Níl sé foirfe, ach oibríonn sé. Tá an leathanach 256-beart roinnte ina cheithre mhír, gach ceann acu a tharchur thar an aer mar phaicéad. Féadfaidh suas le 125 beart sonraí a bheith i bpaicéad móide beart amháin ar fhad agus dhá bheart don CRC. Mar sin cuirtear blúirí 64 beart ar fhad chomh maith le huimhreacha leathanaigh agus deighleoga (ó 0 go 3) ann. Tá athróg ag an ngléas glactha a ligeann dó cé mhéad deighleog a fuarthas a rianú, agus nuair a thagann na ceithre cinn, faigheann an gléas seolta deimhniú go bhfuil an leathanach iomlán faighte. Gan deimhniú (ní raibh an CRC ag teacht leis) - seol an leathanach iomlán arís. Tá an luas níos mó fós ná nuair a tharchur trí chábla. Féach:


Ach go ginearálta, bheadh ​​​​sé riachtanach bealach áisiúil a sholáthar chun an cábla a nascadh leis na feistí le haghaidh sceitsí a uaslódáil agus tríd. Mar shampla, cuir taobh istigh den tiontaire comhéadan den sórt sin ar an CP2102, mar atá sa ghrianghraf, agus gliú é chuig an mbord ionas gur féidir leis an fórsa a sheasamh nuair a bhíonn an cábla Micrimhilseogra USB á nascadh agus á dhícheangal.

Táimid ag scríobh bootloader OTA le haghaidh ATmega128RFA1 (mar chuid den ghléas Smart Response XE)

Tá cobhsaitheoir 3,3-bholta aige freisin (agus conas é a úsáid i bhfeiste le soláthar cumhachta 6-bholta - mura bhfuil ach an cobhsaitheoir céanna aige, agus is féidir leat dhá dhé-óid a chur leis chun a roghnú go huathoibríoch cé acu díobh a chumhachtóidh an gléas) . Ní mór na trí stiúir a bheith gan díol ón mbord tiontaire comhéadan, ar shlí eile déanfaidh siad na cadhnraí a luchtú freisin agus iad ag feidhmiú orthu, agus cuirfidh siad isteach ar vótaíocht méarchláir agus ag obair le cuimhne flash le comhéadan SPI.

Bhí sé níos suimiúla fós sprioc a bhaint amach ná é a bhaint amach (agus ní gá an magadh sin faoin mbus). D'fhoghlaim an t-údar go leor faoi bootloaders AVR, cuimhne flash SPI, prótacal STK500 agus an caighdeán 802.15.4.

Is é seo a leanas gach cód eile de bhreis ar an leabharlann a bhfuil cur síos déanta uirthi thuas - anseo, agus tá sé faoi GPL v3 freisin. Twitter an údair - anseo.

Foinse: will.com

Add a comment