{"id":194816,"date":"2013-09-23T14:19:03","date_gmt":"2013-09-23T10:19:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=194816"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=194816","title":{"rendered":"<span class=\"post_title\">ARM-\u044b \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445: \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0430-2, \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0438 hello world!<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/2cb\/611\/497\/2cb61149753e25fb8ffd5a46da9e7713.jpg\"\/><\/p>\n<p>  \u041d\u0430\u0448\u0435\u043b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u00ab\u0434\u043e\u0431\u0438\u0442\u044c\u00bb \u0446\u0438\u043a\u043b \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439, \u0433\u0434\u0435 \u044f \u043f\u043e\u0434\u0432\u0435\u0434\u0443 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438\u0442\u043e\u0433. \u041f\u043e \u0441\u0443\u0442\u0438, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0434\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0434\u043e \u0442\u043e\u0433\u043e, \u0441 \u0447\u0435\u0433\u043e, \u043e\u0431\u044b\u0447\u043d\u043e, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c:  <\/p>\n<ul>\n<li>\u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u00ab\u0441\u043b\u043e\u0436\u043d\u044b\u0439\u00bb \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438 GNU ld;<\/li>\n<li>\u0443\u0447\u0438\u043c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f;<\/li>\n<li>\u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0434\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0434\u043e hello world!<\/li>\n<\/ul>\n<p>  \u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0446\u0438\u043a\u043b\u0430:  <\/p>\n<ul>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/189484\/\">ARM-\u044b \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/190032\/\">ARM-\u044b \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445: \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0430\u0441?<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/191058\/\">ARM-\u044b \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445: \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a<\/a><\/li>\n<\/ul>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0434\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438: <a href=\"https:\/\/github.com\/farcaller\/arm-demos\">https:\/\/github.com\/farcaller\/arm-demos<\/a><\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437 \u043c\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0441\u0435\u043a\u0446\u0438\u044f\u043c\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0432 \u0441\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438 \u043a\u0430\u043a\u043e\u0435 \u0438\u0445 \u0442\u0438\u043f\u0438\u0447\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0441 <code>.data<\/code> \u0438 <code>.bss<\/code>. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0432 <code>.data<\/code> \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 (\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435) \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u042d\u0442\u0443 \u0441\u0435\u043a\u0446\u0438\u044e \u043d\u0430\u0434\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e. \u0412 <code>.bss<\/code> \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441 \u043d\u0443\u043b\u0435\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c, \u0435\u0435 \u043d\u0430\u0434\u043e \u043e\u0431\u043d\u0443\u043b\u0438\u0442\u044c.<\/p>\n<p>  \u0412 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u044d\u0442\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0438\u0437 <code>crt0.a<\/code> (\u0432\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u044f \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 C RunTime 0, \u0433\u0434\u0435 0 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0441\u0430\u043c\u043e\u0435-\u0441\u0430\u043c\u043e\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u0436\u0438\u0437\u043d\u0435\u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f). \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0430\u043d\u0430\u043b\u043e\u0433 crt0 \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0438\u0433\u0440\u0443\u0448\u0435\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c.<\/p>\n<p>  <i>Disclaimer. \u0412 GNU ld \u043c\u043d\u043e\u0433\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u0443\u0442\u044f\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0438 \u0444\u043b\u0430\u0433\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438. \u0412\u0441\u0435 \u043d\u0438\u0436\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u2014 \u043f\u043b\u043e\u0434 \u043c\u043e\u0435\u0439 \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434 \u0432\u043b\u0438\u044f\u043d\u0438\u0435\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438 \u0438\u0437 LPCXpresso. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435 \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043c\u043d\u0435!<\/i><\/p>\n<h4>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438<\/h4>\n<p>  \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0444\u0430\u0439\u043b\u043e\u043c <code>04-helloworld\/platform\/protoboard\/layout.ld<\/code>. \u0412 \u0446\u0435\u043b\u043e\u043c, \u0442\u0443\u0442 \u043d\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438: \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438, \u0441\u0435\u043a\u0446\u0438\u0438. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u0435\u043a\u0446\u0438\u044e <code>.data<\/code> \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430:  <\/p>\n<pre><code>.data : ALIGN(4) {     _data = .;      *(SORT_BY_ALIGNMENT(.data*))     . = ALIGN(4);      _edata = .; } &gt; ram AT&gt;rom = 0xff <\/code><\/pre>\n<p>  \u0412 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0444\u0430\u0439\u043b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0435\u043a\u0446\u0438\u044f <code>.data<\/code> \u0441 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0432 4 \u0431\u0430\u0439\u0442\u0430 (\u0442.\u0435., \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0435\u0439 \u043a\u0443\u0440\u0441\u043e\u0440 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 0x00000101, \u0442\u043e <code>.data<\/code> \u043d\u0430\u0447\u043d\u0435\u0442\u0441\u044f \u0441\u043e 0x00000104). \u0421\u0435\u043a\u0446\u0438\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (<code>&gt; ram<\/code>), \u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u0438 (<code>AT&gt;rom<\/code>).<\/p>\n<p>  \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <code>=0xff<\/code> \u0437\u0430\u0434\u0430\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u00ab\u0437\u0430\u043b\u0438\u0432\u043a\u0438\u00bb. \u0415\u0441\u043b\u0438 \u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u043d\u0435\u0430\u0434\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0431\u0430\u0439\u0442\u044b, \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442\u0430-\u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f. 0xff \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u043f\u043e \u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, \u0447\u0442\u043e \u0441\u0442\u0435\u0440\u0442\u0430\u044f \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u044c \u2014 \u044d\u0442\u043e \u0432\u0441\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b, \u0442.\u0435., \u0437\u0430\u043f\u0438\u0441\u044c 0xff (\u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 0x00, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440) \u2014 \u044d\u0442\u043e \u043f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u0432 <code>_data<\/code> \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0435\u043a\u0446\u0438\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0442\u043e <code>_data<\/code> \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0430\u043c\u043e\u0435 \u0435\u0435 \u043d\u0430\u0447\u0430\u043b\u043e, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435: 0x10000000.<\/p>\n<p>  \u041f\u043e\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e \u0432 \u0441\u0435\u043a\u0446\u0438\u044e \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u043d\u0430 <code>.data<\/code>, \u0438\u0437 \u0432\u0441\u0435\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u044f \u0438\u0445 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443. \u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0438\u0433\u0440\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u0443\u044e \u0440\u043e\u043b\u044c, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0435 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435:  <\/p>\n<pre><code class=\"cpp\">uint16_t static_int = 0xab; uint8_t  static_int2 = 0xab; uint16_t static_int3 = 0xab; uint8_t  static_int4 = 0xab; <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0441\u0435\u043a\u0446\u0438\u0438 <code>.data<\/code>. \u0427\u0442\u043e \u0436\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b?  <\/p>\n<pre><code>.data           0x0000000010000000        0xc load address 0x00000000000007b0                 0x0000000010000000                _data = .  *(.data*)  .data.static_int2                 0x0000000010000000        0x1 build\/d0f0154f60ed1a9c2083183e7c731846451d2bdb_helloworld.o                 0x0000000010000000                static_int2  *fill*         0x0000000010000001        0x3 ff  .data.static_int3                 0x0000000010000004        0x4 build\/d0f0154f60ed1a9c2083183e7c731846451d2bdb_helloworld.o                 0x0000000010000004                static_int3  .data.static_int4                 0x0000000010000008        0x1 build\/d0f0154f60ed1a9c2083183e7c731846451d2bdb_helloworld.o                 0x0000000010000008                static_int4  *fill*         0x0000000010000009        0x1 ff  .data.static_int                 0x000000001000000a        0x2 build\/d0f0154f60ed1a9c2083183e7c731846451d2bdb_helloworld.o                 0x000000001000000a                static_int                 0x000000001000000c                . = ALIGN (0x4)                 0x000000001000000c                _edata = . <\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 <code>*fill*<\/code>-\u0431\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u043b\u043e\u0432. \u0418\u0437-\u0437\u0430 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u043c\u044b \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0438 4 \u0431\u0430\u0439\u0442\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e, \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f SORT_BY_ALIGNMENT:  <\/p>\n<pre><code>.data           0x0000000010000000        0x8 load address 0x00000000000007b0                 0x0000000010000000                _data = .  *(SORT(.data*))  .data.static_int3                 0x0000000010000000        0x4 build\/d0f0154f60ed1a9c2083183e7c731846451d2bdb_helloworld.o                 0x0000000010000000                static_int3  .data.static_int                 0x0000000010000004        0x2 build\/d0f0154f60ed1a9c2083183e7c731846451d2bdb_helloworld.o                 0x0000000010000004                static_int  .data.static_int2                 0x0000000010000006        0x1 build\/d0f0154f60ed1a9c2083183e7c731846451d2bdb_helloworld.o                 0x0000000010000006                static_int2  .data.static_int4                 0x0000000010000007        0x1 build\/d0f0154f60ed1a9c2083183e7c731846451d2bdb_helloworld.o                 0x0000000010000007                static_int4                 0x0000000010000008                . = ALIGN (0x4)                 0x0000000010000008                _edata = . <\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b, \u0438 \u043c\u044b \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043b\u0438 \u043a\u0443\u0447\u0443 (33%) \u043f\u0430\u043c\u044f\u0442\u0438!<\/p>\n<p>  \u0412\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043a\u0443\u0440\u0441\u043e\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 <code>.data<\/code>. \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <code>. = ALIGN(4)<\/code> \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440 (\u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0435\u043a\u0446\u0438\u044f\u0445 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f) \u043f\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u043b\u043e\u0432\u0430. \u041e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 <code>_edata<\/code>.<\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0437\u043d\u0430\u0442\u044c, \u0433\u0434\u0435 \u0441\u0435\u043a\u0446\u0438\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u0438, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u0441\u0438\u043c\u0432\u043e\u043b: <code>_data_load = LOADADDR(.data)<\/code>. <b>LOADADDR<\/b> \u2013 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0435\u043a\u0446\u0438\u0438. \u041f\u043e\u043c\u0438\u043c\u043e \u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439: <b>ADDR<\/b> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439\u00bb \u0430\u0434\u0440\u0435\u0441, <b>SIZEOF<\/b> \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445.<\/p>\n<p>  \u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043a\u043e\u0434 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u043a\u0446\u0438\u0438 <code>.data<\/code>, <code>04-hello-world\/platform\/common\/platform.c<\/code>:  <\/p>\n<pre><code class=\"cpp\">uint32_t *load_addr = &_data_load;  for (uint32_t *mem_addr = &_data; mem_addr &lt; &_edata;) {     *mem_addr++ = *load_addr++; } <\/code><\/pre>\n<p>  \u0412 \u0446\u0438\u043a\u043b\u0435 \u043c\u044b \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 <code>load_addr<\/code> \u0432 <code>mem_addr<\/code>.<\/p>\n<p>  \u0422\u0438\u043f\u0438\u0447\u043d\u043e \u044d\u0442\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u043d\u043e, \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u2014 \u043a\u0430\u043a \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u0435\u0440\u0432\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u042d\u0442\u043e\u043c\u0443 \u0435\u0441\u0442\u044c \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435: \u0434\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0438\u0437 \u0421 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u00ab\u043c\u0443\u0441\u043e\u0440\u00bb. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 <code>platform_init<\/code>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 <code>.data<\/code>\/<code>.bss<\/code>, \u0430 \u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0442\u043e, \u0432 \u0438\u0442\u043e\u0433\u0435, \u0434\u0430\u0441\u0442 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041c\u0438\u043d\u0443\u0441\u043e\u043c \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 <code>platform_init_post<\/code>, \u0433\u0434\u0435 \u0442\u0430\u043a\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0448\u0438\u043d\u044b.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0435\u043a\u0446\u0438\u044f \u2014 <code>\/DISCARD\/<\/code> \u2014 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439, \u044d\u0442\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \/dev\/null \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430. \u0412\u0441\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d\u044b (\u043a\u0430\u043a \u0432\u044b \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0435\u0441\u043b\u0438 \u0441\u0435\u043a\u0446\u0438\u044f \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u044f\u0432\u043d\u043e, \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438). \u042d\u0442\u0430 \u0441\u0435\u043a\u0446\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 ARMv6-M0 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0431\u0443\u0434\u0443\u0442 \u043f\u0443\u0441\u0442\u044b\u043c\u0438.<\/p>\n<h4>\u041e \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u0445<\/h4>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0441\u0432\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u043e\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u0443\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e <code>.text<\/code>, \u043a\u0443\u0434\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0434\u0432\u0435 \u043d\u043e\u0432\u044b\u0435: <code>.isr_vector<\/code> \u0438 <code>.isr_vector_nvic<\/code>. \u041e\u0431\u0435 \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044b \u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <b>KEEP<\/b>, \u0447\u0442\u043e \u043d\u0435 \u0434\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0443 \u00ab\u0432\u044b\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u00bb \u0438\u0445 \u0437\u0430 \u043d\u0435\u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e. <code>.isr_vector<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0431\u0449\u0443\u044e \u0434\u043b\u044f Cortex-M \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 <code>platform\/common\/isr.c<\/code>:<\/p>\n<pre><code class=\"cpp\">__attribute__ ((weak)) void isr_nmi(); __attribute__ ((weak)) void isr_hardfault(); __attribute__ ((weak)) void isr_svcall(); __attribute__ ((weak)) void isr_pendsv(); __attribute__ ((weak)) void isr_systick();  __attribute__ ((section(&quot;.isr_vector&quot;))) void (* const isr_vector_table[])(void) = {     &_stack_base,     main,             \/\/ Reset     isr_nmi,          \/\/ NMI     isr_hardfault,    \/\/ Hard Fault     0,                \/\/ CM3 Memory Management Fault     0,                \/\/ CM3 Bus Fault     0,                \/\/ CM3 Usage Fault     &_boot_checksum,  \/\/ NXP Checksum code     0,                \/\/ Reserved     0,                \/\/ Reserved     0,                \/\/ Reserved     isr_svcall,       \/\/ SVCall     0,                \/\/ Reserved for debug     0,                \/\/ Reserved     isr_pendsv,       \/\/ PendSV     isr_systick,      \/\/ SysTick }; <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043c\u044b \u043e\u0442\u043e\u0448\u043b\u0438 \u043e\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0421. \u0422\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u0438 \u0432\u0432\u0435\u0434\u0435\u043d\u044b \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 (\u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e <code>hang<\/code>). \u0412\u0441\u0435 \u044d\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b (\u0445\u043e\u0442\u044f \u0432 <code>isr_hardfault<\/code> \u044f \u043f\u0430\u0440\u0443 \u0440\u0430\u0437 \u043f\u043e\u0434\u0441\u043e\u0432\u044b\u0432\u0430\u043b \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434, \u043f\u043e\u043a\u0430 \u043f\u0438\u0441\u0430\u043b \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043a \u0441\u0442\u0430\u0442\u044c\u0435), \u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c <code>weak<\/code>, \u0442\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u043c \u0444\u0430\u0439\u043b\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <code>timer.c<\/code> \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <code>isr_systick<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438 \u043f\u043e\u043f\u0430\u0434\u0435\u0442 \u0432 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437.<\/p>\n<p>  \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u043e \u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 <code>isr_vector_table_nvic<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u043e \u0443\u0436\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043d\u043e \u0441\u0443\u0442\u044c \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u0430 \u0436\u0435.<\/p>\n<h4>\u0418 \u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u0445<\/h4>\n<p>  \u0421\u043a\u0430\u0436\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u0445. \u041e\u0431\u0449\u0430\u044f \u0441\u0443\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u2014 \u0432\u044b\u0437\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043a\u0430\u043a \u0440\u0435\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f (\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f). \u041f\u0440\u0438\u044f\u0442\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c Cortex-M: \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441\u0430\u043c \u0443\u043f\u0430\u043a\u0443\u0435\u0442\/\u0440\u0430\u0441\u043f\u0430\u043a\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u0421. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<p>  NVIC \u2014 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0437\u0430 \u044f\u0434\u0440\u043e\u043c ARM. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b, \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e \u0438\u0445 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e.<\/p>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 systick:  <\/p>\n<pre><code class=\"cpp\">static volatile uint32_t systick_10ms_ticks = 0;  void platform_delay(uint32_t msec) {     uint32_t tenms = msec \/ 10;     uint32_t dest_time = systick_10ms_ticks + tenms;     while(systick_10ms_ticks &lt; dest_time) {         __WFI();     } }  \/\/ override isr_systick from isr.c void isr_systick(void) {     ++systick_10ms_ticks; } <\/code><\/pre>\n<p>  \u0426\u0438\u043a\u043b \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432 \u0440\u0435\u0436\u0438\u043c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f (\u0441\u043f\u044f\u0449\u0438\u0439 \u0440\u0435\u0436\u0438\u043c), \u043f\u043e\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0435 10 \u043c\u0441 SysTick \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 <code>isr_systick<\/code> \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0430 1. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e <code>systick_10ms_ticks<\/code> \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u043a\u0430\u043a <b>volatile<\/b>, \u044d\u0442\u043e \u0434\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 (\u0438 \u0431\u0443\u0434\u0435\u0442) \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u043d\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0438 \u0435\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e \u0438\u0437 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (\u0433\u0434\u0435 \u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f).<\/p>\n<h4>libgcc<\/h4>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u043c\u044b \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0434\u0435\u043b\u0435\u043d\u0438\u044f. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0442\u043e \u0442\u0443\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e, \u043d\u043e \u0432 Cortex-M0 \u043d\u0435\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0434\u0435\u043b\u0435\u043d\u0438\u044f :-). \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0437\u043d\u0430\u0435\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c, \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>__aeabi_uidiv<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043b\u0438\u0442 \u0447\u0438\u0441\u043b\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f (\u0438 \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0445) \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430: libgcc.a. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0430\u0448 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a \u043d\u0438\u0447\u0435\u0433\u043e \u043e \u043d\u0435\u0439 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0438 \u043c\u044b \u043d\u0430\u0442\u044b\u043a\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443:  <\/p>\n<pre><code>build\/5a3e7023bbfde5552a4ea7cc57c4520e0e458a53_timer.o: In function `platform_delay': timer.c:(.text.platform_delay+0x4): undefined reference to `__aeabi_uidiv' <\/code><\/pre>\n<p>  \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u0432\u044b\u0437\u043e\u0432 gcc, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043a\u0443\u0434\u0430 \u043d\u0430\u0434\u043e \u043b\u0438\u043d\u043a\u043e\u0432\u0430\u0442\u044c. \u041f\u0440\u0430\u0432\u0434\u0430, gcc \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u0443\u0441\u0435\u0440\u0434\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u0435\u043c\u0443 \u0447\u0435\u0440\u0435\u0437 <code>-nostartfiles<\/code>, \u0447\u0442\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0443 \u043d\u0430\u0441 \u0441\u0432\u043e\u0439, \u0438 \u0447\u0435\u0440\u0435\u0437 <code>-ffreestanding<\/code>, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443 \u043d\u0430\u0441 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438 \u043d\u0438 \u043e\u0442 \u043a\u0430\u043a\u0438\u0445 \u041e\u0421 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442.<\/p>\n<h4>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, hello habr!<\/h4>\n<p>  \u042d\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u043c\u0435\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 UART, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043c\u0438\u0433\u0430\u044e\u0449\u0435\u043c\u0443 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0443. \u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440:<br \/>  <code>platform\/protoboard\/uart.c<\/code>  <\/p>\n<pre><code class=\"cpp\">extern uint32_t platform_clock;  void platform_uart_setup(uint32_t baud_rate) {     NVIC_DisableIRQ(UART_IRQn); <\/code><\/pre>\n<p> \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043c\u044b \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 NVIC \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e.  <\/p>\n<pre><code class=\"cpp\">    LPC_SYSCON-&gt;SYSAHBCLKCTRL |= (1&lt;&lt;16);      LPC_IOCON-&gt;PIO1_6 &= ~0x07;     LPC_IOCON-&gt;PIO1_6 |= 0x01;      LPC_IOCON-&gt;PIO1_7 &= ~0x07;     LPC_IOCON-&gt;PIO1_7 |= 0x01; <\/code><\/pre>\n<p> \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0431\u043b\u043e\u043a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043f\u0438\u043d\u043e\u0432, \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0438\u0445 \u0432 \u0440\u0435\u0436\u0438\u043c TXD\/RXD UART. \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043f\u0440\u043e\u043b\u0438\u043b \u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0435\u0439 \u043a\u0440\u043e\u0432\u0438, \u043a\u043e\u0433\u0434\u0430 \u044f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 UART \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0411\u0443\u0434\u044c\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b, \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0432\u0435\u0449\u0438 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438!  <\/p>\n<pre><code class=\"cpp\">    LPC_SYSCON-&gt;SYSAHBCLKCTRL |= (1&lt;&lt;12);     LPC_SYSCON-&gt;UARTCLKDIV = 0x1; <\/code><\/pre>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438 \u0441\u0430\u043c UART, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u044b.  <\/p>\n<pre><code class=\"cpp\">    LPC_UART-&gt;LCR = 0x83;      uint32_t Fdiv = platform_clock     \/\/ \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430             \/ LPC_SYSCON-&gt;SYSAHBCLKDIV \/\/ \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0434\u043b\u044f \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438             \/ LPC_SYSCON-&gt;UARTCLKDIV   \/\/ \u043d\u0430 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0441\u0430\u043c\u043e\u0433\u043e UART             \/ 16                       \/\/ \u0438 \u043d\u0430 16, \u043f\u043e \u0441\u043f\u0435\u043a\u0435             \/ baud_rate;               \/\/ \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043d\u0430 \u0431\u043e\u0434\u0440\u0435\u0439\u0442      LPC_UART-&gt;DLM = Fdiv \/ 256;     LPC_UART-&gt;DLL = Fdiv % 256;      LPC_UART-&gt;FDR = 0x00 | (1 &lt;&lt; 4) | 0;      LPC_UART-&gt;LCR = 0x03; <\/code><\/pre>\n<p> \u041f\u043e\u043c\u0438\u043c\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 8N1, \u043c\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u044e\u0442 \u0431\u0438\u0442\u0440\u0435\u0439\u0442. \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0438\u0445 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b. \u0414\u043b\u044f \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u2014 \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 13.5.15 \u043c\u0430\u043d\u0443\u0430\u043b\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \u043d\u0435\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0434\u043b\u044f \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0431\u043e\u0434\u0440\u0435\u0439\u0442\u0430. \u0412 \u043c\u043e\u0438\u0445 \u0442\u0435\u0441\u0442\u0430\u0445 9580 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \ud83d\ude42  <\/p>\n<pre><code class=\"cpp\">    LPC_UART-&gt;FCR = 0x07;      volatile uint32_t unused = LPC_UART-&gt;LSR;      while(( LPC_UART-&gt;LSR & (0x20|0x40)) != (0x20|0x40) )         ;     while( LPC_UART-&gt;LSR & 0x01 ) {         unused = LPC_UART-&gt;RBR;     } <\/code><\/pre>\n<p> \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c FIFO, \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c, \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0447\u0442\u043e \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u043d\u0435 \u0437\u0430\u0432\u0430\u043b\u044f\u043b\u0438\u0441\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.  <\/p>\n<pre><code class=\"cpp\">    \/\/ NVIC_EnableIRQ(UART_IRQn);     \/\/ LPC_UART-&gt;IER = 0b101; <\/code><\/pre>\n<p> \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043f\u0440\u0438\u0435\u043c (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435\u0442). \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u043c \u043d\u0438 \u043a \u0447\u0435\u043c\u0443.<\/p>\n<p>  \u0414\u043b\u044f LPC1768 \u043a\u043e\u0434 \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436, \u0442\u0430\u043a \u0447\u0442\u043e \u0435\u0433\u043e \u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443. \u041e\u0442\u043c\u0435\u0447\u0443 \u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0442\u0430\u043c \u0432\u0441\u044f \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430, \u0447\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e.<\/p>\n<p>  \u0412\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442: \u0443 mbed \u0435\u0441\u0442\u044c \u0442\u0440\u0438 UART, \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u043d\u0430\u0440\u0443\u0436\u0443, \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u043e USB \u0437\u0430\u043d\u044f\u043b\u043e \u0431\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u0434\u0430, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0446\u0435\u043f\u043b\u044f\u0442\u044c FTDI-\u0448\u043d\u0443\u0440\u043e\u043a \u043d\u0430 UART, \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u2014 \u044d\u0442\u043e \u043f\u0438\u043d\u044b P13\/P14.<\/p>\n<h4>\u041f\u043e\u0434\u0432\u043e\u0434\u044f \u0438\u0442\u043e\u0433\u0438<\/h4>\n<p>  \u041c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0441 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u043e\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0441\u0442\u044f\u043a, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0431\u0430\u0437\u0443 \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b. \u0418\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0437\u044f\u0442\u044c CMSIS \u0438 \u0434\u0435\u043c\u043e \u043e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f (\u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0434 \u0432\u0441\u0435 \u0436\u0435 \u0447\u0438\u0442\u0430\u0439\u0442\u0435, \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0432 LPCXpresso \u0438\u043c\u0435\u044e\u0442 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u0440\u0430\u0437\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438).<\/p>\n<p>  \u0423 \u043c\u0435\u043d\u044f \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0438\u0434\u0435\u0439 \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u043d\u043e \u0441\u0442\u0430\u043b\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u0435\u0449\u0435 \u043d\u0435 \u0437\u0430\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043b\u0435\u043d\u044b! \u041f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c, \u0432\u0441\u0435 \u0436\u0435, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0432 \u00ab\u043c\u0438\u043a\u0440\u043e\u043c\u0438\u0440\u00bb \u044d\u043c\u0431\u0435\u0434\u0434\u0435\u0434\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u00ab\u043c\u0430\u043a\u0440\u043e\u043c\u0438\u0440\u0430\u00bb \u043e\u0444\u0438\u0441\u043d\u044b\u0445 \u0434\u043d\u0435\u0439.<\/p>\n<p>  P.S. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e <a href=\"http:\/\/habrahabr.ru\/users\/pfactum\/\" class=\"user_link\">pfactum<\/a> \u0437\u0430 \u0432\u044b\u0447\u0438\u0442\u043a\u0443 \u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<h6><a rel=\"license\" href=\"http:\/\/creativecommons.org\/licenses\/by-nc-nd\/3.0\/deed.ru\"><img decoding=\"async\" alt=\"\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f Creative Commons\" src=\"http:\/\/habr.habrastorage.org\/post_images\/a58\/dd6\/778\/a58dd6778494eefb36a9b5ccee5d6187.png\"\/><\/a> \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e <a rel=\"license\" href=\"http:\/\/creativecommons.org\/licenses\/by-nc-nd\/3.0\/deed.ru\">\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 Creative Commons \u00abAttribution-NonCommercial-NoDerivs\u00bb 3.0 Unported<\/a>. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e <a rel=\"license\" href=\"http:\/\/unlicense.org\">\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 Unlicense<\/a> (\u0435\u0441\u043b\u0438 \u0438\u043d\u043e\u0435 \u044f\u0432\u043d\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0444\u0430\u0439\u043b\u043e\u0432). \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445 \u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0435 \u0430\u0444\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u043e\u0434\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0430\u0432\u0442\u043e\u0440\u0430.<\/h6>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/194816\/\"> http:\/\/habrahabr.ru\/post\/194816\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/2cb\/611\/497\/2cb61149753e25fb8ffd5a46da9e7713.jpg\"\/><\/p>\n<p>  \u041d\u0430\u0448\u0435\u043b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u00ab\u0434\u043e\u0431\u0438\u0442\u044c\u00bb \u0446\u0438\u043a\u043b \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439, \u0433\u0434\u0435 \u044f \u043f\u043e\u0434\u0432\u0435\u0434\u0443 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438\u0442\u043e\u0433. \u041f\u043e \u0441\u0443\u0442\u0438, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0434\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0434\u043e \u0442\u043e\u0433\u043e, \u0441 \u0447\u0435\u0433\u043e, \u043e\u0431\u044b\u0447\u043d\u043e, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c:  <\/p>\n<ul>\n<li>\u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u00ab\u0441\u043b\u043e\u0436\u043d\u044b\u0439\u00bb \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438 GNU ld;<\/li>\n<li>\u0443\u0447\u0438\u043c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f;<\/li>\n<li>\u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0434\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0434\u043e hello world!<\/li>\n<\/ul>\n<p>  \u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0446\u0438\u043a\u043b\u0430:  <\/p>\n<ul>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/189484\/\">ARM-\u044b \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/190032\/\">ARM-\u044b \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445: \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0430\u0441?<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/191058\/\">ARM-\u044b \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445: \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a<\/a><\/li>\n<\/ul>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0434\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438: <a href=\"https:\/\/github.com\/farcaller\/arm-demos\">https:\/\/github.com\/farcaller\/arm-demos<\/a><\/p>\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-194816","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/194816","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=194816"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/194816\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=194816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=194816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=194816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}