{"id":297788,"date":"2020-01-28T09:00:16","date_gmt":"2020-01-28T09:00:16","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=297788"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=297788","title":{"rendered":"Embox \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 \u042d\u043b\u044c\u0431\u0440\u0443\u0441. \u0418\u043b\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u0440\u0438 \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0435"},"content":{"rendered":"\n<div class=\"post__text post__text-html\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/485694\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ic\/4z\/5o\/ic4z5olelesc04boln85goculk4.png\" align=\"right\" width=\"320\"><br \/>  \u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u043c <a href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/447704\/\">\u0441\u0435\u0440\u0438\u0438<\/a> <a href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/447744\/\">\u0441\u0442\u0430\u0442\u044c\u0435\u0439<\/a> <a href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/421441\/\">\u201c\u0432\u043e\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u042d\u043b\u044c\u0431\u0440\u0443\u0441\u201d<\/a> \u043e\u0431 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u0438 <a href=\"http:\/\/embox.github.io\">Embox<\/a> \u0441 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%AD%D0%BB%D1%8C%D0%B1%D1%80%D1%83%D1%81_2000\">\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 \u042d\u043b\u044c\u0431\u0440\u0443\u0441 (E2K) <\/a>. \u041f\u043e\u0447\u0435\u043c\u0443 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0447\u0435\u0440\u0435\u0437 telnet \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b Embox \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435. \u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0432\u0440\u044f\u0434 \u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u0435\u043c, \u0445\u043e\u0442\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043d\u043e\u0433\u043e\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0435 \u044f\u0441\u043d\u043e. \u0418 \u0441\u0430\u043c\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438\u043c\u0435\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u044b. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e\u0431 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0437\u0430\u0442\u0440\u043e\u043d\u0435\u043c PCI, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 \u0438 \u043a\u043e\u0441\u043d\u0435\u043c\u0441\u044f \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0435\u0441\u0442\u044c \u0443 \u043d\u0430\u0441. <a name=\"habracut\"><\/a><\/p>\n<p>  \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u043e\u043c\u0443 \u043b\u0435\u043d\u044c \u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e, \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u0432\u0438\u0434\u0435\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438.  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/FqOSFJ36B48?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0440\u0430\u0441\u043a\u0440\u043e\u0435\u043c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043d\u044f\u0442\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<h3>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c<\/h3>\n<p>  <\/p>\n<h4>\u041d\u0430\u0448\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u043e \u0441\u0442\u0435\u043a\u0430\u043c\u0438<\/h4>\n<p>  \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044d\u0442\u043e \u0442\u043e, \u043d\u0430 \u0447\u0435\u043c \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/447744\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u0441\u0435\u0440\u0438\u0438. \u0421\u0440\u0430\u0437\u0443 \u0441\u0442\u043e\u0438\u0442 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0436\u0435 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c, \u0432\u0435\u0434\u044c Embox \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0431\u0435\u0437 \u043d\u0435\u0435. \u0412\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e: \u0434\u0435\u043b\u043e \u0432 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u0412\u0438\u0434\u044f\u0445\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430, \u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u0436\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u0432\u0438\u0434\u0435\u043e \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u043b\u044f \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043a\u044d\u0448\u0435\u043c, \u043d\u043e \u043d\u0430\u0448\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u0438\u0445 \u044f\u0434\u0435\u0440\u043d\u044b\u0445 \u0448\u0442\u0443\u043a \u0442\u0438\u043f\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u044d\u0448\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0431\u044b\u043b\u043e \u043e\u0441\u0432\u043e\u0438\u0442\u044c \u043c\u044d\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0430\u043a \u043d\u0435\u043a\u044d\u0448\u0438\u0440\u0443\u0435\u043c\u043e\u0439. \u0422\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0432 Linux, \u0437\u0430\u043c\u044d\u043f\u0438\u0440\u043e\u0432\u0430\u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u043e fb (<a href=\"http:\/\/dmilvdv.narod.ru\/Translate\/ELSDD\/elsdd_sample_frame_buffer_example.html\">\u043f\u0440\u0438\u043c\u0435\u0440<\/a>). <\/p>\n<p>  \u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0445\u043e\u0442\u044f \u043c\u044b \u0434\u043e\u043b\u0433\u043e \u043d\u0435 \u043f\u0438\u0441\u0430\u043b\u0438 \u043e\u0431 \u042d\u043b\u044c\u0431\u0440\u0443\u0441\u0435 \u0438 \u043c\u043e\u0433\u043b\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e MMU \u0432 \u044d\u0442\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0441\u0443\u043f\u0435\u0440\u0441\u043b\u043e\u0436\u043d\u043e\u0435, \u043d\u043e \u0434\u0435\u043b\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u043c. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043c\u044b \u0435\u0449\u0435 \u043b\u0435\u0442\u043e\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0443\u043a\u0438 \u043d\u0435 \u0434\u043e\u0445\u043e\u0434\u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c. \u0410 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f (\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432) \u0431\u044b\u043b\u043e \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043e \u0438\u0437-\u0437\u0430 \u043d\u0430\u0448\u0435\u0439 \u0433\u043b\u0443\u043f\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438. \u042d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0434\u0430\u0436\u0435 \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0430 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 (\u201c\u0418\u043b\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u0440\u0438 \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0435\u201d). \u0420\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u0441\u0442\u0435\u043a\u0430\u0445 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0438 \u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u044d\u0442\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0412\u043e\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 <a href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/447704\/\">\u00ab\u042d\u043b\u044c\u0431\u0440\u0443\u0441 \u2014 \u0420\u0430\u0437\u0432\u0435\u0434\u043a\u0430 \u0431\u043e\u0435\u043c. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0427\u0430\u0441\u0442\u044c 1. \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u0441\u0442\u0435\u043a\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u0438\u00bb <\/a>. \u041c\u044b \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e \u043c\u0443\u0447\u0430\u043b\u0438\u0441\u044c, \u043f\u043e \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u0438 \u0443\u043f\u0443\u0441\u0442\u0438\u0432, \u0447\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0435\u043a (\u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b) \u043c\u044b \u0431\u0435\u0440\u0435\u043c \u043e\u0442\u043a\u0443\u0434\u0430-\u0442\u043e \u0438\u0437\u0432\u043d\u0435, \u0438 \u0437\u0430\u043c\u044d\u043f\u0438\u0440\u043e\u0432\u0430\u0432 \u0432\u0441\u0435. \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b Embox, \u043c\u044b \u043d\u0435 \u043c\u044d\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>  \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043d\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e e2k_entry, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/447744\/\">\u0441\u0442\u0430\u0442\u044c\u0435 \u0441\u0435\u0440\u0438\u0438<\/a>.<br \/>  \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c.  <\/p>\n<pre><code class=\"cpp\">__attribute__ ((__section__(&quot;.e2k_entry&quot;))) void e2k_entry(struct pt_regs *regs) {     \/* Since we enable exceptions only when all CPUs except the main one      * reached the idle state (cpu_idle), we can rely that order and can      * guarantee exceptions happen strictly after all CPUS entries. *\/     if (entries_count &gt;= CPU_COUNT) {         \/* Entering here because of exception or interrupt *\/         e2k_trap_handler(regs);          RESTORE_COMMON_REGS(regs);          E2K_DONE;     }      \/* It wasn't exception, so we decide this usual program execution,      * that is, Embox started on CPU0 or CPU1 *\/      e2k_wait_all();      entries_count = __e2k_atomic32_add(1, &amp;entries_count);      if (entries_count &gt; 1) {         \/* XXX currently we support only single core *\/         \/* Run cpu_idle on 2nd CPU *\/          \/* it's just needed if log_debug enabled in e2k_context module          * else output will be wrong because 2 cpu printing at the same time *\/         while(!sync_count);          context_init(&amp;cpu_ctx[0], CONTEXT_PRIVELEGED | CONTEXT_IRQDISABLE, cpu_idle, idle_stack, sizeof(idle_stack));         context_switch(&amp;cpu_ctx_prev[0], &amp;cpu_ctx[0]);     }     \/* Run e2k_kernel_start on 1st CPU *\/     context_init(&amp;cpu_ctx[1], CONTEXT_PRIVELEGED | CONTEXT_IRQDISABLE, e2k_kernel_start, &amp;_stack_top, KERNEL_STACK_SZ);     sync_count = __e2k_atomic32_add(1, &amp;sync_count);     context_switch(&amp;cpu_ctx_prev[1], &amp;cpu_ctx[1]); } <\/code><\/pre>\n<p>  \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u044f\u0441\u043d\u044e, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0444\u0443\u043d\u0446\u0438\u0438 context_init() \u0438 context_switch() \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0442\u0435\u043a \u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u044c \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 Embox. \u041f\u0440\u0438\u0447\u0435\u043c \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u044f\u0434\u0435\u0440, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0434\u043b\u044f \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445\u0441\u044f.<\/p>\n<h3>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f MMU <\/h3>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e MMU \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 E2k.<br \/>  \u0412 \u043e\u0431\u0449\u0435\u043c \u0438 \u0446\u0435\u043b\u043e\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 MMU \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0438 \u0438\u043c\u0435\u0435\u0442 \u0447\u0435\u0442\u044b\u0440\u0435\u0445\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b (\u0438\u043b\u0438 \u0442\u0440\u0435\u0445 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 4\u041c\u0431 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b).<\/p>\n<p>  \u0412 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 E2k \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043d\u0438\u043c \u0438\u0434\u0435\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u043c, \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u043a \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0443 \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430, \u043a\u0440\u0430\u0442\u043a\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0441 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/421441\/\">\u201cEmbox \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0432\u043e\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u042d\u043b\u044c\u0431\u0440\u0443\u0441\u201d<\/a>.<\/p>\n<p>  \u0422\u0430\u043a\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f:  <\/p>\n<pre><code class=\"cpp\">#define MMU_REG_CR          0x00  \/* Control register *\/ #define MMU_REG_CONT        0x10  \/* Context register *\/ #define MMU_REG_CR3_RG      0x20  \/* CR3 register for INTEL only *\/ #define MMU_REG_ELB_PTB     0x30  \/* ELBRUS page table virtual base *\/ #define MMU_REG_ROOT_PTB    0x40  \/* Root Page Table Base register *\/\/<\/code><\/pre>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044d\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043d\u043e\u043c\u0435\u0440\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0442\u0430\u0431\u043b\u0438\u0446, \u043d\u0443 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 MMU_REG_ELB_PTB. C \u043d\u0435\u0433\u043e \u0438 \u043d\u0430\u0447\u043d\u0435\u043c, \u044d\u0442\u043e\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 512\u0413\u0431 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u0434\u043b\u044f \u043d\u0443\u0436\u0434 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b, \u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443. \u041f\u0440\u0438\u0432\u0435\u0434\u0443 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0438\u0437 \u043f\u0438\u0441\u044c\u043c\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430 \u041c\u0426\u0421\u0422, \u0432\u0440\u044f\u0434\u043b\u0438 \u044f \u0441\u043c\u043e\u0433\u0443 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u043b\u0443\u0447\u0448\u0435:<\/p>\n<blockquote><p>\u0412 Linux \u043c\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c MMU_ELB_PTB \u0432 0xff1 &lt;&lt; 39, \u0438 \u0442\u043e\u0433\u0434\u0430<br \/>  \u0432\u0435\u0440\u0445\u043d\u044f\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (0xff8000000000 \u2014 0xffffffffffff)<br \/>  \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043d\u0443\u0436\u0434\u044b \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e, TLB. \u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<br \/>  \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446 (\u0422\u0421) \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438,<br \/>  \u043f\u0440\u0438\u0447\u0451\u043c \u044d\u0442\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u0430\u0434\u0440\u0435\u0441\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430<br \/>  \u043e\u0431\u0440\u0430\u0449\u0430\u043b\u0430\u0441\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u044c. \u0410 \u0442.\u043a. TLB \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432<br \/>  \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435 \u0431\u0443\u0444\u0435\u0440\u0435 TLB<br \/>  \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u043d\u043e \u0438 \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0439 \u0422\u0421.<\/p>\n<p>  \u0412 \u0442\u0435\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445\/\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u0445, \u0433\u0434\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 TLB \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445<br \/>  \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0442\u0430\u043a\u0430\u044f \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u043d\u0443\u0436\u043d\u043e\u0439.<\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u0438 \u043f\u0440\u043e\u043c\u0430\u0445\u0435 \u0432 TLB \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043d\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a<br \/>  \u0441 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (pgd*), \u0430 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0422\u0421 (pte*).<br \/>  \u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u0443 \u044d\u0442\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043d\u0435\u0442, \u0432\u0438\u0440\u0442. \u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u0437<br \/>  \u043d\u0435\u0451 \u043d\u0443\u0436\u043d\u044b \u043b\u0438\u0448\u044c \u043a\u0430\u043a \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e TLB. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0432 \u044f\u0434\u0440\u0435 \u0432<br \/>  \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e pgd \u0432 \u043d\u0443\u043b\u0435\u0432\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0444\u0438\u0437. \u0430\u0434\u0440\u0435\u0441 \u044d\u0442\u043e\u0433\u043e<br \/>  \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0437\u0430\u043c\u0430\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e<br \/>  \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0438 4 \u041a\u0431 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 ff80&#8217;0000&#8217;0000 \u2014 ffff&#8217;ffff&#8217;ffff \u2014 \u0442.\u0435. \u043a\u0430\u043a \u0440\u0430\u0437<br \/>  \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0422\u0421. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a pgd* \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438<br \/>  \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u0447\u0442\u0435\u043d\u0438\u044f\/\u0437\u0430\u043f\u0438\u0441\u0438, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c\u0438 \u043f\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c.<\/p><\/blockquote>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c \u043c\u0435\u0448\u0430\u0442\u044c. \u0412\u0435\u0434\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0430 \u043c\u044b \u043f\u043e\u043a\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u044c. \u041f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0442\u0430\u043a\u043e\u0435 \u0436\u0435 \u043a\u0430\u043a \u0432 Linux.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440. \u0412\u043a\u043b\u044e\u0447\u0430\u0442\u044c MMU \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e. \u0418\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0431\u0438\u0442\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">#define _MMU_CR_TLB_EN   0x0000000000000001 \/* translation enable *\/ #define _MMU_CR_CD_MASK  0x0000000000000006 \/* cache disable bits *\/ #define _MMU_CR_SET1     0x0000000000000008 \/* set #1 enable for 4 MB pages *\/ #define _MMU_CR_SET2     0x0000000000000010 \/* set #2 enable for 4 MB pages *\/ #define _MMU_CR_SET3     0x0000000000000020 \/* set #3 enable for 4 MB pages *\/ \/* paging enable for second space INTEL *\/ #define _MMU_CR_CR0_PG   0x0000000000000040 \/* page size 4Mb enable for second space INTEL *\/ #define _MMU_CR_CR4_PSE  0x0000000000000080 \/* cache disable for secondary space INTEL *\/ #define _MMU_CR_CR0_CD   0x0000000000000100 \/* TLU enable for secondary space INTEL *\/ #define _MMU_CR_TLU2_EN  0x0000000000000200 \/* memory protection table enable for LD from secondary space INTEL *\/ #define _MMU_CR_LD_MPT   0x0000000000000400 #define _MMU_CR_IPD_MASK 0x0000000000000800 \/* Instruction Prefetch Depth *\/ #define _MMU_CR_UPT_EN   0x0000000000001000 \/* enable UPT *\/<\/code><\/pre>\n<p>  \u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0431\u0438\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044e \u0430\u0434\u0440\u0435\u0441\u043e\u0432.<br \/>  \u0415\u0449\u0435 \u043c\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c _MMU_CR_SET3, \u043d\u043e \u0442\u0430\u043a \u0438 \u043d\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0432 \u043a\u0430\u043a\u0438\u0445 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>  \u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u043a\u043e\u043d\u0442\u0435\u0441\u0442\u0430. \u041d\u0443, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e, \u0442\u043e \u044d\u0442\u043e PID \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438\u043b\u0438 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u0415\u0441\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u0442\u043e \u044d\u0442\u043e 11-\u0431\u0438\u0442\u043d\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u044f\u0434\u0435\u0440\u043d\u044b\u043c\u0438, \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u0431\u0438\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u043d\u0430\u0448\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043e\u0434\u043d\u043e \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u043b\u044c \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435.<\/p>\n<p>  \u0412 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043b\u0435\u0436\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438. \u041c\u043e\u0436\u043d\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0430\u0445\u0438\u043d\u0430\u0446\u0438\u044e, \u0437\u0430\u043c\u044d\u043f\u0438\u0440\u043e\u0432\u0430\u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0435\u0449\u0451 \u0438 \u0432 \u0430\u0434\u0440\u0435\u0441, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 MMU_REG_ELB_PTB, \u043d\u043e \u043a\u0430\u043a \u044f \u0443\u0436\u0435 \u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u043c\u044b \u043d\u0435 \u0431\u044b\u043b\u0438 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0435\u043d\u044b \u043d\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u0427\u0442\u043e \u0442\u0443\u0442 \u0435\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0442\u0430\u0431\u043b\u0438\u0446 \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u0431\u044b\u0447\u043d\u0430\u044f, \u0444\u043b\u0430\u0433\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:  <\/p>\n<pre><code class=\"cpp\">#define E2K_MMU_PAGE_P       0x0000000000000001ULL \/* Page Present bit *\/ #define E2K_MMU_PAGE_W       0x0000000000000002ULL \/* Writable (0 - only read) *\/ #define E2K_MMU_PAGE_UU2     0x0000000000000004ULL \/* unused bit # 2 *\/ #define E2K_MMU_PAGE_PWT     0x0000000000000008ULL \/* Write Through *\/ #define E2K_MMU_PAGE_CD1     0x0000000000000010ULL \/* Cache disable (right bit) *\/ #define E2K_MMU_PAGE_A       0x0000000000000020ULL \/* Accessed Page *\/ #define E2K_MMU_PAGE_D       0x0000000000000040ULL \/* Page Dirty *\/ #define E2K_MMU_PAGE_HUGE    0x0000000000000080ULL \/* Page Size *\/ #define E2K_MMU_PAGE_G       0x0000000000000100ULL \/* Global Page *\/ #define E2K_MMU_PAGE_CD2     0x0000000000000200ULL \/* Cache disable (left bit) *\/ #define E2K_MMU_PAGE_NWA     0x0000000000000400ULL \/* Prohibit address writing *\/ #define E2K_MMU_PAGE_AVAIL   0x0000000000000800ULL \/* Available page *\/ #define E2K_MMU_PAGE_PFN     0x000000fffffff000ULL \/* Physical Page Number *\/ #define E2K_MMU_PAGE_VALID   0x0000010000000000ULL \/* Valid Page *\/ #define E2K_MMU_PAGE_PV      0x0000020000000000ULL \/* PriVileged Page *\/ #define E2K_MMU_PAGE_INT_PR  0x0000040000000000ULL \/* Integer address access Protection *\/ #define E2K_MMU_PAGE_NON_EX  0x0000080000000000ULL \/* Non Executable Page *\/ #define E2K_MMU_PAGE_RES     0x0000f00000000000ULL \/* Reserved bits *\/ #define E2K_MMU_PAGE_C_UNIT  0xffff000000000000ULL \/* Compilation Unit *\/<\/code><\/pre>\n<p>  \u0414\u043b\u044f 4 \u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0434\u0432\u0438\u0433\u0438 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:  <\/p>\n<pre><code class=\"cpp\"> #define __MMU_PGD_SHIFT      (PAGE_SHIFT + 3 * (PAGE_SHIFT-3)) \/* 39 *\/ #define __MMU_PUD_SHIFT      (PAGE_SHIFT + 2 * (PAGE_SHIFT-3)) \/* 30 *\/ #define __MMU_PMD_SHIFT      (PAGE_SHIFT + 1 * (PAGE_SHIFT-3)) \/* 21 *\/ <\/code><\/pre>\n<h3>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043e PCI<\/h3>\n<p>  <\/p>\n<h4>\u041e\u0431\u0449\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0441\u043d\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430<\/h4>\n<p>  \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0432\u0438\u0434\u044f\u0445\u0435 \u0438 \u0441\u0435\u0442\u0435\u0432\u0443\u0445\u0435, \u043d\u0435\u043d\u0430\u0434\u043e\u043b\u0433\u043e \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a PCI. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u044b \u043e\u0431 \u044d\u0442\u043e\u043c \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u0432 \u0441\u0430\u043c\u043e\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/421441\/\">\u00abEmbox \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0432\u043e\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u042d\u043b\u044c\u0431\u0440\u0443\u0441\u00bb<\/a>. \u0412 \u043d\u0435\u0439 \u0431\u044b\u043b\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0430\u0434\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u043c\u0438:  <\/p>\n<pre><code class=\"cpp\">#define _E2K_READ_MAS(addr, mas, type, size_letter, chan_letter) \\ ({ \\     register type res; \\     asm volatile (&quot;ld&quot; #size_letter &quot;,&quot; #chan_letter &quot; \\t0x0, [%1] %2, %0&quot; \\                   : &quot;=r&quot; (res) \\                   : &quot;r&quot; ((__e2k_ptr_t) (addr)), \\                     &quot;i&quot; (mas)); \\     res; \\ })  #define _E2K_WRITE_MAS(addr, val, mas, type, size_letter, chan_letter) \\ ({ \\     asm volatile (&quot;st&quot; #size_letter &quot;,&quot; #chan_letter &quot; \\t0x0, [%0] %2, %1&quot; \\                   : \\                   : &quot;r&quot; ((__e2k_ptr_t) (addr)), \\                     &quot;r&quot; ((type) (val)), \\             &quot;i&quot; (mas) \\           : &quot;memory&quot;); \\ })<\/code><\/pre>\n<p>  \u0418 \u0431\u044b\u043b\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0430\u0434\u0440\u0435\u0441\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432. \u0420\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u043d\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e MAS (memory address specifier). \u0418 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a IO, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a PCI \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c 6, \u0430 \u0434\u043b\u044f MMU 7.<\/p>\n<p>  \u041d\u043e \u043f\u0440\u0438 \u0431\u043e\u043b\u0435\u0435 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e chan_letter. \u0410 \u0435\u0441\u043b\u0438 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434 e2k, \u0442\u043e \u043d\u0430\u0439\u0434\u0435\u043c  <\/p>\n<blockquote><p>LDD ddd \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0434\u0432\u043e\u0439\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430<br \/>  ldd [ address ] mas, dst<\/p><\/blockquote>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043d\u0435\u0442. \u041d\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c, \u0442\u043e \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u0434 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 ldd \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f 67. \u041d\u043e 67 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f ldd \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043a\u0430\u043d\u0430\u043b\u043e\u0432 AL0\/AL3 \u0438 AL2\/AL5, \u0430 \u0434\u043b\u044f \u043a\u0430\u043d\u0430\u043b\u043e\u0432 AL1\/AL4 \u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f POPCNTd.<\/p>\n<p>  \u0422\u0430\u043a \u0432\u043e\u0442, \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u042d\u043b\u044c\u0431\u0440\u0443\u0441\u0430, \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c. \u0420\u0438\u0441\u043a\u043d\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0443\u0436\u0435 \u0441 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u043c vliw, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0435 \u0438\u043c\u0435\u043d\u043d\u043e alu \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0432\u0435\u0434\u044c \u0432 \u044d\u0442\u043e\u043c \u0442\u0438\u043f\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u041c\u043e\u0433\u0443, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043e\u0448\u0438\u0431\u0430\u0442\u044c\u0441\u044f, \u043d\u043e \u0444\u0430\u043a\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a PCI \u0438\u043b\u0438 MMU \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u043b\u0438 \u043f\u044f\u0442\u044b\u0439 \u043a\u0430\u043d\u0430\u043b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0430\u043a:  <\/p>\n<blockquote><p>ldd,2 0x0, [addr_in_mas] mas_id, %reg<\/p><\/blockquote>\n<p>  <\/p>\n<h4>lspci<\/h4>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b lspci \u043d\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u0443 \u043d\u0430\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435:  <\/p>\n<blockquote><p>root@embox:(null)#lspci<br \/>  00: 0.0 (PCI dev E3E3:ABCD) [6 4]<br \/>   PCI-to-PCI bridge: (null) Elbrus PCIe bridge (rev 01)<br \/>  00: 1.0 (PCI dev 8086:E3E3) [6 4]<br \/>   PCI-to-PCI bridge: Intel Corporation Elbrus Virt PCI bridge (rev 01)<br \/>  01: 0.0 (PCI dev 1FFF:8000) [6 4]<br \/>   PCI-to-PCI bridge: (null) Elbrus PCI bridge (rev 05)<br \/>  01: 1.0 (PCI dev 8086:4D45) [2 0]<br \/>   Ethernet controller: Intel Corporation MCST ETH1000 Gigabit Ethernet (rev 01)<br \/>  01: 2.0 (PCI dev 8086:4D49) [1 1]<br \/>   IDE controller: Intel Corporation MCST IDE (rev 128)<br \/>  01: 2.1 (PCI dev 8086:0002) [7 2]<br \/>   Simple comm. controller: Intel Corporation (null) (rev 05)<br \/>  01: 2.2 (PCI dev 8086:8000) [7 128]<br \/>   Simple comm. controller: Intel Corporation Elbrus PCI bridge (rev 00)<br \/>  01: 2.3 (PCI dev 1013:6005) [4 1]<br \/>   Multimedia device: Cirrus Logic Crystal CS4281 PCI Audio (rev 01)<br \/>  01: 3.0 (PCI dev 8086:4748) [1 6]<br \/>   Mass storage controller: Intel Corporation MCST SATA (rev 00)<br \/>  01: 4.0 (PCI dev 8086:554F) [12 3]<br \/>   USB device: Intel Corporation OHCI for Elbrus (rev 00)<br \/>  01: 4.1 (PCI dev 8086:5545) [12 3]<br \/>   USB device: Intel Corporation EHCI for Elbrus (rev 00)<br \/>  02: 1.0 (PCI dev 126F:0718) [3 0]<br \/>   VGA-compatible controller: Silicon Motion, Inc. SM718 LynxSE+ (rev 160)<br \/>  root@embox:(null)#<\/p><\/blockquote>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435  <\/p>\n<blockquote><p>01: 2.2 (PCI dev 8086:8000) [7 128]<br \/>   Simple comm. controller: Intel Corporation Elbrus PCI bridge (rev 00)<\/p><\/blockquote>\n<p>  \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0440\u0442\u043e\u043c \u043e\u0442 \u041c\u0426\u0421\u0422 \u043f\u043e\u0445\u043e\u0436\u0438\u043c \u043d\u0430 am85c30, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043c\u044b \u0438 \u043e\u0431\u0449\u0430\u0435\u043c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 minicom.<\/p>\n<h3>\u0421\u0435\u0442\u0435\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430<\/h3>\n<p>  <\/p>\n<h4>\u041e\u0431\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/h4>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0441\u0435\u0442\u0435\u0432\u0443\u0445\u0435.<br \/>  \u0415\u0441\u043b\u0438 \u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u043b, \u0442\u043e \u044d\u0442\u043e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u0442\u0435\u0432\u0443\u0445\u0430, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0445\u043e\u0436\u0430\u044f \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 e1000, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c \u0440\u0430\u0431\u043e\u0442\u044b (\u0442\u0438\u043f\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044f\u0445 \u043d\u0430 \u043f\u0440\u0438\u0435\u043c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443).<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e \u0432\u0430\u0436\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c.<br \/>  \u0421\u0435\u0442\u0435\u0432\u0443\u0445\u0430 PCI -\u043d\u0430\u044f VID:PID 0x8086:0x4D45. \u041d\u0435 \u0443\u0434\u0438\u0432\u043b\u044f\u0439\u0442\u0435\u0441\u044c \u0447\u0442\u043e VID \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 Intel, \u041c\u0426\u0421\u0422 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 VID, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043d\u0430 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0435 \u0432\u044b\u0448\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430.<\/p>\n<p>  \u0412 BAR0 \u043b\u0435\u0436\u0438\u0442 \u0431\u0430\u0437\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432. \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:  <\/p>\n<pre><code class=\"cpp\">#define L_E1000_E_CSR         0x00 \/* Ethernet Control\/Status Register *\/ #define L_E1000_MGIO_CSR      0x04 \/* MGIO Control\/Status Register *\/ #define L_E1000_MGIO_DATA     0x08 \/* MGIO Data Register *\/ #define L_E1000_E_BASE_ADDR   0x0c \/* EthernetBase Address Register *\/ #define L_E1000_DMA_BASE_ADDR 0x10 \/* DMA Base Address Register *\/ #define L_E1000_PSF_CSR       0x14 \/* Pause Frame Control\/Status Register *\/ #define L_E1000_PSF_DATA      0x18 \/* Pause Frame Data Register *\/ #define L_E1000_INT_DELAY     0x1c \/* Interrupt Delay Register *\/<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0442\u0440\u0438 (L_E1000_PSF_CSR, L_E1000_PSF_DATA, L_E1000_INT_DELAY) \u043c\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e \u043d\u0438\u0445 \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 MGIO, \u0442\u0443\u0442 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e: \u0447\u0442\u0435\u043d\u0438\u0435-\u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e MII-\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u043e\u0439 PHY. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0443 \u043d\u0430\u0441 \u0441\u0442\u043e\u0438\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 DP83865. \u041f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043d\u0438\u0447\u0435\u043c \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0438\u0445 \u043b\u0438\u0441\u0442\u0438\u043d\u0433<br \/>  \u0427\u0442\u0435\u043d\u0438\u0435:  <\/p>\n<pre><code class=\"cpp\">static int e1000_mii_readreg(struct net_device *dev, int phy_id, int reg_num) { \tstruct l_e1000_priv *ep = netdev_priv(dev); \tuint32_t rd; \tuint16_t val_out = 0; \tint i = 0;  \trd = 0; \trd |= 0x2 &lt;&lt; MGIO_CS_OFF; \trd |= 0x1 &lt;&lt; MGIO_ST_OF_F_OFF; \trd |= 0x2 &lt;&lt; MGIO_OP_CODE_OFF; \/* Read *\/ \trd |= (phy_id  &amp; 0x1f) &lt;&lt; MGIO_PHY_AD_OFF; \trd |= (reg_num &amp; 0x1f) &lt;&lt; MGIO_REG_AD_OFF;  \te1000_write_mgio_data(ep, rd); \trd = 0;  \tfor (i = 0; i != 1000; i++) { \t\tif (e1000_read_mgio_csr(ep) &amp; MGIO_CSR_RRDY) { \t\t\trd = (uint16_t)e1000_read_mgio_data(ep);  \t\t\tval_out = rd &amp; 0xffff; \t\t\tlog_debug(&quot;reg 0x%x &gt;&gt;&gt; 0x%x&quot;, reg_num, val_out); \t\t\treturn val_out; \t\t} \t\tusleep(100); \t}  \tlog_error(&quot;mdio_read: Unable to read from MGIO_DATA reg\\n&quot;);  \treturn val_out; }<\/code><\/pre>\n<p>  \u0417\u0430\u043f\u0438\u0441\u044c:  <\/p>\n<pre><code class=\"cpp\">static void e1000_mii_writereg(struct net_device *dev, int phy_id, int reg_num, int val) { \tstruct l_e1000_priv *ep = netdev_priv(dev); \tuint32_t wr; \tint i = 0;  \twr = 0; \twr |= 0x2 &lt;&lt; MGIO_CS_OFF; \twr |= 0x1 &lt;&lt; MGIO_ST_OF_F_OFF; \twr |= 0x1 &lt;&lt; MGIO_OP_CODE_OFF; \/* Write *\/ \twr |= (phy_id  &amp; 0x1f) &lt;&lt; MGIO_PHY_AD_OFF; \twr |= (reg_num &amp; 0x1f) &lt;&lt; MGIO_REG_AD_OFF; \twr |= val &amp; 0xffff;  \tlog_debug(&quot;reg 0x%x &lt;&lt;&lt; 0x%x&quot;, reg_num, val); \te1000_write_mgio_data(ep, wr);  \tfor (i = 0; i != 1000; i++) { \t\tif (e1000_read_mgio_csr(ep) &amp; MGIO_CSR_RRDY) { \t\t\treturn; \t\t} \t\tusleep(100); \t} \tlog_error(&quot;Unable to write MGIO_DATA reg: val = 0x%x&quot;, wr); \treturn; }<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c L_E1000_DMA_BASE_ADDR \u0438 L_E1000_E_BASE_ADDR, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u043d\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0430\u0434\u0440\u0435\u0441 \u0431\u043b\u043e\u043a\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b. \u0422\u043e \u0435\u0441\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0432 \u042d\u043b\u044c\u0431\u0440\u0443\u0441\u0435 64-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u044b\u0439, \u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b 32-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u044b\u0435.<br \/>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u043e\u0434:  <\/p>\n<pre><code class=\"cpp\">    \/* low 32 bits *\/     init_block_addr_part = (uint32_t)((uintptr_t)ep-&gt;init_block &amp; 0xffffffff);     e1000_write_e_base_addr(ep, init_block_addr_part);     log_debug(&quot;Init Block Low  DMA addr: 0x%x&quot;, init_block_addr_part);     \/* high 32 bits *\/     init_block_addr_part = (uint32_t)(((uintptr_t)(ep-&gt;init_block) &gt;&gt; 32) &amp; 0xffffffff);     e1000_write_dma_base_addr(ep, init_block_addr_part);     log_debug(&quot;Init Block High DMA addr: 0x%x&quot;, init_block_addr_part);     \/************************************************************************\/ <\/code><\/pre>\n<p>  \u0418\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e L_E1000_DMA_BASE_ADDR \u2014 \u044d\u0442\u043e \u0441\u0442\u0430\u0440\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c, \u0430 L_E1000_DMA_BASE_ADDR \u2014 \u043c\u043b\u0430\u0434\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0435\u043a\u043e\u0435\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0431\u043b\u043e\u043a\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u044b).<br \/>  \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f:  <\/p>\n<pre><code class=\"cpp\"> struct l_e1000_init_block {     uint16_t mode;     uint8_t  paddr[6];     uint64_t laddrf;     \/* 31:4 = addr of rx desc ring (16 bytes align) +      * 3:0  = number of descriptors (the power of two)      * 0x09 is max value (desc number = 512 if [3:0] &gt;= 0x09)      *\/     uint32_t rdra;     \/* 31:4 = addr of tx desc ring (16 bytes align) +      * 3:0  = number of descriptors (the power of two)      * 0x09 is max value (desc number = 512 if [3:0] &gt;= 0x09)      *\/     uint32_t tdra; } __attribute__((packed));<\/code><\/pre>\n<p>  C laddrf \u2014 \u043d\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c, \u043e\u043d \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u043d\u043e\u043b\u044c, \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0442\u0430\u043a \u0436\u0435. <\/p>\n<p>  paddr \u2014 \u043a\u0430\u043a \u043d\u0435\u0442\u0440\u0443\u0434\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, mac \u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b.<\/p>\n<p>  rdra \u0438 tdra \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043e\u043b\u0435\u0446 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u043c\u043b\u0430\u0434\u0448\u0438\u0435 4 \u0431\u0438\u0442\u0430 \u043e\u0442\u0432\u0435\u0434\u0435\u043d\u044b \u043f\u043e\u0434 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043b\u044c\u0446\u0430, \u043f\u0440\u0438\u0447\u0435\u043c \u044d\u0442\u043e \u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 8, \u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u0432 \u043a\u043e\u043b\u044c\u0446\u0435 \u0431\u0443\u0434\u0435\u0442 2^8 (1 &lt;&lt; 8 == 256).<\/p>\n<p>  mode \u2014 \u044d\u0442\u043e \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u0440\u0442\u044b, \u0431\u0438\u0442\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:  <\/p>\n<pre><code class=\"cpp\">#define DRX     (1 &lt;&lt; 0)  \/* Receiver disable *\/ #define DTX     (1 &lt;&lt; 1)  \/* Transmitter disable *\/ #define LOOP    (1 &lt;&lt; 2)  \/* loopback *\/ #define DTCR    (1 &lt;&lt; 3)  \/* disable transmit crc *\/ #define COLL    (1 &lt;&lt; 4)  \/* force collision *\/ #define DRTY    (1 &lt;&lt; 5)  \/* disable retry *\/ #define INTL    (1 &lt;&lt; 6)  \/* Internal loopback *\/ #define EMBA    (1 &lt;&lt; 7)  \/* enable modified back-off algorithm *\/ #define EJMF    (1 &lt;&lt; 8)  \/* enable jambo frame *\/ #define EPSF    (1 &lt;&lt; 9)  \/* enable pause frame *\/ #define FULL    (1 &lt;&lt; 10)  \/* full packet mode *\/ #define PROM    (1 &lt;&lt; 15) \/* promiscuous mode *\/<\/code><\/pre>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e, \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0438\u0442 10. \u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f promiscuous \u0440\u0435\u0436\u0438\u043c, \u0442\u043e \u0435\u0449\u0435 \u0438 15.<\/p>\n<h4>\u0414\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u043f\u0430\u043a\u0435\u0442\u043e\u0432<\/h4>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u043f\u0430\u043a\u0435\u0442\u043e\u0432.<br \/>  \u041d\u0430 \u043f\u0440\u0438\u0435\u043c:  <\/p>\n<pre><code class=\"cpp\"> struct l_e1000_rx_desc {     uint32_t    base;     int16_t     buf_length;     int16_t     status;     int16_t     msg_length;     uint16_t    reserved1;     uint32_t    etmr; } __attribute__((packed));<\/code><\/pre>\n<p>  \u0432ase \u2014 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e\u0434 \u043f\u0430\u043a\u0435\u0442<br \/>  buf_length \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430<br \/>  msg_length \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u0435\u043c\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u043b\u0438\u043d\u0443 \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430<br \/>  status \u2014 \u0441\u0442\u0430\u0442\u0443\u0441 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430. \u041a\u043e\u0433\u0434\u0430 \u043f\u0430\u043a\u0435\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0438 \u043e\u0442\u0434\u0430\u0435\u0442\u0441\u044f DMA (\u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0435), \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0438\u0442 15 (RD_OWN). \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e, \u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u0435\u043c\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u044d\u0442\u043e\u0442 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u044d\u0442\u043e\u0442 \u0431\u0438\u0442 \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f 9 (RD_STP) \u0438 8 (RD_ENP).<br \/>  \u0412\u0441\u0435 \u0431\u0438\u0442\u044b \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:  <\/p>\n<pre><code class=\"cpp\">\/* RX Descriptor status bits *\/ #define RD_OWN     (1 &lt;&lt; 15) #define RD_ERR     (1 &lt;&lt; 14) #define RD_FRAM    (1 &lt;&lt; 13) #define RD_OFLO    (1 &lt;&lt; 12) #define RD_CRC     (1 &lt;&lt; 11) #define RD_BUFF    (1 &lt;&lt; 10) #define RD_STP     (1 &lt;&lt; 9) #define RD_ENP     (1 &lt;&lt; 8) #define RD_PAM     (1 &lt;&lt; 6) #define RD_LAFM    (1 &lt;&lt; 4) #define RD_BAM     (1 &lt;&lt; 3)<\/code><\/pre>\n<p>  \u041d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443:  <\/p>\n<pre><code class=\"cpp\">struct l_e1000_tx_desc {     uint32_t    base;     int16_t     buf_length;     int16_t     status;     uint32_t    misc;     uint32_t    etmr; } __attribute__((packed)); <\/code><\/pre>\n<p>  \u041f\u043e\u0447\u0442\u0438 \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0447\u0442\u043e \u0438 \u043d\u0430 \u043f\u0440\u0438\u0435\u043c, \u0441\u0442\u0430\u0442\u0443\u0441\u043d\u044b\u0435 \u0431\u0438\u0442\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:  <\/p>\n<pre><code class=\"cpp\">\/* TX Descriptor status bits *\/ #define TD_OWN      (1 &lt;&lt; 15) #define TD_ERR      (1 &lt;&lt; 14) #define TD_AFCS     (1 &lt;&lt; 13) #define TD_NOINTR   (1 &lt;&lt; 13) #define TD_MORE     (1 &lt;&lt; 12) #define TD_ONE      (1 &lt;&lt; 11) #define TD_DEF      (1 &lt;&lt; 10) #define TD_STP      (1 &lt;&lt; 9) #define TD_ENP      (1 &lt;&lt; 8)<\/code><\/pre>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442, \u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c 15 (TD_OWN), 9 (TD_STP) \u0438 8 (TD_ENP). \u0411\u0438\u0442 8 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0430\u043a\u0435\u0442 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u0447\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c.<\/p>\n<p>  \u0410 \u0435\u0449\u0435 \u0437\u0430\u0431\u044b\u043b \u0432\u0430\u0436\u043d\u0443\u044e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0434\u043b\u0438\u043d\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u0432 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430\u0445 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u043c\u0438\u043d\u0443\u0441, \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u0434\u0435, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435. \u0415\u0449\u0435 \u0432 little-endian, \u043d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u042d\u043b\u044c\u0431\u0440\u0443\u0441\u044b \u0438\u043c\u0435\u044e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0431\u0430\u0439\u0442, \u0442\u043e \u044d\u0442\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043d\u0435 \u0432\u0430\u0436\u043d\u043e.  <\/p>\n<h4>\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/h4>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u043f\u0438\u0448\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043d\u0435\u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 L_E1000_E_CSR:  <\/p>\n<pre><code class=\"cpp\"> \/* E_CSR register bits *\/ \/* 31:21 unused, readed as 0 *\/ #define E_CSR_ATME        (1 &lt;&lt; 24) \/* RW, Add Timer Enable *\/ #define E_CSR_TMCE        (1 &lt;&lt; 23) \/* RW, Timer Clear Enable *\/ #define E_CSR_DRIN        (1 &lt;&lt; 22) \/* RW, Disable RX Interrupt *\/ #define E_CSR_DTIN        (1 &lt;&lt; 21) \/* RW, Disable TX Interrupt *\/ #define E_CSR_ESLE        (1 &lt;&lt; 20) \/* RW, Enable Slave Error *\/ #define E_CSR_SLVE        (1 &lt;&lt; 19) \/* RW1c, Slave Error *\/ #define E_CSR_PSFI        (1 &lt;&lt; 18) \/* RW1c, Pause Frame Interrupt *\/ \/* 17 unused, read as 0  *\/ #define E_CSR_SINT       (1 &lt;&lt; 16) \/* R, Status Interrupt *\/ #define E_CSR_ERR        (1 &lt;&lt; 15) \/* R, Error *\/ #define E_CSR_BABL       (1 &lt;&lt; 14) \/* RW1c, Babble *\/ #define E_CSR_CERR       (1 &lt;&lt; 13) \/* RW1c, Collision Error *\/ #define E_CSR_MISS       (1 &lt;&lt; 12) \/* RW1c, Missed Packet *\/ #define E_CSR_MERR       (1 &lt;&lt; 11) \/* RW1c, Memory Error *\/ #define E_CSR_RINT       (1 &lt;&lt; 10) \/* RW1c, Receiver Interrupt *\/ #define E_CSR_TINT       (1 &lt;&lt; 9)  \/* RW1c, Transmiter Interrupt *\/ #define E_CSR_IDON       (1 &lt;&lt; 8)  \/* RW1c, Initialization Done *\/ #define E_CSR_INTR       (1 &lt;&lt; 7)  \/* R, Interrupt Flag *\/ #define E_CSR_INEA       (1 &lt;&lt; 6)  \/* RW, Interrupt Enable *\/ #define E_CSR_RXON       (1 &lt;&lt; 5)  \/* R, Receiver On *\/ #define E_CSR_TXON       (1 &lt;&lt; 4)  \/* R, Transmiter On *\/ #define E_CSR_TDMD       (1 &lt;&lt; 3)  \/* RW1, Transmit Demand *\/ #define E_CSR_STOP       (1 &lt;&lt; 2)  \/* RW1, Stop *\/ #define E_CSR_STRT       (1 &lt;&lt; 1)  \/* RW1, Start *\/ #define E_CSR_INIT       (1 &lt;&lt; 0)  \/* RW1, Initialize *\/ <\/code><\/pre>\n<p>  <\/p>\n<h4>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h4>\n<p>  \u041f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438:  <\/p>\n<blockquote><p>STOP-&gt;INIT-&gt;IDON-&gt;STRT<\/p><\/blockquote>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0438\u0442\u044b RXON &amp; TXON \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<br \/>  \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0443 \u043d\u0430\u0441 \u0432 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0435.<\/p>\n<h2>\u0412\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430.<\/h2>\n<p>  \u041a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e, \u0432 \u043d\u0430\u0448\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u044f\u0445\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Silicon Motion, \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c SM718 LynxSE+. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 <a href=\"https:\/\/github.com\/torvalds\/linux\/tree\/master\/drivers\/staging\/sm750fb\">\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0432 Linux <\/a> \u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0435\u0447\u0435\u0433\u043e.<\/p>\n<p>  \u041d\u0443 \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043d\u0438\u0437\u043a\u0438\u0439 fps, \u0442\u0430\u043a\u043e\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u043c\u044f\u0442\u0438. \u041d\u043e \u044d\u0442\u043e \u0431\u0435\u0437 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043d\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0436\u0435\u0442 \u044d\u0442\u043e \u043d\u0430\u0448\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430\u044f \u0441 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b e2k.<\/p>\n<h3>\u041d\u0443 \u0447\u0442\u043e \u0435\u0449\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e <s>\u0421\u0430\u0445\u0430\u043b\u0438\u043d<\/s> \u042d\u043b\u044c\u0431\u0440\u0443\u0441?<\/h3>\n<p>  \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0433\u043e\u0434\u0430 \ud83d\ude42<\/p>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u042d\u043b\u044c\u0431\u0440\u0443\u0441\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u041b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u044d\u0442\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0435\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u044c. \u0421\u043b\u0430\u0431\u043e \u0432\u0435\u0440\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435. \u0414\u0430, \u0441\u0442\u0430\u043b\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f, \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u041f\u041e, \u0442\u043e\u0442 \u0436\u0435 \u0411\u0430\u0437\u0430\u043b\u044c\u0442-\u0421\u041f\u041e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 <a href=\"https:\/\/www.altlinux.org\/%D0%AD%D0%BB%D1%8C%D0%B1%D1%80%D1%83%D1%81\">\u0410\u043b\u044c\u0442-Linux, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u042d\u043b\u044c\u0431\u0440\u0443\u0441<\/a>. <br \/>  \u0414\u0430, \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0443 \u043d\u0430 \u0431\u0430\u0437\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u042d\u043b\u044c\u0431\u0440\u0443\u0441, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/m.vk.com\/wall-71796881_858\">Fastwel<\/a>. \u041d\u043e \u0432\u0441\u0435 \u044d\u0442\u043e \u043b\u0438\u0448\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u043e\u0434\u0432\u0438\u0436\u043a\u0438 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u0438. \u0421\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0442\u0443\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u043d\u0443\u0436\u0435\u043d \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u0430 \u043e\u043d \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443 <a href=\"http:\/\/www.mcst.ru\/\">\u041c\u0426\u0421\u0422<\/a>, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0443, \u043e\u043f\u044f\u0442\u044c \u0436\u0435, <a href=\"http:\/\/www.mcst.ru\/\">\u041c\u0426\u0421\u0422<\/a>, \u0438 \u044d\u0442\u043e \u044f \u0435\u0449\u0435 \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044e, \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0436\u0435\u043b\u0435\u0437\u043a\u0443 \u0432\u0440\u044f\u0434 \u043b\u0438 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0434\u0430\u0436\u0435 \u0443 \u041c\u0426\u0421\u0422. \u041e\u043d\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u0440\u0430\u044f, \u0438 <a href=\"http:\/\/www.mcst.ru\/\">\u041c\u0426\u0421\u0422<\/a> \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438. <\/p>\n<p>  P.S. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u0441\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/embox\/embox\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 Embox<\/a>.<\/p>\n<p>  P.P.S \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0435 \u0432 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c \u043a\u0430\u043d\u0430\u043b \u043f\u043e Embox (<a href=\"https:\/\/t.me\/embox_chat\">https:\/\/t.me\/embox_chat<\/a>).<\/p>\n<p>  P.P.S. \u0423 Embox \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0432 \u0432\u0435\u0440\u0441\u0438\u0438, \u0442\u0435\u043f\u0435\u0440\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f <a href=\"https:\/\/github.com\/embox\/embox\/releases\/tag\/v0.4.0\">0.4.0<\/a><\/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=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/485694\/\"> https:\/\/habr.com\/ru\/company\/embox\/blog\/485694\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/485694\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ic\/4z\/5o\/ic4z5olelesc04boln85goculk4.png\" align=\"right\" width=\"320\"><br \/>  \u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u043c <a href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/447704\/\">\u0441\u0435\u0440\u0438\u0438<\/a> <a href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/447744\/\">\u0441\u0442\u0430\u0442\u044c\u0435\u0439<\/a> <a href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/421441\/\">\u201c\u0432\u043e\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u042d\u043b\u044c\u0431\u0440\u0443\u0441\u201d<\/a> \u043e\u0431 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u0438 <a href=\"http:\/\/embox.github.io\">Embox<\/a> \u0441 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%AD%D0%BB%D1%8C%D0%B1%D1%80%D1%83%D1%81_2000\">\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 \u042d\u043b\u044c\u0431\u0440\u0443\u0441 (E2K) <\/a>. \u041f\u043e\u0447\u0435\u043c\u0443 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0447\u0435\u0440\u0435\u0437 telnet \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b Embox \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435. \u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0432\u0440\u044f\u0434 \u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u0435\u043c, \u0445\u043e\u0442\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043d\u043e\u0433\u043e\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0435 \u044f\u0441\u043d\u043e. \u0418 \u0441\u0430\u043c\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438\u043c\u0435\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u044b. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e\u0431 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0437\u0430\u0442\u0440\u043e\u043d\u0435\u043c PCI, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 \u0438 \u043a\u043e\u0441\u043d\u0435\u043c\u0441\u044f \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0435\u0441\u0442\u044c \u0443 \u043d\u0430\u0441. <\/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-297788","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/297788","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=297788"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/297788\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=297788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=297788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=297788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}