{"id":338457,"date":"2022-09-16T21:00:16","date_gmt":"2022-09-16T21:00:16","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=338457"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=338457","title":{"rendered":"<span>\u0422\u0430\u043d\u0434\u0435\u043c Cpp\/Dot \u0434\u043b\u044f \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0421\u043b\u043e\u0436\u043d\u044b\u0445 Tool\u0421hain(\u043e\u0432)<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043e\u0444\u0442\u0430 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e \u043a\u043e\u0434. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043e\u0444\u0442\u0430 \u044d\u0442\u043e \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u043f\u0440\u043e Toolchain(\u044b). \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u0438\u0439 \u043f\u0443\u0442\u044c \u0438 \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0433\u043e\u0434\u043e\u043c \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0432\u0441\u0435 \u0431\u043e\u043b\u0435\u0435 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438. \u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0444\u0442\u0430 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0430\u0434\u0438\u0439\u043d\u044b\u0435, \u0447\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0438\u0445 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. <\/p>\n<p>Toolchain \u044d\u0442\u043e \u043a\u0430\u043a \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440. \u0415\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u043e\u0434\u043d\u0438 \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c\u0438. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (\u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b). \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e IDE(IAR, KEIL, MsVisualStudio \u0438 \u043f\u0440.) \u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0432\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432. \u0418 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438 \u0442\u043e\u0440\u0447\u0430\u0442\u044c \u0432 IDE(\u0448\u043a\u0430\u0445) \u0447\u0430\u0441\u0442\u043e \u0434\u0430\u0436\u0435 \u043d\u0435 \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u0447\u0442\u043e \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u043a\u0440\u043e\u043c\u0435 *.h \u0438 *.\u0441 \u0444\u0430\u0439\u043b\u0438\u043a\u043e\u0432. \u0412 \u044d\u0442\u043e\u043c \u043f\u043b\u0430\u043d\u0435 IDE \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0441\u0432\u043e\u0438\u043c \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044f\u043c \u043c\u0435\u0434\u0432\u0435\u0436\u044c\u044e \u0443\u0441\u043b\u0443\u0433\u0443, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u043f\u0440\u0438\u0432\u044b\u043a\u0448\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 IDE \u0438\u043c\u0435\u044e\u0442 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u0430\u0431\u044b\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438. <\/p>\n<p>\u041f\u043e-\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0432\u0430\u0440\u044f\u0442\u0441\u044f \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0441\u043b\u043e\u0436\u043d\u043e. \u041a\u0430\u043a \u0436\u0435 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c? <\/p>\n<p>\u041d\u0430\u0434\u043e \u043f\u0440\u0438\u0431\u0435\u0433\u043d\u0443\u0442\u044c \u043a \u043d\u0430\u0440\u043e\u0434\u043d\u043e\u0439 \u043c\u0443\u0434\u0440\u043e\u0441\u0442\u0438. \u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0430\u044f \u043f\u043e\u0441\u043b\u043e\u0432\u0438\u0446\u0430: &#171;\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0441\u0442\u043e\u0438\u0442 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u043b\u043e\u0432&#187;. \u0417\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u0434\u043e \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443. \u0421\u0445\u0435\u043c\u0443 ToolChain(\u0430). <\/p>\n<p>\u0417\u0430\u0447\u0435\u043c \u0435\u0449\u0435 \u043d\u0443\u0436\u043d\u044b \u0441\u0445\u0435\u043c\u044b ToolChain(\u043e\u0432)? <\/p>\n<p>\u0421\u0445\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u043a\u0443\u0440\u0441 \u0434\u0435\u043b\u0430 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0438\u0440\u043c\u0430 chip maker \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u043d\u0430 \u0440\u044b\u043d\u043a\u0435, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f, \u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u0438 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f.<\/p>\n<p>\u041a\u0430\u043a \u0436\u0435 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443 ToolChain(\u0430)? \u0422\u0443\u0442 \u0435\u0441\u0442\u044c 2 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:<\/p>\n<p><strong>[1] \u0420\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u0441\u0430\u043c\u043e\u043c\u0443, \u043c\u044b\u0448\u043a\u043e\u0439 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 Inkscape.exe.<\/strong> <\/p>\n<p><strong>\u041f\u043b\u044e\u0441:<\/strong> <\/p>\n<p>a) \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0438, \u043b\u0438\u043d\u0435\u0439\u043a\u0438. \u0422\u0435 \u043a\u0442\u043e \u0443\u0447\u0438\u043b \u0432 \u0445\u0443\u0434\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0448\u043a\u043e\u043b\u0435 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0442\u0443\u0442 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043e\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e-\u043f\u043e\u043b\u043d\u043e\u0439.  <\/p>\n<p><strong>\u041c\u0438\u043d\u0443\u0441\u044b:<\/strong> <\/p>\n<p>a) \u0420\u0443\u0447\u043d\u043e\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0435\u0441\u044c\u043c\u0430 \u0443\u0442\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0443\u043f\u044f\u0442 \u0431\u043e\u043b\u0438 \u0432 \u0437\u0430\u043f\u044f\u0441\u0442\u044c\u0435.  <\/p>\n<p>b) \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u044b\u0448\u043a\u0438 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u0443\u0440\u043d\u044b\u043c \u0442\u043e\u043d\u043e\u043c. <\/p>\n<p>c) \u0422\u0440\u0443\u0434\u043d\u043e \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c *.svg \u0444\u0430\u0439\u043b \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044e. \u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u043f\u0440\u0438 git merge *.svg \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0432 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 *.xml(\u043a\u0430).<\/p>\n<p><strong>[2] \u0421\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0433\u0440\u0430\u0444\u0430 \u0438\u043b\u0438 \u0434\u0435\u0440\u0435\u0432\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0433\u0440\u0430\u0444\u043e\u0432 Dot \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 dot.exe \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u0433\u0440\u0430\u0444\u0430.<\/strong><\/p>\n<p><strong>\u041f\u043b\u044e\u0441\u044b:<\/strong> <\/p>\n<p>a) \u0411\u044b\u0441\u0442\u0440\u043e.<\/p>\n<p>b) \u0427\u0435\u0442\u043a\u043e. <\/p>\n<p>c) \u041b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c. <\/p>\n<p>d) \u041b\u0435\u0433\u043a\u043e \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044e. <\/p>\n<p>e) \u041b\u0435\u0433\u043a\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u044b.<\/p>\n<p><strong>\u041c\u0438\u043d\u0443\u0441\u044b:<\/strong> <\/p>\n<p>a) \u041d\u0430\u0434\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0438 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0443 \u044f\u0437\u044b\u043a\u0430 Dot: \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b, \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u0435\u0440\u0448\u0438\u043d, \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0440\u0435\u0431\u0435\u0440, \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0440\u0430\u0441\u043a\u0440\u0430\u0441\u043a\u0438. <\/p>\n<p>b) \u0421\u0445\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u043e\u043c, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435 \u044f\u0437\u044b\u043a\u0430 Dot. <\/p>\n<p>c) C\u0445\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<p>\u041a\u0430\u043a \u043f\u043e \u043c\u043d\u0435, \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u0438 \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u0435\u0435 \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0434\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u044b\u0448\u043a\u043e\u0439.<\/p>\n<p><strong>\u041a\u0430\u043a\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0430\u0432\u0442\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u043b\u043e\u043a \u0441\u0445\u0435\u043c?<\/strong><\/p>\n<p>\u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e \u0442\u043e \u044d\u0442\u043e cpp, dot, make, chrome.<\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0434\u043e \u043d\u0430\u043a\u0430\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 Dot \u0444\u0430\u0439\u043b\u043e\u0432. \u0421\u043e\u0432\u0435\u0442\u0443\u044e \u0431\u0440\u0430\u0442\u044c \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 <a href=\"https:\/\/graphviz.org\/\" rel=\"noopener noreferrer nofollow\">https:\/\/graphviz.org\/<\/a>. \u0421\u0435\u0439\u0447\u0430\u0441 \u0442\u0430\u043c \u0432\u0435\u0440\u0441\u0438\u044f 6.0.1. \u041c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0438 \u0438\u0437 CygWin \u0441\u043a\u0430\u0447\u0430\u0442\u044c Dot, \u043d\u043e \u0442\u0430\u043c \u0432\u0435\u0440\u0441\u0438\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0430\u044f. \u0421\u0442\u0430\u0440\u044b\u0439 Dot \u043c\u043e\u0436\u0435\u0442 \u0443\u043f\u0430\u0441\u0442\u044c \u0432 run-time \u0438\u0437-\u0437\u0430 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u043a\u0430 \u043f\u0440\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0433\u0440\u0430\u0444\u043e\u0432. \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a dot.exe \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e PATH.<\/p>\n<p>\u041f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u0433\u043e\u043b\u043e\u043c \u044f\u0437\u044b\u043a\u0435 Dot \u044d\u0442\u043e \u043d\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0445\u0435\u043c\u0430\u0445 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u043c \u0421\u0438(\u0438\u0448\u043d\u044b\u0439) \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 (\u0443\u0442\u0438\u043b\u0438\u0442\u0430 cpp.exe) \u0441 \u044f\u0437\u044b\u043a\u043e\u043c dot.  \u0421 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443 (cpp.exe) \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043a\u0430\u043a\u043e\u0439 \u0442\u0430\u043c \u044f\u0437\u044b\u043a (assembler, C++, DeviceTree, Kconfig). \u0417\u0430\u0434\u0430\u0447\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u044b cpp.exe \u044d\u0442\u043e \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0438 \u0437\u0430\u043c\u0435\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430. \u0422\u043e\u0447\u043a\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0435\u0440\u0435\u0432\u044c\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432 Linux \u0442\u043e\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c cpp. \u0418 \u044d\u0442\u043e \u0432\u0441\u0435\u0445 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 cpp \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 dot.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e ToolChain(\u0430) \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c <strong>Zephyr project<\/strong>. <\/p>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 dot<\/p>\n<pre><code class=\"cpp\">#define BINARY [fillcolor = turquoise1] #define GENERATED [fillcolor = moccasin] #define SRC [style=\"filled\"][fillcolor = green] #define TOOL [shape = box][style=\"filled\"] #define SCRIPT [shape = box][style=\"filled\"]   [fillcolor = plum1] #define FILE [shape = note][fillcolor = gold][style=\"filled\"] #define DEVICE [shape = box][fillcolor = grey][style=\"filled\"] <\/code><\/pre>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0444\u0430\u0439\u043b *.doti \u0441 \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 ToolChain(\u0435). *.doti &#8212; \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u044d\u0442\u043e include.<\/p>\n<pre><code class=\"cpp\">     menuconfig TOOL     clang_format [label=\"clang-format.exe\"] TOOL     eclipse [label=\"Eclipse.exe\"] TOOL     eclipsec [label=\"eclipsec.exe\"] TOOL     bash [label=\"bash.exe\"] TOOL     hexdump [label=\"hexdump.exe\"] TOOL     browser [label=\"chrome.exe\"] TOOL     inkscape [label=\"Inkscape.exe\"] TOOL     nrfjprog [label=\"nrfjprog.exe\"] TOOL     Cppcheck [label=\"Cppcheck.exe\"]  TOOL     dtc [label=\"dtc\"]  TOOL     gen_defines_py [label=\"gen_defines.py\"] SCRIPT      readelf [label=\"readelf.exe\"]TOOL     jenkins [label=\"jenkins.exe\"]TOOL     cpp [label=\"cpp.exe\"]TOOL     chocolatey [label=\"chocolatey.exe\"]TOOL     git [label=\"git.exe\"]TOOL     buildprog [label=\"buildprog.py\"]SCRIPT     JLinkGDBServer [label=\"JLinkGDBServer.exe\"]TOOL     cpp_dot [label=\"cpp.exe\"]TOOL     guiconfig  TOOL     cpp_3 [label=\"cpp.exe (preproc)\"] TOOL     linker [label=\"ld.exe (linker)\"] TOOL     compiler [label=\"gcc.exe (ARM Compiler)\"] TOOL     NotePadPp [label=\"Notepad++.exe\"] TOOL     cmd [label=\"cmd.exe\"] TOOL     GDB [label=\"gdb.exe\"] TOOL     cMake [label=\"cmake.exe\"] TOOL     west [label=\"west.py\"] SCRIPT     GN  [label=\"gn.exe\"] TOOL     scripts_kconfig [label=\"zephyr\/scripts\/kconfig.py\"]  SCRIPT     nrfjprog [label=\"nrfjprog.exe\"]  TOOL     Python [label=\"Python.exe\"] TOOL     make [label=\"make.exe\"] TOOL     ninja [label=\"ninja.exe\"] TOOL     objcopy [label=\"objcopy.exe\"] TOOL     as [label=\"as.exe\"]TOOL     nm [label=\"nm.exe\"]TOOL     addr2line [label=\"addr2line.exe\"]TOOL     dot [label=\"dot.exe\"]TOOL     ar [label=\"ar.exe\"]TOOL     { rank = same; ninja; make;} <\/code><\/pre>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c  *.doti \u0444\u0430\u0439\u043b \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 ToolChain(\u0435)<\/p>\n<pre><code class=\"cpp\">    dtsi[label=\"*.dtsi\"] FILE SRC     DotConf[label=\"*.conf (Kernel configuration)\"] FILE SRC     bat_file[label=\"*.bat\"] FILE  SRC     CMakeLists [label=\"CMakeLists.txt \"]  FILE SRC     sh_file[label=\"*.sh\"] FILE SRC     ld_file[label=\"*.ld\"] FILE SRC     mk_file[label=\"*.mk\"] FILE SRC     h_file[label=\"*.h\"] FILE SRC     c_file[label=\"*.c\"] FILE SRC     dot_file[label=\"*.dot\"] FILE SRC     doti_file[label=\"*.doti\"] FILE SRC     yaml[label=\"*.yaml\"] FILE SRC     Kconfig [label=\"Kconfig\"] FILE SRC     dts[label=\"*.dts\"] FILE SRC     zephyr_dts_pre[label=\"zephyr.dts.pre\"] FILE     cproject [label=\".cproject \"] FILE      project [label=\".project (description file)\"] FILE      Kconfig_zephyr[label=\"Kconfig.zephyr\"] FILE      txt_file[label=\"*.txt\"] FILE      obj_file[label=\"*.o\"] FILE      CMakeCache_txt [label=\"CMakeCache.txt \"] FILE      map_file[label=\"*.map\"] FILE      a_file[label=\"*.a\"] FILE      elf_file[label=\"*.elf\"] FILE      hex_file[label=\"*.hex\"] FILE      bin_file[label=\"*.bin\"] FILE      build_ninja [label=\"build.ninja\"]  FILE     json_file[label=\"*.json\"] FILE      svg_file[label=\"*.svg \"] FILE     west_yml[label=\"west.yml (manifest file)\"] FILE     MakeFile[label=\"Makefile\"] FILE     devicetree_generated_h[label=\"devicetree_generated.h\"] FILE     zephyr_dts[label=\"zephyr.dts \"] FILE     autoconfig_h [label=\"autoconfig.h\"]  FILE     s_file [label=\"*.S\"]  FILE     gn_file [label=\"BUILD.gn\"]  FILE     cmd_file [label=\"*.cmd\"]  FILE     pp_file [label=\"*.pp\"]  FILE     DotConfig [label=\".config\"]  FILE<\/code><\/pre>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0444\u0430\u0439\u043b \u0441\u043e \u0441\u0432\u044f\u0437\u044f\u043c\u0438 \u0443\u0442\u0438\u043b\u0438\u0442 \u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439.<\/p>\n<pre><code class=\"cpp\"> digraph  graphname {     rankdir=TB;     splines=ortho;     #include \"ToolChain_nRF5340_hardware.doti\"          subgraph cluster_NetTop {          style=filled;             color=aliceblue;             label = \"NetTop\";             HostCpu             HOST_USB             subgraph cluster_Windows10 {             style=filled;         color=lightblue;                 label = \"Windows10\";                                  #include \"ToolChain_nRF5340_tools.doti\"                 #include \"ToolChain_nRF5340_files.doti\"                                  NotePadPp->bat_file[label=\"*.bat\"][dir=\"both\"]                 NotePadPp->doti_file[label=\"*.doti\"] [dir=\"both\"]                 NotePadPp->sh_file[label=\"*.sh\"][dir=\"both\"]                 NotePadPp->mk_file[label=\"*.mk\"][dir=\"both\"]                 NotePadPp->c_file[label=\"*.c\"][dir=\"both\"]                 NotePadPp->h_file[label=\"*.h\"][dir=\"both\"]                 bat_file->cmd[label=\"*.bat\"]                                                sh_file->bash[label=\"*.sh\"]                               subgraph cluster_JVM {             style=filled;         color=lightgreen;                 label = \"JVM\";                 jenkins->bash                 eclipsec                 cproject->eclipse[label=\".cproject\"][dir=\"both\"]                 project->eclipse[label=\".project\"][dir=\"both\"]                   }                              subgraph cluster_BuildConfig {                 style=filled;             color=khaki1;                 label = \"Build Configuration (buildsystem)\";                 bash->buildprog                 cmd->buildprog                 Python->buildprog                 json_file->buildprog [label=\"*.json\"]                                  Python->west                 buildprog->west[label=\"?\"]                 yaml->gen_defines_py[label=\"*.yaml\"]                 dtsi->cpp[label=\"*.dtsi\"]                   dts->cpp                 cpp->zephyr_dts_pre                 zephyr_dts_pre ->gen_defines_py[label=\"zephyr.dts.pre\"]                  gen_defines_py->zephyr_dts[label=\"zephyr.dts\"]                 gen_defines_py->devicetree_generated_h[label=\"devicetree_generated.h\"]                  zephyr_dts->dtc                 CMakeLists->cMake[label=\"CMakeLists.txt\"]                  west->cMake                 west->scripts_kconfig                 cMake->CMakeCache_txt[label=\"CMakeCache.txt\"]  [dir=\"both\"]                 gn_file->GN                 GN->build_ninja                 cMake->build_ninja[label=\"build.ninja\"]                   cMake->MakeFile             menuconfig  [label=\"menuconfig \"]                  Kconfig->menuconfig [label=\"Kconfig\"]                  Kconfig->Kconfig_zephyr                                          Kconfig->guiconfig[label=\"Kconfig\"]                  Kconfig->scripts_kconfig[label=\"Kconfig\"]                  DotConf->scripts_kconfig[label=\"*.conf\"]                 scripts_kconfig->autoconfig_h[label=\"autoconfig.h\"]                  scripts_kconfig->DotConfig[label=\"*.config\"]              }\/\/cluster_BuildConfig                                    ld_file->git[label=\"*.ld\"][dir=\"both\"]                 sh_file->git[label=\"*.sh\"][dir=\"both\"]                 h_file->git[label=\"*.h\"][dir=\"both\"]                 c_file->git[label=\"*.c\"][dir=\"both\"]                 mk_file->git[label=\"*.mk\"][dir=\"both\"]                 doti_file->git[label=\"*.doti\"][dir=\"both\"]                 cproject->git[label=\".cproject\"][dir=\"both\"]                 MakeFile->git[label=\"Makefile\"][dir=\"both\"]                 project->git[label=\".project\"][dir=\"both\"]                                c_file->eclipse[label=\"*.c \"]             h_file->eclipse[label=\"*.h\"]             eclipse->c_file[label=\"*.c \"]             eclipse->h_file[label=\"*.h\"]             eclipse->MakeFile[dir=\"both\"][label=\"Makefile\"]             eclipse->mk_file[dir=\"both\"][label=\"*.mk\"]                                            subgraph cluster_BuildArtefact {                         style=filled;             color=gray100;                     label = \"Build Artefact\";                     build_ninja->ninja[label=\"Makefile\"]                       ninja->cpp_3                     h_file->cpp_3                     c_file->cpp_3                     autoconfig_h->cpp_3[label=\"autoconfig.h\"]                     devicetree_generated_h->cpp_3                     pp_file->compiler                     compiler->s_file   [label=\"*.S\"]                     s_file->as                     compiler->ar                     as->obj_file                     obj_file->linker  [label=\"*.obj\"] \/*[tailport=s] [headport=n] *\/                     obj_file->ar[label=\"*.o\"]                     ar->a_file[label=\"*.a\"]                     obj_file->nm[label=\"*.o\"]                     ld_file->linker [label=\"*.ld\"]\/\/[headport=n]                      cmd_file->linker[label=\"*.cmd\"]                     a_file->linker[label=\"*.a\"]                     linker->elf_file[label=\"*.elf\"]                       linker->map_file[label=\"*.map\"]                       elf_file->addr2line[label=\"*.elf\"]                     addr2line->eclipse[label=\".txt\"]                     elf_file -> objcopy                     objcopy->bin_file                     objcopy->hex_file                     elf_file->readelf[label=\"*.elf\"]                     elf_file->GDB[label=\"*.elf\"]                     GDB-> JLinkGDBServer[dir=\"both\"][label=\"port:2331\"]                     bin_file->hexdump[label=\"*.bin\"]                     hexdump->txt_file[label=\"*.txt\"]                     mk_file->make[label=\"*.mk\"]                       MakeFile->make[label=\"MakeFile\"]                       make->cpp_3                     cpp_3 -> pp_file                     hex_file->nrfjprog                             }                               subgraph cluster_BuildDoc {                     style=filled;             color=beige;                     label = \"Build Documentation\";                     doti_file->cpp_dot                     cpp_dot->dot_file                     dot_file->dot                     dot->svg_file[label=\"*.svg\"]                     svg_file->browser[label=\"*.svg\"]                     svg_file->inkscape[label=\"*.svg\"]         }                     clang_format->c_file[label=\"*.c\"][dir=\"both\"]                     clang_format->h_file[label=\"*.h\"][dir=\"both\"]                     h_file->Cppcheck[label=\"*.h\"]                     c_file->Cppcheck[label=\"*.c\"]                                            browser->jenkins[label=\"8080\"]                                     }\/\/Win10             \/\/NotePadPp->Monitor     }\/\/NetTop       eclipse->Monitor     nrfjprog->HOST_USB     JLinkGDBServer->HOST_USB     subgraph cluster_Board {             style=filled;             color=lightblue;             label = \"Board\";             USB_CONNECTOR_BOARD             Programmator             TargetMcu           }   } <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u0430\u043c *.dot \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0440\u0435\u043d\u0434\u0435\u0440\u0430 dot.exe, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c *.dot \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u0443\u044e \u0433\u0440\u0430\u0444\u0438\u043a\u0443 *.svg \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043e\u043a \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u043f\u0440\u044f\u043c\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043c\u0438\u043a\u0440\u043e-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043d\u0430\u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0f9\/7ad\/16a\/0f97ad16aa9ca36e8c8f9a1010a3cb2c.png\" width=\"268\" height=\"730\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0f9\/7ad\/16a\/0f97ad16aa9ca36e8c8f9a1010a3cb2c.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0443\u0442 \u043d\u0430\u043c \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>make<\/strong>. \u0412\u043e\u0442 \u0435\u0435 \u043a\u043e\u0434<\/p>\n<pre><code class=\"bash\"> CC=dot RENDER=chrome.exe CURRENT_DIR = $(shell pwd) $(info CURRENT_DIR=  $(CURRENT_DIR) )  CURRENT_DIR := $(subst \/cygdrive\/c\/,C:\/, $(CURRENT_DIR)) $(info CURRENT_DIR=$(CURRENT_DIR) )  SOURCES_DOT += $(CURRENT_DIR)\/ToolChain_nRF5340.doti SOURCES_DOT_RES += $(CURRENT_DIR)\/ToolChain_nRF5340_res.dot  SOURCES_DOT := $(subst \/cygdrive\/c\/,C:\/, $(SOURCES_DOT)) $(info SOURCES_DOT=  $(SOURCES_DOT) )  ART_SVG := $(subst doti,svg, $(SOURCES_DOT)) ART_PDF := $(subst doti,pdf, $(SOURCES_DOT))  OPT += DOT_OPT +=-Tsvg  DOT_OPT +=-v   DOT_OPT +=-L1 #LAYOUT_ENGINE = -Kneato  #LAYOUT_ENGINE = -Kfdp  #LAYOUT_ENGINE = -Ksfdp #LAYOUT_ENGINE = -Ktwopi #LAYOUT_ENGINE = -Kosage #LAYOUT_ENGINE = -Kpatchwork LAYOUT_ENGINE = -Kdot   preproc:$(SOURCES_DOT) $(info Preproc...) cpp $(SOURCES_DOT)  $(OPT) -E -o $(SOURCES_DOT_RES)  generate_pdf: preproc $(info route graph...) $(CC) -Tpdf $(LAYOUT_ENGINE) $(SOURCES_DOT_RES) -o $(ART_PDF)    generate_svg: preproc $(info route graph...) $(CC) $(DOT_OPT) $(SOURCES_DOT_RES) -o $(ART_SVG)  print_svg: generate_svg generate_pdf $(info print_svg) $(RENDER) -open $(ART_SVG) $(RENDER) -open $(ART_PDF)  all:  print_svg $(info All)  clean: $(info clean) rm ToolChain_nRF5340_res.svg rm $(SOURCES_DOT_RES)     #$(ART_SVG):$(ART_SVG)  <\/code><\/pre>\n<p>\u0414\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 ninja \u044f \u0442\u043e\u0436\u0435 \u043d\u0430\u043a\u0440\u043e\u043f\u0430\u043b ninja \u0441\u043a\u0440\u0438\u043f\u0442 <\/p>\n<pre><code class=\"bash\">cflags =  -Tsvg cur_dir =  C:\\projects\\code_base_workspace\\code_base_firmware\\docs\\toolchain_nRF5340\\ RENDER=\"C:\/Program Files\/Google\/Chrome\/Application\/chrome.exe\"   rule preproc   command = cpp $in -E -o $out  rule generate_svg   command = dot $cflags  $in -o $out  rule print_in_browse   command = $RENDER  -open $cur_dir\/$in     rule clean_temp   command = rm  *_generated.svg    command = rm  *_res.dot  rule svg2pdf   command = dot.exe -Tpdf  $in -o $out     build clean: clean_temp    build ToolChain_nRF5340_res.dot: preproc  ToolChain_nRF5340.doti   build ToolChain_nRF5340_generated.svg: generate_svg  ToolChain_nRF5340_res.dot   build ToolChain_nRF5340_generated.pdf: svg2pdf  ToolChain_nRF5340_res.dot   build make_svg: print_in_browse  ToolChain_nRF5340_generated.svg      build make_pdf: print_in_browse  ToolChain_nRF5340_generated.pdf      default make_pdf  <\/code><\/pre>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0431\u043b\u043e\u043a \u0441\u0445\u0435\u043c\u043a\u0443 ToolChain \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438 Zephyr.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b49\/70f\/ef9\/b4970fef9d45530f91bc611f6778c48d.png\" width=\"3206\" height=\"3419\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b49\/70f\/ef9\/b4970fef9d45530f91bc611f6778c48d.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0423\u0441\u043f\u0435\u0445! \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435 \u043a\u0430\u043a \u043d\u0430 \u043b\u0430\u0434\u043e\u043d\u0438. \u041f\u0440\u0438\u0447\u0435\u043c \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 *.svg \u0438\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0434\u0430\u0436\u0435 Ctrl+F \u043f\u043e\u0438\u0441\u043a \u0435\u0441\u0442\u044c! \u0421\u0443\u043f\u0435\u0440!<\/p>\n<p>\u0411\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043f\u0440\u043e Zephyr. \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e Zephyr \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0432 <strong>\u0434\u0432\u0430<\/strong> \u0441\u0443\u043f\u0435\u0440 <strong>\u044d\u0442\u0430\u043f\u0430<\/strong>. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 Zephyr \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u044d\u0442\u043e Makefile \u0438\u043b\u0438 build.ninja \u043f\u043b\u044e\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 *.h, \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u0441\u0430\u043c\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u043d\u0435\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041d\u0430 \u0441\u0445\u0435\u043c\u0435 \u0432\u0441\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0432\u0438\u0434\u043d\u043e. \u0420\u0443\u043b\u0438\u0442 \u0432\u0441\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 CMake. <\/p>\n<p>\u0412\u043e\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 *.dot \u043a\u043e\u0434 \u0441 \u0432\u044b\u0445\u043e\u0434\u0430 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u043f\u043e\u0434 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c<\/p>\n<details class=\"spoiler\">\n<summary>Hidden text<\/summary>\n<div class=\"spoiler__content\">\n<pre><code># 1 \"C:\/1_job\/0_NPP_IT_ELMA\/code_base_workspace\/code_base_firmware\/docs\/toolchain_nRF5340\/ToolChain_nRF5340.doti\" # 1 \"&lt;built-in>\" # 1 \"&lt;command-line>\" # 1 \"C:\/1_job\/0_NPP_IT_ELMA\/code_base_workspace\/code_base_firmware\/docs\/toolchain_nRF5340\/ToolChain_nRF5340.doti\"       digraph graphname {     rankdir=TB;     splines=ortho; # 1 \"C:\/1_job\/0_NPP_IT_ELMA\/code_base_workspace\/code_base_firmware\/docs\/toolchain_nRF5340\/ToolChain_nRF5340_hardware.doti\" 1     Monitor [label=\"Monitor\"] [shape = box][fillcolor = grey][style=\"filled\"]     Programmator [label=\"Programmator\"] [shape = box][fillcolor = grey][style=\"filled\"]     TargetMcu [label=\"nRF5340 ARM Cortex-M33 2x\"] [shape = box][fillcolor = grey][style=\"filled\"]     HOST_USB [label=\"USB\"] [shape = box][fillcolor = grey][style=\"filled\"]     USB_CONNECTOR_BOARD [label=\"USB\"] [shape = box][fillcolor = grey][style=\"filled\"]     HostCpu [label=\"X86 AMD64\"] [shape = box][fillcolor = grey][style=\"filled\"]     HostCpu->HOST_USB     HOST_USB->USB_CONNECTOR_BOARD[label=\"USB\"]     USB_CONNECTOR_BOARD->Programmator[label=\"USB\"]     Programmator->TargetMcu[label=\"SWD\"] # 11 \"C:\/1_job\/0_NPP_IT_ELMA\/code_base_workspace\/code_base_firmware\/docs\/toolchain_nRF5340\/ToolChain_nRF5340.doti\" 2        subgraph cluster_NetTop {          style=filled;             color=aliceblue;             label = \"NetTop\";             HostCpu             HOST_USB             subgraph cluster_Windows10 {              style=filled;           color=lightblue;                 label = \"Windows10\";  # 1 \"C:\/1_job\/0_NPP_IT_ELMA\/code_base_workspace\/code_base_firmware\/docs\/toolchain_nRF5340\/ToolChain_nRF5340_tools.doti\" 1        menuconfig [shape = box][style=\"filled\"]     clang_format [label=\"clang-format.exe\"] [shape = box][style=\"filled\"]     eclipse [label=\"Eclipse.exe\"] [shape = box][style=\"filled\"]     eclipsec [label=\"eclipsec.exe\"] [shape = box][style=\"filled\"]     bash [label=\"bash.exe\"] [shape = box][style=\"filled\"]     hexdump [label=\"hexdump.exe\"] [shape = box][style=\"filled\"]     browser [label=\"chrome.exe\"] [shape = box][style=\"filled\"]     inkscape [label=\"Inkscape.exe\"] [shape = box][style=\"filled\"]     nrfjprog [label=\"nrfjprog.exe\"] [shape = box][style=\"filled\"]     Cppcheck [label=\"Cppcheck.exe\"] [shape = box][style=\"filled\"]     dtc [label=\"dtc\"] [shape = box][style=\"filled\"]     gen_defines_py [label=\"gen_defines.py\"] [shape = box][style=\"filled\"] [fillcolor = plum1]     readelf [label=\"readelf.exe\"][shape = box][style=\"filled\"]     jenkins [label=\"jenkins.exe\"][shape = box][style=\"filled\"]     cpp [label=\"cpp.exe\"][shape = box][style=\"filled\"]     chocolatey [label=\"chocolatey.exe\"][shape = box][style=\"filled\"]     git [label=\"git.exe\"][shape = box][style=\"filled\"]     buildprog [label=\"buildprog.py\"][shape = box][style=\"filled\"] [fillcolor = plum1]     JLinkGDBServer [label=\"JLinkGDBServer.exe\"][shape = box][style=\"filled\"]     cpp_dot [label=\"cpp.exe\"][shape = box][style=\"filled\"]     guiconfig [shape = box][style=\"filled\"]     cpp_3 [label=\"cpp.exe (preproc)\"] [shape = box][style=\"filled\"]     linker [label=\"ld.exe (linker)\"] [shape = box][style=\"filled\"]     compiler [label=\"gcc.exe (ARM Compiler)\"] [shape = box][style=\"filled\"]     NotePadPp [label=\"Notepad++.exe\"] [shape = box][style=\"filled\"]     cmd [label=\"cmd.exe\"] [shape = box][style=\"filled\"]     GDB [label=\"gdb.exe\"] [shape = box][style=\"filled\"]     cMake [label=\"cmake.exe\"] [shape = box][style=\"filled\"]     west [label=\"west.py\"] [shape = box][style=\"filled\"] [fillcolor = plum1]     GN [label=\"gn.exe\"] [shape = box][style=\"filled\"]     scripts_kconfig [label=\"zephyr\/scripts\/kconfig.py\"] [shape = box][style=\"filled\"] [fillcolor = plum1]     nrfjprog [label=\"nrfjprog.exe\"] [shape = box][style=\"filled\"]     Python [label=\"Python.exe\"] [shape = box][style=\"filled\"]             make [label=\"make.exe\"] [shape = box][style=\"filled\"]             ninja [label=\"ninja.exe\"] [shape = box][style=\"filled\"]     objcopy [label=\"objcopy.exe\"] [shape = box][style=\"filled\"]     as [label=\"as.exe\"][shape = box][style=\"filled\"]     nm [label=\"nm.exe\"][shape = box][style=\"filled\"]     addr2line [label=\"addr2line.exe\"][shape = box][style=\"filled\"]     dot [label=\"dot.exe\"][shape = box][style=\"filled\"]     ar [label=\"ar.exe\"][shape = box][style=\"filled\"] # 26 \"C:\/1_job\/0_NPP_IT_ELMA\/code_base_workspace\/code_base_firmware\/docs\/toolchain_nRF5340\/ToolChain_nRF5340.doti\" 2 # 1 \"C:\/1_job\/0_NPP_IT_ELMA\/code_base_workspace\/code_base_firmware\/docs\/toolchain_nRF5340\/ToolChain_nRF5340_files.doti\" 1     dtsi[label=\"*.dtsi\"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     DotConf[label=\"*.conf (Kernel configuration)\"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     bat_file[label=\"*.bat\"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     CMakeLists [label=\"CMakeLists.txt \"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     sh_file[label=\"*.sh\"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     ld_file[label=\"*.ld\"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     mk_file[label=\"*.mk\"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     h_file[label=\"*.h\"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     c_file[label=\"*.c\"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     dot_file[label=\"*.dot\"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     doti_file[label=\"*.doti\"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     yaml[label=\"*.yaml\"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     Kconfig [label=\"Kconfig\"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     dts[label=\"*.dts\"] [shape = note][fillcolor = gold][style=\"filled\"] [style=\"filled\"][fillcolor = green]     zephyr_dts_pre[label=\"zephyr.dts.pre\"] [shape = note][fillcolor = gold][style=\"filled\"]     cproject [label=\".cproject \"] [shape = note][fillcolor = gold][style=\"filled\"]     project [label=\".project (description file)\"] [shape = note][fillcolor = gold][style=\"filled\"]     Kconfig_zephyr[label=\"Kconfig.zephyr\"] [shape = note][fillcolor = gold][style=\"filled\"]     txt_file[label=\"*.txt\"] [shape = note][fillcolor = gold][style=\"filled\"]     obj_file[label=\"*.o\"] [shape = note][fillcolor = gold][style=\"filled\"]     CMakeCache_txt [label=\"CMakeCache.txt \"] [shape = note][fillcolor = gold][style=\"filled\"]     map_file[label=\"*.map\"] [shape = note][fillcolor = gold][style=\"filled\"]     a_file[label=\"*.a\"] [shape = note][fillcolor = gold][style=\"filled\"]     elf_file[label=\"*.elf\"] [shape = note][fillcolor = gold][style=\"filled\"]     hex_file[label=\"*.hex\"] [shape = note][fillcolor = gold][style=\"filled\"]     bin_file[label=\"*.bin\"] [shape = note][fillcolor = gold][style=\"filled\"]     build_ninja [label=\"build.ninja\"] [shape = note][fillcolor = gold][style=\"filled\"]     json_file[label=\"*.json\"] [shape = note][fillcolor = gold][style=\"filled\"]     svg_file[label=\"*.svg \"] [shape = note][fillcolor = gold][style=\"filled\"]     west_yml[label=\"west.yml (manifest file)\"] [shape = note][fillcolor = gold][style=\"filled\"]     MakeFile[label=\"Makefile\"] [shape = note][fillcolor = gold][style=\"filled\"]     devicetree_generated_h[label=\"devicetree_generated.h\"] [shape = note][fillcolor = gold][style=\"filled\"]     zephyr_dts[label=\"zephyr.dts \"] [shape = note][fillcolor = gold][style=\"filled\"]     autoconfig_h [label=\"autoconfig.h\"] [shape = note][fillcolor = gold][style=\"filled\"]     s_file [label=\"*.S\"] [shape = note][fillcolor = gold][style=\"filled\"]     gn_file [label=\"BUILD.gn\"] [shape = note][fillcolor = gold][style=\"filled\"]     cmd_file [label=\"*.cmd\"] [shape = note][fillcolor = gold][style=\"filled\"]     pp_file [label=\"*.pp\"] [shape = note][fillcolor = gold][style=\"filled\"]     DotConfig [label=\".config\"] [shape = note][fillcolor = gold][style=\"filled\"] # 27 \"C:\/1_job\/0_NPP_IT_ELMA\/code_base_workspace\/code_base_firmware\/docs\/toolchain_nRF5340\/ToolChain_nRF5340.doti\" 2                  NotePadPp->bat_file[label=\"*.bat\"][dir=\"both\"]                 NotePadPp->doti_file[label=\"*.doti\"] [dir=\"both\"]                 NotePadPp->sh_file[label=\"*.sh\"][dir=\"both\"]                 NotePadPp->mk_file[label=\"*.mk\"][dir=\"both\"]                 NotePadPp->c_file[label=\"*.c\"][dir=\"both\"]                 NotePadPp->h_file[label=\"*.h\"][dir=\"both\"]                 bat_file->cmd[label=\"*.bat\"]                   sh_file->bash[label=\"*.sh\"]              subgraph cluster_JVM {              style=filled;           color=lightgreen;                 label = \"JVM\";                 jenkins->bash                 eclipsec                 cproject->eclipse[label=\".cproject\"][dir=\"both\"]                 project->eclipse[label=\".project\"][dir=\"both\"]              }              subgraph cluster_BuildConfig {                 style=filled;              color=khaki1;                 label = \"Build Configuration (buildsystem)\";                 bash->buildprog                 cmd->buildprog                 Python->buildprog                 json_file->buildprog [label=\"*.json\"]                  Python->west                 buildprog->west[label=\"?\"]                 yaml->gen_defines_py[label=\"*.yaml\"]                 dtsi->cpp[label=\"*.dtsi\"]                 dts->cpp                 cpp->zephyr_dts_pre                 zephyr_dts_pre ->gen_defines_py[label=\"zephyr.dts.pre\"]                 gen_defines_py->zephyr_dts[label=\"zephyr.dts\"]                 gen_defines_py->devicetree_generated_h[label=\"devicetree_generated.h\"]                 zephyr_dts->dtc                 CMakeLists->cMake[label=\"CMakeLists.txt\"]                 west->cMake                 west->scripts_kconfig                 cMake->CMakeCache_txt[label=\"CMakeCache.txt\"] [dir=\"both\"]                 gn_file->GN                 GN->build_ninja                 cMake->build_ninja[label=\"build.ninja\"]                 cMake->MakeFile              menuconfig [label=\"menuconfig \"]                 Kconfig->menuconfig [label=\"Kconfig\"]                 Kconfig->Kconfig_zephyr                   Kconfig->guiconfig[label=\"Kconfig\"]                 Kconfig->scripts_kconfig[label=\"Kconfig\"]                 DotConf->scripts_kconfig[label=\"*.conf\"]                 scripts_kconfig->autoconfig_h[label=\"autoconfig.h\"]                 scripts_kconfig->DotConfig[label=\"*.config\"]             }                  ld_file->git[label=\"*.ld\"][dir=\"both\"]                 sh_file->git[label=\"*.sh\"][dir=\"both\"]                 h_file->git[label=\"*.h\"][dir=\"both\"]                 c_file->git[label=\"*.c\"][dir=\"both\"]                 mk_file->git[label=\"*.mk\"][dir=\"both\"]                 doti_file->git[label=\"*.doti\"][dir=\"both\"]                 cproject->git[label=\".cproject\"][dir=\"both\"]                 MakeFile->git[label=\"Makefile\"][dir=\"both\"]                 project->git[label=\".project\"][dir=\"both\"]              c_file->eclipse[label=\"*.c \"]             h_file->eclipse[label=\"*.h\"]             eclipse->c_file[label=\"*.c \"]             eclipse->h_file[label=\"*.h\"]             eclipse->MakeFile[dir=\"both\"][label=\"Makefile\"]             eclipse->mk_file[dir=\"both\"][label=\"*.mk\"]                    subgraph cluster_BuildArtefact {                          style=filled;               color=gray100;                     label = \"Build Artefact\";                     build_ninja->ninja[label=\"Makefile\"]                     ninja->cpp_3                     h_file->cpp_3                     c_file->cpp_3                     autoconfig_h->cpp_3[label=\"autoconfig.h\"]                     devicetree_generated_h->cpp_3                     pp_file->compiler                     compiler->s_file [label=\"*.S\"]                     s_file->as                     compiler->ar                     as->obj_file                     obj_file->linker [label=\"*.obj\"]                     obj_file->ar[label=\"*.o\"]                     ar->a_file[label=\"*.a\"]                     obj_file->nm[label=\"*.o\"]                     ld_file->linker [label=\"*.ld\"]                     cmd_file->linker[label=\"*.cmd\"]                     a_file->linker[label=\"*.a\"]                     linker->elf_file[label=\"*.elf\"]                     linker->map_file[label=\"*.map\"]                     elf_file->addr2line[label=\"*.elf\"]                     addr2line->eclipse[label=\".txt\"]                     elf_file -> objcopy                     objcopy->bin_file                     objcopy->hex_file                     elf_file->readelf[label=\"*.elf\"]                     elf_file->GDB[label=\"*.elf\"]                     GDB-> JLinkGDBServer[dir=\"both\"][label=\"port:2331\"]                     bin_file->hexdump[label=\"*.bin\"]                     hexdump->txt_file[label=\"*.txt\"]                     mk_file->make[label=\"*.mk\"]                     MakeFile->make[label=\"MakeFile\"]                     make->cpp_3                     cpp_3 -> pp_file                     hex_file->nrfjprog          }           subgraph cluster_BuildDoc {                     style=filled;               color=beige;                     label = \"Build Documentation\";                     doti_file->cpp_dot                     cpp_dot->dot_file                     dot_file->dot                     dot->svg_file[label=\"*.svg\"]                     svg_file->browser[label=\"*.svg\"]                     svg_file->inkscape[label=\"*.svg\"]         }                     clang_format->c_file[label=\"*.c\"][dir=\"both\"]                     clang_format->h_file[label=\"*.h\"][dir=\"both\"]                     h_file->Cppcheck[label=\"*.h\"]                     c_file->Cppcheck[label=\"*.c\"]                  browser->jenkins[label=\"8080\"]                }      }      eclipse->Monitor     nrfjprog->HOST_USB     JLinkGDBServer->HOST_USB     subgraph cluster_Board {             style=filled;             color=lightblue;             label = \"Board\";             USB_CONNECTOR_BOARD             Programmator             TargetMcu      }  } <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p><strong>\u0412\u044b\u0432\u043e\u0434<\/strong><\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435 <strong>\u0441\u0438\u043d\u0435\u0440\u0433\u0438\u044f<\/strong> \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 <strong>cpp<\/strong> \u0438 \u044f\u0437\u044b\u043a\u0430 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 <strong>Dot<\/strong> \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0430 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u043e\u0444\u0442\u0430 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0442\u043e\u043d\u043d\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0442 \u0440\u0443\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u043a\u0438. \u041c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0438\u0437 Dot \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u044b \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0446\u0435\u043f\u043e\u0447\u0435\u043a, \u0433\u0440\u0430\u0444\u044b \u0437\u0430\u0434\u0430\u0447 \u0438\u0437 task traker(\u0430), \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u044b, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0441\u0438\u0441\u0442\u0435\u043c \u043d\u0430 \u0447\u0438\u043f\u0435 SoC. \u0414\u0430 \u0432\u0441\u0451, \u0447\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0433\u043e\u0434\u043d\u043e, \u0447\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u0433\u0440\u0430\u0444\u043e \u043e\u0431\u0440\u0430\u0437\u043d\u0443\u044e \u043f\u0440\u0438\u0440\u043e\u0434\u0443. <\/p>\n<p>\u042f\u0437\u044b\u043a Dot \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448 \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u0435\u043d, \u0447\u0442\u043e \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u043e \u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0441\u043a\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0430\u043a\u0443\u043b\u044c\u0442\u0435\u0442\u043e\u0432 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0434\u043d\u043e\u0439 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c. <\/p>\n<p>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u0432\u044f\u0437\u043a\u0443 \u0441pp\/dot\/make \u0442\u0435\u043c \u043a\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u0438\u0441\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0438 \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0430\u043c\u0438. \u042d\u0442\u043e \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043c \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043d\u0435\u0441\u0442\u0438 \u043f\u043e\u043b\u044c\u0437\u0443.<\/p>\n<p><strong>\u0421\u0441\u044b\u043b\u043a\u0438 \u043f\u0440\u043e \u044f\u0437\u044b\u043a Dot<\/strong><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/682346\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/post\/682346\/<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/499170\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/post\/499170\/<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/337078\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/post\/337078\/<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/662561\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/post\/662561\/<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/258295\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/post\/258295\/<\/a><\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <\/p>\n<div class=\"tm-article-poll\">\n<div class=\"tm-notice tm-article-poll__notice tm-notice_positive\"><!----> <\/p>\n<div class=\"tm-notice__inner\"><!----> <\/p>\n<div data-test-id=\"notice-content\" class=\"tm-notice__content\"><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/post\/688542\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__header\">\u0412\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u044f\u0437\u044b\u043a\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0433\u0440\u0430\u0444\u043e\u0432 Dot?<\/div>\n<div class=\"tm-article-poll__answers\">\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             50%           <\/span> <span class=\"tm-article-poll__answer-label\">\u0434\u0430<\/span> <span class=\"tm-article-poll__answer-votes\">             7           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:50%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">             50%           <\/span> <span class=\"tm-article-poll__answer-label\">\u043d\u0435\u0442<\/span> <span class=\"tm-article-poll__answer-votes\">             7           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width:50%;\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__stats\">        \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 14 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.          \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043d\u0435\u0442.      <\/div>\n<\/div>\n<div class=\"tm-article-poll\">\n<div class=\"tm-notice tm-article-poll__notice tm-notice_positive\"><!----> <\/p>\n<div class=\"tm-notice__inner\"><!----> <\/p>\n<div data-test-id=\"notice-content\" class=\"tm-notice__content\"><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/post\/688542\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__header\">\u0412\u044b \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0441\u0445\u0435\u043c\u044b ToolChain(\u0430)?<\/div>\n<div class=\"tm-article-poll__answers\">\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             21.43%           <\/span> <span class=\"tm-article-poll__answer-label\">\u0434\u0430<\/span> <span class=\"tm-article-poll__answer-votes\">             3           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:21.43%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">             78.57%           <\/span> <span class=\"tm-article-poll__answer-label\">\u043d\u0435\u0442<\/span> <span class=\"tm-article-poll__answer-votes\">             11           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width:78.57%;\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__stats\">        \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 14 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.          \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043d\u0435\u0442.      <\/div>\n<\/div>\n<div class=\"tm-article-poll\">\n<div class=\"tm-notice tm-article-poll__notice tm-notice_positive\"><!----> <\/p>\n<div class=\"tm-notice__inner\"><!----> <\/p>\n<div data-test-id=\"notice-content\" class=\"tm-notice__content\"><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/post\/688542\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__header\">\u0412\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0438\u0437-\u043f\u043e\u0434 Zephyr project?<\/div>\n<div class=\"tm-article-poll__answers\">\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             9.09%           <\/span> <span class=\"tm-article-poll__answer-label\">\u0434\u0430<\/span> <span class=\"tm-article-poll__answer-votes\">             1           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:9.09%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">             90.91%           <\/span> <span class=\"tm-article-poll__answer-label\">\u043d\u0435\u0442<\/span> <span class=\"tm-article-poll__answer-votes\">             10           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width:90.91%;\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__stats\">        \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 11 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.          \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043d\u0435\u0442.      <\/div>\n<\/div>\n<div class=\"tm-article-poll\">\n<div class=\"tm-notice tm-article-poll__notice tm-notice_positive\"><!----> <\/p>\n<div class=\"tm-notice__inner\"><!----> <\/p>\n<div data-test-id=\"notice-content\" class=\"tm-notice__content\"><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/post\/688542\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__header\">\u0412\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438 \u043a\u043e\u0434 \u0438\u0437-\u043f\u043e\u0434 Ninja?<\/div>\n<div class=\"tm-article-poll__answers\">\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             41.67%           <\/span> <span class=\"tm-article-poll__answer-label\">\u0434\u0430<\/span> <span class=\"tm-article-poll__answer-votes\">             5           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:41.67%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">             58.33%           <\/span> <span class=\"tm-article-poll__answer-label\">\u043d\u0435\u0442<\/span> <span class=\"tm-article-poll__answer-votes\">             7           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width:58.33%;\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__stats\">        \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 12 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.          \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043d\u0435\u0442.      <\/div>\n<\/div>\n<div class=\"tm-article-poll\">\n<div class=\"tm-notice tm-article-poll__notice tm-notice_positive\"><!----> <\/p>\n<div class=\"tm-notice__inner\"><!----> <\/p>\n<div data-test-id=\"notice-content\" class=\"tm-notice__content\"><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/post\/688542\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__header\">\u0412\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438 \u043a\u043e\u0434 \u0438\u0437-\u043f\u043e\u0434 Makefile(\u043e\u0432)?<\/div>\n<div class=\"tm-article-poll__answers\">\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">             92.31%           <\/span> <span class=\"tm-article-poll__answer-label\">\u0434\u0430<\/span> <span class=\"tm-article-poll__answer-votes\">             12           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width:92.31%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             7.69%           <\/span> <span class=\"tm-article-poll__answer-label\">\u043d\u0435\u0442<\/span> <span class=\"tm-article-poll__answer-votes\">             1           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:7.69%;\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__stats\">        \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 13 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.          \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043d\u0435\u0442.      <\/div>\n<\/div>\n<div class=\"tm-article-poll\">\n<div class=\"tm-notice tm-article-poll__notice tm-notice_positive\"><!----> <\/p>\n<div class=\"tm-notice__inner\"><!----> <\/p>\n<div data-test-id=\"notice-content\" class=\"tm-notice__content\"><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/post\/688542\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__header\">\u0412\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438\u0437 \u043a\u043e\u0434\u0430 (\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438)?<\/div>\n<div class=\"tm-article-poll__answers\">\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">             80%           <\/span> <span class=\"tm-article-poll__answer-label\">\u0434\u0430<\/span> <span class=\"tm-article-poll__answer-votes\">             8           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width:80%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             20%           <\/span> <span class=\"tm-article-poll__answer-label\">\u043d\u0435\u0442<\/span> <span class=\"tm-article-poll__answer-votes\">             2           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:20%;\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__stats\">        \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 10 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.          \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043d\u0435\u0442.      <\/div>\n<\/div>\n<div class=\"tm-article-poll\">\n<div class=\"tm-notice tm-article-poll__notice tm-notice_positive\"><!----> <\/p>\n<div class=\"tm-notice__inner\"><!----> <\/p>\n<div data-test-id=\"notice-content\" class=\"tm-notice__content\"><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/post\/688542\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__header\">\u0412\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u044f\u0437\u044b\u043a\u043e\u043c Dot \u0432 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c cpp?<\/div>\n<div class=\"tm-article-poll__answers\">\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             11.11%           <\/span> <span class=\"tm-article-poll__answer-label\">\u0434\u0430<\/span> <span class=\"tm-article-poll__answer-votes\">             1           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:11.11%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">             88.89%           <\/span> <span class=\"tm-article-poll__answer-label\">\u043d\u0435\u0442<\/span> <span class=\"tm-article-poll__answer-votes\">             8           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width:88.89%;\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__stats\">        \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 9 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.          \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f 1 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c.      <\/div>\n<\/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\/post\/688542\/\"> https:\/\/habr.com\/ru\/post\/688542\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043e\u0444\u0442\u0430 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e \u043a\u043e\u0434. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043e\u0444\u0442\u0430 \u044d\u0442\u043e \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u043f\u0440\u043e Toolchain(\u044b). \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u0438\u0439 \u043f\u0443\u0442\u044c \u0438 \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0433\u043e\u0434\u043e\u043c \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0432\u0441\u0435 \u0431\u043e\u043b\u0435\u0435 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438. \u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0444\u0442\u0430 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0430\u0434\u0438\u0439\u043d\u044b\u0435, \u0447\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0438\u0445 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. <\/p>\n<p>Toolchain \u044d\u0442\u043e \u043a\u0430\u043a \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440. \u0415\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u043e\u0434\u043d\u0438 \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c\u0438. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (\u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b). \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e IDE(IAR, KEIL, MsVisualStudio \u0438 \u043f\u0440.) \u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0432\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432. \u0418 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438 \u0442\u043e\u0440\u0447\u0430\u0442\u044c \u0432 IDE(\u0448\u043a\u0430\u0445) \u0447\u0430\u0441\u0442\u043e \u0434\u0430\u0436\u0435 \u043d\u0435 \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u0447\u0442\u043e \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u043a\u0440\u043e\u043c\u0435 *.h \u0438 *.\u0441 \u0444\u0430\u0439\u043b\u0438\u043a\u043e\u0432. \u0412 \u044d\u0442\u043e\u043c \u043f\u043b\u0430\u043d\u0435 IDE \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0441\u0432\u043e\u0438\u043c \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044f\u043c \u043c\u0435\u0434\u0432\u0435\u0436\u044c\u044e \u0443\u0441\u043b\u0443\u0433\u0443, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u043f\u0440\u0438\u0432\u044b\u043a\u0448\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 IDE \u0438\u043c\u0435\u044e\u0442 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u0430\u0431\u044b\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438. <\/p>\n<p>\u041f\u043e-\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0432\u0430\u0440\u044f\u0442\u0441\u044f \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0441\u043b\u043e\u0436\u043d\u043e. \u041a\u0430\u043a \u0436\u0435 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c? <\/p>\n<p>\u041d\u0430\u0434\u043e \u043f\u0440\u0438\u0431\u0435\u0433\u043d\u0443\u0442\u044c \u043a \u043d\u0430\u0440\u043e\u0434\u043d\u043e\u0439 \u043c\u0443\u0434\u0440\u043e\u0441\u0442\u0438. \u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0430\u044f \u043f\u043e\u0441\u043b\u043e\u0432\u0438\u0446\u0430: &#171;\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0441\u0442\u043e\u0438\u0442 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u043b\u043e\u0432&#187;. \u0417\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u0434\u043e \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443. \u0421\u0445\u0435\u043c\u0443 ToolChain(\u0430). <\/p>\n<p>\u0417\u0430\u0447\u0435\u043c \u0435\u0449\u0435 \u043d\u0443\u0436\u043d\u044b \u0441\u0445\u0435\u043c\u044b ToolChain(\u043e\u0432)? <\/p>\n<p>\u0421\u0445\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u043a\u0443\u0440\u0441 \u0434\u0435\u043b\u0430 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0438\u0440\u043c\u0430 chip maker \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u043d\u0430 \u0440\u044b\u043d\u043a\u0435, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f, \u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u0438 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f.<\/p>\n<p>\u041a\u0430\u043a \u0436\u0435 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443 ToolChain(\u0430)? \u0422\u0443\u0442 \u0435\u0441\u0442\u044c 2 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:<\/p>\n<p><strong>[1] \u0420\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u0441\u0430\u043c\u043e\u043c\u0443, \u043c\u044b\u0448\u043a\u043e\u0439 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 Inkscape.exe.<\/strong> <\/p>\n<p><strong>\u041f\u043b\u044e\u0441:<\/strong> <\/p>\n<p>a) \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0438, \u043b\u0438\u043d\u0435\u0439\u043a\u0438. \u0422\u0435 \u043a\u0442\u043e \u0443\u0447\u0438\u043b \u0432 \u0445\u0443\u0434\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0448\u043a\u043e\u043b\u0435 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0442\u0443\u0442 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043e\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e-\u043f\u043e\u043b\u043d\u043e\u0439.  <\/p>\n<p><strong>\u041c\u0438\u043d\u0443\u0441\u044b:<\/strong> <\/p>\n<p>a) \u0420\u0443\u0447\u043d\u043e\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0435\u0441\u044c\u043c\u0430 \u0443\u0442\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0443\u043f\u044f\u0442 \u0431\u043e\u043b\u0438 \u0432 \u0437\u0430\u043f\u044f\u0441\u0442\u044c\u0435.  <\/p>\n<p>b) \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u044b\u0448\u043a\u0438 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u0443\u0440\u043d\u044b\u043c \u0442\u043e\u043d\u043e\u043c. <\/p>\n<p>c) \u0422\u0440\u0443\u0434\u043d\u043e \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c *.svg \u0444\u0430\u0439\u043b \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044e. \u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u043f\u0440\u0438 git merge *.svg \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0432 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 *.xml(\u043a\u0430).<\/p>\n<p><strong>[2] \u0421\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0433\u0440\u0430\u0444\u0430 \u0438\u043b\u0438 \u0434\u0435\u0440\u0435\u0432\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0433\u0440\u0430\u0444\u043e\u0432 Dot \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 dot.exe \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u0433\u0440\u0430\u0444\u0430.<\/strong><\/p>\n<p><strong>\u041f\u043b\u044e\u0441\u044b:<\/strong> <\/p>\n<p>a) \u0411\u044b\u0441\u0442\u0440\u043e.<\/p>\n<p>b) \u0427\u0435\u0442\u043a\u043e. <\/p>\n<p>c) \u041b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c. <\/p>\n<p>d) \u041b\u0435\u0433\u043a\u043e \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044e. <\/p>\n<p>e) \u041b\u0435\u0433\u043a\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u044b.<\/p>\n<p><strong>\u041c\u0438\u043d\u0443\u0441\u044b:<\/strong> <\/p>\n<p>a) \u041d\u0430\u0434\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0438 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0443 \u044f\u0437\u044b\u043a\u0430 Dot: \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b, \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u0435\u0440\u0448\u0438\u043d, \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0440\u0435\u0431\u0435\u0440, \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0440\u0430\u0441\u043a\u0440\u0430\u0441\u043a\u0438. <\/p>\n<p>b) \u0421\u0445\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u043e\u043c, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435 \u044f\u0437\u044b\u043a\u0430 Dot. <\/p>\n<p>c) C\u0445\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<p>\u041a\u0430\u043a \u043f\u043e \u043c\u043d\u0435, \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u0438 \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u0435\u0435 \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0434\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u044b\u0448\u043a\u043e\u0439.<\/p>\n<p><strong>\u041a\u0430\u043a\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0430\u0432\u0442\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u043b\u043e\u043a \u0441\u0445\u0435\u043c?<\/strong><\/p>\n<p>\u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e \u0442\u043e \u044d\u0442\u043e cpp, dot, make, chrome.<\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0434\u043e \u043d\u0430\u043a\u0430\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 Dot \u0444\u0430\u0439\u043b\u043e\u0432. \u0421\u043e\u0432\u0435\u0442\u0443\u044e \u0431\u0440\u0430\u0442\u044c \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 <a href=\"https:\/\/graphviz.org\/\" rel=\"noopener noreferrer nofollow\">https:\/\/graphviz.org\/<\/a>. \u0421\u0435\u0439\u0447\u0430\u0441 \u0442\u0430\u043c \u0432\u0435\u0440\u0441\u0438\u044f 6.0.1. \u041c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0438 \u0438\u0437 CygWin \u0441\u043a\u0430\u0447\u0430\u0442\u044c Dot, \u043d\u043e \u0442\u0430\u043c \u0432\u0435\u0440\u0441\u0438\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0430\u044f. \u0421\u0442\u0430\u0440\u044b\u0439 Dot \u043c\u043e\u0436\u0435\u0442 \u0443\u043f\u0430\u0441\u0442\u044c \u0432 run-time \u0438\u0437-\u0437\u0430 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u043a\u0430 \u043f\u0440\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0433\u0440\u0430\u0444\u043e\u0432. \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a dot.exe \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e PATH.<\/p>\n<p>\u041f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u0433\u043e\u043b\u043e\u043c \u044f\u0437\u044b\u043a\u0435 Dot \u044d\u0442\u043e \u043d\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0445\u0435\u043c\u0430\u0445 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u043c \u0421\u0438(\u0438\u0448\u043d\u044b\u0439) \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 (\u0443\u0442\u0438\u043b\u0438\u0442\u0430 cpp.exe) \u0441 \u044f\u0437\u044b\u043a\u043e\u043c dot.  \u0421 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443 (cpp.exe) \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043a\u0430\u043a\u043e\u0439 \u0442\u0430\u043c \u044f\u0437\u044b\u043a (assembler, C++, DeviceTree, Kconfig). \u0417\u0430\u0434\u0430\u0447\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u044b cpp.exe \u044d\u0442\u043e \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0438 \u0437\u0430\u043c\u0435\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430. \u0422\u043e\u0447\u043a\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0435\u0440\u0435\u0432\u044c\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432 Linux \u0442\u043e\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c cpp. \u0418 \u044d\u0442\u043e \u0432\u0441\u0435\u0445 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 cpp \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 dot.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e ToolChain(\u0430) \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c <strong>Zephyr project<\/strong>. <\/p>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 dot<\/p>\n<pre><code class=\"cpp\">#define BINARY [fillcolor = turquoise1] #define GENERATED [fillcolor = moccasin] #define SRC [style=\"filled\"][fillcolor = green] #define TOOL [shape = box][style=\"filled\"] #define SCRIPT [shape = box][style=\"filled\"]   [fillcolor = plum1] #define FILE [shape = note][fillcolor = gold][style=\"filled\"] #define DEVICE [shape = box][fillcolor = grey][style=\"filled\"] <\/code><\/pre>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0444\u0430\u0439\u043b *.doti \u0441 \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 ToolChain(\u0435). *.doti &#8212; \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u044d\u0442\u043e include.<\/p>\n<pre><code class=\"cpp\">     menuconfig TOOL     clang_format [label=\"clang-format.exe\"] TOOL     eclipse [label=\"Eclipse.exe\"] TOOL     eclipsec [label=\"eclipsec.exe\"] TOOL     bash [label=\"bash.exe\"] TOOL     hexdump [label=\"hexdump.exe\"] TOOL     browser [label=\"chrome.exe\"] TOOL     inkscape [label=\"Inkscape.exe\"] TOOL     nrfjprog [label=\"nrfjprog.exe\"] TOOL     Cppcheck [label=\"Cppcheck.exe\"]  TOOL     dtc [label=\"dtc\"]  TOOL     gen_defines_py [label=\"gen_defines.py\"] SCRIPT      readelf [label=\"readelf.exe\"]TOOL     jenkins [label=\"jenkins.exe\"]TOOL     cpp [label=\"cpp.exe\"]TOOL     chocolatey [label=\"chocolatey.exe\"]TOOL     git [label=\"git.exe\"]TOOL     buildprog [label=\"buildprog.py\"]SCRIPT     JLinkGDBServer [label=\"JLinkGDBServer.exe\"]TOOL     cpp_dot [label=\"cpp.exe\"]TOOL     guiconfig  TOOL     cpp_3 [label=\"cpp.exe (preproc)\"] TOOL     linker [label=\"ld.exe (linker)\"] TOOL     compiler [label=\"gcc.exe (ARM Compiler)\"] TOOL     NotePadPp [label=\"Notepad++.exe\"] TOOL     cmd [label=\"cmd.exe\"] TOOL     GDB [label=\"gdb.exe\"] TOOL     cMake [label=\"cmake.exe\"] TOOL     west [label=\"west.py\"] SCRIPT     GN  [label=\"gn.exe\"] TOOL     scripts_kconfig [label=\"zephyr\/scripts\/kconfig.py\"]  SCRIPT     nrfjprog [label=\"nrfjprog.exe\"]  TOOL     Python [label=\"Python.exe\"] TOOL     make [label=\"make.exe\"] TOOL     ninja [label=\"ninja.exe\"] TOOL     objcopy [label=\"objcopy.exe\"] TOOL     as [label=\"as.exe\"]TOOL     nm [label=\"nm.exe\"]TOOL     addr2line [label=\"addr2line.exe\"]TOOL     dot [label=\"dot.exe\"]TOOL     ar [label=\"ar.exe\"]TOOL     { rank = same; ninja; make;} <\/code><\/pre>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c  *.doti \u0444\u0430\u0439\u043b \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 ToolChain(\u0435)<\/p>\n<pre><code class=\"cpp\">    dtsi[label=\"*.dtsi\"] FILE SRC     DotConf[label=\"*.conf (Kernel configuration)\"] FILE SRC     bat_file[label=\"*.bat\"] FILE  SRC     CMakeLists [label=\"CMakeLists.txt \"]  FILE SRC     sh_file[label=\"*.sh\"] FILE SRC     ld_file[label=\"*.ld\"] FILE SRC     mk_file[label=\"*.mk\"] FILE SRC     h_file[label=\"*.h\"] FILE SRC     c_file[label=\"*.c\"] FILE SRC     dot_file[label=\"*.dot\"] FILE SRC     doti_file[label=\"*.doti\"] FILE SRC     yaml[label=\"*.yaml\"] FILE SRC     Kconfig [label=\"Kconfig\"] FILE SRC     dts[label=\"*.dts\"] FILE SRC     zephyr_dts_pre[label=\"zephyr.dts.pre\"] FILE     cproject [label=\".cproject \"] FILE      project [label=\".project (description file)\"] FILE      Kconfig_zephyr[label=\"Kconfig.zephyr\"] FILE      txt_file[label=\"*.txt\"] FILE      obj_file[label=\"*.o\"] FILE      CMakeCache_txt [label=\"CMakeCache.txt \"] FILE      map_file[label=\"*.map\"] FILE      a_file[label=\"*.a\"] FILE      elf_file[label=\"*.elf\"] FILE      hex_file[label=\"*.hex\"] FILE      bin_file[label=\"*.bin\"] FILE      build_ninja [label=\"build.ninja\"]  FILE     json_file[label=\"*.json\"] FILE      svg_file[label=\"*.svg \"] FILE     west_yml[label=\"west.yml (manifest file)\"] FILE     MakeFile[label=\"Makefile\"] FILE     devicetree_generated_h[label=\"devicetree_generated.h\"] FILE     zephyr_dts[label=\"zephyr.dts \"] FILE     autoconfig_h [label=\"autoconfig.h\"]  FILE     s_file [label=\"*.S\"]  FILE     gn_file [label=\"BUILD.gn\"]  FILE     cmd_file [label=\"*.cmd\"]  FILE     pp_file [label=\"*.pp\"]  FILE     DotConfig [label=\".config\"]  FILE<\/code><\/pre>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0444\u0430\u0439\u043b \u0441\u043e \u0441\u0432\u044f\u0437\u044f\u043c\u0438 \u0443\u0442\u0438\u043b\u0438\u0442 \u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439.<\/p>\n<pre><code class=\"cpp\"> digraph  graphname {     rankdir=TB;     splines=ortho;     #include \"ToolChain_nRF5340_hardware.doti\"          subgraph cluster_NetTop {          style=filled;             color=aliceblue;             label = \"NetTop\";             HostCpu             HOST_USB             subgraph cluster_Windows10 {             style=filled;         color=lightblue;                 label = \"Windows10\";                                  #include \"ToolChain_nRF5340_tools.doti\"                 #include \"ToolChain_nRF5340_files.doti\"                                  NotePadPp->bat_file[label=\"*.bat\"][dir=\"both\"]                 NotePadPp->doti_file[label=\"*.doti\"] [dir=\"both\"]                 NotePadPp->sh_file[label=\"*.sh\"][dir=\"both\"]                 NotePadPp->mk_file[label=\"*.mk\"][dir=\"both\"]                 NotePadPp->c_file[label=\"*.c\"][dir=\"both\"]                 NotePadPp->h_file[label=\"*.h\"][dir=\"both\"]                 bat_file->cmd[label=\"*.bat\"]                                                sh_file->bash[label=\"*.sh\"]                               subgraph cluster_JVM {             style=filled;         color=lightgreen;                 label = \"JVM\";                 jenkins->bash                 eclipsec                 cproject->eclipse[label=\".cproject\"][dir=\"both\"]                 project->eclipse[label=\".project\"][dir=\"both\"]                   }                              subgraph cluster_BuildConfig {                 style=filled;             color=khaki1;                 label = \"Build Configuration (buildsystem)\";                 bash->buildprog                 cmd->buildprog                 Python->buildprog                 json_file->buildprog [label=\"*.json\"]                                  Python->west                 buildprog->west[label=\"?\"]                 yaml->gen_defines_py[label=\"*.yaml\"]                 dtsi->cpp[label=\"*.dtsi\"]                   dts->cpp                 cpp->zephyr_dts_pre                 zephyr_dts_pre ->gen_defines_py[label=\"zephyr.dts.pre\"]                  gen_defines_py->zephyr_dts[label=\"zephyr.dts\"]                 gen_defines_py->devicetree_generated_h[label=\"devicetree_generated.h\"]                  zephyr_dts->dtc                 CMakeLists->cMake[label=\"CMakeLists.txt\"]                  west->cMake                 west->scripts_kconfig                 cMake->CMakeCache_txt[label=\"CMakeCache.txt\"]  [dir=\"both\"]                 gn_file->GN                 GN->build_ninja                 cMake->build_ninja[label=\"build.ninja\"]<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-338457","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/338457","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=338457"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/338457\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=338457"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=338457"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=338457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}