{"id":1011,"date":"2018-05-28T21:11:56","date_gmt":"2018-05-28T21:11:56","guid":{"rendered":"http:\/\/hayperek.pl\/?p=1011"},"modified":"2018-07-21T20:11:38","modified_gmt":"2018-07-21T20:11:38","slug":"zadyszka-na-ostatniej-prostej-czyli-co-zrobic-kiedy-nasz-procesor-okaze-sie-zbyt-slaby","status":"publish","type":"post","link":"https:\/\/hayperek.pl\/en\/2018\/05\/28\/zadyszka-na-ostatniej-prostej-czyli-co-zrobic-kiedy-nasz-procesor-okaze-sie-zbyt-slaby\/","title":{"rendered":"Zadyszka na ostatniej prostej, czyli co zrobi\u0107, kiedy nasz procesor oka\u017ce si\u0119 zbyt s\u0142aby&#8230;"},"content":{"rendered":"<p>Tu\u017c po rozpocz\u0119ciu wyzwania Stu dni w kolorze bardzo dok\u0142adnie rozwa\u017cali\u015bmy jak\u0105 platform\u0119 sprz\u0119tow\u0105 wybra\u0107. Brali\u015bmy pod uwag\u0119 wydajno\u015b\u0107, mo\u017cliwo\u015bci rozbudowy, dost\u0119pne biblioteki software&#8217;owe oraz ilo\u015b\u0107 zewn\u0119trznych interfejs\u00f3w. Ostatecznie zdecydowali\u015bmy si\u0119 na rodzin\u0119 mikrokontroler\u00f3w STM32F4, a \u015bci\u015blej na jej przedstawiciela w postaci uk\u0142adu STM32F407VGT6. <\/p>\n<p>Mimo pocz\u0105tkowych estymat zu\u017cycia czasu oraz zasob\u00f3w procesora, mo\u017ce czasami okaza\u0107 si\u0119, \u017ce mo\u017cliwo\u015bci zastosowanego uk\u0142adu s\u0105 zbyt ma\u0142e w stosunku do realnych wymaga\u0144. I na taki problem natrafili\u015bmy dzi\u015b w naszym projekcie&#8230;<\/p>\n<blockquote><p>Czy\u017cby problemem by\u0142a niewystarczaj\u0105ca wydajno\u015b\u0107 rdzenia ARM Cortex-M?<\/p><\/blockquote>\n<p>Absolutnie nie. Taktowane zegarem 168MHz CPU ma ogromn\u0105 rezerw\u0119 mocy obliczeniowej. Problem niestety le\u017cy w ilo\u015bci RAMu, kt\u00f3rym dysponujemy &#8211; nasz uk\u0142ad posiada a\u017c i jedynie 192kB pami\u0119ci operacyjnej typu SRAM. Zapotrzebowanie aplikacji u\u017cytkownika, backendu danych czy systemu graficznego na pami\u0119\u0107 nie jest zbyt du\u017ce <em>(\u0142\u0105cznie oko\u0142o 16kB)<\/em> &#8211; faktycznym sprawc\u0105 zamieszania s\u0105 liczne elementy grafiki: ikony, t\u0142a, czcionki&#8230; To one poch\u0142aniaj\u0105 niemal\u017ce 70% dost\u0119pnych zasob\u00f3w.<\/p>\n<p>Dodatkowo, zmiana interfejsu wy\u015bwietlacza LCD ze zwyk\u0142ych port\u00f3w GPIO na magistral\u0119 FSMC mocno utrudni\u0142a przydzielanie pin\u00f3w procesora poszczeg\u00f3lnym interfejsom oraz co za tym idzie znacznie skomplikowa\u0142a routing p\u0142ytki drukowanej. <\/p>\n<p>Znale\u017ali\u015bmy si\u0119 wi\u0119c w punkcie, w kt\u00f3rym konieczne jest podj\u0119cie trudnej decyzji o przesiadce na inny mikrokontroler z rodziny STM32 &#8211; w ten spos\u00f3b zachowamy przynajmniej cz\u0119\u015bciowo przenoszalno\u015b\u0107 kodu \u017ar\u00f3d\u0142owego. Migracja nie jest nigdy procesem \u0142atwym i bezbolesnym, jednak dzi\u0119ki konsekwentnemu rozdzielaniu warstw systemu oraz wprowadzeniu abstrakcji sprz\u0119tu na pewno uda si\u0119 unikn\u0105\u0107 du\u017cej cz\u0119\u015bci potencjalnych k\u0142opot\u00f3w.<\/p>\n<p>Oczywi\u015bcie nadal b\u0119dziemy kontynuowa\u0107 prac\u0119 na bie\u017c\u0105cym systemie, jednak w mi\u0119dzyczasie musimy skupi\u0107 cz\u0119\u015b\u0107 uwagi na znalezieniu nast\u0119pcy uk\u0142adu STM32F407 &#8211; od tego zale\u017cy sukces projektu.<\/p>","protected":false},"excerpt":{"rendered":"<p>Tu\u017c po rozpocz\u0119ciu wyzwania Stu dni w kolorze bardzo dok\u0142adnie rozwa\u017cali\u015bmy jak\u0105 platform\u0119 sprz\u0119tow\u0105 wybra\u0107. Brali\u015bmy pod uwag\u0119 wydajno\u015b\u0107, mo\u017cliwo\u015bci rozbudowy, dost\u0119pne biblioteki software&#8217;owe oraz ilo\u015b\u0107 zewn\u0119trznych interfejs\u00f3w. Ostatecznie zdecydowali\u015bmy si\u0119 na rodzin\u0119 mikrokontroler\u00f3w STM32F4, a \u015bci\u015blej na jej przedstawiciela w postaci uk\u0142adu STM32F407VGT6. Mimo pocz\u0105tkowych estymat zu\u017cycia czasu oraz zasob\u00f3w procesora, mo\u017ce czasami okaza\u0107 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1131,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":{"0":"post-1011","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-stodni","9":"post-with-thumbnail","10":"post-with-thumbnail-large"},"_links":{"self":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts\/1011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/comments?post=1011"}],"version-history":[{"count":3,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts\/1011\/revisions"}],"predecessor-version":[{"id":1014,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts\/1011\/revisions\/1014"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/media\/1131"}],"wp:attachment":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/media?parent=1011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/categories?post=1011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/tags?post=1011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}