Пишемо ОТА покретач за АТмега128РФА1 (као део Смарт Респонсе КСЕ уређаја)

Пишемо ОТА покретач за АТмега128РФА1 (као део Смарт Респонсе КСЕ уређаја)

Све је почело тако што је аутор купио занимљив уређај на секундарном тржишту - Смарт Респонсе КСЕ (Кратак опис). Намењен је школама: сваки ученик у одељењу добија уређај сличан електронској свесци или преводиоцу из деведесетих, наставник поставља питање, а ученици на тастатури уређаја куцају одговоре који се примају преко радио канал (802.15.4) на пријемник повезан са рачунаром наставника.

Ови уређаји су укинути пре неколико година, а оно што су школе купиле по цени од 100-200 долара сада се појављује на еБаиу за 10 долара или мање. Тамошњи хардвер је веома погодан за штреберске експерименте:

  • Тастатура са 60 тастера
  • екран резолуције 384×136, 2 бита по пикселу - сличан БЦ, ЦГА, али 4 не боје, већ градације осветљености
  • микроконтролер АТмега128РФА1 (128 кБ флеш меморија, 4 кБ РОМ, 16 кБ РАМ, 802.15.4 примопредајник)
  • екстерна (у односу на микроконтролер, а не цео уређај) флеш меморија од 1 мегабита (128 килобајта) са СПИ интерфејсом
  • одељак за 4 ААА елемента.

Из назива микроконтролера јасно је да припада АВР породици, што значи да је Ардуино компатибилан задатак више него тривијалан...

Од вести па надаље Хацкадаи аутор је сазнао шта је то већ урадили (исти линк вам говори шта да повежете где), имате прилику да покренете игре за Ардубои:


Али аутора више занима могућност да се не игра на уређају, већ да проучава:

  • флеш меморија са серијским СПИ интерфејсом
  • покретачи за АВР
  • стандард 802.15.4

Аутор је почео писањем библиотеке (ГПЛ в3), који вам омогућава да иницијализујете екран, прикажете текст и правоугаонике и приступите СПИ флеш меморији. Затим је почео да смишља идеје за практичну употребу уређаја: џепни терминал компатибилан са ВТ-100, игре за више играча. Пошто је обновио три уређаја, одлучио је да их „научи“ да примају скице „преко ваздуха“. Оно што би било не само занимљиво, већ и веома згодно: кућиште уређаја се сваки пут тешко отвара, а испод поклопца одељка за батерије налазе се само рупе које вам омогућавају да повежете ЈТАГ програматор на плочу.

Пишемо ОТА покретач за АТмега128РФА1 (као део Смарт Респонсе КСЕ уређаја)

Ово је довољно да отпремите Ардуино боотлоадер, али не и скицу - серијски порт тамо није повезан, тако да и даље не можете без отварања кућишта. Такође, ТКС0 и РКС0 линије првог серијског порта су комбиноване са линијама за прозивање матрице тастатуре, односно онима које прозивају функцијске тастере на бочним странама екрана. Али шта можете - аутор је направио ово:

Пишемо ОТА покретач за АТмега128РФА1 (као део Смарт Респонсе КСЕ уређаја)

Тамо је донео ЈТАГ линије и сада нема потребе да отварате одељак за батерије. А да би се скице могле учитати, спојио сам оба серијска порта на исти конектор, додајући и прекидач, јер је са уграђеним батеријама физички немогуће искључити уређај на било који други начин.

Било је потребно доста времена за рад са лемилом, помоћним ножем и пиштољем за лепљење. Уопштено говорећи, учитавање скица „преко ваздуха“ је много згодније, хитно морамо да измислимо нешто за ово.

Ардуино ИДЕ користи програм за отпремање скица аврдуде. Интерагује са микроконтролером користећи протокол СТККСНУМКС, што вам омогућава да преносите датотеке у оба смера. Слабо је компатибилан са каналима где су могућа променљива кашњења, изобличења и губитак података. Ако се нешто олабави или зашушти у серијском каналу, можете полудети тражећи узрок. Једном се аутор мучио пола дана док није схватио да је проблем лош кабл, као и хировити ЦП2102 претварач интерфејса. Чак и микроконтролер са уграђеним претварачем интерфејса, на пример, АТмега32у4, понекад може да делује овако. Сваки корисник Ардуина приметио је да грешке при постављању скица нису тако ретке. Понекад снимање иде добро, али током тестног читања детектује се грешка. То не значи да је дошло до грешке током писања – дошло је до грешке током читања. Сада замислите да ће се иста ствар десити када радите „преко ваздуха“, али много чешће.

Након што је покушао на различите начине да превазиђе овај проблем, аутор је дошао до следећег. Уређај има флеш меморију од 128 КБ са СПИ интерфејсом - податке примамо преко жица (запамтите да аутор већ има један уређај са конектором са стране), користимо ову меморију као бафер и шаљемо податке преко радија канал на други уређај. Поздрав из Цибико-а.

Након писања кода за рад са радио каналом, као и фонта, лоадер је постао дужи од 4 килобајта. Стога је вредност ХФУСЕ морала да се промени са 0кДА на 0кД8. Сада покретач може бити дугачак до 8 килобајта, а почетна адреса је сада 0к1Е000. Ово се одражава у Макефиле-у, али такође треба узети у обзир приликом попуњавања боотлоадер преко аврдуде.

802.15.4 примопредајник у АТмега128РФА1 је првобитно дизајниран да ради користећи протокол ГПРС, што је прилично компликовано, па је аутор одлучио да уместо тога само преноси пакете. Ово је имплементирано у хардверу АТмега128РФА1, тако да је потребно мало кода. Такође, ради једноставности, аутор је одлучио да користи фиксни канал, не дозвољавајући вам да га изаберете чак ни ручно. Стандард 802.15.4 подржава 16 канала са бројевима од 11 до 26. Прилично су претрпани, неки се преклапају и са ВиФи каналима (црвени су ЗигБее канали, плави, зелени и жути ВиФи).

Пишемо ОТА покретач за АТмега128РФА1 (као део Смарт Респонсе КСЕ уређаја)

Испоставило се да су канали 15 и 26 најмање подложни сметњама од ВиФи-а. Дисцлаимер: преводилац не зна да ли је дозвољено да поједностави ЗигБее на овај начин. Можда би требало мало више програмирати и имплементирати га у потпуности?

На првом уређају је потребно имплементирати машину коначног стања која преноси податке путем СТК500 протокола. Углавном, поруке које се преносе и примају су самодовољне, али неке су везане за оне које су раније прошле кроз канал. Дат је опис дијалога овде.

Важна компонента овог дијалога је пренос пакета намењених за упис у флеш меморију одредишног уређаја. За једноставне микроконтролере породице АВР, величина странице је 128 бајтова, али за АТмега128РФА1 је 256. И за флеш меморију која је повезана преко СПИ протокола је иста. Програм у првом уређају, приликом постављања скице, не преноси је одмах на други, већ је уписује у ову меморију. Када Ардуино ИДЕ провери исправност уноса, шаље се оно што је тамо написано. Сада треба да пренесемо примљене податке преко радио канала на други уређај. Истовремено, прелазак са пријема на пренос и назад се дешава прилично често. Протокол СТК500 је индиферентан према кашњењима, али не толерише губитак података (чудно, али је горе речено да кашњења утичу и на пренос података). А губици током бежичног преноса су неизбежни. АТмега128РФА1 има уграђену хардверску имплементацију поновљених захтева када постоје сумње у исправност преноса, али је аутор одлучио да исто имплементира у софтвер. Развио је протокол у коме много више података тече на један начин него на други.

Није савршено, али ради. Страница од 256 бајтова подељена је на четири сегмента, од којих се сваки преноси ваздушним путем као пакет. Пакет може да садржи до 125 бајтова података плус један бајт за дужину и два бајта за ЦРЦ. Дакле, фрагменти дужине 64 бајта заједно са бројевима страница и сегмената (од 0 до 3) се постављају тамо. Пријемни уређај има променљиву која му омогућава да прати колико је сегмената примљено, а када сва четири стигну, уређај који шаље добија потврду да је цела страница примљена. Нема потврде (ЦРЦ се не подудара) - поново пошаљите целу страницу. Брзина је чак и већа него при преносу преко кабла. види:


Али генерално, било би неопходно обезбедити згодан начин повезивања кабла са уређајима за учитавање скица и преко њега. На пример, поставите такав претварач интерфејса на ЦП2102, као на фотографији, и залепите га на плочу тако да може да издржи силу приликом повезивања и одспајања Мицро УСБ кабла.

Пишемо ОТА покретач за АТмега128РФА1 (као део Смарт Респонсе КСЕ уређаја)

Такође има стабилизатор од 3,3 волта (и како га користити у уређају са напајањем од 6 волти - само ако има исти стабилизатор, а можете додати две диоде да аутоматски изаберете која од њих ће напајати уређај) . Све три ЛЕД диоде морају бити одлемљене са конверторске плоче интерфејса, иначе ће додатно напунити батерије када раде на њима, а такође ће ометати прозивање тастатуре и рад са флеш меморијом са СПИ интерфејсом.

Испоставило се да је постизање циља још интересантније од постизања (и није ми потребна та шала о аутобусу). Аутор је научио много о АВР боотлоадерима, СПИ флеш меморији, СТК500 протоколу и стандарду 802.15.4.

Сав други код поред библиотеке описане изнад је − овде, а такође је под ГПЛ в3. Твитер аутора - овде.

Извор: ввв.хабр.цом

Додај коментар