{"id":1393,"date":"2014-05-26T16:33:38","date_gmt":"2014-05-26T14:33:38","guid":{"rendered":"http:\/\/majek.mamy.to\/?p=1393"},"modified":"2014-05-27T22:54:16","modified_gmt":"2014-05-27T20:54:16","slug":"xeboot","status":"publish","type":"post","link":"https:\/\/majek.sh\/pl\/xeboot\/","title":{"rendered":"XEBOOT &#8211; ma\u0142y bootloader dla Atmega8 obs\u0142uguj\u0105cy xmodem"},"content":{"rendered":"<p><\/p>\n<h2>Historia<\/h2>\n<p>Par\u0119 lat temu pracowa\u0142em nad pewnym urz\u0105dzeniem na sprzeda\u017c opartym na procesorze Atmega8. Jedn\u0105 z wa\u017cnych cz\u0119\u015bci by\u0142o oczywi\u015b\u0107ie oprogramowanie. Wiadomo, \u017ce czasem trzeba co\u015b doda\u0107, czasem poprawi\u0107, wi\u0119c oprogramowanie musia\u0142o si\u0119 da\u0107 aktualizowa\u0107. I musia\u0142o to by\u0107 robione przez nabywc\u0119 tego urz\u0105dzenia.<\/p>\n<p>Wrzucenie gotowego bootloader obs\u0142uguj\u0105cego protok\u00f3\u0142 STK albo inny zamkni\u0119ty by\u0142o nie do przyj\u0119cie. Klient mia\u0142 do dyspozycji tylko port szeregowy i to wzystko. Nie mog\u0142o to by\u0107 r\u00f3wnie\u017c zale\u017cne od systemu operacyjnego.<\/p>\n<p>By\u0142 jeszcze jeden problem &#8211; urz\u0105dzenie by\u0142o dosy\u0107 proste w budowie i wi\u0119kszo\u015b\u0107 jego si\u0142y tkwi\u0142a w oprogramowaniu. Czyli nowy firmware dostarczany do klienta nie powinien r\u00f3wnie\u017c chodzi\u0107 na kopii \ud83d\ude42<br \/>\nW ten spos\u00f3b kolejnym wymaganiem bootloadera by\u0142a obs\u0142uga deszyfrowania.<\/p>\n<p>I ostatnie wymaganie &#8211; rozmiar. Sam program zawiera\u0142 dosy\u0107 spore tablice, wi\u0119c po\u015bwi\u0119cenie 2KB z 8 dost\u0119pnych by\u0142oby du\u017c\u0105 strat\u0105.<\/p>\n<p>W ten spos\u00f3b nie pozosta\u0142o mi nic innego jak samemu taki napisa\u0107 \ud83d\ude42<\/p>\n<p>Ostatnio postanowi\u0142em podzieli\u0107 si\u0119 tym kodem, bo go ju\u017c nie wykorzystuj\u0119 i widz\u0119, \u017ce w ci\u0105gu tych lat nadal nic takiego nie powsta\u0142o, co obs\u0142ugiwa\u0142oby protok\u00f3\u0142 xmodem i deszyfracj\u0119 obrazu.<\/p>\n<h2>Mo\u017cliwo\u015bci<\/h2>\n<ul>\n<li>ma\u0142y rozmiar (mniej ni\u017c 512B)<\/li>\n<li>obs\u0142ugiwany protok\u00f3\u0142: xmodem<\/li>\n<li>czyste wykorzystanie transmisji szeregowej (bez dodatkowych linii steruj\u0105cych czy innych po\u0142\u0105cze\u0144 ni\u017c tx\/rx)<\/li>\n<li>obs\u0142uga prostego szyfrowania (nie jest mocne, ale wystarczaj\u0105ce, \u017ceby niedo\u015bwiadczony u\u017cytkownik nie m\u00f3g\u0142 tego prosto wgra\u0107 do skopiowanego sprz\u0119tu)<\/li>\n<li>jest ju\u017c za darmo (GPL v3) \ud83d\ude42<\/li>\n<\/ul>\n<h2>Kod<\/h2>\n<p>Kod jest do \u015bci\u0105gni\u0119cia z Githuba: <a href=\"https:\/\/github.com\/majekw\/xeboot\" target=\"_blank\">https:\/\/github.com\/majekw\/xeboot<\/a><br \/>\nSzczeg\u00f3\u0142y techniczne (kompilacja, u\u017cycie itp.) opisane s\u0105 w README w repozytorium.<\/p>\n<h2>Fork<\/h2>\n<p>Tak, projekt ewoluowa\u0142 \ud83d\ude42<br \/>\nZosta\u0142 u\u017cyty jako podstawa do bootloadera dla Atmega88\/168\/328. Niestety musia\u0142em po\u015bwi\u0119ci\u0107 szyfrowanie, \u017ceby nadal mie\u015bci\u0107 si\u0119 w 0.5KB, wi\u0119c nie jest to ju\u017c xEboot.<br \/>\nNowy bootloader jest obecnie cz\u0119\u015bci\u0105 mojego innego projektu: <a href=\"https:\/\/majek.sh\/lcd88\">LCD88 &#8211; kodera dla nadajnika R\/C<\/a>, a \u017ar\u00f3d\u0142a s\u0105 dost\u0119pne r\u00f3wnie\u017c na Githubie: <a href=\"https:\/\/github.com\/majekw\/lcd88\" target=\"_blank\">https:\/\/github.com\/majekw\/lcd88<\/a><br \/>\n<\/p>","protected":false},"excerpt":{"rendered":"<p>Historia Par\u0119 lat temu pracowa\u0142em nad pewnym urz\u0105dzeniem na sprzeda\u017c opartym na procesorze Atmega8. Jedn\u0105 z wa\u017cnych cz\u0119\u015bci by\u0142o oczywi\u015b\u0107ie oprogramowanie. Wiadomo, \u017ce czasem trzeba co\u015b doda\u0107, czasem poprawi\u0107, wi\u0119c oprogramowanie musia\u0142o si\u0119 da\u0107 aktualizowa\u0107. I musia\u0142o to by\u0107 robione <span class=\"excerpt-dots\">&hellip;<\/span> <a class=\"more-link\" href=\"https:\/\/majek.sh\/pl\/xeboot\/\"><span class=\"more-msg\">Czytaj dalej &rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[50],"_links":{"self":[{"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/posts\/1393"}],"collection":[{"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/comments?post=1393"}],"version-history":[{"count":9,"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/posts\/1393\/revisions"}],"predecessor-version":[{"id":1402,"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/posts\/1393\/revisions\/1402"}],"wp:attachment":[{"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/media?parent=1393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/categories?post=1393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/tags?post=1393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}