{"id":367981,"date":"2024-05-21T03:32:45","date_gmt":"2024-05-21T03:32:45","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=367981"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=367981","title":{"rendered":"<span>STM32. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e\u0444\u0442\u0430 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u0441\u0432\u043e\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c. \u041c\u043d\u043e\u0433\u043e\u0435 \u0441\u043a\u0440\u044b\u0442\u043e \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u043a\u0440\u044b\u0442\u043e, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u044d\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0441\u0440\u043e\u0434\u043d\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043c\u0430\u0433\u0438\u0438. \u042f, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043a\u0430\u043a \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432 \u043f\u044b\u0442\u043b\u0438\u0432\u044b\u043c \u0443\u043c\u043e\u043c \u0438 \u043f\u0440\u0438\u0440\u043e\u0434\u043d\u043e\u0439 \u043b\u044e\u0431\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f IDE \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0439.<\/p>\n<p>  \u0422\u0430\u043a \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438: \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c \u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 STM32F0-Discovery. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044f \u043d\u0435 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u043b, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u043e\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0432 \u0437\u043d\u0430\u043d\u0438\u044f\u0445. \u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0441 \u044d\u0442\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c, \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u2014 \u0430 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u043c \u043e\u0431 \u044d\u0442\u043e\u043c? <\/p>\n<p>  \u0412\u0441\u0435\u043c \u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u2014 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442! ?<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/hv\/hl\/-v\/hvhl-ve48snu4r-jbeyz_qsfdfe.png\" data-src=\"https:\/\/habrastorage.org\/webt\/hv\/hl\/-v\/hvhl-ve48snu4r-jbeyz_qsfdfe.png\"\/><\/div>\n<p><a name=\"habracut\"><\/a><br \/>  <b>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440.<\/b> \u0421\u0440\u0430\u0437\u0443 \u0436\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u0430\u0432\u043e \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u043c\u044b\u0442\u044b\u0435 \u0438 \u043d\u0435 \u043f\u043e\u043b\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438 \u0432\u0435\u0449\u0435\u0439, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0442.\u043a. \u044f \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u043c \u0432 Embedded-\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445. \u041d\u043e \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043b\u044e\u0431\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u0434\u0443\u0442 \u043f\u043e\u0447\u0432\u0443 \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0438 \u0441\u0430\u043c\u043e\u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u0438, \u0438 \u0432\u0430\u0448\u0430 \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u044c \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0446\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u043c\u0435\u043d\u044f.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/font><\/h2>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0432 \u0438\u0442\u043e\u0433\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u043f\u043e\u043c\u0438\u043c\u043e IDE, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u043f\u0438\u0448\u0443 \u043a\u0440\u0430\u0442\u043a\u043e, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u044d\u0442\u043e\u0442 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. <\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b STM32 \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 ARM Cortex-M, \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043d\u0430\u0431\u043e\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <b>ARM GNU Toolchain<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0430 x86\/64 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b ARM. \u0412 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435: \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440, \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a \u0438 \u0446\u0435\u043b\u0430\u044f \u043a\u0443\u0447\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442. <\/p>\n<p>  \u0420\u0430\u043d\u0435\u0435 \u044f \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c: \u0430 \u043f\u043e\u0447\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u2014 <b>gcc-arm-none-eabi<\/b>? \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u044d\u0442\u0438 \u0441\u043b\u043e\u0432\u0430 \u043d\u0435\u0441\u0443\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0432\u043f\u043e\u043b\u043d\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u043c\u044b\u0441\u043b:<\/p>\n<ul>\n<li>gcc \u2014 \u044d\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430;<\/li>\n<li>arm \u2014 \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f;<\/li>\n<li>none \u2014 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0432\u043d\u043e\u0441\u0438\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e bootstrap-\u043a\u043e\u0434\u0430 \u043e\u0442 \u0441\u0435\u0431\u044f;<\/li>\n<li>eabi \u2014 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u0434 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9\">EABI<\/a>.<\/li>\n<\/ul>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0443\u0442\u0438\u043b\u0438\u0442, \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043d\u0430\u0431\u043e\u0440 \u0443\u0442\u0438\u043b\u0438\u0442 ST-Link \u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 OpenOCD.<\/p>\n<blockquote><p><i>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u0441 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u043c \u043f\u043e\u0434 LInux \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0432 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/787328\/\">\u043f\u0440\u043e\u0448\u043b\u043e\u0439<\/a> \u0441\u0442\u0430\u0442\u044c\u0435.<\/i><\/p><\/blockquote>\n<p>  <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0431\u0438\u043b\u0434\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438<\/font><\/h2>\n<p>  \u0418\u0442\u0430\u043a. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u0432\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043d\u044b\u0439 Hello World \u2014 \u043a\u0430\u043a \u043f\u043e\u043c\u043e\u0440\u0433\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0444\u043b\u043e\u0443 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u0432 \u0442\u043e, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440.<\/p>\n<p>  \u042f \u043d\u0430\u043a\u0438\u0434\u0430\u043b \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0443:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/id\/0s\/xm\/id0sxmwokoe3bwrnmxltrhtu4si.png\" data-src=\"https:\/\/habrastorage.org\/webt\/id\/0s\/xm\/id0sxmwokoe3bwrnmxltrhtu4si.png\"\/><\/div>\n<p>  \u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0433\u043e\u0442\u043e\u0432\u0430 \u2014 \u0438\u0434\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430, \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435. <\/p>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u0433\u043e\u0442\u043e\u0432\u0438\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0414\u0430\u043b\u0435\u0435 \u044d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0435 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0438 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b (\u043b\u0438\u0431\u043e \u0441\u0440\u0430\u0437\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043c\u0438\u043d\u0443\u044f \u044d\u0442\u0430\u043f \u0432\u044b\u0434\u0430\u0447\u0438 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u043e\u0432), \u0438, \u043f\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c, \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0437 \u043d\u0438\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 \u0438 \u0437\u0430\u043b\u0438\u0442\u044c \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u0438 \u044d\u0442\u0430\u043f\u043e\u0432, \u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/p>\n<p>  \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0432\u0441\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0438 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e. \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0434\u0435\u0442\u0430\u043b\u044f\u043c, \u043a\u043e\u0441\u043d\u0443\u0432\u0448\u0438\u0441\u044c \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/font><\/h2>\n<p>  \u041f\u0440\u043e\u0449\u0435 \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0432\u043e\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443.<\/p>\n<p>  \u0421\u0443\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0440\u043e\u0441\u0442\u0430 \u2014 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0438 \u043c\u0438\u0433\u0430\u0435\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438. \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b <b>main.c<\/b>:<\/p>\n<pre><code class=\"cpp\">#include &lt;stdint.h> #include \"delay.h\"  \/* Clock *\/ #define RCC_APB1ENR *((volatile uint32_t*) (0x4002101C)) #define RCC_AHBENR*((volatile uint32_t*) (0x40021014))  \/* GPIO C *\/ #define GPIOC_MODER*((volatile uint32_t*) (0x48000800)) #define GPIOC_ODR*((volatile uint32_t*) (0x48000814))  \/* Global initialized variable *\/ uint32_t loop_enable = 1;  int main() {  RCC_APB1ENR |= (1 &lt;&lt; 28); \/* Enable clock on Power Interface *\/ RCC_AHBENR |= (0x00080014);  \/* Enable clock on GPIOC *\/  GPIOC_MODER |= (1 &lt;&lt; (9*2));\/* Set GPIO PC9 to Output Mode *\/  while(loop_enable) {  GPIOC_ODR = 0x100; delay();  GPIOC_ODR = 0x200; delay();  }  return 0;  }<\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430: <b>delay.h<\/b> \u0438 <b>delay.c<\/b>. <\/p>\n<p>  \u0412 <b>delay.h<\/b> \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c:<\/p>\n<pre><code class=\"cpp\">#define DELAY_FUNCTIONS_ON  #ifdef DELAY_FUNCTIONS_ON  \/* Simple delay function *\/ void delay();  #endif<\/code><\/pre>\n<p>  \u0412 <b>delay.c<\/b> \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c:<\/p>\n<pre><code class=\"cpp\">#include &lt;stdint.h>  \/* Global Read-only variable *\/ const uint32_t DELAY_MAX = 0x7A120;  \/* Global Uninitialized variable *\/ uint32_t delay_conter;  void delay() {  for(delay_conter = DELAY_MAX; delay_conter--;);  }<\/code><\/pre>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439:<\/p>\n<pre><code class=\"bash\">arm-none-eabi-gcc main.c delay.c -o main.elf<\/code><\/pre>\n<p>  \u0418 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e GCC \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043b\u0438\u043d\u043a\u0443\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 libc \u0438\u0437 newlib \u0438 \u0432 \u043d\u0435\u043c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0446\u0435\u043b\u043e\u0433\u043e \u0432\u043e\u0440\u043e\u0445\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b:<\/p>\n<pre><code class=\"plaintext\">\/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/ld: \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/lib\/libc.a(libc_a-exit.o): in function `exit': exit.c:(.text.exit+0x28): undefined reference to `_exit' \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/ld: \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/lib\/libc.a(libc_a-writer.o): in function `_write_r': writer.c:(.text._write_r+0x24): undefined reference to `_write' \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/ld: \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/lib\/libc.a(libc_a-closer.o): in function `_close_r': closer.c:(.text._close_r+0x18): undefined reference to `_close' \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/ld: \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/lib\/libc.a(libc_a-lseekr.o): in function `_lseek_r': lseekr.c:(.text._lseek_r+0x24): undefined reference to `_lseek' \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/ld: \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/lib\/libc.a(libc_a-readr.o): in function `_read_r': readr.c:(.text._read_r+0x24): undefined reference to `_read' \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/ld: \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/lib\/libc.a(libc_a-sbrkr.o): in function `_sbrk_r': sbrkr.c:(.text._sbrk_r+0x18): undefined reference to `_sbrk' collect2: error: ld returned 1 exit status<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 baremetal, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0430 \u0432\u0437\u044f\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438 \u0434\u043b\u044f \u043e\u043d\u044b\u0445:<\/p>\n<pre><code class=\"bash\">arm-none-eabi-gcc main.c delay.c -o main.elf -nostdlib<\/code><\/pre>\n<p>  \u041e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u043e\u0444\u0438\u043a\u0441\u0438\u043c \u043f\u043e\u0437\u0436\u0435, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438:<\/p>\n<pre><code class=\"plaintext\">\/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/ld: warning: cannot find entry symbol _start; defaulting to 00008000<\/code><\/pre>\n<p>  \u0422\u0430\u043a. \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0418\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440<\/font><\/h2>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0432 IDE, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440. \u0415\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b, \u0442.\u0435. \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442:<\/p>\n<ol>\n<li>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0438\u0437 \u043a\u043e\u0434\u0430;<\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b #include, #include_next;<\/li>\n<li>\u0423\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u0434\u0430: #if, #ifdef, #ifndef, #else, #elif, #endif;<\/li>\n<li>\u0412\u044b\u0432\u043e\u0434 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438: #error, #warning, #line;<\/li>\n<li>\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443: #pragma;<\/li>\n<li>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432: #define;<\/li>\n<li>\u0420\u0430\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 (\u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0438);<\/li>\n<li>\u041f\u0440\u043e\u0447\u0438\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/li>\n<\/ol>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0445\u043e\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 -E:<\/p>\n<pre><code class=\"bash\">arm-none-eabi-gcc main.c delay.c -nostdlib -E > pp.out<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u041f\u0440\u043e\u043b\u0438\u0441\u0442\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b <b>pp.out<\/b> \u2014 \u0442\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e. \u041e\u043d, \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u043e\u0435, \u043d\u0430 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u2014 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043d\u044f\u0442\u043d\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u043f\u0440\u0438\u0447\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0442\u0435 \u0441\u0430\u043c\u044b\u0435 \u043c\u0430\u0440\u043a\u0435\u0440\u044b \u0441\u0442\u0440\u043e\u043a \u0438\u0437 \u043f.7 (\u0441\u043c. \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0448\u0435), \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f. \u041f\u0440\u0438\u0432\u0435\u0434\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0443\u0441\u043e\u0447\u043a\u0438 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0432\u043d\u0443\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430:<\/p>\n<pre><code class=\"bash\"># 41 \"\/opt\/gcc-arm-none-eabi\/arm-none-eabi\/include\/machine\/_default_types.h\" 3 4 typedef signed char __int8_t;  typedef unsigned char __uint8_t; # 55 \"\/opt\/gcc-arm-none-eabi\/arm-none-eabi\/include\/machine\/_default_types.h\" 3 4 typedef short int __int16_t;  typedef short unsigned int __uint16_t; # 77 \"\/opt\/gcc-arm-none-eabi\/arm-none-eabi\/include\/machine\/_default_types.h\" 3 4 typedef long int __int32_t;  typedef long unsigned int __uint32_t; # 103 \"\/opt\/gcc-arm-none-eabi\/arm-none-eabi\/include\/machine\/_default_types.h\" 3 4 typedef long long int __int64_t;  typedef long long unsigned int __uint64_t; # 134 \"\/opt\/gcc-arm-none-eabi\/arm-none-eabi\/include\/machine\/_default_types.h\" 3 4 typedef signed char __int_least8_t;  typedef unsigned char __uint_least8_t; # 160 \"\/opt\/gcc-arm-none-eabi\/arm-none-eabi\/include\/machine\/_default_types.h\" 3 4 typedef short int __int_least16_t;<\/code><\/pre>\n<p>  \u0412\u0438\u0434\u043d\u043e, \u043a\u0430\u043a \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u201c\u0440\u0430\u0437\u0434\u0435\u043b\u201d \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u0432 \u043d\u0438\u0445 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cpp\">int main() {    *((volatile uint32_t*) (0x4002101C)) |= (1 &lt;&lt; 28);   *((volatile uint32_t*) (0x40021014)) |= (0x00080014);    *((volatile uint32_t*) (0x48000800)) |= (1 &lt;&lt; (9*2));     while(loop_enable) {        *((volatile uint32_t*) (0x48000814)) = 0x100;       delay();        *((volatile uint32_t*) (0x48000814)) = 0x200;       delay();    }      return 0;    }<\/code><\/pre>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c \u0438 \u0446\u0435\u043b\u043e\u043c, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043a\u043e\u0434 <b>main.c<\/b> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"cpp\">#define DUMMY_FUNCTION 0  #ifdef DUMMY_FUNCTION  void dummy_defined(){ return 0; }  #else  void dummy_notdefined(){ return 0; }  #endif<\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <b>dummy_defined()<\/b>, \u043d\u043e \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u0442\u0435 <b>dummy_notdefined()<\/b>, \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u2014 \u0435\u0441\u043b\u0438 \u0443\u0431\u0440\u0430\u0442\u044c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b <b>DUMMY_FUNCTION<\/b> \u0442\u043e \u0432 \u043a\u043e\u0434\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <b>dummy_notdefined()<\/b> \u0438 \u043f\u0440\u043e\u043f\u0430\u0434\u0435\u0442 <b>dummy_defined()<\/b>. \u041e\u0447\u0435\u043d\u044c \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442, \u043d\u043e \u0438\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f<\/font><\/h2>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u044d\u0442\u0430\u043f\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u0418, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u0440\u043c\u0438\u0442\u044c \u0444\u0430\u0439\u043b c \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u043b\u0430\u0433, \u0447\u0442\u043e \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433 \u0443\u0436\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u043d:<\/p>\n<pre><code class=\"bash\">arm-none-eabi-gcc main.c delay.c -nostdlib -E > main.i arm-none-eabi-gcc main.i -o main.o -nostdlib -fpreprocessed<\/code><\/pre>\n<p>  \u041f\u043e \u0438\u0442\u043e\u0433\u0443, \u0431\u0443\u0434\u0435\u0442 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0443 \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0443. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. \u0427\u0442\u043e\u0431\u044b \u0431\u044b\u043b \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u043b\u0430\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.<\/p>\n<p>  <b><i>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430.<\/i><\/b> \u0414\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u0438 <b>-march=<\/b> \u0438\u043b\u0438 <b>-mcpu=<\/b> \u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c cortex-m0. \u0418, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Cortex-M0 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0431\u043e\u0440 \u043a\u043e\u043c\u0430\u043d\u0434 Thumb, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u044e <b>-mthumb<\/b>. \u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u044d\u0442\u043e\u043c\u0443, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0444\u0442\u043e\u0432\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c (\u0442.\u043a. \u0432 Cortex-M0 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 \u043d\u0435\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e Floating Point Unit) \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0446\u0438\u044e <b>-mfloat-abi=soft<\/b>.<\/p>\n<p>  <b><i>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 GNU<\/i><\/b>. \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e: <b>-std=gnu11.<\/b><\/p>\n<p>  <b><i>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.<\/i><\/b> \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 GNU ARM \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 <b>newlib<\/b> \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a C. \u0427\u0442\u043e\u0431\u044b \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u043e\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f newlib-nano. \u041e\u0434\u043d\u0430\u043a\u043e <b>newlib-nano<\/b> \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438 C, \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u0430\u043a print() \u0438\u043b\u0438 scan(), \u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 newlib-nano \u0438 nosys \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: <b>&#8212;specs=nano.specs &#8212;specs=nosys.specs.<\/b><\/p>\n<p>  <b><i>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438.<\/i><\/b> \u0427\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u044b\u0434\u0430\u0447\u0443 \u0432\u0441\u0435\u0445 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438: <b>-Wall.<\/b><\/p>\n<p>  <b><i>\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438.<\/i><\/b> \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443, \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u043b\u0430\u0433 <b>-g.<\/b><\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-gcc main.i -o main.o \\   -nostdlib \\   -fpreprocessed \\   -mcpu=cortex-m0 \\   -mthumb \\   -mfloat-abi=soft \\   -std=gnu11 \\   -Wall \\   --specs=nano.specs \\   --specs=nosys.specs \\   -g<\/code><\/pre>\n<p>  <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0410\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043b\u0438\u0441\u0442\u0438\u043d\u0433<\/font><\/h2>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u043a\u043e\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-gcc -s main.c -o main.s \\   -S \\   -nostdlib \\   -mcpu=cortex-m0 \\   -mthumb \\   -mfloat-abi=soft \\   -std=gnu11 \\   -Wall \\   --specs=nano.specs \\   --specs=nosys.specs<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">.cpu cortex-m0 .arch armv6s-m .fpu softvfp .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 .eabi_attribute 24, 1 .eabi_attribute 25, 1 .eabi_attribute 26, 1 .eabi_attribute 30, 6 .eabi_attribute 34, 0 .eabi_attribute 18, 4 .file\"main.c\" .text .globalloop_enable .data .align2 .typeloop_enable, %object .sizeloop_enable, 4 loop_enable: .word1 .text .align1 .globalmain .syntax unified .code16 .thumb_func .typemain, %function main: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 1, uses_anonymous_args = 0 push{r7, lr} addr7, sp, #0 ldrr3, .L5 ldrr2, [r3] ldrr3, .L5 movsr1, #128 lslsr1, r1, #21 orrsr2, r1 strr2, [r3] ldrr3, .L5+4 ldrr2, [r3] ldrr3, .L5+4 ldrr1, .L5+8 orrsr2, r1 strr2, [r3] ldrr3, .L5+12 ldrr2, [r3] ldrr3, .L5+12 movsr1, #128 lslsr1, r1, #11 orrsr2, r1 strr2, [r3] b.L2 .L3: ldrr3, .L5+16 movsr2, #128 lslsr2, r2, #1 strr2, [r3] bldelay ldrr3, .L5+16 movsr2, #128 lslsr2, r2, #2 strr2, [r3] bldelay .L2: ldrr3, .L5+20 ldrr3, [r3] cmpr3, #0 bne.L3 movsr3, #0 movsr0, r3 movsp, r7 @ sp needed pop{r7, pc} .L6: .align2 .L5: .word1073877020 .word1073877012 .word524308 .word1207961600 .word1207961620 .wordloop_enable .sizemain, .-main .ident\"GCC: (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.1 20231009\"<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u043d\u043e \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0449\u0438\u0439\u0441\u044f \u0432 ELF-\u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043f\u043e \u0438\u0434\u0435\u0435 \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u043c, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043b\u0438\u043d\u043a\u043e\u0432\u0430\u043d. <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">ELF-\u0444\u0430\u0439\u043b\u044b<\/font><\/h2>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u0442\u0430\u043f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u2014 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0445 ELF-\u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c *<b>.o<\/b>. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e ELF-\u0444\u0430\u0439\u043b\u0430 \u043f\u043e \u0447\u0430\u0441\u0442\u044f\u043c. \u041a\u0441\u0442\u0430\u0442\u0438, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e ELF-\u0444\u0430\u0439\u043b\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/translated.turbopages.org\/proxy_u\/en-ru.ru.355872fb-65b69baa-5fb522ad-74722d776562\/https\/refspecs.linuxbase.org\/elf\/elf.pdf\">\u0442\u0443\u0442<\/a>. <\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 ELF-\u0444\u0430\u0439\u043b\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u2014 <b>\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a<\/b>. \u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-readelf -h main.o  ELF Header:   Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00    Class:                             ELF32   Data:                              2's complement, little endian   Version:                           1 (current)   OS\/ABI:                            UNIX - System V   ABI Version:                       0   Type:                              REL (Relocatable file)   Machine:                           ARM   Version:                           0x1   Entry point address:               0x0   Start of program headers:          0 (bytes into file)   Start of section headers:          632 (bytes into file)   Flags:                             0x5000000, Version5 EABI   Size of this header:               52 (bytes)   Size of program headers:           0 (bytes)   Number of program headers:         0   Size of section headers:           40 (bytes)   Number of section headers:         10   Section header string table index: 9<\/code><\/pre>\n<p>  \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u0438\u043d\u0430\u0447\u0435 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u043a\u043d\u0438\u0433\u0443. \u0418\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 ?.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u0441\u0435\u043a\u0446\u0438\u0438<\/font><\/h2>\n<p>  \u041e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 <b>arm-none-eabi-objdump<\/b>. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f <b>main.c<\/b>, \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0432 \u0435\u0433\u043e:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-gcc -c main.c -o main.o \\   -nostdlib \\   -mcpu=cortex-m0 \\   -mthumb \\   -mfloat-abi=soft \\   -std=gnu11 \\   -Wall \\   --specs=nano.specs \\   --specs=nosys.specs<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-objdump -h main.o  main.o:     file format elf32-littlearm  Sections: Idx Name          Size      VMA       LMA       File off  Algn   0 .text         00000070  00000000  00000000  00000034  2**2                   CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE   1 .data         00000004  00000000  00000000  000000a4  2**2                   CONTENTS, ALLOC, LOAD, DATA   2 .bss          00000000  00000000  00000000  000000a8  2**0                   ALLOC   3 .comment      00000045  00000000  00000000  000000a8  2**0                   CONTENTS, READONLY   4 .ARM.attributes 0000002c  00000000  00000000  000000ed  2**0                   CONTENTS, READONLY<\/code><\/pre>\n<p>  \u0418 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 delay.c:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-gcc -c delay.c -o delay.o    -nostdlib \\   -mcpu=cortex-m0 \\   -mthumb \\   -mfloat-abi=soft \\   -std=gnu11 \\   -Wall \\   --specs=nano.specs \\   --specs=nosys.specs<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-objdump -h delay.o  delay.o:     file format elf32-littlearm  Sections: Idx Name          Size      VMA       LMA       File off  Algn   0 .text         0000002c  00000000  00000000  00000034  2**2                   CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE   1 .data         00000000  00000000  00000000  00000060  2**0                   CONTENTS, ALLOC, LOAD, DATA   2 .bss          00000004  00000000  00000000  00000060  2**2                   ALLOC   3 .rodata       00000004  00000000  00000000  00000060  2**2                   CONTENTS, ALLOC, LOAD, READONLY, DATA   4 .comment      00000045  00000000  00000000  00000064  2**0                   CONTENTS, READONLY   5 .ARM.attributes 0000002c  00000000  00000000  000000a9  2**0                   CONTENTS, READONLY<\/code><\/pre>\n<p>  \u0412\u043d\u0435\u0441\u0443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u044f\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u044f\u0441\u043d\u044e, \u0447\u0442\u043e \u0442\u0443\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e. \u0415\u0441\u043b\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u2014 \u044d\u0442\u043e \u0432\u044b\u0432\u043e\u0434 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0430\u0437\u043b\u043e\u0436\u0435\u043d \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u043f\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0432 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441\u0432\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u0441\u0435\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0442\u043e\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u0432\u043e\u0435\u0434\u0438\u043d\u043e. <\/p>\n<p>  \u041a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u0441\u0435\u043a\u0446\u0438\u0439 \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u0438 \u043d\u0430\u0431\u043e\u0440 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u0446\u0435\u043b\u044b\u0439 \u0440\u044f\u0434 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432:<\/p>\n<ul>\n<li><b>\u0422\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0433\u0434\u0435 \u0441\u0435\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f, \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445;<\/li>\n<li><b>\u0422\u0438\u043f \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/b> \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0432\u043e\u0435\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438, \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0439 \u0438\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439;<\/li>\n<li><b>\u0410\u0434\u0440\u0435\u0441 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u0438<\/b>, \u043f\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u0438\u043b\u0438 \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e;<\/li>\n<li><b>\u0420\u0435\u0436\u0438\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f<\/b> \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u043a\u0446\u0438\u0439 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432;<\/li>\n<li><b>\u0420\u0430\u0437\u043c\u0435\u0440<\/b> \u0441\u0430\u043c\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438.<\/li>\n<\/ul>\n<p>  \u041a\u0440\u0430\u0442\u043a\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u044d\u0442\u0438 \u0441\u0435\u043a\u0446\u0438\u0438. <\/p>\n<p>  <b>\u0421\u0435\u043a\u0446\u0438\u044f .text<\/b>. \u041a\u043e\u0434 \u0438 \u0434\u0430\u043d\u043d\u044b\u0435. \u041e\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u0432\u043e Flash \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 \u201c\u0441\u044b\u0440\u044b\u0435\u201d \u0431\u0430\u0439\u0442\u044b \u0432 \u043a\u043e\u043d\u0446\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<p>  <b>\u0421\u0435\u043a\u0446\u0438\u044f .data<\/b>. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435. \u041e\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u044b \u0432 RAM. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f uint32_t loop_enable = 1 \u0431\u0443\u0434\u0435\u0442 \u0430\u043a\u043a\u0443\u0440\u0430\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438. \u0420\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0430\u0432\u0435\u043d \u0441\u0443\u043c\u043c\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<p>  <b>\u0421\u0435\u043a\u0446\u0438\u044f .bss<\/b>. \u041d\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u0438 \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u043f\u043e\u0434 \u043d\u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f uint32_t delay_conter \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c 4 \u0431\u0430\u0439\u0442\u0430.<\/p>\n<p>  <b>\u0421\u0435\u043a\u0446\u0438\u044f .rodata<\/b>. \u0414\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043b\u043e\u0436\u0435\u043d\u044b \u0432\u043e Flash-\u043f\u0430\u043c\u044f\u0442\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 const uint32_t DELAY_MAX = 0x7A120;<\/p>\n<p>  <b>\u0421\u0435\u043a\u0446\u0438\u044f .comment<\/b>. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430.<\/p>\n<p>  <b>\u0421\u0435\u043a\u0446\u0438\u044f .ARM.attributes<\/b>. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f.<\/p>\n<p>  \u041c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0442\u0430\u043a \u0436\u0435 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0435\u043a\u0446\u0438\u0438, \u043d\u043e \u043c\u044b \u0438\u0445 \u043f\u043e\u043a\u0430 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0442.\u043a. \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0437\u0430\u043d\u044b\u0440\u0438\u0432\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-objdump -s -j .text main.o  main.o:     file format elf32-littlearm  Contents of section .text:  0000 80b500af 144b1a68 134b8021 49050a43  .....K.h.K.!I..C  0010 1a60124b 1a68114b 11490a43 1a60114b  .`.K.h.K.I.C.`.K  0020 1a68104b 8021c902 0a431a60 0be00e4b  .h.K.!...C.`...K  0030 80225200 1a60fff7 feff0b4b 80229200  .\"R..`.....K.\"..  0040 1a60fff7 feff094b 1b68002b efd10023  .`.....K.h.+...#  0050 1800bd46 80bdc046 1c100240 14100240  ...F...F...@...@  0060 14000800 00080048 14080048 00000000  .......H...H....<\/code><\/pre>\n<p>  <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/font><\/h2>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u0441\u0435\u043a\u0446\u0438\u0439, \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0442\u0430\u043a \u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0435\u0435 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-objdump --syms main.o              main.o:     file format elf32-littlearm  SYMBOL TABLE: 00000000 l    df *ABS*00000000 main.c 00000000 l    d  .text00000000 .text 00000000 l    d  .data00000000 .data 00000000 l    d  .bss00000000 .bss 00000000 l    d  .comment00000000 .comment 00000000 l    d  .ARM.attributes00000000 .ARM.attributes 00000000 g     O .data00000004 loop_enable 00000000 g     F .text00000070 main 00000000         *UND*00000000 delay<\/code><\/pre>\n<p>  \u0414\u0430\u043d\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 \u0438 \u0441\u0441\u044b\u043b\u043e\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. <\/p>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435, \u0447\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 ELF-\u0444\u0430\u0439\u043b\u0435, \u043d\u043e \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043f\u043e\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0418\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435. <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041b\u0438\u043d\u043a\u043e\u0432\u043a\u0430<\/font><\/h2>\n<p>  \u0421 \u044d\u0442\u0438\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u0435\u043a\u0446\u0438\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0435\u0441\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 \u0431\u0438\u043d\u0430\u0440\u044c \u2014 \u043d\u0438\u0447\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. <\/p>\n<p>  \u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043b\u0438\u043d\u043a\u0435\u0440. \u041b\u0438\u043d\u043a\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0438\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0435\u043a\u0446\u0438\u0439 \u0432 \u0444\u0430\u0439\u043b\u0435 <b>main.o<\/b>:<\/p>\n<pre><code class=\"plaintext\">main.c --> main.o {     .text,      .data,      .bss,      .rodata }<\/code><\/pre>\n<p>  \u0418 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440 \u0441\u0435\u043a\u0446\u0438\u0439 \u0432 \u0444\u0430\u0439\u043b\u0435 <b>delay.o<\/b>:<\/p>\n<pre><code class=\"plaintext\">delay.c --> delay.o {     .text,      .data,      .bss,      .rodata }<\/code><\/pre>\n<p>  \u0418\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u201c\u0441\u043a\u043b\u0435\u0438\u0442\u044c\u201d, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"plaintext\">blink.elf = main.o + delay.o = {     .text = .text(main) + .text(delay)}     .data = .data(main) + .data(delay)}     .bss = .bss(main) + .bss(delay)}     .rodata = .rodata(main) + .rodata(delay)} }<\/code><\/pre>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 \u0438 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043d\u0435\u043c, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u044d\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e \u0448\u0430\u0433\u0430\u043c \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 <b>linker.ld<\/b> \u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435.<\/p>\n<p>  \u0424\u0430\u0439\u043b \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0441\u0435\u043a\u0446\u0438\u0439 \u2014 <b>ENTRY, MEMORY, SECTIONS<\/b>. \u041d\u0430\u0447\u043d\u0435\u043c \u043d\u0430\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u0441\u043a\u0440\u0438\u043f\u0442 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438, \u043e\u043f\u0438\u0441\u0430\u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u043d\u0438\u0445. <\/p>\n<p>  \u0421\u0435\u043a\u0446\u0438\u044f <b>ENTRY<\/b>. \u041e\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <b>reset_handler<\/b>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043e\u043f\u0438\u0448\u0435\u043c \u043f\u043e\u0437\u0436\u0435:<\/p>\n<pre><code class=\"plaintext\">ENTRY(reset_handler)<\/code><\/pre>\n<p>  \u0421\u0435\u043a\u0446\u0438\u044f <b>MEMORY<\/b>. \u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a SRAM \u0438 Flash. \u041e\u0442\u043a\u0440\u043e\u0435\u043c Datasheet \u043d\u0430 STM32F051R8T6 \u0438 \u043d\u0430\u0439\u0434\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ae\/2q\/ux\/ae2quxviiyjbbd8hkhuknkbs3fi.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ae\/2q\/ux\/ae2quxviiyjbbd8hkhuknkbs3fi.png\"\/><\/div>\n<p>  \u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0447\u0430\u043b\u0430 SRAM <b>0x2000 0000<\/b>, \u0430 \u0443 Flash \u2014 <b>0x0800 0000<\/b>. \u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0439\u0434\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u044d\u0442\u0438\u0445 \u0443\u0447\u0430\u0441\u0442\u043a\u043e\u0432 \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/a2\/0t\/zn\/a20tznjoki-aveyppjrffhv5yti.png\" data-src=\"https:\/\/habrastorage.org\/webt\/a2\/0t\/zn\/a20tznjoki-aveyppjrffhv5yti.png\"\/><\/div>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0440\u0430\u0437\u043c\u0435\u0440 SRAM \u0443 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 8KB, \u0440\u0430\u0437\u043c\u0435\u0440 Flash \u2014 64KB. \u0423\u043a\u0430\u0436\u0435\u043c \u044d\u0442\u043e:<\/p>\n<pre><code class=\"plaintext\">MEMORY {   RAM    (xrw)    : ORIGIN = 0x20000000,   LENGTH = 8K   FLASH   (rx)    : ORIGIN = 0x08000000,   LENGTH = 64K }<\/code><\/pre>\n<p>  \u0412 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u043e\u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0436\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<ul>\n<li><b>x<\/b> \u2014 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f;<\/li>\n<li><b>r<\/b> \u2014 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f;<\/li>\n<li><b>w<\/b> \u2014 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438.<\/li>\n<\/ul>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441, \u0433\u0434\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440. \u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0430\u0434\u0440\u0435\u0441\u0430 \u201cStack Pointer\u201d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 PUSH \u0438 POP:<\/p>\n<pre><code class=\"plaintext\">_estack = ORIGIN(RAM) + LENGTH(RAM);<\/code><\/pre>\n<p>  \u0421\u0435\u043a\u0446\u0438\u044f <b>SECTIONS<\/b>. \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u043a\u0446\u0438\u0439 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b, \u0438 \u043a\u0430\u043a \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f. \u041e\u0431\u0449\u0438\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"plaintext\">SECTIONS {     &lt;symbol> = LOADADDR(&lt;symbol>);     .&lt;section>:     {         &lt;symbol> = .;         *(.sub_section);         . = ALIGN(n);     } >&lt;Run Location> [AT> Storage Location] }<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0442\u043e, \u043e \u0447\u0435\u043c \u044f \u043f\u0438\u0441\u0430\u043b \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u0439, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<ul>\n<li>\u0421\u0435\u043a\u0446\u0438\u044f <b>.isr_vector<\/b> \u2014 \u044d\u0442\u043e \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0430\u044f \u0441\u0435\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u041f\u043e \u0441\u0443\u0442\u0438, \u0432 \u043d\u0435\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 ISR, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x0000 0000;<\/li>\n<li>\u0421\u0435\u043a\u0446\u0438\u044f <b>.text<\/b> \u2014 \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u0434, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u0432\u043e Flash;<\/li>\n<li>\u0421\u0435\u043a\u0446\u0438\u044f <b>.data<\/b> \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0435 \u0432 SRAM;<\/li>\n<li>\u0421\u0435\u043a\u0446\u0438\u044f <b>.rodata<\/b> \u2014 \u044d\u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0435 \u0432 Flash;<\/li>\n<li>\u0421\u0435\u043a\u0446\u0438\u044f <b>.bss<\/b> \u2014 \u044d\u0442\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435, \u043d\u043e \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u0441 \u043d\u0443\u043b\u0435\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u044b \u0432 SRAM.<\/li>\n<\/ul>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u043c\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c, \u0442\u043e \u0441\u0435\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"plaintext\">SECTIONS {     .isr_vector :     { KEEP(*(.isr_vector))     } >FLASH      .text :     { . = ALIGN(4);         *(.text)  . = ALIGN(4);         _etext = .;      } >FLASH      .rodata :     { . = ALIGN(4);         *(.rodata)     } >FLASH      .data :     { . = ALIGN(4);         _sdata = .;         *(.data)  . = ALIGN(4);         _edata = .;     } >RAM AT> FLASH      .bss :     { . = ALIGN(4);         _sbss = .;         *(.bss)  . = ALIGN(4);         _ebss = .;     } >RAM }<\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0435, \u043f\u043e\u043c\u0438\u043c\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u043a\u0446\u0438\u0439, \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0430\u0436\u043d\u044b\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b:<\/p>\n<ul>\n<li><b>_etext<\/b> \u2014 \u043a\u043e\u043d\u0435\u0446 \u0441\u0435\u043a\u0446\u0438\u0438 .text;<\/li>\n<li><b>_sdata<\/b> \u2014 \u0441\u0442\u0430\u0440\u0442 \u0441\u0435\u043a\u0446\u0438\u0438 .data;<\/li>\n<li><b>_edata<\/b> \u2014 \u043a\u043e\u043d\u0435\u0446 \u0441\u0435\u043a\u0446\u0438\u0438 .data;<\/li>\n<li><b>_sbss<\/b> \u2014 \u0441\u0442\u0430\u0440\u0442 \u0441\u0435\u043a\u0446\u0438\u0438 .bss;<\/li>\n<li><b>_ebss<\/b> \u2014 \u043a\u043e\u043d\u0435\u0446 \u0441\u0435\u043a\u0446\u0438\u0438 .bss.<\/li>\n<\/ul>\n<p>  \u041a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u0443 \u0438\u0434\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438. \u042d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0432 <b>startup-\u0444\u0430\u0439\u043b\u0435<\/b>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 RAM \u0438 \u0437\u0430\u043d\u0443\u043b\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0441\u0435\u043a\u0446\u0438\u0438 <b>.bss<\/b>. \u0422\u0430\u043a\u0436\u0435, \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u043e 4-\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043d\u0435 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0438 Startup-\u0444\u0430\u0439\u043b<\/font><\/h2>\n<p>  \u0422\u0430\u043a. \u0421 \u044d\u0442\u0430\u043f\u043e\u043c \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0443\u044e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e. \u041f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <b>BOOT0<\/b>, \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043d\u0443\u043b\u044f, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u043e\u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 Flash 0x0800 0000 \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043e \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 0x0000 0000 \u0438 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x0000 0000, \u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 MSP (\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430).<\/p>\n<p>  \u0417\u0430\u0442\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 NVIC \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440 RESET, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 PC \u0430\u0434\u0440\u0435\u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 <b>reset_handler<\/b>, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <b>0x0000 0004<\/b> \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0434\u0440\u0443. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u044f\u0434\u0440\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 PC, \u0438 \u043d\u0430\u0447\u043d\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>  \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0430\u0434\u0440\u0435\u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0441\u0442\u0435\u043a\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d \u043a\u0430\u043a \u043f\u0435\u0440\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439.<\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430, \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c 15 \u0441\u043b\u043e\u0432 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u044f\u0434\u0440\u0430 Cortex-M, \u0438 \u043f\u043b\u044e\u0441\u043e\u043c, \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0441\u043b\u043e\u0432, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0438 \u043e\u0442 \u043d\u0438\u0445 \u0442\u043e\u0436\u0435. \u0418\u043d\u043e\u0433\u0434\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0442\u043e \u0442\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0443\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u0438\u0445 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432. <\/p>\n<p>  \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 Reference Manual \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f STM32F0 \u2014 \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 Vector Table:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/yy\/tr\/pn\/yytrpna-ufd7xci1wyj_ze5a-qq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/yy\/tr\/pn\/yytrpna-ufd7xci1wyj_ze5a-qq.png\"\/><\/div>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438, \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435. \u0423\u043a\u0430\u0436\u0435\u043c \u0438\u0445 \u0441 weak-\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0445 \u043f\u0435\u0440\u0435\u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u0434\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>  \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u0432 \u043a\u043e\u0434\u0435, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u043d\u0438\u0436\u0435, \u0443\u043a\u0430\u0437\u0430\u043d \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <b>section<\/b>, \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 <b>isr_vector<\/b>, \u0447\u0442\u043e\u0431\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043f\u043e\u043f\u0430\u043b\u0430 \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  \u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u2014 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c <b>reset_handler<\/b> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430. \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 <b>.data-\u0441\u0435\u043a\u0446\u0438\u0438<\/b> \u0438\u0437 Flash \u0432 SRAM, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 <b>_sdata<\/b> \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f <b>_edata<\/b>, \u043d\u0430\u0447\u0430\u0432 \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u0430\u0434\u0440\u0435\u0441\u0430 <b>_etext<\/b>, \u0430 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0443\u043b\u0438 \u0432 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043e\u0442\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u0434 \u0441\u0435\u043a\u0446\u0438\u044e <b>.bss, \u0441 _sbss<\/b> \u0434\u043e <b>_ebss<\/b>. <\/p>\n<p>  \u041d\u0443 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <b>main<\/b>.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b <b>startup.c<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442 \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e:<\/p>\n<pre><code class=\"cpp\">#include &lt;stdint.h>  #define SRAM_START (0x20000000U)\/\/ \u0410\u0434\u0440\u0435\u0441 \u043d\u0430\u0447\u0430\u043b\u0430 SRAM #define SRAM_SIZE (8U * 1024U)\/\/ \u0420\u0430\u0437\u043c\u0435\u0440 SRAM #define SRAM_END (SRAM_START + SRAM_SIZE)\/\/ \u041a\u043e\u043d\u0435\u0446 SRAM #define STACK_POINTER_INIT_ADDRESS (SRAM_END)\/\/ \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430  #define ISR_VECTOR_SIZE_WORDS 48\/\/ \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439  \/\/ \u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f void default_handler(void); void reset_handler(void); void nmi_handler(void) __attribute__((weak, alias(\"default_handler\"))); void hard_fault_handler(void) __attribute__((weak, alias(\"default_handler\"))); void svcall_handler(void) __attribute__((weak, alias(\"default_handler\"))); void pendsv_handler(void) __attribute__((weak, alias(\"default_handler\"))); void systick_handler(void) __attribute__((weak, alias(\"default_handler\")));  \/\/ \u041e\u0431\u044a\u044f\u0432\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 .isr_vector uint32_t isr_vector[ISR_VECTOR_SIZE_WORDS] __attribute__((section(\".isr_vector\"))) =  {   STACK_POINTER_INIT_ADDRESS,   (uint32_t)&amp;reset_handler,   (uint32_t)&amp;nmi_handler,   (uint32_t)&amp;hard_fault_handler,   0,   0,   0,   0,   0,   0,   0,   (uint32_t)&amp;svcall_handler,   0,   0,   (uint32_t)&amp;pendsv_handler,   (uint32_t)&amp;systick_handler,   \/\/ \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432... };  \/\/ \u041e\u0431\u044a\u044f\u0432\u0438\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e void default_handler(void) {   while(1); }  extern uint32_t _etext; extern uint32_t _sdata; extern uint32_t _edata; extern uint32_t _sbss; extern uint32_t _ebss;  \/\/ \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e main extern int main(void);  \/\/ \u041e\u0431\u044a\u044f\u0432\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0441\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 main void reset_handler(void) {   \/\/ \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c .data \u0438\u0437 FLASH \u0432 SRAM   uint32_t data_size = (uint32_t)&amp;_edata - (uint32_t)&amp;_sdata;    uint8_t *flash_data = (uint8_t*) &amp;_etext;   uint8_t *sram_data = (uint8_t*) &amp;_sdata;      for (uint32_t i = 0; i &lt; data_size; i++)   {     sram_data[i] = flash_data[i];   }    \/\/ \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0443\u043b\u044f\u043c\u0438 .bss \u0441\u0435\u043a\u0446\u0438\u044e \u0432 SRAM   uint32_t bss_size = (uint32_t)&amp;_ebss - (uint32_t)&amp;_sbss;    uint32_t *bss = (uint32_t*) &amp;_sbss;    for (uint32_t i = 0; i &lt; bss_size; i++)   {     bss[i] = 0;   }      \/\/ \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 main-\u0444\u0443\u043d\u043a\u0446\u0438\u044e   main();    }<\/code><\/pre>\n<p>  \u0412\u0441\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u043c \u0441 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 \u041c\u041a. \u0412 \u0438\u0442\u043e\u0433\u0435, \u0435\u0441\u043b\u0438 \u0441\u043c\u0435\u0448\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0435\u0434\u0438\u043d\u043e: \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u043a\u0446\u0438\u0439, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0441\u0442\u0430\u0440\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/4i\/zg\/uq\/4izguqq_npj5py-hrjggc_oz5ii.png\" data-src=\"https:\/\/habrastorage.org\/webt\/4i\/zg\/uq\/4izguqq_npj5py-hrjggc_oz5ii.png\"\/><\/div>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438 \u0437\u0430\u043b\u0438\u0432\u043a\u0435 \u0435\u0433\u043e \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430<\/font><\/h2>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0443\u044e \u043d\u0430\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-gcc main.c delay.c startup.c \\   -T linker.ld \\   -o blink.elf \\   -nostdlib \\   -mcpu=cortex-m0 \\   -mthumb \\   -mfloat-abi=soft \\   -std=gnu11 \\   -Wall<\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u043d\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"plaintext\">ld: warning: blink.elf has a LOAD segment with RWX permissions<\/code><\/pre>\n<p>  \u041e\u043d\u043e, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437\u0432\u0440\u0435\u0434\u043d\u044b\u043c, \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 bin-\u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-objcopy -O binary blink.elf blink.bin<\/code><\/pre>\n<p>  \u0418 \u043f\u0440\u043e\u0448\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043d\u0430\u0448 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440:<\/p>\n<pre><code class=\"plaintext\">st-flash write blink.bin 0x08000000 <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e, \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0430\u0441\u044c \u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043d\u0430\u0447\u0430\u043b \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u043e \u043c\u043e\u0440\u0433\u0430\u0442\u044c. \u041f\u0440\u043e\u0444\u0438\u0442.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0414\u0435\u0431\u0430\u0433\u0433\u0435\u0440 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e \u0448\u0430\u0433\u0430\u043c<\/font><\/h2>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u043e\u0431\u0435\u0436\u0438\u043c\u0441\u044f \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u043c\u0443\u0441\u044f ELF-\u0444\u0430\u0439\u043b\u0443. \u041a\u0430\u043a \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438 \u0432\u044b\u0448\u0435 \u2014 \u0434\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0451\u0440\u0442\u043a\u043e\u0439 \u0434\u043b\u044f bin-\u0444\u0430\u0439\u043b\u0430 \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u0443\u0447\u0443 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-nm blink.elf   0800015c W bus_fault_handler 0800015c W debug_monitor_handler 0800015c T default_handler 08000130 T delay 20000004 B delay_conter 080001e8 R DELAY_MAX 20000008 B _ebss 20000004 D _edata 20002000 D _estack 080001e8 T _etext 0800015c W hard_fault_handler 08000000 D isr_vector 20000000 D loop_enable 080000c0 T main 0800015c W nmi_handler 0800015c W pendsv_handler 08000164 T reset_handler 20000004 B _sbss 20000000 D _sdata 0800015c W svcall_handler 0800015c W systick_handler 0800015c W usage_fault_handler<\/code><\/pre>\n<p>  \u041f\u043e\u043b\u044c\u0437\u0443\u044f\u0441\u044c \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0444\u0443\u043d\u043a\u0446\u0438\u044f <b>reset_handler<\/b> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <b>0x0800 0164<\/b>, \u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439 <b>default_handler<\/b> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <b>0x0800 015c<\/b>. <\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u0433\u043b\u044f\u043d\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0412 \u043d\u0435\u043c \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <b>isr_vector<\/b> \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x0800 0000 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:<\/p>\n<pre><code class=\"plaintext\">xxd -g4 -e -s0 -l32 blink.bin<\/code><\/pre>\n<p>  \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438 \u043f\u043e 4 \u0431\u0430\u0439\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0444\u043e\u0440\u043c\u0430\u0442 little-endian \u043e\u0442 0 \u0434\u043e 32 \u0431\u0430\u0439\u0442\u0430:<\/p>\n<pre><code class=\"plaintext\">00000000: 20002000 08000165 0800015d 0800015d  . . e...]...]... 00000010: 0800015d 0800015d 00000000 00000000  ]...]...........<\/code><\/pre>\n<p>  \u041c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0441\u0442\u0435\u043a\u0430 <b>MSP<\/b>, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <b>0x0000 0000<\/b>, \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <b>0x2000 2000<\/b> \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 <b>RAM<\/b>. \u041f\u043b\u044e\u0441\u043e\u043c, <b>reset_handler<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043a\u043e\u0439 \u0432\u0445\u043e\u0434\u0430, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <b>0x0000 0004<\/b> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 <b>0x0800 0165<\/b>, \u0447\u0442\u043e \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. <b>LSB<\/b> \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434 <b>Thumb<\/b>.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b <b>DELAY_MAX<\/b> \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <b>0x0800 01E8<\/b>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438:<\/p>\n<pre><code class=\"plaintext\"># cat delay.c | grep DELAY_MAX -m 1 const uint32_t DELAY_MAX = 0x1A120;  # xxd -g4 -e -s0x1e8 -l4 blink.bin 000001e8: 0001a120                              ...<\/code><\/pre>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0441 \u0442\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0432\u043d\u0430\u0447\u0430\u043b\u0435:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-objdump --disassemble blink.elf<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0414\u043b\u0438\u043d\u043d\u044b\u0439 \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">blink.elf:     file format elf32-littlearm   Disassembly of section .text:  080000c0 &lt;main>:  80000c0:b580      push{r7, lr}  80000c2:af00      addr7, sp, #0  80000c4:4b14      ldrr3, [pc, #80]@ (8000118 &lt;main+0x58>)  80000c6:681a      ldrr2, [r3, #0]  80000c8:4b13      ldrr3, [pc, #76]@ (8000118 &lt;main+0x58>)  80000ca:2180      movsr1, #128@ 0x80  80000cc:0549      lslsr1, r1, #21  80000ce:430a      orrsr2, r1  80000d0:601a      strr2, [r3, #0]  80000d2:4b12      ldrr3, [pc, #72]@ (800011c &lt;main+0x5c>)  80000d4:681a      ldrr2, [r3, #0]  80000d6:4b11      ldrr3, [pc, #68]@ (800011c &lt;main+0x5c>)  80000d8:4911      ldrr1, [pc, #68]@ (8000120 &lt;main+0x60>)  80000da:430a      orrsr2, r1  80000dc:601a      strr2, [r3, #0]  80000de:4b11      ldrr3, [pc, #68]@ (8000124 &lt;main+0x64>)  80000e0:681a      ldrr2, [r3, #0]  80000e2:4b10      ldrr3, [pc, #64]@ (8000124 &lt;main+0x64>)  80000e4:2180      movsr1, #128@ 0x80  80000e6:02c9      lslsr1, r1, #11  80000e8:430a      orrsr2, r1  80000ea:601a      strr2, [r3, #0]  80000ec:e00b      b.n8000106 &lt;main+0x46>  80000ee:4b0e      ldrr3, [pc, #56]@ (8000128 &lt;main+0x68>)  80000f0:2280      movsr2, #128@ 0x80  80000f2:0052      lslsr2, r2, #1  80000f4:601a      strr2, [r3, #0]  80000f6:f000 f81b bl8000130 &lt;delay>  80000fa:4b0b      ldrr3, [pc, #44]@ (8000128 &lt;main+0x68>)  80000fc:2280      movsr2, #128@ 0x80  80000fe:0092      lslsr2, r2, #2  8000100:601a      strr2, [r3, #0]  8000102:f000 f815 bl8000130 &lt;delay>  8000106:4b09      ldrr3, [pc, #36]@ (800012c &lt;main+0x6c>)  8000108:681b      ldrr3, [r3, #0]  800010a:2b00      cmpr3, #0  800010c:d1ef      bne.n80000ee &lt;main+0x2e>  800010e:2300      movsr3, #0  8000110:0018      movsr0, r3  8000112:46bd      movsp, r7  8000114:bd80      pop{r7, pc}  8000116:46c0      nop@ (mov r8, r8)  8000118:4002101c .word0x4002101c  800011c:40021014 .word0x40021014  8000120:00080014 .word0x00080014  8000124:48000800 .word0x48000800  8000128:48000814 .word0x48000814  800012c:20000000 .word0x20000000  08000130 &lt;delay>:  8000130:b580      push{r7, lr}  8000132:af00      addr7, sp, #0  8000134:4a07      ldrr2, [pc, #28]@ (8000154 &lt;delay+0x24>)  8000136:4b08      ldrr3, [pc, #32]@ (8000158 &lt;delay+0x28>)  8000138:601a      strr2, [r3, #0]  800013a:46c0      nop@ (mov r8, r8)  800013c:4b06      ldrr3, [pc, #24]@ (8000158 &lt;delay+0x28>)  800013e:681b      ldrr3, [r3, #0]  8000140:1e59      subsr1, r3, #1  8000142:4a05      ldrr2, [pc, #20]@ (8000158 &lt;delay+0x28>)  8000144:6011      strr1, [r2, #0]  8000146:2b00      cmpr3, #0  8000148:d1f8      bne.n800013c &lt;delay+0xc>  800014a:46c0      nop@ (mov r8, r8)  800014c:46c0      nop@ (mov r8, r8)  800014e:46bd      movsp, r7  8000150:bd80      pop{r7, pc}  8000152:46c0      nop@ (mov r8, r8)  8000154:0001a120 .word0x0001a120  8000158:20000004 .word0x20000004  0800015c &lt;default_handler>:  800015c:b580      push{r7, lr}  800015e:af00      addr7, sp, #0  8000160:46c0      nop@ (mov r8, r8)  8000162:e7fd      b.n8000160 &lt;default_handler+0x4>  08000164 &lt;reset_handler>:  8000164:b580      push{r7, lr}  8000166:b088      subsp, #32  8000168:af00      addr7, sp, #0  800016a:4a1a      ldrr2, [pc, #104]@ (80001d4 &lt;reset_handler+0x70>)  800016c:4b1a      ldrr3, [pc, #104]@ (80001d8 &lt;reset_handler+0x74>)  800016e:1ad3      subsr3, r2, r3  8000170:617b      strr3, [r7, #20]  8000172:4b1a      ldrr3, [pc, #104]@ (80001dc &lt;reset_handler+0x78>)  8000174:613b      strr3, [r7, #16]  8000176:4b18      ldrr3, [pc, #96]@ (80001d8 &lt;reset_handler+0x74>)  8000178:60fb      strr3, [r7, #12]  800017a:2300      movsr3, #0  800017c:61fb      strr3, [r7, #28]  800017e:e00a      b.n8000196 &lt;reset_handler+0x32>  8000180:693a      ldrr2, [r7, #16]  8000182:69fb      ldrr3, [r7, #28]  8000184:18d2      addsr2, r2, r3  8000186:68f9      ldrr1, [r7, #12]  8000188:69fb      ldrr3, [r7, #28]  800018a:18cb      addsr3, r1, r3  800018c:7812      ldrbr2, [r2, #0]  800018e:701a      strbr2, [r3, #0]  8000190:69fb      ldrr3, [r7, #28]  8000192:3301      addsr3, #1  8000194:61fb      strr3, [r7, #28]  8000196:69fa      ldrr2, [r7, #28]  8000198:697b      ldrr3, [r7, #20]  800019a:429a      cmpr2, r3  800019c:d3f0      bcc.n8000180 &lt;reset_handler+0x1c>  800019e:4a10      ldrr2, [pc, #64]@ (80001e0 &lt;reset_handler+0x7c>)  80001a0:4b10      ldrr3, [pc, #64]@ (80001e4 &lt;reset_handler+0x80>)  80001a2:1ad3      subsr3, r2, r3  80001a4:60bb      strr3, [r7, #8]  80001a6:4b0f      ldrr3, [pc, #60]@ (80001e4 &lt;reset_handler+0x80>)  80001a8:607b      strr3, [r7, #4]  80001aa:2300      movsr3, #0  80001ac:61bb      strr3, [r7, #24]  80001ae:e007      b.n80001c0 &lt;reset_handler+0x5c>  80001b0:687a      ldrr2, [r7, #4]  80001b2:69bb      ldrr3, [r7, #24]  80001b4:18d3      addsr3, r2, r3  80001b6:2200      movsr2, #0  80001b8:701a      strbr2, [r3, #0]  80001ba:69bb      ldrr3, [r7, #24]  80001bc:3301      addsr3, #1  80001be:61bb      strr3, [r7, #24]  80001c0:69ba      ldrr2, [r7, #24]  80001c2:68bb      ldrr3, [r7, #8]  80001c4:429a      cmpr2, r3  80001c6:d3f3      bcc.n80001b0 &lt;reset_handler+0x4c>  80001c8:f7ff ff7a bl80000c0 &lt;main>  80001cc:46c0      nop@ (mov r8, r8)  80001ce:46bd      movsp, r7  80001d0:b008      addsp, #32  80001d2:bd80      pop{r7, pc}  80001d4:20000004 .word0x20000004  80001d8:20000000 .word0x20000000  80001dc:080001e8 .word0x080001e8  80001e0:20000008 .word0x20000008  80001e4:20000004 .word0x20000004<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041f\u0440\u043e\u0431\u0435\u0436\u0438\u043c\u0441\u044f \u043f\u043e \u043d\u0435\u043c\u0443 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u043e\u043c \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0435\u043b\u0435\u0437\u043a\u0435. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 OpenOCD, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435:<\/p>\n<pre><code class=\"plaintext\">openocd -f \/usr\/local\/share\/openocd\/scripts\/interface\/stlink.cfg \\         -f \/usr\/local\/share\/openocd\/scripts\/board\/stm32f0discovery.cfg<\/code><\/pre>\n<p>  \u041a \u043d\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f:<\/p>\n<ol>\n<li>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 GBD-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e \u043f\u043e\u0440\u0442\u0443 3333, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0441\u043e\u0444\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437 IDE);<\/li>\n<li>Telnet-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u043f\u043e \u043f\u043e\u0440\u0442\u0443 4444, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0443 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e.<\/li>\n<\/ol>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043e\u0431\u0430:<\/p>\n<pre><code class=\"plaintext\">telnet localhost 4444  Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Open On-Chip Debugger > flash write_image erase \/home\/megalloid\/STM32\/manual-build\/blink.elf device id = 0x20006440 flash size = 64 KiB Adding extra erase range, 0x080001f0 .. 0x080003ff auto erase enabled wrote 496 bytes from file \/home\/megalloid\/STM32\/manual-build\/blink.elf in 0.078516s (6.169 KiB\/s) > reset halt Unable to match requested speed 1000 kHz, using 950 kHz Unable to match requested speed 1000 kHz, using 950 kHz [stm32f0x.cpu] halted due to debug-request, current mode: Thread  xPSR: 0xc1000000 pc: 0x08000164 msp: 0x20002000 > resume<\/code><\/pre>\n<p>  \u0422\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c OpenOCD \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0441\u0432\u043e\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c:<\/p>\n<pre><code class=\"plaintext\">Open On-Chip Debugger 0.12.0+dev-01496-gea2e26f7d (2024-01-20-20:28) Licensed under GNU GPL v2 For bug reports, read http:\/\/openocd.org\/doc\/doxygen\/bugs.html Warn : Interface already configured, ignoring Error: already specified hl_layout stlink Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG\/SWD srst_only separate srst_nogate srst_open_drain connect_deassert_srst Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : clock speed 1000 kHz Info : STLINK V2J37S0 (API v2) VID:PID 0483:3748 Info : Target voltage: 2.874616 Info : [stm32f0x.cpu] Cortex-M0 r0p0 processor detected Info : [stm32f0x.cpu] target has 4 breakpoints, 2 watchpoints Info : [stm32f0x.cpu] Examination succeed Info : starting gdb server for stm32f0x.cpu on 3333 Info : Listening on port 3333 for gdb connections [stm32f0x.cpu] halted due to breakpoint, current mode: Thread  xPSR: 0x61000000 pc: 0x080000fa msp: 0x20001fd0 Info : accepting 'telnet' connection on tcp\/4444 Info : device id = 0x20006440 Info : flash size = 64 KiB Warn : Adding extra erase range, 0x080001f0 .. 0x080003ff Info : Unable to match requested speed 1000 kHz, using 950 kHz Info : Unable to match requested speed 1000 kHz, using 950 kHz [stm32f0x.cpu] halted due to debug-request, current mode: Thread  xPSR: 0xc1000000 pc: 0x08000164 msp: 0x20002000<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043e\u0442\u043b\u0430\u0434\u0438\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 GDB-\u043a\u043b\u0438\u0435\u043d\u0442. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0431\u0438\u043b\u0434\u0438\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0441 debug-\u043e\u043f\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-gcc main.c delay.c startup.c \\   -T linker.ld \\   -o blink-debug.elf \\   -nostdlib \\   -mcpu=cortex-m0 \\   -mthumb \\   -mfloat-abi=soft \\   -std=gnu11 \\   -Wall \\   -g<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c GDB-\u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043f\u0443\u0442\u0438 \u043a ELF-\u0444\u0430\u0439\u043b\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u2014 \u0442\u0430\u043a\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-gdb blink-debug.elf<\/code><\/pre>\n<p>  \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a OpenOCD-\u0441\u0435\u0440\u0432\u0435\u0440\u0443:<\/p>\n<pre><code class=\"plaintext\">(gdb) target extended-remote localhost:3333<\/code><\/pre>\n<p>  \u0417\u0430\u043f\u0438\u0448\u0435\u043c \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434:<\/p>\n<pre><code class=\"plaintext\">(gdb) monitor flash write_image erase \/home\/megalloid\/STM32\/manual-build\/blink.elf Adding extra erase range, 0x080001f0 .. 0x080003ff auto erase enabled wrote 496 bytes from file \/home\/megalloid\/STM32\/manual-build\/blink.elf in 0.080308s (6.031 KiB\/s)<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043c \u0441\u0438\u0433\u043d\u0430\u043b \u043d\u0430 <b>\u0441\u0431\u0440\u043e\u0441<\/b> \u0438 \u043d\u0430 <b>\u0441\u0442\u0430\u0440\u0442<\/b> \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:<\/p>\n<pre><code class=\"plaintext\">(gdb) monitor reset halt Unable to match requested speed 1000 kHz, using 950 kHz Unable to match requested speed 1000 kHz, using 950 kHz [stm32f0x.cpu] halted due to debug-request, current mode: Thread  xPSR: 0xc1000000 pc: 0x08000164 msp: 0x20002000 (gdb) monitor resume<\/code><\/pre>\n<p>  \u0421\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043d\u0430\u0447\u043d\u0435\u0442 \u043c\u043e\u0440\u0433\u0430\u0442\u044c, \u043d\u043e \u043d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043f\u043e \u0448\u0430\u0433\u0430\u043c. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e 8 \u0431\u0430\u0439\u0442\u043e\u0432 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c <b>0x0000 0000<\/b> \u0438 <b>0x0800 0000<\/b>:<\/p>\n<pre><code class=\"plaintext\">(gdb) monitor reset halt (gdb) x\/2z 0x00000000 0x0:0x200020000x08000165  (gdb) x\/2z 0x08000000 0x8000000:0x200020000x08000165<\/code><\/pre>\n<p>  \u0414\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <b>x<\/b> (eXamine) \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443. \u0427\u0435\u0440\u0435\u0437 \u0441\u043b\u044d\u0448 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u044b\u0432\u043e\u0434\u0430, \u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c 2 4-\u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0438\u0445 \u0432 16-\u0440\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u041f\u043e \u043e\u0431\u043e\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c \u043b\u0435\u0436\u0430\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0438, \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0441\u0442\u0430\u0440\u0442\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 SP \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <b>0x2000 2000<\/b>, \u0430 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 PC \u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <b>0x0800 0165<\/b>:<\/p>\n<pre><code class=\"plaintext\">(gdb) print\/z $sp $1 = 0x20002000  (gdb) print\/z $pc $2 = 0x08000164<\/code><\/pre>\n<p>  \u0412\u0441\u0435 \u0432\u0435\u0440\u043d\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0432 PC-\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435:<\/p>\n<pre><code class=\"plaintext\">(gdb) x\/i $pc => 0x800016a &lt;reset_handler+6>:ldrr2, [pc, #104]@ (0x80001d4 &lt;reset_handler+112>)<\/code><\/pre>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c <b>breakpoint<\/b> \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <b>main<\/b> \u0438 \u0441\u043a\u0430\u0436\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u043f\u043e \u0448\u0430\u0433\u0430\u043c, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <b>n<\/b>:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0414\u043b\u0438\u043d\u043d\u044b\u0439 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0439 \u043b\u0438\u0441\u0442\u0438\u043d\u0433<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">(gdb) monitor reset halt Unable to match requested speed 1000 kHz, using 950 kHz Unable to match requested speed 1000 kHz, using 950 kHz [stm32f0x.cpu] halted due to debug-request, current mode: Thread  xPSR: 0xc1000000 pc: 0x08000164 msp: 0x20002000 (gdb) br main Breakpoint 2 at 0x80000c4: file main.c, line 17. (gdb) stepi halted: PC: 0x08000166 halted: PC: 0x08000168 halted: PC: 0x0800016a reset_handler () at startup.c:52 52  uint32_t data_size = (uint32_t)&amp;_edata - (uint32_t)&amp;_sdata; (gdb) n halted: PC: 0x0800016c halted: PC: 0x0800016e halted: PC: 0x08000170 halted: PC: 0x08000172 53  uint8_t *flash_data = (uint8_t*) &amp;_etext; (gdb) n halted: PC: 0x08000174 halted: PC: 0x08000176 54  uint8_t *sram_data = (uint8_t*) &amp;_sdata; (gdb) n halted: PC: 0x08000178 halted: PC: 0x0800017a 56  for (uint32_t i = 0; i &lt; data_size; i++) (gdb) n halted: PC: 0x0800017c halted: PC: 0x0800017e halted: PC: 0x08000196 halted: PC: 0x08000198 halted: PC: 0x0800019a halted: PC: 0x0800019c halted: PC: 0x08000180 58    sram_data[i] = flash_data[i]; (gdb) n halted: PC: 0x08000182 halted: PC: 0x08000184 halted: PC: 0x08000186 halted: PC: 0x08000188 halted: PC: 0x0800018a halted: PC: 0x0800018c halted: PC: 0x0800018e halted: PC: 0x08000190 56  for (uint32_t i = 0; i &lt; data_size; i++) (gdb) n halted: PC: 0x08000192 halted: PC: 0x08000194 halted: PC: 0x08000196 halted: PC: 0x08000198 halted: PC: 0x0800019a halted: PC: 0x0800019c halted: PC: 0x08000180 58    sram_data[i] = flash_data[i]; (gdb) n halted: PC: 0x08000182 halted: PC: 0x08000184 halted: PC: 0x08000186 halted: PC: 0x08000188 halted: PC: 0x0800018a halted: PC: 0x0800018c halted: PC: 0x0800018e halted: PC: 0x08000190 56  for (uint32_t i = 0; i &lt; data_size; i++) (gdb) n halted: PC: 0x08000192 halted: PC: 0x08000194 halted: PC: 0x08000196 halted: PC: 0x08000198 halted: PC: 0x0800019a halted: PC: 0x0800019c halted: PC: 0x08000180 58    sram_data[i] = flash_data[i]; (gdb) n halted: PC: 0x08000182 halted: PC: 0x08000184 halted: PC: 0x08000186 halted: PC: 0x08000188 halted: PC: 0x0800018a halted: PC: 0x0800018c halted: PC: 0x0800018e halted: PC: 0x08000190 56  for (uint32_t i = 0; i &lt; data_size; i++) (gdb) n halted: PC: 0x08000192 halted: PC: 0x08000194 halted: PC: 0x08000196 halted: PC: 0x08000198 halted: PC: 0x0800019a halted: PC: 0x0800019c halted: PC: 0x08000180 58    sram_data[i] = flash_data[i]; (gdb) n halted: PC: 0x08000182 halted: PC: 0x08000184 halted: PC: 0x08000186 halted: PC: 0x08000188 halted: PC: 0x0800018a halted: PC: 0x0800018c halted: PC: 0x0800018e halted: PC: 0x08000190 56  for (uint32_t i = 0; i &lt; data_size; i++) (gdb) n halted: PC: 0x08000192 halted: PC: 0x08000194 halted: PC: 0x08000196 halted: PC: 0x08000198 halted: PC: 0x0800019a halted: PC: 0x0800019c halted: PC: 0x0800019e  Breakpoint 1, reset_handler () at startup.c:62 62  uint32_t bss_size = (uint32_t)&amp;_ebss - (uint32_t)&amp;_sbss; (gdb) n halted: PC: 0x080001a0 halted: PC: 0x080001a2 halted: PC: 0x080001a4 halted: PC: 0x080001a6 63  uint8_t *bss = (uint8_t*) &amp;_sbss; (gdb) n halted: PC: 0x080001a8 halted: PC: 0x080001aa 65  for (uint32_t i = 0; i &lt; bss_size; i++) (gdb) n halted: PC: 0x080001ac halted: PC: 0x080001ae halted: PC: 0x080001c0 halted: PC: 0x080001c2 halted: PC: 0x080001c4 halted: PC: 0x080001c6 halted: PC: 0x080001b0 67    bss[i] = 0; (gdb) n halted: PC: 0x080001b2 halted: PC: 0x080001b4 halted: PC: 0x080001b6 halted: PC: 0x080001b8 halted: PC: 0x080001ba 65  for (uint32_t i = 0; i &lt; bss_size; i++) (gdb) n halted: PC: 0x080001bc halted: PC: 0x080001be halted: PC: 0x080001c0 halted: PC: 0x080001c2 halted: PC: 0x080001c4 halted: PC: 0x080001c6 halted: PC: 0x080001b0 67    bss[i] = 0; (gdb) n halted: PC: 0x080001b2 halted: PC: 0x080001b4 halted: PC: 0x080001b6 halted: PC: 0x080001b8 halted: PC: 0x080001ba 65  for (uint32_t i = 0; i &lt; bss_size; i++) (gdb) n halted: PC: 0x080001bc halted: PC: 0x080001be halted: PC: 0x080001c0 halted: PC: 0x080001c2 halted: PC: 0x080001c4 halted: PC: 0x080001c6 halted: PC: 0x080001b0 67    bss[i] = 0; (gdb) n halted: PC: 0x080001b2 halted: PC: 0x080001b4 halted: PC: 0x080001b6 halted: PC: 0x080001b8 halted: PC: 0x080001ba 65  for (uint32_t i = 0; i &lt; bss_size; i++) (gdb) n halted: PC: 0x080001bc halted: PC: 0x080001be halted: PC: 0x080001c0 halted: PC: 0x080001c2 halted: PC: 0x080001c4 halted: PC: 0x080001c6 halted: PC: 0x080001b0 67    bss[i] = 0; (gdb) n halted: PC: 0x080001b2 halted: PC: 0x080001b4 halted: PC: 0x080001b6 halted: PC: 0x080001b8 halted: PC: 0x080001ba 65  for (uint32_t i = 0; i &lt; bss_size; i++) (gdb) n halted: PC: 0x080001bc halted: PC: 0x080001be halted: PC: 0x080001c0 halted: PC: 0x080001c2 halted: PC: 0x080001c4 halted: PC: 0x080001c6 halted: PC: 0x080001c8 70  main(); (gdb) n halted: PC: 0x080000c0  Breakpoint 2, main () at main.c:17 17RCC_APB1ENR |= (1 &lt;&lt; 28); \/* Enable clock on Power Interface *\/ (gdb) n halted: PC: 0x080000c6 halted: PC: 0x080000c8 halted: PC: 0x080000ca halted: PC: 0x080000cc halted: PC: 0x080000ce halted: PC: 0x080000d0 halted: PC: 0x080000d2 18RCC_AHBENR |= (0x00080014);  \/* Enable clock on GPIOC *\/ (gdb) n halted: PC: 0x080000d4 halted: PC: 0x080000d6 halted: PC: 0x080000d8 halted: PC: 0x080000da halted: PC: 0x080000dc halted: PC: 0x080000de 20GPIOC_MODER |= (1 &lt;&lt; (9*2));\/* Set GPIO PC9 to Output Mode *\/ (gdb) n halted: PC: 0x080000e0 halted: PC: 0x080000e2 halted: PC: 0x080000e4 halted: PC: 0x080000e6 halted: PC: 0x080000e8 halted: PC: 0x080000ea halted: PC: 0x080000ec 22while(loop_enable) { (gdb) n halted: PC: 0x08000106 halted: PC: 0x08000108 halted: PC: 0x0800010a halted: PC: 0x0800010c halted: PC: 0x080000ee 24GPIOC_ODR = 0x100; (gdb) n halted: PC: 0x080000f0 halted: PC: 0x080000f2 halted: PC: 0x080000f4 halted: PC: 0x080000f6 25delay(); (gdb) n halted: PC: 0x08000130 ^[[A27GPIOC_ODR = 0x200; (gdb) n halted: PC: 0x080000fc halted: PC: 0x080000fe halted: PC: 0x08000100 halted: PC: 0x08000102 28delay(); (gdb) <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/font><\/h2>\n<p>  \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0437\u0430\u0447\u0435\u043c \u0432\u0441\u0435 \u044d\u0442\u0438 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u043a\u0438, \u0432\u0435\u0434\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 IDE \u043c\u043e\u0433\u0443\u0442 \u0432\u0441\u0451 \u044d\u0442\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c \u0438 \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043a\u043e\u0432\u044b\u0440\u044f\u043d\u0438\u0439 \u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442. \u041d\u043e \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u2014 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u044f\u0441\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c, \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0435 \u0445\u043e\u0437\u044f\u0439\u0441\u0442\u0432\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f. <\/p>\n<p>  \u041c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0432 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u044f\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u0432 main.c \u0444\u0430\u0439\u043b\u0435. <\/p>\n<p>  \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435 \u043d\u0435 \u0447\u0430\u0441\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c\u0438, \u043d\u043e \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f, \u044f \u0434\u0443\u043c\u0430\u044e, \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u0451 \u043f\u043e\u044d\u0442\u0430\u043f\u043d\u043e \u0438 \u0432 \u0434\u0435\u0442\u0430\u043b\u044f\u0445. <\/p>\n<hr\/>\n<p>  <\/p>\n<h4><font color=\"#454cee\">\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u044d\u0442\u043e:<\/font><\/p>\n<ul>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/785746\/\">\u0421\u043e\u0437\u0434\u0430\u0435\u043c I2C Master Controller \u043d\u0430 Verilog. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/789538\/\">\u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u0434\u043b\u044f E-Ink \u044d\u043a\u0440\u0430\u043d\u043e\u0432. \u04271. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0438\u0442\u0430\u043d\u0438\u044f<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/791138\/\">\u041e\u0436\u0438\u0432\u043b\u044f\u0435\u043c \u0430\u0432\u0442\u043e\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0440 \u0438\u0437 \u043f\u043e\u0434\u043c\u043e\u0441\u043a\u043e\u0432\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0431\u0443\u0441\u0430<\/a><\/li>\n<li>\u27a4<a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/787000\/\"> \u041f\u043e\u043b\u0443\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u043e\u0432\u0430\u044f \u043c\u043e\u043d\u043e\u043f\u043e\u043b\u0438\u044f: \u043a\u0430\u043a \u043e\u0434\u043d\u0430 \u0433\u043e\u043b\u043b\u0430\u043d\u0434\u0441\u043a\u0430\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c \u043c\u0438\u0440\u043e\u0432\u0443\u044e \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u044e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/792804\/\">\u041a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0430\u0441\u044c Call of Duty 2<\/a><\/li>\n<\/ul>\n<p>  <a href=\"https:\/\/timeweb.cloud\/?i=106909\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/b5\/pj\/of\/b5pjofdoxth14ro-rjsrn7sbmiy.png\" data-src=\"https:\/\/habrastorage.org\/webt\/b5\/pj\/of\/b5pjofdoxth14ro-rjsrn7sbmiy.png\"\/><\/a><\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/793152\/\"> https:\/\/habr.com\/ru\/articles\/793152\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e\u0444\u0442\u0430 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u0441\u0432\u043e\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c. \u041c\u043d\u043e\u0433\u043e\u0435 \u0441\u043a\u0440\u044b\u0442\u043e \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u043a\u0440\u044b\u0442\u043e, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u044d\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0441\u0440\u043e\u0434\u043d\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043c\u0430\u0433\u0438\u0438. \u042f, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043a\u0430\u043a \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432 \u043f\u044b\u0442\u043b\u0438\u0432\u044b\u043c \u0443\u043c\u043e\u043c \u0438 \u043f\u0440\u0438\u0440\u043e\u0434\u043d\u043e\u0439 \u043b\u044e\u0431\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f IDE \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0439.<\/p>\n<p>  \u0422\u0430\u043a \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438: \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c \u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 STM32F0-Discovery. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044f \u043d\u0435 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u043b, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u043e\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0432 \u0437\u043d\u0430\u043d\u0438\u044f\u0445. \u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0441 \u044d\u0442\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c, \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u2014 \u0430 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u043c \u043e\u0431 \u044d\u0442\u043e\u043c? <\/p>\n<p>  \u0412\u0441\u0435\u043c \u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u2014 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442! ?<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/hv\/hl\/-v\/hvhl-ve48snu4r-jbeyz_qsfdfe.png\" data-src=\"https:\/\/habrastorage.org\/webt\/hv\/hl\/-v\/hvhl-ve48snu4r-jbeyz_qsfdfe.png\"\/><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-367981","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/367981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=367981"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/367981\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=367981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=367981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=367981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}