{"id":482126,"date":"2026-06-02T14:55:40","date_gmt":"2026-06-02T14:55:40","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=482126"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=482126","title":{"rendered":"\u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c Linux \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 Zynq RK-7020-F V1.1 c \u043f\u043e\u043c\u043e\u0449\u044c\u044e Buildroot \u0438 U-Boot SPL"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043b\u0430\u0442\u0430 RK-ZYNQ7020-F REV 1.1. <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c \u0441 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u043e\u0439 buildroot \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u044d\u0442\u0430\u043f\u044b \u043e\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f xsa \u0444\u0430\u0439\u043b\u0430 \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043b\u0430\u0442\u044b \u0438 \u043f\u0435\u0440\u0432\u044b\u0445 \u043b\u043e\u0433\u043e\u0432 linux, \u0441 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0436\u0435\u043b\u0435\u0437\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u044d\u0442\u0430\u043f\u0435.<br \/>\u0422\u0430\u043a\u0436\u0435 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c FSBL, \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c U-Boot SPL. <\/p>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e!<\/p>\n<p><strong>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b<\/strong><\/p>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0442 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u0430:<\/p>\n<p><a href=\"https:\/\/disk.yandex.ru\/d\/S-ma8Wm3MY3ibQ\" rel=\"noopener noreferrer nofollow\">https:\/\/disk.yandex.ru\/d\/S-ma8Wm3MY3ibQ<\/a><\/p>\n<p>\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435, \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438:<\/p>\n<ul>\n<li>\n<p>CAN PS<\/p>\n<\/li>\n<li>\n<p>RS-485<\/p>\n<\/li>\n<li>\n<p>DDR3 1 GB<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 FT2232HQ (JTAG + USB &#8212; UART \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440)<\/p>\n<\/li>\n<li>\n<p>EEPROM (AT24C256C)<\/p>\n<\/li>\n<li>\n<p>8 GB eMMC<\/p>\n<\/li>\n<li>\n<p>Ethernet PS + PL (RTL8211F-CG)<\/p>\n<\/li>\n<li>\n<p>FMC 40 pin<\/p>\n<\/li>\n<li>\n<p>LCD<\/p>\n<\/li>\n<li>\n<p>256 Mbit QSPI NOR Flash<\/p>\n<\/li>\n<li>\n<p>RTC PCF8563<\/p>\n<\/li>\n<li>\n<p>USB 2.0 PS (USB3320)<\/p>\n<\/li>\n<li>\n<p>XC7Z020-2CLG484I<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/525\/465\/e2f\/525465e2fa868fd8d6a053181b621eb5.png\" alt=\"\u041f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b ZYNQ-RK7020-F Rev 1.1\" title=\"\u041f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b ZYNQ-RK7020-F Rev 1.1\" width=\"872\" height=\"593\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/525\/465\/e2f\/525465e2fa868fd8d6a053181b621eb5.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/525\/465\/e2f\/525465e2fa868fd8d6a053181b621eb5.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b ZYNQ-RK7020-F Rev 1.1<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u043f\u043b\u0430\u0442\u0435 \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u043e\u0448\u0438\u0442\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 Linux \u0432 QSPI, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 PS \u0447\u0430\u0441\u0442\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e SoC, \u043e\u0434\u043d\u0430\u043a\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c linux \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0435\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u0438 \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430\u043c\u0438 &#8212; \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u044f\u0434\u0440\u0430.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u0430 \u043f\u0440\u043e\u0434\u0430\u0432\u0435\u0446 \u043f\u043b\u0430\u0442\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0430\u0440\u0445\u0438\u0432\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c petalinux \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443, \u043a\u0430\u043a\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0418 \u0441\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442, \u0433\u0434\u0435 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b petalinux \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442.<\/p>\n<p>\u041c\u0430\u043d\u0443\u0430\u043b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439, \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c &#8212; \u043d\u0430 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043e\u0431\u0440\u0430\u0437, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Buildroot.<\/p>\n<p>\u041d\u0430 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u043b\u0441\u044f XC7Z020-2CLG484I, \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c PS \u0447\u0430\u0441\u0442\u044c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u0432 \u0441\u0435\u0431\u0435 \u0434\u0432\u0430 \u044f\u0434\u0440\u0430 (ARM Cortex-A9). \u0421 \u043d\u0435\u0439 \u043c\u044b \u0438 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, PL \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 buildroot \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c U-Boot (\u0432\u043a\u043b\u044e\u0447\u0430\u044f SPL), Linux Kernel, rootfs, \u0438 \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u0432 \u043d\u0430\u0448 \u043e\u0431\u0440\u0430\u0437, \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043f\u043b\u0430\u0442\u044b, \u0438 \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u044b \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.<\/p>\n<h2>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043b\u0430\u0442\u044b RK-ZYNQ7020-F<\/h2>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043b\u0430\u0442\u044b, \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<br \/> \u041c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c Non-secure mode.<\/p>\n<p>\u041f\u043e\u043b\u043d\u0430\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<p><code>BootROM \u2192 FSBL\/U-Boot SPL \u2192 U-Boot \u2192 Linux kernel \u2192 rootfs<\/code><\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u044d\u0442\u0430\u043f \u0440\u0435\u0448\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0438\u0445 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443.<\/p>\n<h3>\u042d\u0442\u0430\u043f 1 \u2014 BootROM<\/h3>\n<p>BootROM \u2014 \u044d\u0442\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u0434, \u0437\u0430\u0448\u0438\u0442\u044b\u0439 \u0432 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c. \u041e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0430\u0447\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 CPU0, \u0430 CPU1 \u0432 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u0442\u043e\u0438\u0442 \u0432 <code>WFE<\/code>, \u043e\u0436\u0438\u0434\u0430\u044f \u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 BootROM:<\/strong><\/p>\n<ol>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e \u0432\u044b\u0432\u043e\u0434\u0430\u043c <code>MIO[8:2]<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <code>slcr.BOOT_MODE[6:0]<\/code><\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0445\u043e\u0434\u0438\u0442 <code>boot.bin<\/code> \u043d\u0430 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a: \u043f\u043e\u043b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c <code>0x584C4E58<\/code> (<code>'XLNX'<\/code>), \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0431\u043b\u043e\u043a Register Initialization \u0438\u0437 Boot Header \u2014 \u0434\u043e 256 \u043f\u0430\u0440 \u00ab\u0430\u0434\u0440\u0435\u0441\/\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b PS \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0437\u0430<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 SPL \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u043f\u0430\u043c\u044f\u0442\u044c OCM (On-Chip Memory) \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/p>\n<\/li>\n<\/ol>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 DDR \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u2014 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 OCM.<\/p>\n<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f DIP-\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 \u043f\u043b\u0430\u0442\u0435. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u0438 \u0440\u0435\u0436\u0438\u043c\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438:<\/p>\n<blockquote>\n<p>\ud83d\udcc4 <a href=\"https:\/\/docs.amd.com\/r\/en-US\/ug585-zynq-7000-SoC-TRM\/Boot-and-Configuration\" rel=\"noopener noreferrer nofollow\">Zynq-7000 TRM, Chapter 6 \u2014 Boot and Configuration<\/a> (AMD UG585)<\/p>\n<\/blockquote>\n<h3>\u042d\u0442\u0430\u043f 2 \u2014 U-Boot SPL<\/h3>\n<p>\u0412 \u0442\u0438\u043f\u0438\u0447\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 Xilinx \u0432\u0442\u043e\u0440\u044b\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u0438\u0434\u0451\u0442 FSBL (First Stage Boot Loader).<br \/>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f U-Boot SPL \u2014 \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Buildroot \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Vitis, \u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u043b\u0435\u0433\u043a\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 CI\/CD.<\/p>\n<p>\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0433\u0430\u0439\u0434\u043e\u0432, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p><code>BootROM \u2192 FSBL \u2192 U-Boot \u2192 Linux<\/code><\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043e\u0442\u043a\u0430\u0436\u0435\u043c\u0441\u044f \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f FSBL, \u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c U-Boot SPL. \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0442\u043e\u0433\u0434\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f, \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<p><code>BootROM \u2192 U-Boot SPL \u2192 U-Boot \u2192 Linux<\/code><\/p>\n<p><strong>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c U-Boot \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 BootROM?<\/strong><\/p>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 U-Boot \u043d\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 OCM (256 \u041a\u0411). \u0410 DDR \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0435\u0449\u0451 \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u2014 U-Boot \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043a\u0443\u0434\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c. SPL \u0440\u0435\u0448\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443: \u043e\u043d \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0430\u043b \u0434\u043b\u044f OCM \u0438 \u0443\u043c\u0435\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c DDR.<\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 SPL:<\/strong><\/p>\n<ol>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e PS: \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, MIO, UART<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 DDR \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u0438\u0437 <code>ps7_init_gpl.c<\/code> \u2014 \u0444\u0430\u0439\u043b\u0430, \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0437 Vivado \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 <code>u-boot.img<\/code> \u0441 SD-\u043a\u0430\u0440\u0442\u044b \u0432 DDR \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/p>\n<p><code>ps7_init_gpl.c<\/code> \u2014 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u0444\u0430\u0439\u043b, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043b\u0430\u0442\u044b. \u0412 \u043d\u0451\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 DDR, \u0447\u0430\u0441\u0442\u043e\u0442\u044b PLL \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f MIO. \u0411\u0435\u0437 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e <code>ps7_init<\/code> \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f.<\/p>\n<\/li>\n<\/ol>\n<blockquote>\n<p>\ud83d\udcc4 <a href=\"https:\/\/xilinx-wiki.atlassian.net\/wiki\/spaces\/A\/pages\/18842574\/U-Boot+Secondary+Program+Loader\" rel=\"noopener noreferrer nofollow\">U-Boot Secondary Program Loader \u2014 Xilinx Wiki<\/a><\/p>\n<\/blockquote>\n<h3>\u042d\u0442\u0430\u043f 3 \u2014 U-Boot<\/h3>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 U-Boot \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u0437 DDR.<br \/> \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0441\u0435\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044f\u0434\u0440\u0443.<\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 U-Boot:<\/strong><\/p>\n<ol>\n<li>\n<p>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 MMC, Ethernet, UART \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044e<\/p>\n<\/li>\n<li>\n<p>\u0418\u0449\u0435\u0442 <code>\/extlinux\/extlinux.conf<\/code> \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 SD-\u043a\u0430\u0440\u0442\u044b \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043f\u043e \u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c \u0444\u0430\u0439\u043b\u044b \u0432 RAM \u043f\u0430\u043c\u044f\u0442\u044c: <\/p>\n<ul>\n<li>\n<p><code>uImage<\/code> \u2192 <code>0x02000000<\/code><\/p>\n<\/li>\n<li>\n<p><code>system.dtb<\/code> \u2192 <code>0x01F00000<\/code><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 <code>bootm<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044f\u0434\u0440\u0443: <\/p>\n<ul>\n<li>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u044f\u0434\u0440\u043e <code>0x02000000<\/code> \u2192 <code>0x00008000<\/code> (\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 ARM Linux)<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 DTB \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432 \u043a\u043e\u043d\u0446\u0435 DDR \u2192 <code>0x2fff9000<\/code><\/p>\n<\/li>\n<li>\n<p>\u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 DMA-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 CPU \u0432 \u0440\u0435\u0436\u0438\u043c SVC, \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 MMU, \u043a\u044d\u0448\u0438 \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b: <code>r0=0<\/code>, <code>r1=~0<\/code>, <code>r2=\u0430\u0434\u0440\u0435\u0441 DTB<\/code><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u041f\u0440\u044b\u0433\u0430\u0435\u0442 \u043d\u0430 <code>0x00008000<\/code> \u2014 U-Boot \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u044f\u0434\u0440\u0443.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412 \u043b\u043e\u0433\u0430\u0445 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c<\/p>\n<pre><code class=\"bash\">Booting kernel from Legacy Image at 02000000 ...   Load Address: 00008000   Entry Point:  00008000Loading Kernel Image to 8000Loading Device Tree to 2fff9000 ...Starting kernel ...<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c:<\/p>\n<blockquote>\n<p>\ud83d\udcc4 <a href=\"https:\/\/docs.kernel.org\/arch\/arm\/booting.html\" rel=\"noopener noreferrer nofollow\">Booting ARM Linux \u2014 The Linux Kernel documentation<\/a><\/p>\n<\/blockquote>\n<h3>\u042d\u0442\u0430\u043f 4 \u2014 Linux Kernel<\/h3>\n<h4>4.1 \u2014 \u0414\u0435\u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u044f<\/h4>\n<p><code>uImage<\/code> \u2014 \u044d\u0442\u043e <code>zImage<\/code> \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c U-Boot.<br \/> \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>0x00008000<\/code> \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0441\u0430\u043c\u043e \u044f\u0434\u0440\u043e, \u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0434\u0435\u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u043e\u0440 \u0438\u0437 <code>arch\/arm\/boot\/compressed\/head.S<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439:<\/p>\n<ol>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u043e\u0435\u0442 \u043b\u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u0441\u0430\u043c \u0441\u0435\u0431\u044f; \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043a\u0440\u043e\u0435\u0442 \u2014 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u0441\u0436\u0430\u0442\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u0434\u0430\u043b\u044c\u0448\u0435<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 <code>vmlinux<\/code> \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 <code>0x00008000<\/code><\/p>\n<\/li>\n<li>\n<p>\u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u044d\u0448\u0438 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 <code>stext()<\/code> \u2014 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u044f\u0434\u0440\u0430<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0435\u0440\u0432\u044b\u0435 32 \u041a\u0411 (<code>0x0000<\/code>\u2013<code>0x7FFF<\/code>) \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e\u0434 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043d\u0443\u0436\u0434\u044b \u044f\u0434\u0440\u0430: \u0441\u044e\u0434\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 (<code>swapper_pg_dir<\/code> \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>0x00004000<\/code>).<\/p>\n<blockquote>\n<p>\ud83d\udcc4 <a href=\"https:\/\/people.kernel.org\/linusw\/how-the-arm32-linux-kernel-decompresses\" rel=\"noopener noreferrer nofollow\">How the ARM32 Linux kernel decompresses \u2014 Linus Walleij<\/a><br \/> \ud83d\udcc4 <a href=\"https:\/\/people.kernel.org\/linusw\/how-the-arm32-kernel-starts\" rel=\"noopener noreferrer nofollow\">How the ARM32 kernel starts \u2014 Linus Walleij<\/a><\/p>\n<\/blockquote>\n<h4>4.2 \u2014 \u0420\u0430\u043d\u043d\u044f\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h4>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0434\u0435\u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u0438 \u044f\u0434\u0440\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443:<\/p>\n<ol>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 page tables, \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442 swapper_pg_dir<\/p>\n<\/li>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 MMU \u0438 \u043a\u044d\u0448\u0438<\/p>\n<\/li>\n<li>\n<p>\u0427\u0438\u0442\u0430\u0435\u0442 DTB \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0438\u0437 <code>r2<\/code>, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 magic <code>0xd00dfeed<\/code> \u2014 \u0438\u0437 \u043d\u0435\u0433\u043e \u044f\u0434\u0440\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u0441\u044e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e<\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 GIC, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a, \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0430\u043c\u044f\u0442\u0438<\/p>\n<\/li>\n<\/ol>\n<blockquote>\n<p>\ud83d\udcc4 <a href=\"https:\/\/docs.kernel.org\/arch\/arm\/booting.html\" rel=\"noopener noreferrer nofollow\">Booting ARM Linux \u2014 The Linux Kernel documentation<\/a><\/p>\n<\/blockquote>\n<h4>4.3 \u2014 \u041c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 rootfs<\/h4>\n<p>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>\/extlinux\/extlinux.conf<\/code>:<\/p>\n<p><code>root=\/dev\/mmcblk0p2 rw rootwait<\/code><\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>root=\/dev\/mmcblk0p2<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0424\u0421 \u2014 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437\u0434\u0435\u043b SD-\u043a\u0430\u0440\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>rw<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>rootwait<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0416\u0434\u0430\u0442\u044c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (MMC \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0411\u0435\u0437 <code>rootwait<\/code> \u044f\u0434\u0440\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b \u0434\u043e \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 MMC-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u0443\u043f\u0430\u0434\u0451\u0442 \u0432 \u043f\u0430\u043d\u0438\u043a\u0443:<br \/> <code>VFS: Unable to mount root fs<\/code>.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f <code>\/sbin\/init<\/code>, \u0434\u0430\u043b\u0435\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0433\u043e\u0442\u043e\u0432\u0430 \u043a \u0440\u0430\u0431\u043e\u0442\u0435.<\/p>\n<blockquote>\n<p>\ud83d\udcc4 <a href=\"https:\/\/man7.org\/linux\/man-pages\/man7\/bootparam.7.html\" rel=\"noopener noreferrer nofollow\">bootparam(7) \u2014 Linux manual page, man7.org<\/a><br \/>\ud83d\udcc4 <a href=\"https:\/\/www.kernel.org\/doc\/html\/v4.14\/admin-guide\/kernel-parameters.html\" rel=\"noopener noreferrer nofollow\">The kernel&#8217;s command-line parameters \u2014 <\/a><a href=\"http:\/\/kernel.org\" rel=\"noopener noreferrer nofollow\">kernel.org<\/a><\/p>\n<\/blockquote>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 XSA \u0432 Vivado<\/h2>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a Buildroot, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430\u0448\u0443 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 U-Boot SPL \u0438 \u044f\u0434\u0440\u043e Linux. \u042d\u0442\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f Vivado.<\/p>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0444\u0430\u0439\u043b XSA (Xilinx Support Archive) \u2014 \u043e\u043d \u043d\u0443\u0436\u0435\u043d \u0440\u043e\u0432\u043d\u043e \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0432\u0435\u0449\u0435\u0439:<\/p>\n<ul>\n<li>\n<p><strong>ps7_init_gpl.c<\/strong> \u2014 \u043a\u043e\u0434 \u0440\u0430\u043d\u043d\u0435\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 PS (DDR, PLL, MIO), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0432 U-Boot SPL<\/p>\n<\/li>\n<li>\n<p><strong>.hwh (Hardware Handoff)<\/strong> \u2014 XML-\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e <code>xsct<\/code> \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 Device Tree<\/p>\n<\/li>\n<\/ul>\n<blockquote>\n<p>\u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e: \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0432 Vivado \u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430. \u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0430\u0445 DDR \u0438\u043b\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 MIO \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u0438\u043b\u0438 UART \u043d\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<\/blockquote>\n<h3>\u0428\u0430\u0433 1 \u2014 \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h3>\n<p><code>File \u2192 Project \u2192 New<\/code><\/p>\n<p>\u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c <code>XC7Z020-2CLG484I<\/code> \u2014 \u044d\u0442\u043e\u0442 \u0447\u0438\u043f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 RK-ZYNQ7020-F. \u0422\u0438\u043f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 RTL Project.<\/p>\n<h3>\u0428\u0430\u0433 2 \u2014 Block Design \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 ZYNQ7 PS<\/h3>\n<p>\u0412 IP Integrator \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u043e\u0432\u044b\u0439 Block Design \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c IP-\u044f\u0434\u0440\u043e ZYNQ7 Processing System.<\/p>\n<p>\u0412\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f PS \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u043b\u0438\u043a \u043f\u043e \u0431\u043b\u043e\u043a\u0443. \u042d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 IP \u0432 \u043d\u0430\u0448\u0435\u043c \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u2014 PL \u043c\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<\/p>\n<h3>\u0428\u0430\u0433 3 \u2014 \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f PS<\/h3>\n<h4>PS-PL Configuration \u2192 AXI Non Secure Enablement<\/h4>\n<p>\u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c M AXI GP0 interface. \u042d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0441 \u043b\u043e\u0433\u0438\u043a\u043e\u0439 PL \u0447\u0435\u0440\u0435\u0437 \u0448\u0438\u043d\u0443 AXI. \u0420\u0430\u0437 \u043c\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c PL \u2014 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d.<\/p>\n<p><strong>DDR Configuration:<\/strong><\/p>\n<p>MT41K256M16 RE-125, Effective DRAM Bus Width 32 Bit<\/p>\n<p><strong>MIO<\/strong> <strong>Configuration<\/strong>:<\/p>\n<p>Bank 0 I\/O Voltage LVCMOS 3.3V<\/p>\n<p>Bank 1 I\/O Voltage LVCMOS 1.8V<\/p>\n<p><strong>SD0: <\/strong><\/p>\n<p>MIO40 &#8212; 45, \u0430 \u0442\u0430\u043a\u0436\u0435 card detect \u043d\u0430 MIO9.<\/p>\n<p><strong>UART0:<\/strong><\/p>\n<p>MIO 10, 11<\/p>\n<p><strong>ENET0:<\/strong><\/p>\n<p>MIO16-27, MDIO MIO 52-53<\/p>\n<h3>\u0428\u0430\u0433 4 \u2014 \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0448\u0442\u0440\u0438\u0445\u0438 \u0432 Block Design<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 Block Design \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u0438\u043d \u0431\u043b\u043e\u043a \u0431\u0435\u0437 \u0432\u0438\u0441\u044f\u0449\u0438\u0445 \u043f\u043e\u0440\u0442\u043e\u0432. \u0421\u043e\u0437\u0434\u0430\u0451\u043c HDL-\u043e\u0431\u0451\u0440\u0442\u043a\u0443:<\/p>\n<p><code>Sources \u2192 \u041f\u041a\u041c \u043d\u0430 design \u2192 Create HDL Wrapper<\/code><\/p>\n<h3>\u0428\u0430\u0433 5 \u2014 \u0421\u0438\u043d\u0442\u0435\u0437, \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 XSA<\/h3>\n<p><code>Run Synthesis \u2192 Run Implementation<\/code><\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c XSA:<\/p>\n<p><code>File \u2192 Export \u2192 Export Hardware \u2192 Pre-synthesis (\u0431\u0435\u0437 bitstream)<\/code><\/p>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>design_1_wrapper.xsa<\/code>. <br \/>\u041d\u0430 \u044d\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 Vivado \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u043d \u043d\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f.<\/p>\n<h3>\u0427\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 XSA \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043d\u0443\u0436\u0435\u043d \u0434\u0430\u043b\u044c\u0448\u0435<\/h3>\n<p>XSA \u2014 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e:<\/p>\n<pre><code>unzip design_1_wrapper.xsa -d xsa_contentsls xsa_contents\/<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0424\u0430\u0439\u043b<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>ps7_init_gpl.c<\/code> \/ <code>.h<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0420\u0430\u043d\u043d\u044f\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f PS: DDR, PLL, MIO<\/p>\n<\/td>\n<td>\n<p align=\"left\">U-Boot SPL \u2014 \u0434\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 DDR<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>*.hwh<\/code> (Hardware Handoff)<\/p>\n<\/td>\n<td>\n<p align=\"left\">XML-\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>xsct<\/code> \u2014 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f Device Tree<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>*.bit<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0434\u043b\u044f PL<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435 \u00ab\u0441 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u043e\u043c\u00bb<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0448\u0430\u0433\u0435 XSA \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u043f\u0443\u0442\u044f\u043c\u0438, \u0434\u043b\u044f U-Boot, \u0438 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 Device Tree:<\/p>\n<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 Vitis<\/h2>\n<p>\u042d\u0442\u043e\u0442 \u0448\u0430\u0433 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d, \u043d\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f: \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a Buildroot, \u0441\u0442\u043e\u0438\u0442 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e UART \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<p>\u041e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 U-Boot SPL \u0431\u0435\u0437 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e UART \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u2014 \u0432\u044b \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430, \u043d\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445.<br \/> \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0442\u0435\u0441\u0442 \u0441 <code>hello_world<\/code> \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 5 \u043c\u0438\u043d\u0443\u0442 \u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0446\u0435\u043b\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.<\/p>\n<h3>\u0428\u0430\u0433\u0438<\/h3>\n<p><strong>1. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 Vitis<\/strong><\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c Vitis, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u0434\u043e <code>design_1_wrapper.xsa<\/code> \u043a\u0430\u043a \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443. \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u2014 Hello World.<\/p>\n<p><strong>2. \u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043b\u0430\u0442\u044b \u0432 \u0440\u0435\u0436\u0438\u043c JTAG<\/strong><\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u043e\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043f\u043b\u0430\u0442\u0443 \u0432 \u0440\u0435\u0436\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441 JTAG \u2014 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u043c <code>BOOT_MODE<\/code> \u043d\u0430 \u043f\u043b\u0430\u0442\u0435. \u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 BootROM \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u0430 \u0447\u0435\u0440\u0435\u0437 JTAG, \u0430 \u043d\u0435 \u0441 SD-\u043a\u0430\u0440\u0442\u044b.<\/p>\n<p><strong>3. \u0421\u0431\u043e\u0440\u043a\u0430 \u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430<\/strong><\/p>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0437\u0430\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0430 \u043f\u043b\u0430\u0442\u0443 \u0447\u0435\u0440\u0435\u0437 Vitis (<strong>Run \u2192 Run Configurations \u2192 Single Application Debug<\/strong>).<\/p>\n<p><strong>4. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a UART<\/strong><\/p>\n<p><em>Baudrate \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u043d \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 PS \u0432 Vivado. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043c \u0436\u0435:<\/em><\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e77\/fb9\/f68\/e77fb9f68d286e51e02e3066a01cdbaf.png\" alt=\"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 UART Baudrate Processing System\" title=\"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 UART Baudrate Processing System\" width=\"791\" height=\"290\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e77\/fb9\/f68\/e77fb9f68d286e51e02e3066a01cdbaf.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e77\/fb9\/f68\/e77fb9f68d286e51e02e3066a01cdbaf.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 UART Baudrate Processing System<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a UART \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f:<\/p>\n<pre><code class=\"bash\">Hello worldSuccessfully ran Hello World application<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u2014 UART \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f PS \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430, \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u044d\u0442\u0430\u043f\u0443.<\/p>\n<h3>\u041a\u0430\u043a\u043e\u0439 \u043f\u043e\u0440\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<\/h3>\n<p>\u041c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 <strong>FT2232HQ<\/strong> \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0432\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e: JTAG \u0438 USB-UART. \u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430:<\/p>\n<pre><code>\/dev\/ttyUSB0 \u2190 JTAG\/dev\/ttyUSB1 \u2190 UART (MIO10 \/ MIO11)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043d\u0443\u0436\u0435\u043d <code>\/dev\/ttyUSB1<\/code>.<br \/>\u041d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438<code>dmesg | grep ttyUSB<\/code> \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u044b.<\/p>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b \u043d\u0430 Zynq-7000 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Buildroot \u0438 BR2_EXTERNAL<\/h2>\n<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043b\u0430\u0442\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 Zynq-7000. <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435: \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u0430 Linux \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Buildroot.<\/p>\n<p>\u0412\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0437\u0434\u0435\u0441\u044c:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/FernandesKA\/buildroot_custom\" rel=\"noopener noreferrer nofollow\">buildroot_custom<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u043f\u0438\u0440\u0430\u0442\u044c\u0441\u044f:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/buildroot.org\/downloads\/manual\/manual.html\" rel=\"noopener noreferrer nofollow\">Buildroot User Manual<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/buildroot.org\/downloads\/manual\/manual.html#outside-br-custom\" rel=\"noopener noreferrer nofollow\">Keeping customizations outside Buildroot using BR2_EXTERNAL<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/xilinx-wiki.atlassian.net\/wiki\/spaces\/A\/pages\/18842574\/U-Boot+Secondary+Program+Loader\" rel=\"noopener noreferrer nofollow\">U-Boot Secondary Program Loader<\/a><\/p>\n<\/li>\n<\/ul>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 BR2_EXTERNAL \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043d\u0443\u0436\u0435\u043d<\/h3>\n<p>Buildroot \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u044c board-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 Buildroot. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0441\u0430\u043c\u043e\u0433\u043e Buildroot, \u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435, \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>\u042d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442:<\/p>\n<ul>\n<li>\n<p>defconfig-\u0444\u0430\u0439\u043b\u044b Buildroot,<\/p>\n<\/li>\n<li>\n<p>Device Tree,<\/p>\n<\/li>\n<li>\n<p>\u043a\u043e\u043d\u0444\u0438\u0433\u0438 Linux kernel \u0438 U-Boot,<\/p>\n<\/li>\n<li>\n<p>\u043f\u0430\u0442\u0447\u0438,<\/p>\n<\/li>\n<li>\n<p>rootfs overlay,<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u0435\u0437\u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c Buildroot, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 fork, \u043d\u0443 \u0438 \u0443\u0434\u043e\u0431\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043b\u0430\u0442 \u043f\u043e\u0434 \u043e\u0434\u043d\u0438\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c. <br \/>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Buildroot \u043a\u0430\u043a git-\u0441\u0430\u0431\u043c\u043e\u0434\u0443\u043b\u044c. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Buildroot \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0441\u0430\u0431\u043c\u043e\u0434\u0443\u043b\u044f \u2014 \u0431\u0435\u0437 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438. \u0411\u0435\u0437 <code>BR2_EXTERNAL<\/code> \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 Buildroot \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u043a\u0438. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043a\u0443\u0447\u043d\u043e\u0435 \u0437\u0430\u043d\u044f\u0442\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0432\u0441\u044f\u0447\u0435\u0441\u043a\u0438 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c.<\/p>\n<p>\u0412\u043d\u0435\u0448\u043d\u0435\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>BR2_EXTERNAL<\/code>, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 <code>make<\/code>:<\/p>\n<pre><code class=\"bash\">make BR2_EXTERNAL=\/path\/to\/buildroot_external zynq_rk7020f_defconfig<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u0443\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 <code>output\/.br2-external.mk<\/code> \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<\/p>\n<h3>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h3>\n<pre><code>buildroot_custom\/\u251c\u2500\u2500 buildroot\/             # git-\u0441\u0430\u0431\u043c\u043e\u0434\u0443\u043b\u044c \u2014 \u0441\u0430\u043c Buildroot\u251c\u2500\u2500 buildroot_external\/    # BR2_EXTERNAL \u0434\u0435\u0440\u0435\u0432\u043e\u2514\u2500\u2500 README.md<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 <code>buildroot_external\/<\/code>:<\/p>\n<pre><code>buildroot_external\/\u251c\u2500\u2500 external.desc          # \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u0435\u0440\u0435\u0432\u0430\u251c\u2500\u2500 Config.in              # \u0442\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 config\u251c\u2500\u2500 external.mk            # \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432\u251c\u2500\u2500 configs\/               # defconfig-\u0444\u0430\u0439\u043b\u044b \u043f\u043b\u0430\u0442\u2502   \u2514\u2500\u2500 zynq_rk7020f_defconfig\u251c\u2500\u2500 board\/                 # board-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b\u2502   \u2514\u2500\u2500 zynq\/\u2502       \u251c\u2500\u2500 RK-ZYNQ7020-F\/\u2502       \u2502   \u251c\u2500\u2500 dts\/xilinx\/\u2502       \u2502   \u2502   \u251c\u2500\u2500 zynq-7000.dtsi\u2502       \u2502   \u2502   \u2514\u2500\u2500 zynq-rk7020f.dts\u2502       \u2502   \u251c\u2500\u2500 patches\/\u2502       \u2502   \u2502   \u251c\u2500\u2500 arm-trusted-firmware\/\u2502       \u2502   \u2502   \u251c\u2500\u2500 linux\/\u2502       \u2502   \u2502   \u251c\u2500\u2500 linux-headers\/\u2502       \u2502   \u2502   \u2514\u2500\u2500 uboot\/\u2502       \u2502   \u251c\u2500\u2500 ps7_init\/\u2502       \u2502   \u2502   \u251c\u2500\u2500 ps7_init_gpl.c\u2502       \u2502   \u2502   \u2514\u2500\u2500 ps7_init_gpl.h\u2502       \u2502   \u251c\u2500\u2500 rootfs_overlay\/\u2502       \u2502   \u2502   \u2514\u2500\u2500 etc\/\u2502       \u2502   \u2502       \u251c\u2500\u2500 network\/\u2502       \u2502   \u2502       \u251c\u2500\u2500 ssh\/\u2502       \u2502   \u2502       \u2514\u2500\u2500 sysctl.conf\u2502       \u2502   \u251c\u2500\u2500 linux-config.fragment\u2502       \u2502   \u251c\u2500\u2500 uboot-config.fragment\u2502       \u251c\u2500\u2500 post-build.sh\u2502       \u2514\u2500\u2500 post-image.sh\u2514\u2500\u2500 package\/               # \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u0428\u0430\u0433 1: \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b BR2_EXTERNAL<\/h3>\n<h4>external.desc<\/h4>\n<p>\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0435 \u0434\u0435\u0440\u0435\u0432\u043e. <\/p>\n<p>\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e\u043b\u044f <code>name<\/code> Buildroot \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>BR2_EXTERNAL_&lt;NAME&gt;_PATH<\/code>, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e \u0432\u043e \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0434\u0435\u0440\u0435\u0432\u0430.<\/p>\n<pre><code>name: FKAdesc: Buildroot<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 Buildroot \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>BR2_EXTERNAL_FKA_PATH<\/code>, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u043d\u0430 \u043a\u043e\u0440\u0435\u043d\u044c \u043d\u0430\u0448\u0435\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430. \u0412\u0441\u0435 \u043f\u0443\u0442\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435.<\/p>\n<h4>Config.in<\/h4>\n<p>\u0422\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f Kconfig-\u043e\u043f\u0446\u0438\u0439. <\/p>\n<p>Buildroot \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 \u0441\u0432\u043e\u0451 \u043c\u0435\u043d\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:<\/p>\n<pre><code>menu \"Custom Packages\"    source \"$BR2_EXTERNAL_FKA_PATH\/package\/Config.in\"endmenumenu \"BootLoaders\"    source \"$BR2_EXTERNAL_FKA_PATH\/boot\/Config.in\"endmenumenu \"Host Packages\"    source \"$BR2_EXTERNAL_FKA_PATH\/package\/Config.in.host\"endmenu<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>external.mk<\/h4>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442 <code>.mk<\/code>-\u0444\u0430\u0439\u043b\u044b \u0432\u0441\u0435\u0445 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 wildcard:<\/p>\n<pre><code>include $(sort $(wildcard $(BR2_EXTERNAL_FKA_PATH)\/package\/*\/*.mk))include $(sort $(wildcard $(BR2_EXTERNAL_FKA_PATH)\/boot\/*\/*.mk))<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u0428\u0430\u0433 2: \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 ps7_init \u0438\u0437 Vivado<\/h3>\n<p>\u0424\u0430\u0439\u043b\u044b <code>ps7_init_gpl.c<\/code> \u0438 <code>ps7_init_gpl.h<\/code> \u2014 \u044d\u0442\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f Vivado \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 XSA-\u0444\u0430\u0439\u043b\u0430. \u041e\u043d\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u043d\u043d\u0435\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 PLL, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 DDR, MIO-\u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u0438 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 PS.<\/p>\n<p>U-Boot SPL \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e U-Boot, \u0442\u043e \u0435\u0441\u0442\u044c \u0438\u0433\u0440\u0430\u0435\u0442 \u0440\u043e\u043b\u044c FSBL \u0432 \u043d\u0430\u0448\u0435\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.<\/p>\n<p>\u0424\u0430\u0439\u043b\u044b \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438\u0437 Vivado \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 Hardware Platform (XSA). \u041d\u0430\u0439\u0442\u0438 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Vivado \u043f\u043e\u0441\u043b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 bitstream. \u0420\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u043c \u0438\u0445 \u0432 \u0434\u0435\u0440\u0435\u0432\u0435:<\/p>\n<pre><code>board\/zynq\/RK-ZYNQ7020-F\/ps7_init\/\u251c\u2500\u2500 ps7_init_gpl.c\u2514\u2500\u2500 ps7_init_gpl.h<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<blockquote>\n<p><strong>\u0412\u0430\u0436\u043d\u043e:<\/strong> \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 Vivado (\u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, DDR, MIO) \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0445 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u0423\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 <code>ps7_init<\/code> \u043f\u0440\u0438\u0432\u0435\u0434\u0443\u0442 \u043a \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0438\u043b\u0438 \u043e\u0442\u043a\u0430\u0437\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.<\/p>\n<\/blockquote>\n<h3>\u0428\u0430\u0433 3: \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f Device Tree<\/h3>\n<p>Device Tree \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u044f\u0434\u0440\u0443 Linux \u0438 U-Boot \u0432\u0441\u044e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u043b\u0430\u0442\u044b: \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0435 \u044f\u0434\u0440\u0430, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044e, \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0448\u0438\u043d. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e \u0434\u0435\u0440\u0435\u0432\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"https:\/\/devicetree-specification.readthedocs.io\/en\/latest\/\" rel=\"noopener noreferrer nofollow\">Device Tree Specification<\/a>.<\/p>\n<p>\u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 Device Tree \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b Xilinx, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0437\u0434\u0435\u0441\u044c: <a href=\"https:\/\/xilinx-wiki.atlassian.net\/wiki\/spaces\/A\/pages\/18842279\/Build+Device+Tree+Blob\" rel=\"noopener noreferrer nofollow\">Generate DTS Files Using XSCT<\/a>. \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 XSA-\u0444\u0430\u0439\u043b\u0430, \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0437 Vivado.<\/p>\n<h4>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/h4>\n<p>\u041f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <code>xsct<\/code>, \u0432\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 Vitis (\u043f\u0443\u0442\u044c \u0434\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0443 \u0432\u0430\u0441 \u0441\u0432\u043e\u0439):<\/p>\n<pre><code>\/home\/fka\/tools\/Xilinx\/2025.1\/Vitis\/bin\/xsct<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u0442 Xilinx \u2014 <a href=\"https:\/\/github.com\/Xilinx\/device-tree-xlnx\" rel=\"noopener noreferrer nofollow\">device-tree-xlnx<\/a>. \u041a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u0432\u0435\u0442\u043a\u0443, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u0438 Vivado\/Vitis:<\/p>\n<pre><code class=\"bash\">git clone https:\/\/github.com\/Xilinx\/device-tree-xlnxcd device-tree-xlnxgit checkout &lt;xilinx_rel_v20XX.X&gt;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<blockquote>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 Vivado, Vitis \u0438 device-tree-xlnx \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u043b\u0438\u0437\u0430\u043c\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e Device Tree \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<\/blockquote>\n<h4>TCL-\u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 Device Tree<\/h4>\n<p>\u0420\u044f\u0434\u043e\u043c \u0441 XSA-\u0444\u0430\u0439\u043b\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0451\u043c TCL-\u0441\u043a\u0440\u0438\u043f\u0442 <code>dts_gen.tcl<\/code>:<\/p>\n<pre><code>hsi open_hw_design .\/design_1_wrapper.xsahsi set_repo_path \/home\/fka\/dev_linux\/device-tree-xlnxhsi create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0hsi set_property CONFIG.periph_type_overrides {    {DEVICE_ID xc7z020}    } [hsi get_os]hsi generate_target -dir .\/dts_outputhsi close_hw_design [hsi current_hw_design]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 XSA-\u0444\u0430\u0439\u043b, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 <code>device-tree-xlnx<\/code>, \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Device Tree \u0434\u043b\u044f <code>ps7_cortexa9_0<\/code> \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 DTS\/DTSI-\u0444\u0430\u0439\u043b\u044b \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>dts_output<\/code>.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c <code>xsct<\/code> \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<pre><code>xsctsource dts_gen.tcl<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u044b\u0432\u043e\u0434 \u0432\u0438\u0434\u0430:<\/p>\n<pre><code>INFO: [Hsi 55-2053] elapsed time for repository loading 0 secondsWARNING: The DTG tool is scheduled to be deprecated in a future release.WARNING: ps7_ethernet_0: No reset found<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 <code>No reset found<\/code> \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>\u0412 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <code>dts_output<\/code> \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b:<\/p>\n<pre><code>dts_output\/\u251c\u2500\u2500 device-tree.mss\u251c\u2500\u2500 include\/\u2502   \u2514\u2500\u2500 dt-bindings\/\u251c\u2500\u2500 pcw.dtsi\u251c\u2500\u2500 skeleton.dtsi\u251c\u2500\u2500 system.dts\u251c\u2500\u2500 system-top.dts\u2514\u2500\u2500 zynq-7000.dtsi<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0444\u0430\u0439\u043b\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438 <code>.dts<\/code> \u0438 <code>.dtsi<\/code>. <\/p>\n<p>\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>include\/dt-bindings<\/code> \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u2014 \u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 Buildroot.<\/p>\n<h4>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 DTS-\u0444\u0430\u0439\u043b\u043e\u0432 (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e)<\/h4>\n<p>\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 Device Tree \u0440\u0430\u0437\u0431\u0438\u0442 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432: <code>system-top.dts<\/code>, <code>pcw.dtsi<\/code>, <code>zynq-7000.dtsi<\/code>.<br \/> \u041c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u043b\u0438\u0431\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0432\u0441\u0451 \u0432 \u043e\u0434\u0438\u043d \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 <code>.dts<\/code> \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 GCC:<\/p>\n<pre><code class=\"bash\">gcc -I my_dts \\    -E \\    -nostdinc \\    -undef \\    -D__DTS__ \\    -x assembler-with-cpp \\    -o system.dts \\    system-top.dts<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u044b\u0439 <code>system.dts<\/code> \u0441\u043e \u0432\u0441\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 <code>.dtsi<\/code>.<\/p>\n<h4>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 Device Tree \u0434\u043b\u044f U-Boot SPL<\/h4>\n<p>U-Boot SPL \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Device Tree, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0430 \u0440\u0430\u043d\u043d\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 SPL \u0438 \u0442\u0435\u043c, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0435\u0449\u0451 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0443\u0437\u043b\u044b \u043d\u0435 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u043c <code>bootph-all<\/code>, U-Boot \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442 \u0438\u0445 \u0438\u0437 Device Tree \u0434\u043b\u044f SPL &#8212; \u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u0440\u0438 \u0440\u0430\u043d\u043d\u0435\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 buildroot_external \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c <code>bootph-all<\/code> \u0434\u043b\u044f UART \u0438 SD-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430:<\/p>\n<pre><code>&amp;uart0 {    bootph-all;    cts-override;    device_type = \"serial\";    port-number = &lt;0&gt;;    status = \"okay\";};&amp;sdhci0 {    bootph-all;    status = \"okay\";    xlnx,has-cd = &lt;0x1&gt;;    xlnx,has-power = &lt;0x0&gt;;    xlnx,has-wp = &lt;0x0&gt;;};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 Device Tree<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 buildroot_external \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>dtc<\/code> (Device Tree Compiler) (\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 apt):<\/p>\n<pre><code class=\"bash\">dtc -@ -I dts -O dtb .\/system.dts &gt; .\/system.dtb<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0430:<\/p>\n<pre><code>zynq-7000.dtsi:146: Warning (interrupt_provider): Missing #address-cells in interrupt provider<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 Device Tree \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, \u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u0435 \u043c\u0435\u0448\u0430\u044e\u0442 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 <code>.dtb<\/code> \u043f\u043e\u043a\u0430 \u043d\u0438\u043a\u0443\u0434\u0430 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u2014 Buildroot \u0441\u043e\u0431\u0435\u0440\u0451\u0442 \u0435\u0433\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 <code>.dts<\/code> \u0438\u043b\u0438 \u043d\u0430\u0431\u043e\u0440 <code>dts + dtsi<\/code>.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c <code>.dts<\/code> \u0438 <code>.dtsi<\/code> \u0444\u0430\u0439\u043b\u044b \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u043b\u0430\u0442\u044b:<\/p>\n<pre><code>buildroot_external\/board\/zynq\/RK-ZYNQ7020-F\/dts\/xilinx\/\u251c\u2500\u2500 zynq-7000.dtsi\u2514\u2500\u2500 zynq-rk7020f.dts<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u0428\u0430\u0433 4: \u041f\u0430\u0442\u0447 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 DTS \u0432 U-Boot<\/h3>\n<p>U-Boot \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043e \u043d\u0430\u0448\u0435\u043c Device Tree, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 upstream <code>arch\/arm\/dts\/Makefile<\/code>. <\/p>\n<p>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0430\u0442\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0438\u0442 \u0441\u0431\u043e\u0440\u043a\u0443 \u043d\u0430\u0448\u0435\u0433\u043e DTB. \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0439\u043b <code>buildroot_external\/board\/zynq\/RK-ZYNQ7020-F\/patches\/uboot\/0001-add-rk7020f-dts.patch<\/code>:<\/p>\n<pre><code class=\"diff\">--- a\/arch\/arm\/dts\/Makefile+++ b\/arch\/arm\/dts\/Makefile@@ -251,7 +251,8 @@ zynq-zturn.dtb \\ zynq-zturn-v5.dtb \\ zynq-zybo.dtb \\-zynq-zybo-z7.dtb+zynq-zybo-z7.dtb \\+zynq-rk7020f.dtb dtb-$(CONFIG_ARCH_ZYNQMP) += \\<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Buildroot \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442 \u043f\u0430\u0442\u0447 \u0438\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <code>patches\/uboot\/<\/code> \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 U-Boot, \u0435\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0441 \u043f\u0430\u0442\u0447\u0430\u043c\u0438.<\/p>\n<h3>\u0428\u0430\u0433 5: \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b<\/h3>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u044b\u0445 <code>.config<\/code>-\u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u044f\u0434\u0440\u0430 \u0438 U-Boot \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b &#8212; \u0444\u0430\u0439\u043b\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043e\u043f\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e defconfig. \u042d\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0432\u0435\u0440\u0441\u0438\u0439.<\/p>\n<h4>uboot-config.fragment<\/h4>\n<p>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 U-Boot SPL \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u044b. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u043b\u0430\u0442\u0430 \u043d\u0435 \u043f\u043e\u0434\u0430\u0451\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0436\u0438\u0437\u043d\u0438: \u043d\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 UART, \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043d\u044f\u0442\u044c, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430.<\/p>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<pre><code># \u0420\u0430\u043d\u043d\u0438\u0439 \u0432\u044b\u0432\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 UART \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 SPLCONFIG_DEBUG_UART=yCONFIG_DEBUG_UART_ZYNQ=yCONFIG_DEBUG_UART_BASE=0xE0000000CONFIG_DEBUG_UART_CLOCK=100000000# \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 serial \u0432 SPLCONFIG_SPL_SERIAL=yCONFIG_SPL_DM_SERIAL=yCONFIG_SPL_DM=yCONFIG_SPL_OF_CONTROL=y# \u0421\u043f\u0438\u0441\u043e\u043a DTB \u0434\u043b\u044f SPL \u2014 \u043d\u0430\u0448 DTB \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435,CONFIG_SPL_OF_LIST=\"zynq-rk7020f\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0410\u0434\u0440\u0435\u0441 <code>0xE0000000<\/code> \u2014 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 UART0 \u043d\u0430 Zynq-7000.<br \/>\u0427\u0430\u0441\u0442\u043e\u0442\u0430 <code>100000000<\/code> (100 \u041c\u0413\u0446) \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437 <code>ps7_init<\/code>.<\/p>\n<p><em>P.S. DEBUG \u043e\u043f\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c, \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043c\u043d\u043e\u0439 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u043b\u0430\u0442\u0430 \u043d\u0435 \u043f\u043e\u0434\u0430\u0432\u0430\u043b\u0430 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u0436\u0438\u0437\u043d\u0438.<\/em><\/p>\n<h4>linux-config.fragment<\/h4>\n<p>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u043f\u0446\u0438\u0438 \u043f\u043e\u0432\u0435\u0440\u0445 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e <code>xilinx_zynq<\/code> defconfig:<\/p>\n<pre><code># SPICONFIG_SPI=yCONFIG_SPI_MASTER=yCONFIG_SPI_XILINX=yCONFIG_SPI_SPIDEV=y# Device Tree overlaysCONFIG_OF_OVERLAY=yCONFIG_OF_DYNAMIC=y<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><em>P.S. \u0422\u0435\u043a\u0443\u0449\u0438\u0435 \u043e\u043f\u0446\u0438\u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438, \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c. \u041c\u043d\u043e\u0439 \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c device tree overlay, \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 SPI.<\/em><\/p>\n<h3>\u0428\u0430\u0433 6: rootfs overlay<\/h3>\n<h3>\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a Buildroot \u0441\u043e\u0431\u0440\u0430\u043b \u0432\u0441\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0438 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u00a0<code>output\/target\/<\/code>\u00a0\u2014 \u043d\u043e\u00a0\u0434\u043e\u00a0\u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u0432 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u2014 \u043e\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u00a0<code>rsync<\/code>\u00a0\u0438\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 overlay \u043f\u043e\u0432\u0435\u0440\u0445 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b:<\/p>\n<pre><code>rsync -a board\/rk7020f\/rootfs_overlay\/  output\/target\/<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041b\u044e\u0431\u043e\u0439 \u0444\u0430\u0439\u043b, \u043f\u043e\u043c\u0435\u0449\u0451\u043d\u043d\u044b\u0439 \u0432 overlay, \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432 rootfs \u043f\u043e \u0442\u043e\u043c\u0443 \u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u0443\u0442\u0438. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b\u00a0\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u0430 \u043d\u043e\u0432\u044b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f.<\/p>\n<p>\u041f\u0443\u0442\u044c \u043a overlay \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u00a0<code>buildroot_config.fragment:<\/code><\/p>\n<pre><code>BR2_ROOTFS_OVERLAY=\"board\/rk7020f\/rootfs_overlay\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\ud83d\udcc4\u00a0<a href=\"https:\/\/buildroot.org\/downloads\/manual\/manual.html\" rel=\"noopener noreferrer nofollow\">Buildroot manual \u2014 Customizing the generated target filesystem<\/a><\/p>\n<h3>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 overlay \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435<\/h3>\n<pre><code>board\/rk7020f\/rootfs_overlay\/\u251c\u2500\u2500 etc\/\u2502   \u251c\u2500\u2500 network\/\u2502   \u2502   \u2514\u2500\u2500 interfaces          \u2190 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 IP\u2502   \u251c\u2500\u2500 ssh\/\u2502   \u2502   \u2514\u2500\u2500 sshd_config         \u2190 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 SSH<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043c\u043e\u0435\u0433\u043e overlay:<\/strong><\/p>\n<h3>etc\/network\/interfaces\u00a0\u2014 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 IP<\/h3>\n<p>Buildroot \u0441 busybox init \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0435\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u00a0<code>S40network<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u00a0<code>ifup<\/code>\u00a0\u043f\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u0437\u00a0<code>\/etc\/network\/interfaces<\/code>.<\/p>\n<pre><code>auto loiface lo inet loopbackauto eth0iface eth0 inet static    address 192.168.1.100    netmask 255.255.255.0    gateway 192.168.1.1<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 overlay Buildroot \u0441\u043e\u0437\u0434\u0430\u0441\u0442\u00a0<code>\/etc\/network\/interfaces<\/code>\u00a0\u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c, \u0433\u0434\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d \u043d\u0430\u0448 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0434\u0440\u0435\u0441.<\/p>\n<h3>etc\/ssh\/sshd_config\u00a0\u2014 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 SSH<\/h3>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Buildroot \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u00a0<code>dropbear<\/code>\u00a0\u0438\u043b\u0438\u00a0<code>openssh<\/code>\u00a0\u0441 \u043a\u043e\u043d\u0441\u0435\u0440\u0432\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438.<br \/> \u0414\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u0445\u043e\u0434 \u043f\u043e \u043f\u0430\u0440\u043e\u043b\u044e \u0438 \u043b\u043e\u0433\u0438\u043d root:<\/p>\n<pre><code>PermitRootLogin yesPasswordAuthentication yes<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u0428\u0430\u0433 7: \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 defconfig<\/h3>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u044f \u0432\u0441\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, <code>zynq_rk7020f_defconfig<\/code> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code># \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430BR2_arm=yBR2_cortex_a9=yBR2_ARM_ENABLE_NEON=yBR2_ARM_ENABLE_VFP=y# \u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0442\u0443\u043b\u0447\u0435\u0439\u043d \u043e\u0442 Bootlin (armv7-eabihf + glibc)BR2_TOOLCHAIN_EXTERNAL=yBR2_TOOLCHAIN_EXTERNAL_BOOTLIN=yBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_STABLE=y# \u0424\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b (\u043f\u0430\u0442\u0447\u0438, \u043e\u0432\u0435\u0440\u043b\u0435\u0439, post_build \u0441\u043a\u0440\u0438\u043f\u0442\u044b)BR2_GLOBAL_PATCH_DIR=\"$(BR2_EXTERNAL_FKA_PATH)\/board\/zynq\/RK-ZYNQ7020-F\/patches\"BR2_ROOTFS_OVERLAY=\"$(BR2_EXTERNAL_FKA_PATH)\/board\/zynq\/RK-ZYNQ7020-F\/rootfs_overlay\"BR2_ROOTFS_POST_BUILD_SCRIPT=\"board\/zynq\/post-build.sh\"BR2_ROOTFS_POST_IMAGE_SCRIPT=\"board\/zynq\/post-image.sh\"# Linux kernel (\u0444\u043e\u0440\u043a Xilinx, v6.12 LTS)BR2_LINUX_KERNEL=yBR2_LINUX_KERNEL_DEFCONFIG=\"xilinx_zynq\"BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES=\"$(BR2_EXTERNAL_FKA_PATH)\/board\/zynq\/RK-ZYNQ7020-F\/linux-config.fragment\"BR2_LINUX_KERNEL_UIMAGE=yBR2_LINUX_KERNEL_UIMAGE_LOADADDR=\"0x8000\"BR2_LINUX_KERNEL_INTREE_DTS_NAME=\"xilinx\/zynq-rk7020f\"BR2_LINUX_KERNEL_CUSTOM_DTS_DIR=\"$(BR2_EXTERNAL_FKA_PATH)\/board\/zynq\/RK-ZYNQ7020-F\/dts\"# U-Boot SPL (\u0444\u043e\u0440\u043a Xilinx, v2025.01)BR2_TARGET_UBOOT=yBR2_TARGET_UBOOT_BOARD_DEFCONFIG=\"xilinx_zynq_virt\"BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES=\"$(BR2_EXTERNAL_FKA_PATH)\/board\/zynq\/RK-ZYNQ7020-F\/uboot-config.fragment\"BR2_TARGET_UBOOT_SPL=yBR2_TARGET_UBOOT_SPL_NAME=\"spl\/boot.bin\"BR2_TARGET_UBOOT_NEEDS_DTC=yBR2_TARGET_UBOOT_CUSTOM_DTS_PATH=\"$(BR2_EXTERNAL_FKA_PATH)\/board\/zynq\/RK-ZYNQ7020-F\/dts\/xilinx\/zynq-rk7020f.dts $(BR2_EXTERNAL_FKA_PATH)\/board\/zynq\/RK-ZYNQ7020-F\/dts\/xilinx\/zynq-7000.dtsi\"BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS=\"DEVICE_TREE=zynq-rk7020f\"BR2_TARGET_UBOOT_ZYNQ_PS7_INIT_FILE=\"$(BR2_EXTERNAL_FKA_PATH)\/board\/zynq\/RK-ZYNQ7020-F\/ps7_init\/ps7_init_gpl.c\"# rootfsBR2_TARGET_ROOTFS_EXT2=yBR2_TARGET_ROOTFS_EXT2_4=yBR2_TARGET_ROOTFS_EXT2_SIZE=\"256M\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c:<\/strong><\/p>\n<p>\u0412 <code>BR2_TARGET_UBOOT_ZYNQ_PS7_INIT_FILE<\/code> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e <code>.c<\/code>-\u0444\u0430\u0439\u043b \u2014 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 <code>.h<\/code> \u043f\u043e\u0434\u0442\u044f\u043d\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<h3>\u0428\u0430\u0433 8: \u0421\u0431\u043e\u0440\u043a\u0430<\/h3>\n<pre><code class=\"bash\"># \u041a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u0441\u0430\u0431\u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438git clone --recurse-submodules https:\/\/github.com\/FernandesKA\/buildroot_customexport BR2_EXTERNAL_FKA_PATH=$(pwd)\/buildroot_externalcd buildrootmake BR2_EXTERNAL=$BR2_EXTERNAL_FKA_PATH zynq_rk7020f_defconfigmake menuconfig #\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e, \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0447\u0442\u043e - \u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044cmake<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u0432 <code>output\/images\/<\/code>.<\/p>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 SD-\u043a\u0430\u0440\u0442\u044b<\/h2>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 (<code>make<\/code>) \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <code>output\/images\/<\/code> \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u2014 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c SD-\u043a\u0430\u0440\u0442\u0443 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u043f\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u043c.<\/p>\n<p><strong>Important! \u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u0430 \u043d\u0430 SD \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0443. \u041d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e.<\/strong><\/p>\n<h3>\u0427\u0442\u043e Buildroot \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0432 output\/images\/<\/h3>\n<pre><code>output\/images\/\u251c\u2500\u2500 boot.bin          \u2190 U-Boot SPL (\u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 boot-\u0440\u0430\u0437\u0434\u0435\u043b)\u251c\u2500\u2500 u-boot.img        \u2190 \u043f\u043e\u043b\u043d\u044b\u0439 U-Boot (\u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 boot-\u0440\u0430\u0437\u0434\u0435\u043b)\u251c\u2500\u2500 uImage            \u2190 \u044f\u0434\u0440\u043e Linux (\u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 boot-\u0440\u0430\u0437\u0434\u0435\u043b)\u251c\u2500\u2500 zynq-rk7020f.dtb  \u2190 Device Tree Blob (\u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 boot-\u0440\u0430\u0437\u0434\u0435\u043b)\u251c\u2500\u2500 rootfs.ext4       \u2190 \u043a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 (\u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437\u0434\u0435\u043b)\u2514\u2500\u2500 rootfs.cpio.gz    \u2190 initramfs<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u0420\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u043a\u0430\u0440\u0442\u044b<\/h3>\n<p>SD-\u043a\u0430\u0440\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0434\u0432\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0430:<\/p>\n<pre><code>\/dev\/sdX1   FAT32   64 \u041c\u0411    boot    \u2190 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f U-Boot\/dev\/sdX2   ext4    \u043e\u0441\u0442\u0430\u0442\u043e\u043a  rootfs  \u2190 \u043a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 Linux<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0420\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 <code>fdisk<\/code>:<\/p>\n<pre><code>sudo fdisk \/dev\/sdX<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434 \u0432\u043d\u0443\u0442\u0440\u0438 <code>fdisk<\/code>:<\/p>\n<pre><code class=\"bash\">o        # \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 DOS (MBR)n        # \u043d\u043e\u0432\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043bp        # primary1        # \u043d\u043e\u043c\u0435\u0440 \u0440\u0430\u0437\u0434\u0435\u043b\u0430[Enter]  # \u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0441\u0435\u043a\u0442\u043e\u0440+64M     # \u0440\u0430\u0437\u043c\u0435\u0440 boot-\u0440\u0430\u0437\u0434\u0435\u043b\u0430t        # \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0438\u043f \u0440\u0430\u0437\u0434\u0435\u043b\u0430c        # W95 FAT32 (LBA) \u2014 \u0442\u0438\u043f 0x0Ca        # \u043f\u043e\u043c\u0435\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b \u043a\u0430\u043a bootablen        # \u043d\u043e\u0432\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043bp        # primary2        # \u043d\u043e\u043c\u0435\u0440 \u0440\u0430\u0437\u0434\u0435\u043b\u0430[Enter]  # \u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0441\u0435\u043a\u0442\u043e\u0440[Enter]  # \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043a\u0430\u0440\u0442\u044bw        # \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u0439\u0442\u0438<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432:<\/p>\n<pre><code>sudo mkfs.vfat -F 32 -n BOOT \/dev\/sdX1sudo mkfs.ext4 -L rootfs \/dev\/sdX2&gt; \u0424\u043b\u0430\u0433 `bootable` \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d \u2014 U-Boot SPL \u0438\u0449\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0444\u043b\u0430\u0433\u0443.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u0424\u0430\u0439\u043b\u044b \u043d\u0430 boot-\u0440\u0430\u0437\u0434\u0435\u043b\u0435<\/h3>\n<p>\u041c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c boot-\u0440\u0430\u0437\u0434\u0435\u043b \u0438 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u0438\u0437 <code>output\/images\/<\/code>:<\/p>\n<pre><code>sudo mount \/dev\/sdX1 \/mnt\/bootsudo cp output\/images\/boot.bin         \/mnt\/boot\/sudo cp output\/images\/u-boot.img       \/mnt\/boot\/sudo cp output\/images\/uImage           \/mnt\/boot\/sudo cp output\/images\/zynq-rk7020f.dtb \/mnt\/boot\/<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0438 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438:<\/p>\n<pre><code>sudo mkdir -p \/mnt\/boot\/extlinuxsudo nano \/mnt\/boot\/extlinux\/extlinux.conf<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 <code>extlinux.conf<\/code>:<\/p>\n<pre><code>label Linux    kernel \/uImage    fdt \/zynq-rk7020f.dtb    append root=\/dev\/mmcblk0p2 rw rootwait earlycon<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>kernel \/uImage<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0443\u0442\u044c \u043a \u044f\u0434\u0440\u0443 \u043d\u0430 FAT-\u0440\u0430\u0437\u0434\u0435\u043b\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>fdt \/zynq-rk7020f.dtb<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0443\u0442\u044c \u043a Device Tree Blob<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>root=\/dev\/mmcblk0p2<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0424\u0421 \u2014 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437\u0434\u0435\u043b SD-\u043a\u0430\u0440\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>rw<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>rootwait<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0416\u0434\u0430\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 MMC-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>earlycon<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0432 UART \u0434\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 tty<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><code>sudo umount \/mnt\/boot<\/code><\/p>\n<h3>rootfs \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437\u0434\u0435\u043b<\/h3>\n<p>\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c <code>rootfs.ext4<\/code> \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u0447\u0435\u0440\u0435\u0437 <code>dd<\/code>:<\/p>\n<pre><code>sudo dd if=output\/images\/rootfs.ext4 of=\/dev\/sdX2 bs=1M status=progresssudo sync<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0430 \u0432\u0435\u0441\u044c \u0440\u0430\u0437\u0434\u0435\u043b:<\/p>\n<pre><code>sudo e2fsck -f \/dev\/sdX2sudo resize2fs \/dev\/sdX2<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<blockquote>\n<p><code>rootfs.ext4<\/code> \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 256 \u041c\u0411 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>BR2_TARGET_ROOTFS_EXT2_SIZE=\"256M\"<\/code> \u0432 defconfig).<br \/> \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043a\u0430\u0440\u0442\u0443 \u043d\u0430 4 \u0413\u0411 \u0438 \u0431\u043e\u043b\u0435\u0435 \u2014 <code>resize2fs<\/code> \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0434 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0444\u0430\u0439\u043b\u044b.<\/p>\n<\/blockquote>\n<h3>\u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 SD \u043a\u0430\u0440\u0442\u044b<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0445 \u0448\u0430\u0433\u043e\u0432 \u043a\u0430\u0440\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code>\/dev\/sdX1  (FAT32, boot)\u251c\u2500\u2500 boot.bin\u251c\u2500\u2500 u-boot.img\u251c\u2500\u2500 uImage\u251c\u2500\u2500 zynq-rk7020f.dtb\u2514\u2500\u2500 extlinux\/    \u2514\u2500\u2500 extlinux.conf\/dev\/sdX2  (ext4, rootfs)\u2514\u2500\u2500 &lt;\u043a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 Linux&gt;    \u251c\u2500\u2500 bin\/    \u251c\u2500\u2500 etc\/    \u2502   \u251c\u2500\u2500 network\/interfaces   \u2190 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 IP \u0438\u0437 overlay    \u2502   \u251c\u2500\u2500 ssh\/sshd_config      \u2190 \u043a\u043e\u043d\u0444\u0438\u0433 SSH \u0438\u0437 overlay    \u251c\u2500\u2500 sbin\/    \u2514\u2500\u2500 ...<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0447\u0435\u0440\u0435\u0437 post-image.sh \u0438 genimage<\/h3>\n<p>\u0423\u0434\u043e\u0431\u043d\u043e \u043b\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c \u0448\u0430\u0433\u0438, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435? \u042f \u0434\u0443\u043c\u0430\u044e, \u043d\u0435 \u043e\u0447\u0435\u043d\u044c. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u044d\u0442\u043e \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f.<br \/>\u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0447\u0435\u0440\u0435\u0437 <code>post-image.sh<\/code> \u0438 <code>genimage<\/code> \u2014 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043d\u0435\u0451 \u0432 defconfig \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b host-\u043f\u0430\u043a\u0435\u0442\u044b:<\/p>\n<pre><code>BR2_PACKAGE_HOST_DOSFSTOOLS=y   # mkfs.vfatBR2_PACKAGE_HOST_GENIMAGE=y     # genimageBR2_PACKAGE_HOST_MTOOLS=y       # \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 FAT \u0431\u0435\u0437 root<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>genimage<\/code> \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 <code>sdcard.img<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u043a\u0430\u0440\u0442\u0443 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code>sudo dd if=output\/images\/sdcard.img of=\/dev\/sdX bs=4M status=progresssudo sync<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043f\u043b\u0430\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430:<\/p>\n<p><code><strong>board\/zynq\/RK-ZYNQ7020-F\/genimage.cfg<\/strong><\/code> \u2014 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443:<\/p>\n<pre><code>image boot.vfat {vfat {files = {\"boot.bin\",\"u-boot.img\",\"system.dtb\",\"uImage\"}file extlinux\/extlinux.conf {image = extlinux.conf}}size = 32M}image sdcard.img {hdimage {}partition boot {partition-type = 0xCbootable = \"true\"image = \"boot.vfat\"}partition rootfs {partition-type = 0x83image = \"rootfs.ext4\"}}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code><strong>board\/zynq\/post-image.sh<\/strong><\/code>\u2014 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 genimage \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438:<\/p>\n<pre><code>#!\/usr\/bin\/env bashset -eBOARD_DIR=\"$(dirname \"$0\")\/RK-ZYNQ7020-F\"GENIMAGE_CFG=\"${BOARD_DIR}\/genimage.cfg\"GENIMAGE_TMP=\"${BUILD_DIR}\/genimage.tmp\"# \u0421\u043e\u0437\u0434\u0430\u0451\u043c extlinux.conf \u043f\u0440\u044f\u043c\u043e \u0437\u0434\u0435\u0441\u044c, \u0447\u0442\u043e\u0431\u044b genimage \u0435\u0433\u043e \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u043bmkdir -p \"${BINARIES_DIR}\/extlinux\"cat &gt; \"${BINARIES_DIR}\/extlinux\/extlinux.conf\" &lt;&lt; EOFlabel Linux    kernel \/uImage    fdt \/zynq-rk7020f.dtb    append root=\/dev\/mmcblk0p2 rw rootwait earlyconEOFrm -rf \"${GENIMAGE_TMP}\"genimage \\    --rootpath \"${TARGET_DIR}\" \\    --tmppath  \"${GENIMAGE_TMP}\" \\    --inputpath \"${BINARIES_DIR}\" \\    --outputpath \"${BINARIES_DIR}\" \\    --config \"${GENIMAGE_CFG}\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430<\/h3>\n<p>\u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0438\u0435 \u043f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435, \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0438\u0445 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432 \u0442\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0438\u0441\u044c.<\/p>\n<h4>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 1: SPL \u043c\u043e\u043b\u0447\u0438\u0442 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0430\u0447\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f<\/h4>\n<p><strong>\u0421\u0438\u043c\u043f\u0442\u043e\u043c:<\/strong>\u00a0\u041f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u044b \u0432 UART-\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u2014 \u0442\u0438\u0448\u0438\u043d\u0430. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u0432\u043a\u043b\u044e\u0447\u0430\u044f\u00a0<code>U-Boot SPL<\/code>.<\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u2014 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043b\u0438 \u0440\u0435\u0436\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u044b\u0431\u0440\u0430\u043d DIP-\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u043c. \u0414\u043b\u044f SD-\u043a\u0430\u0440\u0442\u044b MIO \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c\u0443\u00a0<code>SD boot.<\/code><\/p>\n<p>\u0415\u0441\u043b\u0438  \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0432\u0435\u0440\u043d\u044b\u0439, \u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0435\u0442, \u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 UART \u0434\u043b\u044f SPL. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c debug UART \u0432\u044b\u0432\u043e\u0434.<br \/> SPL \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u00a0debug UART\u00a0\u0434\u043b\u044f \u0440\u0430\u043d\u043d\u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 &#8212; \u0435\u0449\u0451 \u0434\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 DM (Driver Model).<br \/> \u041e\u043d \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e UART \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u00a0<code>uboot-config.fragment<\/code>:<\/p>\n<pre><code>CONFIG_DEBUG_UART=yCONFIG_DEBUG_UART_ZYNQ=yCONFIG_DEBUG_UART_BASE=0xE0000000   # \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 UART0 \u043d\u0430 Zynq-7000CONFIG_DEBUG_UART_CLOCK=100000000   # \u0442\u0430\u043a\u0442\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 UART \u0432 \u0413\u0446CONFIG_SPL_SERIAL=yCONFIG_SPL_DM_SERIAL=yCONFIG_SPL_DM=y<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<blockquote>\n<p><code>0xE0000000<\/code>\u00a0\u2014 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 UART0 \u043d\u0430 Zynq-7000. \u0415\u0441\u043b\u0438 \u043f\u043b\u0430\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 UART1 \u2014 \u0430\u0434\u0440\u0435\u0441 \u0431\u0443\u0434\u0435\u0442\u00a0<code>0xE0001000<\/code>. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u043d\u043e \u0432 Vivado \u043f\u0440\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.<\/p>\n<\/blockquote>\n<blockquote>\n<p><code>CONFIG_DEBUG_UART_CLOCK<\/code>\u00a0\u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 UART, \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0432 Vivado. \u041d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 BAUDRATE \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0433\u043e.<\/p>\n<\/blockquote>\n<h4>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 2: SPL \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b, \u043d\u043e \u043d\u0435 \u0432\u0438\u0434\u0438\u0442 MMC<\/h4>\n<p><strong>\u0421\u0438\u043c\u043f\u0442\u043e\u043c:<\/strong>\u00a0\u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432\u044b\u0432\u043e\u0434 SPL, \u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f:<\/p>\n<pre><code>U-Boot SPL 2025.01 (...)Trying to boot from MMC1spl: error reading image uImage, err - -22SPL: failed to boot from all boot devices### ERROR ### Please RESET the board ###<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u043e\u0434\u00a0<code>-22<\/code>\u00a0\u0432 Linux\/U-Boot \u2014 \u044d\u0442\u043e\u00a0<code>EINVAL<\/code>. SPL \u043d\u0430\u0448\u0451\u043b MMC-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043d\u043e \u043d\u0435 \u0441\u043c\u043e\u0433 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437 \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b FAT.<\/p>\n<p><strong>\u041f\u0440\u0438\u0447\u0438\u043d\u0430:<\/strong>\u00a0\u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 SPL \u043d\u0435 \u0431\u044b\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 FAT \u0438 MMC:<\/p>\n<pre><code>CONFIG_SPL_FS_FAT=y   # \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 FAT-\u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 SPLCONFIG_SPL_MMC=y      # \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 MMC\/SD \u0432 SPLCONFIG_SPL_OS_BOOT=n  # \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u0440\u044f\u043c\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 OS \u0438\u0437 SPL<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0411\u0435\u0437\u00a0<code>CONFIG_SPL_FS_FAT<\/code>\u00a0\u0438\u00a0<code>CONFIG_SPL_MMC<\/code>\u00a0SPL \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0441 FAT-\u0440\u0430\u0437\u0434\u0435\u043b\u0430 SD-\u043a\u0430\u0440\u0442\u044b, \u0445\u043e\u0442\u044f MMC-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/p>\n<h4>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 3:\u00a0sdhci0\u00a0\u0438\u00a0uart0\u00a0\u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 SPL<\/h4>\n<p><strong>\u0421\u0438\u043c\u043f\u0442\u043e\u043c:<\/strong>\u00a0\u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u00a0<code>uboot-config.fragment<\/code>\u00a0\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 MMC \u0438 UART SPL \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u0432\u0438\u0434\u0438\u0442 MMC. \u0412 \u0432\u044b\u0432\u043e\u0434\u0435:<\/p>\n<pre><code>mmc0 not available<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u041f\u0440\u0438\u0447\u0438\u043d\u0430:<\/strong>\u00a0\u0412 \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 U-Boot (\u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 ~2022) \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 SPL, \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u044f\u0432\u043d\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432 DTS \u0447\u0435\u0440\u0435\u0437 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u00a0<code>bootph-all<\/code>. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e SPL-\u0444\u0430\u0437\u0430 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0437\u043b\u044b \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 DM.<\/p>\n<p><strong>\u0420\u0435\u0448\u0435\u043d\u0438\u0435:<\/strong>\u00a0\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c\u00a0<code>bootph-all<\/code>\u00a0\u0432 \u0443\u0437\u043b\u044b\u00a0<code>sdhci0<\/code>\u00a0\u0438\u00a0<code>uart0<\/code>\u00a0\u0432\u00a0<code>zynq-rk7020f.dts<\/code>:<\/p>\n<pre><code>&amp;sdhci0 {      bootph-all;    status = \"okay\";      xlnx,has-cd = &lt;0x1&gt;;    ...};&amp;uart0 {      bootph-all;  cts-override;      device_type = \"serial\";      ...};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<blockquote>\n<p><code>bootph-all<\/code>\u00a0\u2014 \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u0430 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0433\u043e\u00a0<code>u-boot,dm-pre-reloc<\/code>. \u041e\u0437\u043d\u0430\u0447\u0430\u0435\u0442: \u00ab\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430 \u0432\u0441\u0435\u0445 \u0444\u0430\u0437\u0430\u0445 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f SPL\u00bb.<\/p>\n<\/blockquote>\n<h4>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 4: U-Boot \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b, \u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u00a0Warning &#8212; bad CRC, using default environment<\/h4>\n<p>`<br \/> <strong>\u0421\u0438\u043c\u043f\u0442\u043e\u043c:<\/strong>\u00a0U-Boot \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0442\u0430\u0440\u0442\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442:<\/p>\n<pre><code>*** Warning - bad CRC, using default environment<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418 \u0434\u0430\u043b\u0435\u0435 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438\u0437 FAT (<code>uboot.env<\/code>), \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0438\u0445.<\/p>\n<p><strong>\u041f\u0440\u0438\u0447\u0438\u043d\u0430:<\/strong>\u00a0\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e U-Boot \u0434\u043b\u044f Zynq \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 FAT-\u0444\u0430\u0439\u043b\u0435\u00a0<code>uboot.env<\/code>\u00a0\u043d\u0430 SD-\u043a\u0430\u0440\u0442\u0435. \u0424\u0430\u0439\u043b\u0430 \u043d\u0435\u0442 \u2014 CRC \u043d\u0435 \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u2014 U-Boot \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0445\u00a0<code>bootcmd<\/code>\u00a0\/\u00a0<code>bootargs<\/code>.<\/p>\n<p><strong>\u0420\u0435\u0448\u0435\u043d\u0438\u0435:<\/strong>\u00a0\u0423\u043a\u0430\u0437\u0430\u0442\u044c U-Boot \u043d\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445, \u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0435:<\/p>\n<pre><code>CONFIG_ENV_IS_IN_FAT=n       CONFIG_ENV_IS_NOWHERE=y      <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 5: \u042f\u0434\u0440\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u043e\u0441\u044c, \u043d\u043e Ethernet \u0431\u0435\u0440\u0435\u0442 \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u044b\u0439 MAC \u0430\u0434\u0440\u0435\u0441<\/h4>\n<p><strong>\u0421\u0438\u043c\u043f\u0442\u043e\u043c:<\/strong>\u00a0\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0430\u0441\u044c, \u0441\u0435\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c MAC-\u0430\u0434\u0440\u0435\u0441\u043e\u043c (\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e).<\/p>\n<p><strong>\u041f\u0440\u0438\u0447\u0438\u043d\u0430:<\/strong>\u00a0\u0412 Device Tree \u0434\u043b\u044f ethernet-\u0443\u0437\u043b\u0430 \u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u0434\u0430\u043d\u00a0<code>local-mac-address<\/code>. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u00a0<code>macb<\/code>\u00a0\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 MAC \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0442\u0430\u0440\u0442\u0435.<\/p>\n<p><strong>\u0420\u0435\u0448\u0435\u043d\u0438\u0435:<\/strong>\u00a0\u041f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 MAC-\u0430\u0434\u0440\u0435\u0441 \u0432 DTS:<\/p>\n<pre><code>&amp;gem0 {    phy-mode = \"rgmii-id\";    status = \"okay\";    xlnx,ptp-enet-clock = &lt;0x69f6bcb&gt;;    local-mac-address = [02 4F A3 7C 1B E9];  \/* \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e *\/};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u0420\u0430\u0434\u043e\u0441\u0442\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043b\u043e\u0433\u0438<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0431\u0440\u0430\u0437\u0430 \u043d\u0430 SD-\u043a\u0430\u0440\u0442\u0443 \u0438 \u043f\u043e\u0434\u0430\u0447\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0432\u044b\u0432\u043e\u0434 U-Boot SPL:<\/p>\n<pre><code>U-Boot SPL 2025.01 (May 20 2026 - 23:45:43 +0300)Silicon version:        3Trying to boot from MMC1<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u043c\u0443 U-Boot, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u044f\u0434\u0440\u043e \u043f\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u0437 <code>extlinux.conf<\/code>:<\/p>\n<pre><code>U-Boot 2025.01 (May 20 2026 - 23:45:43 +0300)CPU:   Zynq 7z020Silicon: v3.1DRAM:  ECC disabled 1 GiB...Found \/extlinux\/extlinux.confRetrieving file: \/uImageRetrieving file: \/system.dtb## Booting kernel from Legacy Image at 02000000 ...   Image Name:   Linux-6.12.40-xilinx   Data Size:    6857832 Bytes = 6.5 MiB   Load Address: 00008000   Verifying Checksum ... OKLoading Device Tree to 2fff9000 ... OKStarting kernel ...<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u044f\u0434\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0433\u043e\u0442\u043e\u0432\u0430 \u043a \u0440\u0430\u0431\u043e\u0442\u0435: \u0441\u0435\u0442\u044c \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f, \u043f\u043b\u0430\u0442\u0430 \u043f\u0438\u043d\u0433\u0443\u0435\u0442\u0441\u044f, \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d SSH.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0441 \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u043a\u043e\u0439<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9b0\/524\/68b\/9b052468b7b11159780bf1dec65a0a75.png\" width=\"1085\" height=\"309\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/9b0\/524\/68b\/9b052468b7b11159780bf1dec65a0a75.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9b0\/524\/68b\/9b052468b7b11159780bf1dec65a0a75.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c, \u043f\u043e\u0434\u043d\u044f\u043b\u0430\u0441\u044c, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u0448\u0430 \u0436\u0435\u043b\u0435\u0437\u043a\u0430 \u043f\u0438\u043d\u0433\u0443\u0435\u0442\u0441\u044f<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cca\/7e5\/0e0\/cca7e50e032ada5309941a2d86b87fbc.png\" width=\"778\" height=\"291\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/cca\/7e5\/0e0\/cca7e50e032ada5309941a2d86b87fbc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cca\/7e5\/0e0\/cca7e50e032ada5309941a2d86b87fbc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0443 \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0437\u0430\u0439\u0434\u0435\u043c \u043f\u043e ssh \u043d\u0430 \u043d\u0435\u0435)<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/81c\/5ab\/265\/81c5ab265ef9dadaf7a2131f1002f179.png\" width=\"1014\" height=\"365\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/81c\/5ab\/265\/81c5ab265ef9dadaf7a2131f1002f179.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/81c\/5ab\/265\/81c5ab265ef9dadaf7a2131f1002f179.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c, \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u0432\u0435\u0449\u0430\u043c)<\/p>\n<h2>\u0418\u0442\u043e\u0433<\/h2>\n<p>\u041c\u044b \u043f\u0440\u043e\u0448\u043b\u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043e\u0442 \u0447\u0438\u0441\u0442\u043e\u0433\u043e Vivado-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0439 Linux-\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 RK-ZYNQ7020-F:<\/p>\n<ol>\n<li>\n<p>\u041e\u043f\u0438\u0441\u0430\u043b\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0432 Vivado \u2014 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 PS, \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 XSA \u0441 <code>ps7_init_gpl.c<\/code> \u0438 <code>.hwh<\/code><\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 Vitis, \u0443\u0431\u0435\u0434\u0438\u043b\u0438\u0441\u044c \u0447\u0442\u043e UART \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043a Buildroot<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 <code>BootROM \u2192 SPL \u2192 U-Boot \u2192 kernel<\/code> \u0438 \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u044d\u0442\u0430\u043f\u0435<\/p>\n<\/li>\n<li>\n<p>\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 Device Tree \u0447\u0435\u0440\u0435\u0437 <code>xsct<\/code> \u0438 <code>device-tree-xlnx<\/code>, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0435\u0433\u043e \u0434\u043b\u044f U-Boot SPL<\/p>\n<\/li>\n<li>\n<p>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043b\u0438 <code>BR2_EXTERNAL<\/code> \u0434\u0435\u0440\u0435\u0432\u043e, \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f U-Boot \u0438 \u044f\u0434\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0431\u0440\u0430\u043b\u0438 \u043e\u0431\u0440\u0430\u0437 \u0447\u0435\u0440\u0435\u0437 Buildroot \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 SD-\u043a\u0430\u0440\u0442\u0443 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u043e\u0439 \u0438 <code>extlinux.conf<\/code><\/p>\n<\/li>\n<\/ol>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u043d\u0430 \u0431\u0430\u0437\u0435 Zynq-7000, \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043a \u0442\u0440\u0451\u043c \u0432\u0435\u0449\u0430\u043c: \u043d\u043e\u0432\u044b\u0439 XSA \u0438\u0437 Vivado, \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0439 <code>ps7_init_gpl.c<\/code> \u0438 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0430 Device Tree. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f Buildroot \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>\u0412\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438:<\/p>\n<p><a href=\"https:\/\/github.com\/FernandesKA\/buildroot_custom\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/FernandesKA\/buildroot_custom<\/a><\/p>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0442 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u0430:<\/p>\n<p><a href=\"https:\/\/disk.yandex.ru\/d\/S-ma8Wm3MY3ibQ\" rel=\"noopener noreferrer nofollow\">https:\/\/disk.yandex.ru\/d\/S-ma8Wm3MY3ibQ<\/a><\/p>\n<p>\u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c, \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u043c, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u0440\u0438\u0442\u0438\u043a\u0435!<\/p>\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\/articles\/1042798\/\">https:\/\/habr.com\/ru\/articles\/1042798\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043b\u0430\u0442\u0430 RK-ZYNQ7020-F REV 1.1. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c \u0441 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u043e\u0439 buildroot \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u044d\u0442\u0430\u043f\u044b \u043e\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f xsa \u0444\u0430\u0439\u043b\u0430 \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043b\u0430\u0442\u044b \u0438 \u043f\u0435\u0440\u0432\u044b\u0445 \u043b\u043e\u0433\u043e\u0432 linux, \u0441 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0436\u0435\u043b\u0435\u0437\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u044d\u0442\u0430\u043f\u0435.\u0422\u0430\u043a\u0436\u0435 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c FSBL, \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c U-Boot SPL. \u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e!\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0442 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u0430:https:\/\/disk.yandex.ru\/d\/S-ma8Wm3MY3ibQ\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435, \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438:CAN PSRS-485DDR3 1 GB\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 FT2232HQ (JTAG + USB &#8212; UART \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440)EEPROM (AT24C256C)8 GB eMMCEthernet PS + PL (RTL8211F-CG)FMC 40 pinLCD256 Mbit QSPI NOR FlashRTC PCF8563USB 2.0 PS (USB3320)XC7Z020-2CLG484I\u041f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b ZYNQ-RK7020-F Rev 1.1\u041d\u0430 \u043f\u043b\u0430\u0442\u0435 \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u043e\u0448\u0438\u0442\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 Linux \u0432 QSPI, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 PS \u0447\u0430\u0441\u0442\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e SoC, \u043e\u0434\u043d\u0430\u043a\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c linux \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0435\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u0438 \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430\u043c\u0438 &#8212; \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u044f\u0434\u0440\u0430.\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u0430 \u043f\u0440\u043e\u0434\u0430\u0432\u0435\u0446 \u043f\u043b\u0430\u0442\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0430\u0440\u0445\u0438\u0432\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c petalinux \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443, \u043a\u0430\u043a\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0418 \u0441\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442, \u0433\u0434\u0435 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b petalinux \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442.\u041c\u0430\u043d\u0443\u0430\u043b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439, \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c &#8212; \u043d\u0430 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043e\u0431\u0440\u0430\u0437, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Buildroot.\u041d\u0430 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u043b\u0441\u044f XC7Z020-2CLG484I, \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c PS \u0447\u0430\u0441\u0442\u044c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u0432 \u0441\u0435\u0431\u0435 \u0434\u0432\u0430 \u044f\u0434\u0440\u0430 (ARM Cortex-A9). \u0421 \u043d\u0435\u0439 \u043c\u044b \u0438 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, PL \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 buildroot \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c U-Boot (\u0432\u043a\u043b\u044e\u0447\u0430\u044f SPL), Linux Kernel, rootfs, \u0438 \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u0432 \u043d\u0430\u0448 \u043e\u0431\u0440\u0430\u0437, \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430.\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043f\u043b\u0430\u0442\u044b, \u0438 \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u044b \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043b\u0430\u0442\u044b RK-ZYNQ7020-F\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043b\u0430\u0442\u044b, \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c Non-secure mode.\u041f\u043e\u043b\u043d\u0430\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:BootROM \u2192 FSBL\/U-Boot SPL \u2192 U-Boot \u2192 Linux kernel \u2192 rootfs\u041a\u0430\u0436\u0434\u044b\u0439 \u044d\u0442\u0430\u043f \u0440\u0435\u0448\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0438\u0445 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443.\u042d\u0442\u0430\u043f 1 \u2014 BootROMBootROM \u2014 \u044d\u0442\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u0434, \u0437\u0430\u0448\u0438\u0442\u044b\u0439 \u0432 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c. \u041e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0430\u0447\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 CPU0, \u0430 CPU1 \u0432 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u0442\u043e\u0438\u0442 \u0432 WFE, \u043e\u0436\u0438\u0434\u0430\u044f \u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f.\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 BootROM:\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e \u0432\u044b\u0432\u043e\u0434\u0430\u043c MIO[8:2], \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 slcr.BOOT_MODE[6:0]\u041d\u0430\u0445\u043e\u0434\u0438\u0442 boot.bin \u043d\u0430 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a: \u043f\u043e\u043b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c 0x584C4E58 (&#8216;XLNX&#8217;), \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0431\u043b\u043e\u043a Register Initialization \u0438\u0437 Boot Header \u2014 \u0434\u043e 256 \u043f\u0430\u0440 \u00ab\u0430\u0434\u0440\u0435\u0441\/\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b PS \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0437\u0430\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 SPL \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u043f\u0430\u043c\u044f\u0442\u044c OCM (On-Chip Memory) \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 DDR \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u2014 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 OCM.\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f DIP-\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 \u043f\u043b\u0430\u0442\u0435. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u0438 \u0440\u0435\u0436\u0438\u043c\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438:\ud83d\udcc4 Zynq-7000 TRM, Chapter 6 \u2014 Boot and Configuration (AMD UG585)\u042d\u0442\u0430\u043f 2 \u2014 U-Boot SPL\u0412 \u0442\u0438\u043f\u0438\u0447\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 Xilinx \u0432\u0442\u043e\u0440\u044b\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u0438\u0434\u0451\u0442 FSBL (First Stage Boot Loader).\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f U-Boot SPL \u2014 \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Buildroot \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Vitis, \u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u043b\u0435\u0433\u043a\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 CI\/CD.\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0433\u0430\u0439\u0434\u043e\u0432, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:BootROM \u2192 FSBL \u2192 U-Boot \u2192 Linux\u0412 \u043d\u0430\u0448\u0435\u043c \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043e\u0442\u043a\u0430\u0436\u0435\u043c\u0441\u044f \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f FSBL, \u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c U-Boot SPL. \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0442\u043e\u0433\u0434\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f, \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:BootROM \u2192 U-Boot SPL \u2192 U-Boot \u2192 Linux\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c U-Boot \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 BootROM?\u041f\u043e\u043b\u043d\u044b\u0439 U-Boot \u043d\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 OCM (256 \u041a\u0411). \u0410 DDR \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0435\u0449\u0451 \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u2014 U-Boot \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043a\u0443\u0434\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c. SPL \u0440\u0435\u0448\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443: \u043e\u043d \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0430\u043b \u0434\u043b\u044f OCM \u0438 \u0443\u043c\u0435\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c DDR.\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 SPL:\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e PS: \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, MIO, UART\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 DDR \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u0438\u0437 ps7_init_gpl.c \u2014 \u0444\u0430\u0439\u043b\u0430, \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0437 Vivado \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 u-boot.img \u0441 SD-\u043a\u0430\u0440\u0442\u044b \u0432 DDR \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435ps7_init_gpl.c \u2014 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u0444\u0430\u0439\u043b, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043b\u0430\u0442\u044b. \u0412 \u043d\u0451\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 DDR, \u0447\u0430\u0441\u0442\u043e\u0442\u044b PLL \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f MIO. \u0411\u0435\u0437 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e ps7_init \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f.\ud83d\udcc4 U-Boot Secondary Program Loader \u2014 Xilinx Wiki\u042d\u0442\u0430\u043f 3 \u2014 U-Boot\u041f\u043e\u043b\u043d\u044b\u0439 U-Boot \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u0437 DDR. \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0441\u0435\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044f\u0434\u0440\u0443.\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 U-Boot:\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 MMC, Ethernet, UART \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044e\u0418\u0449\u0435\u0442 \/extlinux\/extlinux.conf \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 SD-\u043a\u0430\u0440\u0442\u044b \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043f\u043e \u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c \u0444\u0430\u0439\u043b\u044b \u0432 RAM \u043f\u0430\u043c\u044f\u0442\u044c: uImage \u2192 0x02000000system.dtb \u2192 0x01F00000\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 bootm, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044f\u0434\u0440\u0443: \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u044f\u0434\u0440\u043e 0x02000000 \u2192 0x00008000 (\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 ARM Linux)\u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 DTB \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432 \u043a\u043e\u043d\u0446\u0435 DDR \u2192 0x2fff9000\u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 DMA-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 CPU \u0432 \u0440\u0435\u0436\u0438\u043c SVC, \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 MMU, \u043a\u044d\u0448\u0438 \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b: r0=0, r1=~0, r2=\u0430\u0434\u0440\u0435\u0441 DTB\u041f\u0440\u044b\u0433\u0430\u0435\u0442 \u043d\u0430 0x00008000 \u2014 U-Boot \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u044f\u0434\u0440\u0443.\u0412 \u043b\u043e\u0433\u0430\u0445 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043cBooting kernel from Legacy Image at 02000000 &#8230;   Load Address: 00008000   Entry Point:  00008000Loading Kernel Image to 8000Loading Device Tree to 2fff9000 &#8230;Starting kernel &#8230;\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c:\ud83d\udcc4 Booting ARM Linux \u2014 The Linux Kernel documentation\u042d\u0442\u0430\u043f 4 \u2014 Linux Kernel4.1 \u2014 \u0414\u0435\u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u044fuImage \u2014 \u044d\u0442\u043e zImage \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c U-Boot. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x00008000 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0441\u0430\u043c\u043e \u044f\u0434\u0440\u043e, \u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0434\u0435\u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u043e\u0440 \u0438\u0437 arch\/arm\/boot\/compressed\/head.S, \u043a\u043e\u0442\u043e\u0440\u044b\u0439:\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u043e\u0435\u0442 \u043b\u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u0441\u0430\u043c \u0441\u0435\u0431\u044f; \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043a\u0440\u043e\u0435\u0442 \u2014 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u0441\u0436\u0430\u0442\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u0434\u0430\u043b\u044c\u0448\u0435\u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 vmlinux \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 0x00008000\u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u044d\u0448\u0438 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 stext() \u2014 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u044f\u0434\u0440\u0430\u041f\u0435\u0440\u0432\u044b\u0435 32 \u041a\u0411 (0x0000\u20130x7FFF) \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e\u0434 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043d\u0443\u0436\u0434\u044b \u044f\u0434\u0440\u0430: \u0441\u044e\u0434\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 (swapper_pg_dir \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x00004000).\ud83d\udcc4 How the ARM32 Linux kernel decompresses \u2014 Linus Walleij \ud83d\udcc4 How the ARM32 kernel starts \u2014 Linus Walleij4.2 \u2014 \u0420\u0430\u043d\u043d\u044f\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u041f\u043e\u0441\u043b\u0435 \u0434\u0435\u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u0438 \u044f\u0434\u0440\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443:\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 page tables, \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442 swapper_pg_dir\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 MMU \u0438 \u043a\u044d\u0448\u0438\u0427\u0438\u0442\u0430\u0435\u0442 DTB \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0438\u0437 r2, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 magic 0xd00dfeed \u2014 \u0438\u0437 \u043d\u0435\u0433\u043e \u044f\u0434\u0440\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u0441\u044e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 GIC, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a, \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0430\u043c\u044f\u0442\u0438\ud83d\udcc4 Booting ARM Linux \u2014 The Linux Kernel documentation4.3 \u2014 \u041c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 rootfs\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \/extlinux\/extlinux.conf:root=\/dev\/mmcblk0p2 rw rootwait\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442:\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435root=\/dev\/mmcblk0p2\u041a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0424\u0421 \u2014 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437\u0434\u0435\u043b SD-\u043a\u0430\u0440\u0442\u044brw\u0421\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044crootwait\u0416\u0434\u0430\u0442\u044c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (MMC \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e)\u0411\u0435\u0437 rootwait \u044f\u0434\u0440\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b \u0434\u043e \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 MMC-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u0443\u043f\u0430\u0434\u0451\u0442 \u0432 \u043f\u0430\u043d\u0438\u043a\u0443: VFS: Unable to mount root fs.\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \/sbin\/init, \u0434\u0430\u043b\u0435\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0433\u043e\u0442\u043e\u0432\u0430 \u043a \u0440\u0430\u0431\u043e\u0442\u0435.\ud83d\udcc4 bootparam(7) \u2014 Linux manual page, man7.org\ud83d\udcc4 The kernel&#8217;s command-line parameters \u2014 kernel.org\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 XSA \u0432 Vivado\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a Buildroot, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430\u0448\u0443 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 U-Boot SPL \u0438 \u044f\u0434\u0440\u043e Linux. \u042d\u0442\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f Vivado.\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0444\u0430\u0439\u043b XSA (Xilinx Support Archive) \u2014 \u043e\u043d \u043d\u0443\u0436\u0435\u043d \u0440\u043e\u0432\u043d\u043e \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0432\u0435\u0449\u0435\u0439:ps7_init_gpl.c \u2014 \u043a\u043e\u0434 \u0440\u0430\u043d\u043d\u0435\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 PS (DDR, PLL, MIO), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0432 U-Boot SPL.hwh (Hardware Handoff) \u2014 XML-\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e xsct \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 Device Tree\u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e: \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0432 Vivado \u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430. \u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0430\u0445 DDR \u0438\u043b\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 MIO \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u0438\u043b\u0438 UART \u043d\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.\u0428\u0430\u0433 1 \u2014 \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430File \u2192 Project \u2192 New\u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c XC7Z020-2CLG484I \u2014 \u044d\u0442\u043e\u0442 \u0447\u0438\u043f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 RK-ZYNQ7020-F. \u0422\u0438\u043f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 RTL Project.\u0428\u0430\u0433 2 \u2014 Block Design \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 ZYNQ7 PS\u0412 IP Integrator \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u043e\u0432\u044b\u0439 Block Design \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c IP-\u044f\u0434\u0440\u043e ZYNQ7 Processing System.\u0412\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f PS \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u043b\u0438\u043a \u043f\u043e \u0431\u043b\u043e\u043a\u0443. \u042d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 IP \u0432 \u043d\u0430\u0448\u0435\u043c \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u2014 PL \u043c\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.\u0428\u0430\u0433 3 \u2014 \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f PSPS-PL Configuration \u2192 AXI Non Secure Enablement\u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c M AXI GP0 interface. \u042d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0441 \u043b\u043e\u0433\u0438\u043a\u043e\u0439 PL \u0447\u0435\u0440\u0435\u0437 \u0448\u0438\u043d\u0443 AXI. \u0420\u0430\u0437 \u043c\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c PL \u2014 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d.DDR Configuration:MT41K256M16 RE-125, Effective DRAM Bus Width 32 BitMIO Configuration:Bank 0 I\/O Voltage LVCMOS 3.3VBank 1 I\/O Voltage LVCMOS 1.8VSD0: MIO40 &#8212; 45, \u0430 \u0442\u0430\u043a\u0436\u0435 card detect \u043d\u0430 MIO9.UART0:MIO 10, 11ENET0:MIO16-27, MDIO MIO 52-53\u0428\u0430\u0433 4 \u2014 \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0448\u0442\u0440\u0438\u0445\u0438 \u0432 Block Design\u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 Block Design \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u0438\u043d \u0431\u043b\u043e\u043a \u0431\u0435\u0437 \u0432\u0438\u0441\u044f\u0449\u0438\u0445 \u043f\u043e\u0440\u0442\u043e\u0432. \u0421\u043e\u0437\u0434\u0430\u0451\u043c HDL-\u043e\u0431\u0451\u0440\u0442\u043a\u0443:Sources \u2192 \u041f\u041a\u041c \u043d\u0430 design \u2192 Create HDL Wrapper\u0428\u0430\u0433 5 \u2014 \u0421\u0438\u043d\u0442\u0435\u0437, \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 XSARun Synthesis \u2192 Run Implementation\u0417\u0430\u0442\u0435\u043c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c XSA:File \u2192 Export \u2192 Export Hardware \u2192 Pre-synthesis (\u0431\u0435\u0437 bitstream)\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, design_1_wrapper.xsa. \u041d\u0430 \u044d\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 Vivado \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u043d \u043d\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f.\u0427\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 XSA \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043d\u0443\u0436\u0435\u043d \u0434\u0430\u043b\u044c\u0448\u0435XSA \u2014 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e:unzip design_1_wrapper.xsa -d xsa_contentsls xsa_contents\/\u0424\u0430\u0439\u043b\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044fps7_init_gpl.c \/ .h\u0420\u0430\u043d\u043d\u044f\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f PS: DDR, PLL, MIOU-Boot SPL \u2014 \u0434\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 DDR*.hwh (Hardware Handoff)XML-\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044bxsct \u2014 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f Device Tree*.bit\u0411\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0434\u043b\u044f PL\u0422\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435 \u00ab\u0441 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u043e\u043c\u00bb\u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0448\u0430\u0433\u0435 XSA \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u043f\u0443\u0442\u044f\u043c\u0438, &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-482126","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/482126","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=482126"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/482126\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=482126"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=482126"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=482126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}