{"id":497641,"date":"2026-10-07T00:54:14","date_gmt":"2026-10-06T21:54:14","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=497641"},"modified":"2026-10-07T00:54:14","modified_gmt":"2026-10-06T21:54:14","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=497641","title":{"rendered":"\u0421\u043c\u043e\u0442\u0440\u0438\u043c ILA \u0431\u0435\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 Zynq SoC"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430 Zynq SoC, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ILA (Integrated Logic Analyzer) \u0431\u0435\u0437 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 JTAG.<br \/>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Xilinx Virtual Cable, \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0438\u0437 Hardware Manager Vivado.<\/p>\n<p>\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<ol>\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 XVC?<\/p>\n<\/li>\n<li>\n<p>\u0413\u043e\u0442\u043e\u0432\u0438\u043c XVC \u0434\u043b\u044f Zynq SoC \u0432 Block Design<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c XVC \u043a\u0430\u043a \u043f\u0430\u043a\u0435\u0442\u044b (us + lkm) \u0432 \u043d\u0430\u0448 buildroot<\/p>\n<\/li>\n<li>\n<p>\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c devicetree ovelay \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e xvc (mmap \u0447\u0435\u0440\u0435\u0437 uio, ioctl)<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 uio, \u0438 \u043a\u0430\u043a \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 XVC \u0447\u0435\u0440\u0435\u0437 ioctl lkm<\/p>\n<\/li>\n<li>\n<p>\u0413\u043e\u0442\u043e\u0432\u0438\u043c bitstream \u0441 ILA \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u043a\u0443\u0434\u0430 \u043d\u0430\u0434\u043e \u0436\u043c\u0430\u0442\u044c \u0432 Vivado, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443<\/p>\n<\/li>\n<\/ol>\n<p><em>P. S. \u042f \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a RTL, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u2014 \u043e\u0447\u0435\u043d\u044c \u0431\u0443\u0434\u0443 \u0440\u0430\u0434 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u0440\u0438\u0442\u0438\u043a\u0435!<\/em><\/p>\n<p>\u041a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043c\u0435\u043d\u044f \u043f\u043e\u0434\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0430 \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 fpga (bitstream), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u043f\u043b\u0430\u0442\u0443, \u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0434\u0430\u0432\u0430\u043b\u0430 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u0436\u0438\u0437\u043d\u0438, \u043d\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u0430 \u0447\u0435\u0440\u043d\u0430\u044f \u043c\u0430\u0433\u0438\u044f.<\/p>\n<p>\u0418 \u043a\u0430\u043a \u043d\u0430\u0437\u043b\u043e \u0440\u0430\u0441\u043f\u0430\u044f\u043d\u043d\u043e\u0439 FTDI \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e, \u0430 JTAG-\u0440\u0430\u0437\u044a\u0435\u043c \u0431\u044b\u043b \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0432 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>\u041f\u0443\u0442\u0435\u043c \u043d\u0435\u0434\u043e\u043b\u0433\u0438\u0445 \u043f\u043e\u0438\u0441\u043a\u043e\u0432 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p><a href=\"https:\/\/github.com\/Xilinx\/XilinxVirtualCable%EF%BF%BC\" rel=\"noopener nofollow\">https:\/\/github.com\/Xilinx\/XilinxVirtualCable<br \/><\/a> <a href=\"https:\/\/docs.amd.com\/r\/en-US\/ug908-vivado-programming-debugging\/Xilinx-Virtual-Cable-XVC%EF%BF%BC\" rel=\"noopener nofollow\">https:\/\/docs.amd.com\/r\/en-US\/ug908-vivado-programming-debugging\/Xilinx-Virtual-Cable-XVC<br \/><\/a> <a href=\"https:\/\/xilinx-wiki.atlassian.net\/wiki\/spaces\/A\/pages\/644579329\/Xilinx+Virtual+Cable\" rel=\"noopener nofollow\">https:\/\/xilinx-wiki.atlassian.net\/wiki\/spaces\/A\/pages\/644579329\/Xilinx+Virtual+Cable<\/a><\/p>\n<p>\u0418 \u0441\u0443\u0434\u044f \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e, \u0432\u0441\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 \u043e\u0434\u043d\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u043d\u043e \u0432 \u0432\u0438\u0434\u0435 petalinux.<br \/>\u0412 \u0446\u0435\u043b\u043e\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043b\u0430\u043f\u043a\u0430\u043c\u0438 \u0432 \u043d\u0430\u0448 buildroot \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u0443 \u043c\u0435\u043d\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f Zynq RK-7020F Rev 1.1, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0437 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439.<br \/>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437, sdk \u043c\u043e\u0436\u043d\u043e \u0442\u0443\u0442:<br \/><a href=\"https:\/\/github.com\/FernandesKA\/buildroot_custom\" rel=\"noopener nofollow\">https:\/\/github.com\/FernandesKA\/buildroot_custom<\/a><\/p>\n<h3>\u041a\u0443\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c ILA, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c?<\/h3>\n<p>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 ILA \u044f \u0431\u0443\u0434\u0443 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0432\u043e\u0435\u0433\u043e PET \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 AD9361 + Zynq7020.<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c ILA \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u043e \u0442.\u043a. \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043d\u0435\u0447\u0442\u043e \u043d\u0435\u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u043e\u0435, \u0442\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u043d\u0435\u0433\u043e.<\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u2014 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431:<\/p>\n<p>SYNTHESIS -&gt; Open Synthesized Design -&gt; Schematic<\/p>\n<p>\u041f\u043e\u043c\u0435\u0442\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0448\u0438\u043d\u044b \u0447\u0435\u0440\u0435\u0437 Mark Debug, \u0434\u0430\u043b\u0435\u0435 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <br \/>SYNTHESIS -&gt; Set Up Debug<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/21c\/00d\/6e2\/21c00d6e25724199e1d086692b37194e.png\" width=\"1293\" height=\"597\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/21c\/00d\/6e2\/21c00d6e25724199e1d086692b37194e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/21c\/00d\/6e2\/21c00d6e25724199e1d086692b37194e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0422\u0430\u043a \u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u043b, \u0438 \u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. <\/p>\n<p>Set Up Debug \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 ILA \u043f\u0440\u044f\u043c\u043e \u0432 \u043d\u0435\u0442\u043b\u0438\u0441\u0442 \u0438 \u0441\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0434\u043b\u044f \u043d\u0435\u0433\u043e <code>dbg_hub<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u0434\u0438\u0442\u0441\u044f \u043d\u0430 BSCANE2 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 JTAG.  <br \/>\u0410 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0445\u0430\u0431\u043e\u043c \u0431\u044b\u043b Debug Bridge, \u0434\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0434\u043e\u0441\u0442\u0443\u0447\u0438\u043c\u0441\u044f \u043f\u043e AXI (\u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435). \u0418 \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f Debug Bridge \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 <em>From AXI to BSCAN<\/em> \u0438\u043b\u0438 <em>From BSCAN to DebugHub<\/em>, Vivado \u0442\u0430\u043a\u0443\u044e \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c:<\/p>\n<pre><code>CRITICAL WARNING: [Vivado 12-727] Error: This design contains one or more debug bridge instances with one or more master interfaces enabled and\/or configured in any of the following modes. 1.AXI to BSCAN 2. PCIE to BSCAN 3. BSCAN Primitive 4. From BSCAN to DebugHub for which insertion is not currently supported.Use the debug instantiation flow.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u0440\u0438\u0447\u0435\u043c \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c critical warning, bitstream \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, \u0442\u043e\u043b\u044c\u043a\u043e ILA \u0432 \u043d\u0435\u043c \u043d\u0435\u0442. \u0422\u0430\u043a \u0447\u0442\u043e \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0438\u0442\u0430\u0435\u043c \u043b\u043e\u0433.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 ILA \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e\u0435 IP (\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 <em>debug instantiation flow<\/em>): \u043b\u0438\u0431\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u043c \u0432 RTL, \u043b\u0438\u0431\u043e \u0432 Block Design. <\/p>\n<p>\u042f \u0432\u044b\u0431\u0440\u0430\u043b RTL \u2014 \u0442\u0430\u043a \u0432\u0438\u0434\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043c\u043e\u0434\u0443\u043b\u044f, \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0434\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0445 \u043f\u043e\u0440\u0442\u0430\u043c\u0438 \u043d\u0430\u0440\u0443\u0436\u0443.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c IP (\u0447\u0435\u0440\u0435\u0437 IP Catalog \u0438\u043b\u0438 tcl):<\/p>\n<pre><code>create_ip -name ila -vendor xilinx.com -library ip -module_name ila_ddsset_property -dict [list \\    CONFIG.C_NUM_OF_PROBES {3} \\    CONFIG.C_PROBE0_WIDTH {12} \\    CONFIG.C_PROBE1_WIDTH {12} \\    CONFIG.C_PROBE2_WIDTH {24} \\    CONFIG.C_DATA_DEPTH {2048} \\] [get_ips ila_dds]generate_target all [get_ips ila_dds]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0418 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0442\u0443\u0434\u0430, \u0433\u0434\u0435 \u043b\u0435\u0436\u0430\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b:<\/p>\n<pre><code>ila_dds ila_dds_inst (    .clk(i_clk),    .probe0(dbg_i),    .probe1(dbg_q),    .probe2(dbg_phase));<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041a \u0445\u0430\u0431\u0443 ILA \u0440\u0443\u043a\u0430\u043c\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u2014 Vivado \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0441\u0430\u043c \u043f\u0440\u0438 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0420\u044f\u0434\u043e\u043c \u0441 bitstream \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0444\u0430\u0439\u043b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c .ltx, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043d\u0430 ILA.<\/p>\n<h3>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c DebugBridge \u043d\u0430 AXI \u0448\u0438\u043d\u0443<\/h3>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 ILA \u0447\u0435\u0440\u0435\u0437 ethernet, \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c IP core Debug Bridge.<br \/>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0430 AXI \u0448\u0438\u043d\u0443 DebugBridge, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 ILA. <\/p>\n<p>\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0432 IP core DebugBridge.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3be\/c52\/396\/3bec523969bb6bdd928e034bb3aaaa83.png\" width=\"345\" height=\"484\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/3be\/c52\/396\/3bec523969bb6bdd928e034bb3aaaa83.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3be\/c52\/396\/3bec523969bb6bdd928e034bb3aaaa83.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432 \u043e\u043a\u043d\u0435 Re-customize IP \u0432 Debug Bridge Options \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c <em>From AXI to BSCAN<\/em>, \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c S_AXI, aclk, aresetn.<\/p>\n<p>\u041d\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u043c\u043e\u0441\u0442\u0430 \u043c\u0430\u043b\u043e. <em>From AXI to BSCAN<\/em> \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043f\u043e AXI \u0432 JTAG \u0438 \u0432\u044b\u0434\u0430\u0435\u0442 \u0438\u0445 \u043d\u0430 BSCAN-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <code>m0_bscan<\/code>, \u0430 \u0441\u0430\u043c \u0445\u0430\u0431, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f ILA, \u0436\u0438\u0432\u0435\u0442 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. <br \/>\u041f\u0440\u0438\u0447\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e BSCAN master-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 (<code>C_NUM_BS_MASTER<\/code>) \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e, \u0442\u043e \u0435\u0441\u0442\u044c <code>m0_bscan<\/code> \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u0442. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u0442\u043e DRC \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 bitstream \u0440\u0443\u0433\u043d\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 TDO \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0441\u0442\u0430:<\/p>\n<pre><code>[DRC NDRV-1] Driverless Nets: Undriven nets found. ... Net bsip_tdo_0 are undriven.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443:<\/p>\n<ol>\n<li>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043c\u043e\u0441\u0442\u0435 (<code>debug_bridge_0<\/code>, <em>From AXI to BSCAN<\/em>) \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e BSCAN master-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0432 1 \u2014 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f <code>m0_bscan<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0442\u043e\u0440\u043e\u0439 Debug Bridge (<code>debug_bridge_1<\/code>) \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 <em>From BSCAN to DebugHub<\/em>. \u042d\u0442\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0448 debug hub.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c <code>debug_bridge_0\/m0_bscan<\/code> -&gt; <code>debug_bridge_1\/S_BSCAN<\/code>, \u0430 <code>debug_bridge_1\/clk<\/code> \u0437\u0430\u0432\u043e\u0434\u0438\u043c \u043d\u0430 \u0442\u043e\u0442 \u0436\u0435 \u043a\u043b\u043e\u043a, \u0447\u0442\u043e \u0438 AXI (\u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 FCLK_CLK0 \u0441 PS).<\/p>\n<\/li>\n<\/ol>\n<p>\u0412 tcl \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code>set debug_bridge_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:debug_bridge:3.0 debug_bridge_0 ]set_property -dict [list \\  CONFIG.C_DEBUG_MODE {2} \\  CONFIG.C_NUM_BS_MASTER {1} \\] $debug_bridge_0set debug_bridge_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:debug_bridge:3.0 debug_bridge_1 ]set_property CONFIG.C_DEBUG_MODE {1} $debug_bridge_1connect_bd_intf_net [get_bd_intf_pins debug_bridge_0\/m0_bscan] [get_bd_intf_pins debug_bridge_1\/S_BSCAN]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0425\u0430\u0431 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u2014 \u0432\u043d\u0443\u0442\u0440\u0438 <code>debug_bridge_1<\/code>, \u0438 \u0432\u0441\u0435 ILA \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435 Vivado \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442 \u043a \u043d\u0435\u043c\u0443.<\/p>\n<h3>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c DebugBridge \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 dts, \u0438 \u0447\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0434\u0435\u043b\u0430\u0442\u044c<\/h3>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u044e\u0441\u044c, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c DebugBridge \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e bitstream \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 linux, \u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441 \u043a\u043b\u043e\u043a\u043e\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c.<br \/>\u041d\u043e \u0435\u0441\u043b\u0438 ILA \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0441\u0435\u0442\u044c \u043d\u0430 \u043a\u043b\u043e\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 bitstream, \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0438\u0437 linux, \u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<br \/>\u041a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u0435\u0441\u043b\u0438 \u0441\u0438\u0433\u043d\u0430\u043b \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0434\u0435\u0442 \u0441 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043a\u043b\u043e\u043a\u0430 \u0442\u0438\u043f\u0430 LMK, HMC \u0438 \u0442.\u0434.<br \/>\u041c\u044b \u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u2014 \u043a\u043b\u043e\u043a \u0434\u043b\u044f ILA \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u0441 PS.<\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 fpga bitstream \u0431\u044b\u043b \u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043d\u0430\u0439\u0442\u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 \u043d\u0438\u0436\u0435.<br \/><a href=\"https:\/\/habr.com\/ru\/articles\/1052912\/\" rel=\"noopener nofollow\">https:\/\/habr.com\/ru\/articles\/1052912\/<\/a><\/p>\n<h3>\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c DeviceTree<\/h3>\n<p>\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0438\u0437 userspace \u0441 \u043d\u0430\u0448\u0438\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c, \u0431\u0443\u0434\u0435\u043c \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c devicetree<\/p>\n<pre><code>uio_xvc {status = \"disabled\";compatible = \"generic-uio\";reg = &lt;0x43C00000 0x10000&gt;;    ...};xvc: debug-bridge@43C00000 {compatible = \"xlnx,xvc\";reg = &lt;0x43C00000 0x10000&gt;;...};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c dts \u0444\u0430\u0439\u043b \u043e\u0431\u0435 \u043d\u043e\u0434\u044b \u0441 status = &#171;okay&#187;, \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u043f\u0430\u043c\u044f\u0442\u044c \u0438\u0437 \u0434\u0432\u0443\u0445 \u043c\u0435\u0441\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.<\/p>\n<p>\u0420\u0443\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043d\u043e\u0434\u044b \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c xsa \u0444\u0430\u0439\u043b, \u0438 \u0438\u0437 \u043d\u0435\u0433\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c dts. \u0418 \u0443\u0436\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 dts \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c devicetree overlay.<\/p>\n<h4>\u041a\u0430\u043a \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c devicetree \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e xsa<\/h4>\n<p><strong>1. \u0412\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430.<\/strong> \u0412 \u043c\u043e\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0442\u043e\u0438\u0442 Vitis 2025.1.<br \/> \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 DTG-flow: <code>xsct<\/code> \u0438 HSI API \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u0438\u0437 <code>device-tree-xlnx<\/code>.<br \/> \u042d\u0442\u043e\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0443\u0436\u0435 \u0431\u044b\u043b \u0443 \u043c\u0435\u043d\u044f \u0432 <code>~\/dev_linux\/device-tree-xlnx<\/code> \u043d\u0430 \u0432\u0435\u0442\u043a\u0435 <code>xlnx_rel_v2025.1<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u043e\u0439 \u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0447\u0442\u043e \u0438 Vitis.<br \/> \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u0438 \u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u0432\u0435\u0440\u0441\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u043f\u043e\u0434\u043e\u0439\u0442\u0438 \u043a HSI.<\/p>\n<p><strong>2. TCL-\u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f xsct:<\/strong><\/p>\n<pre><code>set xsa   [lindex $argv 0]set repo  [lindex $argv 1]set out   [lindex $argv 2]hsi::open_hw_design $xsahsi::set_repo_path $repohsi::create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0hsi::set_property CONFIG.dt_overlay true [hsi::get_os]hsi::generate_target -dir $outhsi::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;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e \u0448\u0430\u0433\u0430\u043c:<\/p>\n<ul>\n<li>\n<p>\u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f XSA;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\u00a0<code>device-tree-xlnx<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f SW-\u0434\u0438\u0437\u0430\u0439\u043d \u0441 \u041e\u0421\u00a0<code>device_tree<\/code>\u00a0\u0434\u043b\u044f \u044f\u0434\u0440\u0430\u00a0<code>ps7_cortexa9_0<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f overlay (<code>CONFIG.dt_overlay true<\/code>), \u0447\u0442\u043e\u0431\u044b PL-\u0443\u0437\u043b\u044b \u0441\u0440\u0430\u0437\u0443 \u043e\u0444\u043e\u0440\u043c\u0438\u043b\u0438\u0441\u044c \u0432 \u0432\u0438\u0434\u0435 <code>\/plugin\/<\/code>-\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 (<code>pl.dtsi<\/code>), \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0432 <code>.dtbo<\/code>, \u0430 \u043d\u0435 \u0432\u043b\u0438\u043b\u0438\u0441\u044c \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b.<\/p>\n<\/li>\n<\/ul>\n<p><strong>3. \u0417\u0430\u043f\u0443\u0441\u043a:<\/strong><\/p>\n<pre><code class=\"bash\">source ~\/tools\/Xilinx\/2025.1\/Vitis\/settings64.shxsct gen_dt_overlay.tcl $PWD\/system_wrapper_ila_db.xsa ~\/dev_linux\/device-tree-xlnx $PWD\/dts<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><strong>4. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0431\u043e\u0440\u043a\u0438:<\/strong><\/p>\n<p>\u0411\u0430\u0437\u043e\u0432\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0440\u0430\u043d\u044c\u0448\u0435, \u043d\u043e \u0441 <code>-@<\/code>:<\/p>\n<pre><code class=\"bash\">gcc -E -nostdinc -undef -D__DTS__ -x assembler-with-cpp -I dts -I dts\/include dts\/system-top.dts -o pp.dtsdtc -@ -I dts -O dtb -o devicetree.dtb pp.dts<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0410 \u0441\u0430\u043c \u043e\u0432\u0435\u0440\u043b\u0435\u0439 \u2014 <code>pl.dtsi<\/code> \u2014 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 incluse, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u043e\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e:<\/p>\n<pre><code class=\"bash\">dtc -@ -O dtb -o pl.dtbo -I dts dts\/pl.dtsi<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<h3>\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c<\/h3>\n<ul>\n<li>\n<p><code>system-top.dts<\/code> \u2014 \u0432 overlay-\u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u043e\u0447\u0442\u0438 \u043f\u0443\u0441\u0442\u043e\u0439, \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0447\u0435\u0447\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f (<code>chosen<\/code>, mac-\u0430\u0434\u0440\u0435\u0441 <code>gem0<\/code>).<\/p>\n<\/li>\n<li>\n<p><code>pl.dtsi<\/code> \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e PL-\u0447\u0430\u0441\u0442\u044c. HSI \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 PL-\u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u0435 \u0443\u0437\u043b\u044b \u043d\u0435 \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e PS-\u0448\u0438\u043d\u0443 <code>amba<\/code>, \u0430 \u0432 \u043d\u043e\u0432\u0443\u044e \u043d\u043e\u0434\u0443 <code>amba_pl: pl-bus<\/code> (<code>compatible = \"simple-bus\"<\/code>) \u2014 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 simple-bus, \u0430 \u043d\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 <code>amba: axi { ... }<\/code> \u0438\u0437 <code>zynq-7000.dtsi<\/code>: <\/p>\n<ul>\n<li>\n<p><code>&amp;fpga_full { firmware-name = \"system_wrapper_ila_db.bit.bin\"; ... }<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>amba_pl { ... }<\/code> \u2014 \u0443\u0437\u0435\u043b \u0441\u043e \u0432\u0441\u0435\u043c\u0438 PL-\u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c\u0438 \u0443\u0437\u043b\u0430\u043c\u0438: \u043f\u044f\u0442\u044c AXI GPIO (<code>dds_ctrl<\/code>, <code>dds_ftw<\/code>, <code>lfm_start<\/code>, <code>lfm_stop<\/code>, <code>lfm_incr<\/code>, \u0430\u0434\u0440\u0435\u0441\u0430 <code>0x4121_0000<\/code>\u2013<code>0x4125_0000<\/code>) \u0438 <code>debug_bridge_0<\/code> \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>0x43c00000<\/code> \u2014 \u0443\u0436\u0435 \u0432 \u0433\u043e\u0442\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><code>zynq-7000.dtsi<\/code>, <code>pcw.dtsi<\/code>, <code>skeleton.dtsi<\/code>, <code>include\/<\/code> \u2014 \u043e\u0431\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b SoC \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u043d\u0443\u0436\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u043c\u0443 \u0434\u0435\u0440\u0435\u0432\u0443.<\/p>\n<\/li>\n<li>\n<p><code>system.dts<\/code>, <code>device-tree.mss<\/code> \u2014 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b HSI.<\/p>\n<\/li>\n<\/ul>\n<h3>\u041d\u0430 \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/h3>\n<ul>\n<li>\n<p>Xilinx \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442 DTG \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439. \u041d\u043e\u0432\u044b\u0439 \u043f\u0443\u0442\u044c \u2014\u00a0<code>sdtgen<\/code>\u00a0+\u00a0<code>lopper<\/code>\u00a0(System Device Tree), \u043e\u0431\u0430 \u0435\u0441\u0442\u044c \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043f\u043a\u0435\u00a0<code>Vitis\/bin<\/code>. \u0414\u043b\u044f Zynq-7000 \u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 \u044f\u0434\u0440\u0430 DTG \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0449\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u0437 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043d\u043e\u0434\u0430 <code>debug_bridge_0<\/code> \u2014 \u0438 \u0432 overlay-\u0440\u0435\u0436\u0438\u043c\u0435 \u043e\u043d\u0430 \u0443\u0436\u0435 \u043b\u0435\u0436\u0438\u0442 \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 <code>pl.dtsi<\/code>, \u0432 \u043d\u043e\u0432\u043e\u0439 \u043d\u043e\u0434\u0435 <code>amba_pl<\/code> (\u0441\u043c. \u0432\u044b\u0448\u0435), \u0440\u0443\u043a\u0430\u043c\u0438 \u0435\u0451 \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c \u0438\u0437 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 \u0438 \u043f\u0435\u0440\u0435\u043e\u0444\u043e\u0440\u043c\u043b\u044f\u0442\u044c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0421\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u043e\u0434\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code>debug_bridge_0: debug_bridge@43c00000 {clock-names = \"s_axi_aclk\";clocks = &lt;&amp;clkc 15&gt;;compatible = \"xlnx,debug-bridge-3.0\", \"generic-uio\";reg = &lt;0x43c00000 0x10000&gt;;xlnx,bscan-mux = &lt;0x1&gt;;xlnx,build-revision = &lt;0x0&gt;;xlnx,chip-id = &lt;0x0&gt;;xlnx,clk-input-freq-hz = &lt;0x11e1a300&gt;;xlnx,core-major-ver = &lt;0x1&gt;;xlnx,core-minor-alpha-ver = &lt;0x61&gt;;xlnx,core-minor-ver = &lt;0x0&gt;;xlnx,core-type = &lt;0x1&gt;;xlnx,dclk-has-reset = &lt;0x0&gt;;xlnx,debug-mode = &lt;0x2&gt;;xlnx,design-type = &lt;0x0&gt;;xlnx,device-family = &lt;0x0&gt;;xlnx,en-bscanid-vec = \"false\";xlnx,en-int-sim = &lt;0x1&gt;;xlnx,en-passthrough = &lt;0x0&gt;;xlnx,enable-clk-divider = \"false\";xlnx,fifo-style = \"SUBCORE\";xlnx,ir-id-instr = &lt;0x0&gt;;xlnx,ir-user1-instr = &lt;0x0&gt;;xlnx,ir-width = &lt;0x0&gt;;xlnx,major-version = &lt;0xe&gt;;xlnx,master-intf-type = &lt;0x1&gt;;xlnx,minor-version = &lt;0x1&gt;;xlnx,num-bs-master = &lt;0x1&gt;;xlnx,pcie-ext-cfg-base-addr = &lt;0x400&gt;;xlnx,pcie-ext-cfg-next-ptr = &lt;0x000&gt;;xlnx,pcie-ext-cfg-vsec-id = &lt;0x0008&gt;;xlnx,pcie-ext-cfg-vsec-length = &lt;0x020&gt;;xlnx,pcie-ext-cfg-vsec-rev-id = &lt;0x0&gt;;xlnx,tck-clock-ratio = &lt;0x8&gt;;xlnx,two-prim-mode = \"false\";xlnx,use-bufr = &lt;0x0&gt;;xlnx,use-ext-bscan = \"true\";xlnx,use-softbscan = &lt;0x1&gt;;xlnx,use-startup-clk = \"false\";xlnx,user-scan-chain = &lt;0x1&gt;;xlnx,xsdb-num-slaves = &lt;0x0&gt;;xlnx,xvc-hw-id = &lt;0x0001&gt;;xlnx,xvc-sw-id = &lt;0x0001&gt;;};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0439 dts overlay \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c (\u0432 \u043c\u043e\u0435\u043c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e debug bridge). \u0414\u043b\u044f \u0412\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: <code>debug_bridge_0<\/code> \u0432 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c <code>pl.dtsi<\/code> \u043b\u0435\u0436\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u043e\u0432\u043e\u0439 \u043d\u043e\u0434\u044b <code>amba_pl: pl-bus<\/code>, \u0430 \u043d\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 PS-\u0448\u0438\u043d\u044b <code>amba<\/code>. \u0415\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u0430\u0437\u043e\u0432\u043e\u043c devicetree \u043d\u0435\u0442 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0439 <code>amba_pl<\/code> (\u0430 \u0432 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0451 \u043d\u0435 \u0431\u044b\u043b\u043e), \u0441\u0441\u044b\u043b\u043a\u0430 <code>&amp;amba_pl<\/code> \u0432 \u043e\u0432\u0435\u0440\u043b\u0435\u0435 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 target \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u044f \u0443\u043a\u0430\u0437\u0430\u043b \u043a\u043e\u0440\u0435\u043d\u044c \u0434\u0435\u0440\u0435\u0432\u0430 <code>&amp;{\/}<\/code> \u2014 \u044d\u0442\u043e \u043d\u0430\u0434\u0451\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u043b\u0438 \u0443 \u0432\u0430\u0441 <code>amba_pl<\/code> \u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u0434\u0435\u0440\u0435\u0432\u0435:<\/p>\n<pre><code>\/dts-v1\/;\/plugin\/;&amp;spi0 {status = \"okay\";#address-cells = &lt;1&gt;;#size-cells = &lt;0&gt;;ad9361: ad9361@0 {compatible = \"rohm,dh2228fv\";status = \"okay\";reg = &lt;0&gt;;spi-cpha;spi-max-frequency = &lt;10000000&gt;;};};&amp;{\/} {debug_bridge_0: debug_bridge@43c00000 {clock-names = \"s_axi_aclk\";clocks = &lt;&amp;clkc 15&gt;;compatible = \"xlnx,debug-bridge-3.0\", \"generic-uio\";reg = &lt;0x43c00000 0x10000&gt;;xlnx,bscan-mux = &lt;0x1&gt;;xlnx,build-revision = &lt;0x0&gt;;xlnx,chip-id = &lt;0x0&gt;;xlnx,clk-input-freq-hz = &lt;0x11e1a300&gt;;xlnx,core-major-ver = &lt;0x1&gt;;xlnx,core-minor-alpha-ver = &lt;0x61&gt;;xlnx,core-minor-ver = &lt;0x0&gt;;xlnx,core-type = &lt;0x1&gt;;xlnx,dclk-has-reset = &lt;0x0&gt;;xlnx,debug-mode = &lt;0x2&gt;;xlnx,design-type = &lt;0x0&gt;;xlnx,device-family = &lt;0x0&gt;;xlnx,en-bscanid-vec = \"false\";xlnx,en-int-sim = &lt;0x1&gt;;xlnx,en-passthrough = &lt;0x0&gt;;xlnx,enable-clk-divider = \"false\";xlnx,fifo-style = \"SUBCORE\";xlnx,ir-id-instr = &lt;0x0&gt;;xlnx,ir-user1-instr = &lt;0x0&gt;;xlnx,ir-width = &lt;0x0&gt;;xlnx,major-version = &lt;0xe&gt;;xlnx,master-intf-type = &lt;0x1&gt;;xlnx,minor-version = &lt;0x1&gt;;xlnx,num-bs-master = &lt;0x1&gt;;xlnx,pcie-ext-cfg-base-addr = &lt;0x400&gt;;xlnx,pcie-ext-cfg-next-ptr = &lt;0x000&gt;;xlnx,pcie-ext-cfg-vsec-id = &lt;0x0008&gt;;xlnx,pcie-ext-cfg-vsec-length = &lt;0x020&gt;;xlnx,pcie-ext-cfg-vsec-rev-id = &lt;0x0&gt;;xlnx,tck-clock-ratio = &lt;0x8&gt;;xlnx,two-prim-mode = \"false\";xlnx,use-bufr = &lt;0x0&gt;;xlnx,use-ext-bscan = \"true\";xlnx,use-softbscan = &lt;0x1&gt;;xlnx,use-startup-clk = \"false\";xlnx,user-scan-chain = &lt;0x1&gt;;xlnx,xsdb-num-slaves = &lt;0x0&gt;;xlnx,xvc-hw-id = &lt;0x0001&gt;;xlnx,xvc-sw-id = &lt;0x0001&gt;;};};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 dts overlay \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u043b\u0430\u0442\u0443 bitstream \u0441 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043e\u0432\u0435\u0440\u043b\u0435\u044f \u0447\u0435\u0440\u0435\u0437 FpgaManager. <\/p>\n<h4>\u041e\u0431\u0449\u0430\u0435\u043c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 mmap uio<\/h4>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c uio \u043d\u043e\u0434\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0443\u043a\u0430\u0436\u0435\u043c \u043d\u0430\u0448 \u0430\u0434\u0440\u0435\u0441. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u044f\u0434\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 mmap \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043e \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e, \u0438 \u043f\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c\u0443 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>\u041d\u043e\u0434\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0443\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u2014 <code>debug_bridge_0<\/code> \u0438\u0437 <code>pl.dtsi<\/code> \u0441\u043e <code>compatible = \"xlnx,debug-bridge-3.0\", \"generic-uio\";<\/code> (\u0441\u043c. \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e overlay \u0432\u044b\u0448\u0435).<\/p>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 <code>compatible<\/code> \u2014 \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u043e, \u043f\u043e \u0447\u0435\u043c\u0443 \u044f\u0434\u0440\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0431\u0438\u043d\u0434\u0438\u0442\u044c \u0435\u0451 \u043a \u043e\u0431\u044b\u0447\u043d\u043e\u043c\u0443 UIO-\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0443, \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. \u041d\u043e \u0441\u0430\u043c\u043e \u043f\u043e \u0441\u0435\u0431\u0435 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442, \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0449\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u044d\u0442\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e.<\/p>\n<p><strong>1. \u041a\u043e\u043d\u0444\u0438\u0433 \u044f\u0434\u0440\u0430.<\/strong> \u041d\u0443\u0436\u043d\u044b <code>CONFIG_UIO=y<\/code> \u0438 <code>CONFIG_UIO_PDRV_GENIRQ=y<\/code> \u2014 \u044d\u0442\u043e \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 <code>uio_pdrv_genirq<\/code>, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438 \u0431\u0443\u0434\u0435\u043c \u0431\u0438\u043d\u0434\u0438\u0442\u044c \u043d\u043e\u0434\u0443 \u0441 <code>compatible = \"generic-uio\"<\/code> (\u043d\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u0430\u043b\u043e, \u0441\u043c. \u043d\u044e\u0430\u043d\u0441 \u043d\u0438\u0436\u0435). <br \/>\u0423 \u043c\u0435\u043d\u044f \u0432 buildroot \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 <code>xvc-uio<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433 \u044f\u0434\u0440\u0430:<\/p>\n<pre><code>define XVC_UIO_LINUX_CONFIG_FIXUPS$(call KCONFIG_ENABLE_OPT,CONFIG_UIO)$(call KCONFIG_ENABLE_OPT,CONFIG_UIO_PDRV_GENIRQ)endef<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u2014 \u0432 devicetree-\u043d\u043e\u0434\u0435 \u043d\u0435\u0442 <code>interrupts<\/code>, \u0438 \u044d\u0442\u043e \u043d\u0435 \u043d\u0435\u0434\u043e\u0441\u043c\u043e\u0442\u0440: <code>uio_pdrv_genirq<\/code> \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u043f\u0440\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438 \u0431\u0435\u0437 IRQ-\u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u0430 \u0441\u0430\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b XVC \u2014 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u043e\u043b\u043b\u0438\u043d\u0433\u043e\u0432\u044b\u0439 (\u0441\u043c. \u043f\u0443\u043d\u043a\u0442 3).<\/p>\n<p><strong>\u0412\u0430\u0436\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441: \u043e\u0434\u043d\u043e\u0433\u043e <\/strong><code><strong>compatible = \"generic-uio\"<\/strong><\/code><strong> \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/strong> \u0423 <code>uio_pdrv_genirq<\/code> \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 <code>generic-uio<\/code> \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 <code>of_match<\/code> \u2014 \u0441\u0442\u0440\u043e\u043a\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u043c\u0430\u0442\u0447\u0438\u0442\u0441\u044f, \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u044f <code>of_id<\/code>. <br \/>\u0415\u0441\u043b\u0438 \u0435\u0433\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c, \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043a \u043d\u043e\u0434\u0435 \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0436\u0435\u0442\u0441\u044f: \u043d\u043e\u0434\u0430 <code>debug_bridge@43c00000<\/code> \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 \u0435\u0441\u0442\u044c, \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e <code>43c00000.debug_bridge<\/code> \u0441\u043e\u0437\u0434\u0430\u043d\u043e, \u0430 <code>\/dev\/uio*<\/code> \u043d\u0435\u0442, \u0438 \u0432 dmesg \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443 \u0442\u0438\u0448\u0438\u043d\u0430. <br \/>\u0420\u043e\u0432\u043d\u043e \u043d\u0430 \u044d\u0442\u043e \u044f \u0438 \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u0435.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f <code>uio_pdrv_genirq<\/code> \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0432 \u044f\u0434\u0440\u043e (<code>=y<\/code>), \u0430 \u043d\u0435 \u0441\u043e\u0431\u0440\u0430\u043d \u043c\u043e\u0434\u0443\u043b\u0435\u043c, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u044f\u0434\u0440\u0430 (bootargs):<\/p>\n<pre><code>uio_pdrv_genirq.of_id=generic-uio<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">cat \/proc\/cmdlinels -l \/sys\/bus\/platform\/devices\/43c00000.debug_bridge\/driverls \/sys\/class\/uio\/<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437 \u0438\u043b\u0438 \u043c\u0435\u043d\u044f\u0442\u044c bootargs \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438, \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u2014 \u0447\u0435\u0440\u0435\u0437 <code>driver_override<\/code>:<\/p>\n<pre><code class=\"bash\">echo uio_pdrv_genirq &gt; \/sys\/bus\/platform\/devices\/43c00000.debug_bridge\/driver_overrideecho 43c00000.debug_bridge &gt; \/sys\/bus\/platform\/drivers_probe<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <code>\/dev\/uio0<\/code>, \u0438 \u0432 <code>\/sys\/class\/uio\/uio0\/name<\/code> \u0431\u0443\u0434\u0435\u0442 <code>debug_bridge@43c00000<\/code>, \u0430 \u0432 <code>maps\/map0\/addr<\/code> \u2014 <code>0x43c00000<\/code>. <br \/>\u041d\u043e \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u0438 \u0434\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0432\u0435\u0440\u043b\u0435\u044f), \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c <code>of_id<\/code> \u0432 bootargs.<\/p>\n<p><strong>2. Userspace-\u0441\u0435\u0440\u0432\u0435\u0440.<\/strong> \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e <code>Xilinx\/XilinxVirtualCable<\/code> (\u043f\u0430\u043a\u0435\u0442 <code>xvc-server<\/code>), \u043d\u043e \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441: upstream <code>xvcServer.c<\/code> \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442<\/p>\n<pre><code>#define USE_IOCTL#ifndef USE_IOCTL<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0434\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 <code>#ifndef<\/code>, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e mmap-\u0442\u0430\u0440\u0433\u0435\u0442 Makefile (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0437 <code>-DUSE_IOCTL<\/code>) \u043d\u0430 \u0434\u0435\u043b\u0435 \u043c\u043e\u043b\u0447\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u0442\u043e\u0442 \u0436\u0435 ioctl-\u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a \u2014 \u043c\u0430\u043a\u0440\u043e\u0441 \u0431\u044b\u043b \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d \u043f\u0440\u044f\u043c\u043e \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0435, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u043e\u043c \u0444\u043b\u0430\u0433\u0435. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0430\u0442\u0447\u0438\u0442\u044c, \u0443\u0431\u0440\u0430\u0432 \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 <code>#define<\/code>:<\/p>\n<pre><code class=\"diff\">-#define USE_IOCTL- #ifndef USE_IOCTL<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>(\u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0430\u0442\u0447 \u0443 \u043c\u0435\u043d\u044f \u043b\u0435\u0436\u0438\u0442 \u043a\u0430\u043a <code>0001-user-fix-USE_IOCTL-hardcoded-so-mmap-build-works.patch<\/code> \u0432 <code>buildroot_external\/package\/xvc-server<\/code>).<br \/> \u0411\u0435\u0437 \u043d\u0435\u0433\u043e <code>xvcServer_mmap<\/code> \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u0431\u044b, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c <code>\/dev\/xilinx_xvc_driver<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>\/dev\/uioN<\/code>.<\/p>\n<p><strong>3. \u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c.<\/strong> <code>xvcServer_mmap<\/code> \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 UIO-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u043c\u0430\u043f\u0438\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u0435 \u0436\u0435 <code>0x10000<\/code> \u0431\u0430\u0439\u0442, \u0447\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0432 <code>reg<\/code> \u043d\u0430\u0448\u0435\u0439 \u043d\u043e\u0434\u044b:<\/p>\n<pre><code>fd_uio = open(UIO_PATH, O_RDWR);ptr = (volatile jtag_t*) mmap(NULL, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd_uio, 0);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u043f\u044f\u0442\u044c\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438 Debug Bridge (From AXI to BSCAN) \u043f\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u043c:<\/p>\n<pre><code>typedef struct {    uint32_t length_offset; \/\/ 0x00    uint32_t tms_offset;    \/\/ 0x04    uint32_t tdi_offset;    \/\/ 0x08    uint32_t tdo_offset;    \/\/ 0x0C    uint32_t ctrl_offset;   \/\/ 0x10} jtag_t;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0417\u0430\u043f\u0438\u0441\u044c <code>ctrl_offset = 0x01<\/code> \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u0434\u0432\u0438\u0433 JTAG-\u0446\u0435\u043f\u043e\u0447\u043a\u0438, \u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e busy-poll \u0442\u043e\u0433\u043e \u0436\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430:<\/p>\n<pre><code>while (ptr-&gt;ctrl_offset) {}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e: \u043e\u0431\u043c\u0435\u043d \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b userspace, <code>uio_pdrv_genirq<\/code> \u0442\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c mmap-\u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0433\u0438\u043e\u043d\u0443, \u0430 \u043d\u0435 \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439.<\/p>\n<p><strong>4. \u0421\u0431\u043e\u0440\u043a\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a.<\/strong> \u0412 defconfig \u043f\u043b\u0430\u0442\u044b \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043e\u0431\u0430 \u043f\u0430\u043a\u0435\u0442\u0430:<\/p>\n<pre><code>BR2_PACKAGE_XVC_UIO=yBR2_PACKAGE_XVC_SERVER=y<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u044d\u0442\u043e \u0434\u0430\u0451\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a <code>\/usr\/bin\/xvcServer_mmap<\/code>.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0432\u044b\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 <code>\/dev\/uioN<\/code> \u0434\u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e debug_bridge \u2014 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0435\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 UIO-\u043d\u043e\u0434\u044b:<\/p>\n<pre><code class=\"bash\">for f in \/sys\/class\/uio\/uio*\/name; do echo \"$f: $(cat \"$f\")\"; done<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u044f\u0432\u043d\u043e (\u0432 \u043a\u043e\u0434\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0437\u0430\u0448\u0438\u0442 <code>\/dev\/uio0<\/code>, \u043d\u043e \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u043b\u0430\u0433\u043e\u043c <code>-d<\/code>):<\/p>\n<pre><code class=\"bash\">xvcServer_mmap -d \/dev\/uio0 -p 2542 -v<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0440\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 <code>2542<\/code>, \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 Vivado Hardware Manager \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043f\u043e XVC.<br \/> <code>\/dev\/uioN<\/code> \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e root \u2014 \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u043f\u043e\u0434 root, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f udev-\u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0430 \u0441\u043c\u0435\u043d\u0443 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430\/\u043f\u0440\u0430\u0432.<\/p>\n<h4>\u041e\u0431\u0449\u0430\u0435\u043c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 ioctl<\/h4>\n<p>\u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c ioctl, \u0447\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u043e \u0443 Xilinx.<\/p>\n<p> \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 mmap-\u043f\u0443\u0442\u0438, \u0442\u0443\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043d\u043e\u0434\u0443 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u2014 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043a\u043e\u0435-\u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438, \u0438 \u0432 devicetree, \u0438 \u0432 \u0441\u0431\u043e\u0440\u043a\u0443.<\/p>\n<p><strong>1. Devicetree.<\/strong> \u0414\u0440\u0430\u0439\u0432\u0435\u0440 <code>xilinx_xvc_driver<\/code> \u0431\u0438\u043d\u0434\u0438\u0442\u0441\u044f \u043d\u0435 \u043f\u043e <code>generic-uio<\/code>, \u0430 \u043f\u043e \u0441\u0442\u0440\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 <code>compatible = \"xlnx,xvc\"<\/code> (\u044d\u0442\u043e \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u043e \u0432 <code>xvc_driver.h<\/code> \u043a\u0430\u043a <code>DEBUG_BRIDGE_COMPAT_STRING<\/code>).<br \/>\u041d\u0430\u0448\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u043e\u0434\u0430 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0451 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u043d\u0438\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u043e\u0432\u0435\u0440\u0445 <code>pl.dtsi<\/code> \u2014 \u0440\u043e\u0432\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u044d\u0442\u043e \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0441\u0430\u043c Xilinx \u0432 <code>xvc_fragment.dts<\/code>:<\/p>\n<pre><code>&amp;debug_bridge_0 {compatible = \"xlnx,xvc\";};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0412\u0430\u0436\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441 merge&#8217;\u0430 devicetree: \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>compatible<\/code> \u043f\u0440\u0438 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u043d\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u043a\u0430\u0442\u0430 \u044d\u0442\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0443 <code>debug_bridge_0<\/code> \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e <code>\"xlnx,xvc\"<\/code> \u2014 <code>\"xlnx,debug-bridge-3.0\"<\/code> \u0438 <code>\"generic-uio\"<\/code> \u0438\u0437 \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u043f\u0430\u0434\u0443\u0442. \u042d\u0442\u043e \u0440\u043e\u0432\u043d\u043e \u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438: \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u043d\u043e\u0434\u0443 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e UIO \u0438 ioctl-\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u043e\u043d\u0438 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e\u0442 \u0435\u0451 \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u0438 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u043e\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432.<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u044d\u0442\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u043d\u0435\u0442, \u0438 \u044d\u0442\u043e \u043d\u0435 \u043e\u0448\u0438\u0431\u043a\u0430. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u043d\u043e\u0434\u0443, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>compatible<\/code> \u0443 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 <code>debug_bridge_0<\/code> \u2014 \u043e\u043d\u0430 \u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0443\u0436\u0435 \u043b\u0435\u0436\u0438\u0442 \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 (\u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u0432\u0435\u0440\u043b\u0435\u044f), \u0438 <code>reg = &lt;0x43c00000 0x10000&gt;<\/code> \u0443 \u043d\u0435\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0436\u043d\u0438\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043a\u043e\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0432\u0435\u0440\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u0432\u0435\u0440\u043b\u0435\u044f, \u0438 \u0442\u043e\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u043d \u0441 <code>-@<\/code>, \u0447\u0442\u043e\u0431\u044b \u043c\u0435\u0442\u043a\u0430<code>debug_bridge_0<\/code> \u0431\u044b\u043b\u0430 \u0432\u0438\u0434\u043d\u0430.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u043c\u044b \u0441\u0440\u0430\u0437\u0443 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 ioctl, \u0442\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043e\u0432\u0435\u0440\u043b\u0435\u0435 \u0441\u0440\u0430\u0437\u0443 \u0443\u043a\u0430\u0437\u0430\u0442\u044c <code>compatible = \"xlnx,xvc\"<\/code>. \u041f\u043e\u043b\u043d\u044b\u0439 \u043e\u0432\u0435\u0440\u043b\u0435\u0439 \u0434\u043b\u044f \u043c\u043e\u0435\u0439 \u043f\u043b\u0430\u0442\u044b \u043f\u043e\u0434 ioctl-\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a (SPI-\u0447\u0430\u0441\u0442\u044c \u0434\u043b\u044f AD9361 \u043e\u0441\u0442\u0430\u0432\u0438\u043b, \u043a\u0430\u043a \u0438 \u0432 UIO-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435, \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u043b\u0438\u0448\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0440\u0430\u0442\u044c):<\/p>\n<pre><code>\/dts-v1\/;\/plugin\/;&amp;spi0 {status = \"okay\";#address-cells = &lt;1&gt;;#size-cells = &lt;0&gt;;ad9361: ad9361@0 {compatible = \"rohm,dh2228fv\";status = \"okay\";reg = &lt;0&gt;;spi-cpha;spi-max-frequency = &lt;10000000&gt;;};};\/* * XVC-over-UIO: debug_bridge PL core added to zynq_rk7020_ps_wrapper for * JTAG-over-Ethernet access (xvc-server + xvc-uio, generic_uio path - see * buildroot_external\/package\/xvc-uio\/Config.in). Targets \"\/\" (like * zynq-dtgen's own fragment@0\/target-path=\"\/\" PL overlay convention, see * package\/zynq-dtgen\/gen-dts.sh) since this board's base dts has no PL * simple-bus node of its own to attach under. *\/&amp;{\/} {debug_bridge_0: debug_bridge@43c00000 {clock-names = \"s_axi_aclk\";clocks = &lt;&amp;clkc 15&gt;;compatible = \"xlnx,xvc\";reg = &lt;0x43c00000 0x10000&gt;;xlnx,bscan-mux = &lt;0x1&gt;;xlnx,build-revision = &lt;0x0&gt;;xlnx,chip-id = &lt;0x0&gt;;xlnx,clk-input-freq-hz = &lt;0x11e1a300&gt;;xlnx,core-major-ver = &lt;0x1&gt;;xlnx,core-minor-alpha-ver = &lt;0x61&gt;;xlnx,core-minor-ver = &lt;0x0&gt;;xlnx,core-type = &lt;0x1&gt;;xlnx,dclk-has-reset = &lt;0x0&gt;;xlnx,debug-mode = &lt;0x2&gt;;xlnx,design-type = &lt;0x0&gt;;xlnx,device-family = &lt;0x0&gt;;xlnx,en-bscanid-vec = \"false\";xlnx,en-int-sim = &lt;0x1&gt;;xlnx,en-passthrough = &lt;0x0&gt;;xlnx,enable-clk-divider = \"false\";xlnx,fifo-style = \"SUBCORE\";xlnx,ir-id-instr = &lt;0x0&gt;;xlnx,ir-user1-instr = &lt;0x0&gt;;xlnx,ir-width = &lt;0x0&gt;;xlnx,major-version = &lt;0xe&gt;;xlnx,master-intf-type = &lt;0x1&gt;;xlnx,minor-version = &lt;0x1&gt;;xlnx,num-bs-master = &lt;0x1&gt;;xlnx,pcie-ext-cfg-base-addr = &lt;0x400&gt;;xlnx,pcie-ext-cfg-next-ptr = &lt;0x000&gt;;xlnx,pcie-ext-cfg-vsec-id = &lt;0x0008&gt;;xlnx,pcie-ext-cfg-vsec-length = &lt;0x020&gt;;xlnx,pcie-ext-cfg-vsec-rev-id = &lt;0x0&gt;;xlnx,tck-clock-ratio = &lt;0x8&gt;;xlnx,two-prim-mode = \"false\";xlnx,use-bufr = &lt;0x0&gt;;xlnx,use-ext-bscan = \"true\";xlnx,use-softbscan = &lt;0x1&gt;;xlnx,use-startup-clk = \"false\";xlnx,user-scan-chain = &lt;0x1&gt;;xlnx,xsdb-num-slaves = &lt;0x0&gt;;xlnx,xvc-hw-id = &lt;0x0001&gt;;xlnx,xvc-sw-id = &lt;0x0001&gt;;};};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041e\u0442 UIO-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043e\u043d \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439 <code>compatible<\/code>. \u0410\u0434\u0440\u0435\u0441 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043a\u043d\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0431\u0435\u0440\u0435\u0442 \u0438\u0437 <code>reg<\/code>, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <code>xlnx,*<\/code> \u043e\u043d \u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u0442 \u2014 \u043e\u043d\u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043e\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e HSI \u0443\u0437\u043b\u0430, \u0438 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c. <br \/>\u042d\u0442\u043e\u0442 \u043e\u0432\u0435\u0440\u043b\u0435\u0439 \u044f \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043d\u0430 \u043f\u043b\u0430\u0442\u0435: \u0441\u043d\u044f\u043b \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u043e\u0432\u0435\u0440\u043b\u0435\u0438, \u043d\u0430\u043b\u043e\u0436\u0438\u043b \u0435\u0433\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0438\u0445, \u043f\u043e\u0441\u043b\u0435 <code>insmod<\/code> \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043b\u0441\u044f \u043a \u043d\u043e\u0434\u0435, \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f <code>\/dev\/xilinx_xvc_driver<\/code>, \u0438 Vivado \u0447\u0435\u0440\u0435\u0437 <code>xvcServer_ioctl<\/code> \u0443\u0432\u0438\u0434\u0435\u043b ILA.<\/p>\n<p><strong>2. \u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u044f.<\/strong> \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 <code>xvc-uio<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b <code>Kconfig<\/code> \u044f\u0434\u0440\u0430, <code>xvc-driver<\/code> \u2014 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u043d\u0435\u044f\u0434\u0435\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c (<code>xilinx_xvc_driver.ko<\/code>), \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u044b\u0439 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0439 kernel-module \u043f\u0430\u043a\u0435\u0442 buildroot:<\/p>\n<pre><code>XVC_DRIVER_MODULE_SUBDIRS = jtag\/zynqMP\/src\/driver$(eval $(kernel-module))$(eval $(generic-package))<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041d\u0438\u043a\u0430\u043a\u0438\u0445 <code>CONFIG_UIO*<\/code> \u043e\u043f\u0446\u0438\u0439 \u0435\u043c\u0443 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u2014 \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 <code>platform_driver<\/code> \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c <code>of_match_table<\/code>:<\/p>\n<pre><code>static const struct of_device_id xvc_of_ids[] = {{ .compatible = DEBUG_BRIDGE_COMPAT_STRING, }, \/\/ \"xlnx,xvc\"{}};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><strong>3. \u0412\u0430\u0436\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441 \u0441 \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439.<\/strong> \u0412 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0435\u0442 <code>MODULE_DEVICE_TABLE(of, xvc_of_ids)<\/code>. \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u0430\u043a\u0440\u043e\u0441\u0430 <code>depmod<\/code> \u043d\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 alias \u0432 <code>modules.alias<\/code>, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 udev\/mdev \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u043e \u0445\u043e\u0442\u043f\u043b\u0430\u0433-\u0441\u043e\u0431\u044b\u0442\u0438\u044e \u043e\u0442 \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0432 devicetree \u043d\u043e\u0434\u044b \u2014 \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e (<code>modprobe xilinx_xvc_driver<\/code>), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 init-\u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u043a\u0430\u0442\u0430 PL-\u043e\u0432\u0435\u0440\u043b\u0435\u044f.<\/p>\n<p><strong>4. \u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c.<\/strong> \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (<code>xvc_user_config.h<\/code> \u043f\u0443\u0441\u0442\u043e\u0439) \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u043d\u043e\u0434\u0443 \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043e\u0434\u0438\u043d \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <code>\/dev\/xilinx_xvc_driver<\/code>, \u0431\u0435\u0440\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 <code>reg<\/code> \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 Linux resource API:<\/p>\n<pre><code>db_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);db_ptrs[i] = devm_ioremap_resource(&amp;pdev-&gt;dev, db_res);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0442\u043e \u0435\u0441\u0442\u044c, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 mmap-\u043f\u0443\u0442\u0438, \u0442\u0443\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043c\u0430\u043f\u0438\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u0438\u0437 userspace \u2014 \u0430\u0434\u0440\u0435\u0441 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0443\u0437\u043d\u0430\u0451\u0442 \u0441\u0430\u043c \u0438\u0437 devicetree. \u0415\u0441\u043b\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e <code>debug_bridge<\/code>, \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0432 <code>xvc_user_config.h<\/code> (\u043f\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0443 <code>xvc_user_config_example.h<\/code>) \u2014 \u0442\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f <code>\/dev\/xilinx_xvc_driver_0<\/code>, <code>\/dev\/xilinx_xvc_driver_1<\/code> \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u0434 \u0441\u0432\u043e\u044e \u043d\u043e\u0434\u0443. \u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0441 \u043e\u0434\u043d\u0438\u043c <code>debug_bridge_0<\/code> \u044d\u0442\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u0442\u0430 \u0436\u0435 \u0441\u0430\u043c\u0430\u044f, \u0447\u0442\u043e \u0438 \u0432 mmap-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 (<code>LENGTH\/TMS\/TDI\/TDO\/CONTROL<\/code> \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u043c <code>0x00\/0x04\/0x08\/0x0C\/0x10<\/code>), \u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0434\u0451\u0442 \u0443\u0436\u0435 \u0432 \u044f\u0434\u0440\u0435, \u0447\u0435\u0440\u0435\u0437 <code>ioctl(XDMA_IOCXVC, ...)<\/code>:<\/p>\n<pre><code>#define XDMA_IOCXVC      _IOWR(XIL_XVC_MAGIC, 1, struct xil_xvc_ioc)#define XDMA_RDXVC_PROPS _IOR(XIL_XVC_MAGIC, 2, struct xil_xvc_properties)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u0440\u0438\u0447\u0451\u043c \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 userspace-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0441 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c <code>while (ptr-&gt;ctrl_offset) {}<\/code>, \u0437\u0434\u0435\u0441\u044c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u0434\u0432\u0438\u0433\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e:<\/p>\n<pre><code>int count = 100;while (count) {control_reg_data = ioread32(db_ptr + CONTROL_REG_OFFSET);if ((control_reg_data &amp; 0x01) == 0) break;count--;}if (count == 0) return -ETIMEDOUT;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0435\u0441\u043b\u0438 PL \u0432\u0434\u0440\u0443\u0433 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u043e\u0448\u0438\u0442 bitstream \u2014 \u0441\u043c. \u0440\u0430\u0437\u0434\u0435\u043b \u0432\u044b\u0448\u0435 \u043f\u0440\u043e \u0442\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0440\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e Linux), ioctl-\u043f\u0443\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0432\u0435\u0440\u043d\u0451\u0442 <code>-ETIMEDOUT<\/code>, \u0430 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u043d\u0435\u0442 \u043d\u0430\u043c\u0435\u0440\u0442\u0432\u043e, \u043a\u0430\u043a \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u043f\u043e\u043b\u043b\u0438\u043d\u0433\u043e\u043c \u0432 userspace-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435.<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 ioctl, <code>XDMA_RDXVC_PROPS<\/code>, \u043e\u0442\u0434\u0430\u0451\u0442 userspace-\u0443 \u0430\u0434\u0440\u0435\u0441, \u0440\u0430\u0437\u043c\u0435\u0440 \u0438 compatible-\u0441\u0442\u0440\u043e\u043a\u0443 \u043c\u043e\u0441\u0442\u0430 \u2014 \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u043e, \u0447\u0442\u043e <code>xvcServer_ioctl<\/code> \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 <code>display_driver_properties()<\/code> (\u043a\u0443\u0441\u043e\u043a \u043a\u043e\u0434\u0430 \u043c\u044b \u0443\u0436\u0435 \u0432\u0438\u0434\u0435\u043b\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u0440\u043e mmap).<\/p>\n<p><strong>5. \u0421\u0431\u043e\u0440\u043a\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a.<\/strong> \u0412 defconfig \u043f\u043b\u0430\u0442\u044b \u0443\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442:<\/p>\n<pre><code>BR2_PACKAGE_XVC_DRIVER=y<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u044d\u0442\u043e \u0434\u0430\u0451\u0442 <code>\/lib\/modules\/...\/extra\/xilinx_xvc_driver.ko<\/code> \u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a <code>\/usr\/bin\/xvcServer_ioctl<\/code>. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435:<\/p>\n<pre><code class=\"bash\"># \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u043a\u0430\u0442\u0430 PL-\u043e\u0432\u0435\u0440\u043b\u0435\u044f \u0441 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u043c compatible = \"xlnx,xvc\"modprobe xilinx_xvc_driverls \/dev\/xilinx_xvc_driverxvcServer_ioctl -p 2542 -v<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u0443\u0442\u044c \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443, \u043a\u0430\u043a \u0438 \u0432 mmap-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0444\u043b\u0430\u0433\u043e\u043c <code>-d<\/code>, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f multi-bridge \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u0430\u043c\u0438 <code><em>0<\/em><\/code><em>, <\/em><code>1<\/code> \u0438 \u0442.\u0434.<\/p>\n<p><strong>6. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u0435: \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u0441 UIO \u043d\u0430 ioctl \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.<\/strong> \u0423 \u043c\u0435\u043d\u044f \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0443\u0436\u0435 \u0431\u044b\u043b \u043d\u0430\u043b\u043e\u0436\u0435\u043d \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043e\u0432\u0435\u0440\u043b\u0435\u0439 \u0441 <code>generic-uio<\/code> \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b <code>xvcServer_mmap<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 ioctl-\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b \u043f\u0440\u044f\u043c\u043e \u043f\u043e\u0432\u0435\u0440\u0445 \u043d\u0435\u0433\u043e, \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u0430 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.<\/p>\n<p>\u0421\u0430\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043e\u0432\u0435\u0440\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043b\u0435\u0439\u0431\u043b <code>debug_bridge_0<\/code> \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e (\u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u043d \u0441 <code>-@<\/code>, \u0447\u0442\u043e\u0431\u044b \u0432 \u043d\u0435\u043c \u0431\u044b\u043b <code><strong>symbols<\/strong><\/code>):<\/p>\n<pre><code>\/dts-v1\/;\/plugin\/;&amp;debug_bridge_0 {compatible = \"xlnx,xvc\";};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<pre><code class=\"bash\">dtc -@ -I dts -O dtb -o xvc-ioctl.dtbo xvc-ioctl.dts<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041c\u043e\u0434\u0443\u043b\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u0438\u0432 \u0442\u043e\u0433\u043e \u0436\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u044f\u0434\u0440\u0430, \u0447\u0442\u043e \u0438 \u043e\u0431\u0440\u0430\u0437 (\u0443 \u043c\u0435\u043d\u044f \u044d\u0442\u043e <code>output\/build\/linux-custom<\/code> \u0438\u0437 buildroot), \u0438 \u0442\u0435\u043c \u0436\u0435 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u043e\u043c:<\/p>\n<pre><code class=\"bash\">make -C &lt;linux-build-dir&gt; M=$PWD ARCH=arm CROSS_COMPILE=&lt;toolchain&gt;\/arm-linux- modules<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043f\u043e \u0448\u0430\u0433\u0430\u043c. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u043c \u043c\u043e\u0441\u0442 \u043e\u0442 UIO: \u0433\u0430\u0441\u0438\u043c <code>xvcServer_mmap<\/code> \u0438 \u043e\u0442\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043e\u0442 <code>uio_pdrv_genirq<\/code> (\u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 <code>driver_override<\/code>, \u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c, \u0438\u043d\u0430\u0447\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043e \u0437\u0430 UIO-\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c):<\/p>\n<pre><code class=\"bash\">echo 43c00000.debug_bridge &gt; \/sys\/bus\/platform\/drivers\/uio_pdrv_genirq\/unbindecho &gt; \/sys\/bus\/platform\/devices\/43c00000.debug_bridge\/driver_override<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e <code>\/dev\/uio0<\/code> \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0435\u0442. \u041d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0432\u0442\u043e\u0440\u044b\u043c \u043e\u0432\u0435\u0440\u043b\u0435\u0435\u043c \u0447\u0435\u0440\u0435\u0437 configfs:<\/p>\n<pre><code class=\"bash\">mkdir \/sys\/kernel\/config\/device-tree\/overlays\/xvccat xvc-ioctl.dtbo &gt; \/sys\/kernel\/config\/device-tree\/overlays\/xvc\/dtbocat \/sys\/kernel\/config\/device-tree\/overlays\/xvc\/status   # appliedtr '\\0' ' ' &lt; \/sys\/firmware\/devicetree\/base\/debug_bridge@43c00000\/compatible<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e <code>xlnx,xvc<\/code> \u2014 \u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0437\u0430\u043c\u0435\u0449\u0435\u043d\u0438\u0435 <code>compatible<\/code> \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0448\u043b\u0430 \u0440\u0435\u0447\u044c \u0432\u044b\u0448\u0435, \u043d\u0430 \u0436\u0438\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.<\/p>\n<p>\u0418 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u0440\u0443\u043a\u0430\u043c\u0438 (\u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u043a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c, \u043d\u0435\u0442):<\/p>\n<pre><code class=\"bash\">insmod xilinx_xvc_driver.kols -l \/sys\/bus\/platform\/devices\/43c00000.debug_bridge\/driverls -l \/dev\/xilinx_xvc_driverxvcServer_ioctl -p 2542<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 UIO, \u0442\u0443\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044f\u0434\u0440\u0430 \u0438 <code>driver_override<\/code> \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c: \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0441\u0430\u043c \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043b\u0441\u044f \u043a \u043d\u043e\u0434\u0435 \u043f\u043e <code>compatible = \"xlnx,xvc\"<\/code>, \u0432 dmesg \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c <code>xilinx_xvc_driver: Created device xilinx_xvc_driver<\/code>. Vivado \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0443\u0432\u0438\u0434\u0435\u043b <code>debug_bridge_0<\/code>, ILA \u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0431\u044b, \u0438 \u0437\u0430\u0445\u0432\u0430\u0442 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b.<\/p>\n<h3>\u0421\u043c\u043e\u0442\u0440\u0438\u043c ILA \u0432 Hardware Manager<\/h3>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c Hardware Manager (\u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0443\u0436\u0435 \u0432\u0438\u0434\u0435\u043d \u0440\u0430\u043d\u0435\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0430\u0440\u0433\u0435\u0442 <code>xilinx_tcf\/Xilinx\/192.168.0.7:2542<\/code> \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 Closed \u2014 \u0441\u0430\u043c \u043a\u0430\u0431\u0435\u043b\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c, \u043f\u0440\u043e\u0441\u0442\u043e Vivado \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0435\u0433\u043e \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043c\u0438):<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ba6\/76c\/d1a\/ba676cd1ac906c27b4714974dbc0d9cb.png\" width=\"352\" height=\"485\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ba6\/76c\/d1a\/ba676cd1ac906c27b4714974dbc0d9cb.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ba6\/76c\/d1a\/ba676cd1ac906c27b4714974dbc0d9cb.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>Add Virtual Cable<br \/>\u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0432\u0435\u0441\u0442\u0438 ip \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u044b.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/df8\/bac\/a8c\/df8baca8c9c17fb5920751d0ccef8d37.png\" width=\"533\" height=\"348\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/df8\/bac\/a8c\/df8baca8c9c17fb5920751d0ccef8d37.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/df8\/bac\/a8c\/df8baca8c9c17fb5920751d0ccef8d37.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f debug_bridge_0:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5aa\/a74\/35b\/5aaa7435be6658599f843de70c3b076d.png\" width=\"544\" height=\"487\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/5aa\/a74\/35b\/5aaa7435be6658599f843de70c3b076d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5aa\/a74\/35b\/5aaa7435be6658599f843de70c3b076d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c .ltx \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/91d\/43b\/991\/91d43b991cc5f75e50748b0a5e510a5c.png\" alt=\"debug_bridge_0 \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\" title=\"debug_bridge_0 \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\" width=\"538\" height=\"495\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/91d\/43b\/991\/91d43b991cc5f75e50748b0a5e510a5c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/91d\/43b\/991\/91d43b991cc5f75e50748b0a5e510a5c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043e\u043a\u043d\u043e waveform, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u044b:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1ec\/cf7\/b22\/1eccf7b224a2437b71b0479833c42352.png\" width=\"1774\" height=\"965\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1ec\/cf7\/b22\/1eccf7b224a2437b71b0479833c42352.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1ec\/cf7\/b22\/1eccf7b224a2437b71b0479833c42352.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0443 \u0438 \u0437\u0430\u043e\u0434\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0442\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 AD9361 \u2014 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a\u0430 \u0442\u0443\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 PlutoSDR, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b, \u0438\u0437\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0439 \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u043e\u0439 (\u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u0430\u043c\u043f \u0441 \u0441\u0430\u043c\u043e\u0439 RK-7020F, \u0430 \u044d\u0444\u0438\u0440\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b). \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9eb\/c50\/f59\/9ebc50f591e68fb07ae683165cd95c88.png\" width=\"2560\" height=\"1440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/9eb\/c50\/f59\/9ebc50f591e68fb07ae683165cd95c88.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9eb\/c50\/f59\/9ebc50f591e68fb07ae683165cd95c88.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>P. S. \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e &#8212; \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 gui \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 libiio\/hack rf, \u0441\u043a\u0440\u0438\u043d \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432\u044b\u0448\u0435. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0431\u044b\u043b\u043e \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0438\u0437\u043b\u0443\u0447\u0430\u0442\u044c \u0442\u0438\u043f\u043e\u0432\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b<br \/>\u0414\u043e\u0441\u0442\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0434\u0435\u0441\u044c:<br \/><a href=\"https:\/\/github.com\/FernandesKA\/iq_forge_gui\" rel=\"noopener nofollow\">https:\/\/github.com\/FernandesKA\/iq_forge_gui<\/a><\/p>\n<h3>\u0418\u0442\u043e\u0433\u043e<\/h3>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c ILA \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u0431\u0435\u0437 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e JTAG-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430, \u043f\u043e\u0434\u043d\u044f\u0432 JTAG-over-Ethernet \u0447\u0435\u0440\u0435\u0437 Debug Bridge \u0438 XVC.<br \/> \u0414\u043b\u044f \u0440\u0430\u0437\u043e\u0432\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u043e\u0449\u0435 \u0432\u0437\u044f\u0442\u044c mmap-\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u043c\u0435\u043d\u044c\u0448\u0435 \u0448\u0430\u0433\u043e\u0432, \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u044f\u0434\u0440\u0430; \u0430 \u0432\u043e\u0442 \u0434\u043b\u044f \u0447\u0435\u0433\u043e-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435 ioctl: \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0448\u0435\u043c PL \u0432\u043c\u0435\u0441\u0442\u043e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e busy-poll, \u0438 \u0432 \u0446\u0435\u043b\u043e\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u0432 \u0441 \u0440\u0443\u0447\u043d\u044b\u043c \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u043e\u043c UIO-\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430.<br \/> \u041d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c <code>sdtgen<\/code> + <code>lopper<\/code> \u0432\u043c\u0435\u0441\u0442\u043e \u0443\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0435 DTG \u2014 \u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f.<\/p>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044e \u0432\u0441\u0435\u0445 \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0431\u0443\u0434\u0443 \u0440\u0430\u0434 \u043b\u044e\u0431\u043e\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438!<\/p>\n<p><\/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\/1091300\/\">https:\/\/habr.com\/ru\/articles\/1091300\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430 Zynq SoC, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ILA (Integrated Logic Analyzer) \u0431\u0435\u0437 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 JTAG.  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Xilinx Virtual Cable, \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0438\u0437 Hardware Manager Vivado.\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0430\u0442\u044c\u0438:\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 XVC?\u0413\u043e\u0442\u043e\u0432\u0438\u043c XVC \u0434\u043b\u044f Zynq SoC \u0432 Block Design\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c XVC \u043a\u0430\u043a \u043f\u0430\u043a\u0435\u0442\u044b (us + lkm) \u0432 \u043d\u0430\u0448 buildroot\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c devicetree ovelay \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e xvc (mmap \u0447\u0435\u0440\u0435\u0437 uio, ioctl)\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 uio, \u0438 \u043a\u0430\u043a \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 XVC \u0447\u0435\u0440\u0435\u0437 ioctl lkm\u0413\u043e\u0442\u043e\u0432\u0438\u043c bitstream \u0441 ILA \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u043a\u0443\u0434\u0430 \u043d\u0430\u0434\u043e \u0436\u043c\u0430\u0442\u044c \u0432 Vivado, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443P. S. \u042f \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a RTL, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u2014 \u043e\u0447\u0435\u043d\u044c \u0431\u0443\u0434\u0443 \u0440\u0430\u0434 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u0440\u0438\u0442\u0438\u043a\u0435!\u041a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043c\u0435\u043d\u044f \u043f\u043e\u0434\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0430 \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 fpga (bitstream), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u043f\u043b\u0430\u0442\u0443, \u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0434\u0430\u0432\u0430\u043b\u0430 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u0436\u0438\u0437\u043d\u0438, \u043d\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u0430 \u0447\u0435\u0440\u043d\u0430\u044f \u043c\u0430\u0433\u0438\u044f.\u0418 \u043a\u0430\u043a \u043d\u0430\u0437\u043b\u043e \u0440\u0430\u0441\u043f\u0430\u044f\u043d\u043d\u043e\u0439 FTDI \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e, \u0430 JTAG-\u0440\u0430\u0437\u044a\u0435\u043c \u0431\u044b\u043b \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0432 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435.\u041f\u0443\u0442\u0435\u043c \u043d\u0435\u0434\u043e\u043b\u0433\u0438\u0445 \u043f\u043e\u0438\u0441\u043a\u043e\u0432 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:https:\/\/github.com\/Xilinx\/XilinxVirtualCable https:\/\/docs.amd.com\/r\/en-US\/ug908-vivado-programming-debugging\/Xilinx-Virtual-Cable-XVC https:\/\/xilinx-wiki.atlassian.net\/wiki\/spaces\/A\/pages\/644579329\/Xilinx+Virtual+Cable\u0418 \u0441\u0443\u0434\u044f \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e, \u0432\u0441\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 \u043e\u0434\u043d\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u043d\u043e \u0432 \u0432\u0438\u0434\u0435 petalinux.\u0412 \u0446\u0435\u043b\u043e\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043b\u0430\u043f\u043a\u0430\u043c\u0438 \u0432 \u043d\u0430\u0448 buildroot \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435.\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u0443 \u043c\u0435\u043d\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f Zynq RK-7020F Rev 1.1, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0437 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439.\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437, sdk \u043c\u043e\u0436\u043d\u043e \u0442\u0443\u0442:https:\/\/github.com\/FernandesKA\/buildroot_custom\u041a\u0443\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c ILA, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c?\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 ILA \u044f \u0431\u0443\u0434\u0443 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0432\u043e\u0435\u0433\u043e PET \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 AD9361 + Zynq7020.\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c ILA \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u043e \u0442.\u043a. \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043d\u0435\u0447\u0442\u043e \u043d\u0435\u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u043e\u0435, \u0442\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u043d\u0435\u0433\u043e.\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u2014 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431:SYNTHESIS -&gt; Open Synthesized Design -&gt; Schematic\u041f\u043e\u043c\u0435\u0442\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0448\u0438\u043d\u044b \u0447\u0435\u0440\u0435\u0437 Mark Debug, \u0434\u0430\u043b\u0435\u0435 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 SYNTHESIS -&gt; Set Up Debug\u0422\u0430\u043a \u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u043b, \u0438 \u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. Set Up Debug \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 ILA \u043f\u0440\u044f\u043c\u043e \u0432 \u043d\u0435\u0442\u043b\u0438\u0441\u0442 \u0438 \u0441\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0434\u043b\u044f \u043d\u0435\u0433\u043e dbg_hub, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u0434\u0438\u0442\u0441\u044f \u043d\u0430 BSCANE2 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 JTAG.  \u0410 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0445\u0430\u0431\u043e\u043c \u0431\u044b\u043b Debug Bridge, \u0434\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0434\u043e\u0441\u0442\u0443\u0447\u0438\u043c\u0441\u044f \u043f\u043e AXI (\u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435). \u0418 \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f Debug Bridge \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 From AXI to BSCAN \u0438\u043b\u0438 From BSCAN to DebugHub, Vivado \u0442\u0430\u043a\u0443\u044e \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c:CRITICAL WARNING: [Vivado 12-727] Error: This design contains one or more debug bridge instances with one or more master interfaces enabled and\/or configured in any of the following modes. 1.AXI to BSCAN 2. PCIE to BSCAN 3. BSCAN Primitive 4. From BSCAN to DebugHub for which insertion is not currently supported.Use the debug instantiation flow.\u041f\u0440\u0438\u0447\u0435\u043c \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c critical warning, bitstream \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, \u0442\u043e\u043b\u044c\u043a\u043e ILA \u0432 \u043d\u0435\u043c \u043d\u0435\u0442. \u0422\u0430\u043a \u0447\u0442\u043e \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0438\u0442\u0430\u0435\u043c \u043b\u043e\u0433.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 ILA \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e\u0435 IP (\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 debug instantiation flow): \u043b\u0438\u0431\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u043c \u0432 RTL, \u043b\u0438\u0431\u043e \u0432 Block Design. \u042f \u0432\u044b\u0431\u0440\u0430\u043b RTL \u2014 \u0442\u0430\u043a \u0432\u0438\u0434\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043c\u043e\u0434\u0443\u043b\u044f, \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0434\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0445 \u043f\u043e\u0440\u0442\u0430\u043c\u0438 \u043d\u0430\u0440\u0443\u0436\u0443.\u0421\u043e\u0437\u0434\u0430\u0435\u043c IP (\u0447\u0435\u0440\u0435\u0437 IP Catalog \u0438\u043b\u0438 tcl):create_ip -name ila -vendor xilinx.com -library ip -module_name ila_ddsset_property -dict [list \\    CONFIG.C_NUM_OF_PROBES {3} \\    CONFIG.C_PROBE0_WIDTH {12} \\    CONFIG.C_PROBE1_WIDTH {12} \\    CONFIG.C_PROBE2_WIDTH {24} \\    CONFIG.C_DATA_DEPTH {2048} \\] [get_ips ila_dds]generate_target all [get_ips ila_dds]\u0418 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0442\u0443\u0434\u0430, \u0433\u0434\u0435 \u043b\u0435\u0436\u0430\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b:ila_dds ila_dds_inst (    .clk(i_clk),    .probe0(dbg_i),    .probe1(dbg_q),    .probe2(dbg_phase));\u041a \u0445\u0430\u0431\u0443 ILA \u0440\u0443\u043a\u0430\u043c\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u2014 Vivado \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0441\u0430\u043c \u043f\u0440\u0438 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0420\u044f\u0434\u043e\u043c \u0441 bitstream \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0444\u0430\u0439\u043b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c .ltx, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043d\u0430 ILA.\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c DebugBridge \u043d\u0430 AXI \u0448\u0438\u043d\u0443\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 ILA \u0447\u0435\u0440\u0435\u0437 ethernet, \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c IP core Debug Bridge.\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0430 AXI \u0448\u0438\u043d\u0443 DebugBridge, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 ILA. \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0432 IP core DebugBridge.\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432 \u043e\u043a\u043d\u0435 Re-customize IP \u0432 Debug Bridge Options \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c From AXI to BSCAN, \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c S_AXI, aclk, aresetn.\u041d\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u043c\u043e\u0441\u0442\u0430 \u043c\u0430\u043b\u043e. From AXI to BSCAN \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043f\u043e AXI \u0432 JTAG \u0438 \u0432\u044b\u0434\u0430\u0435\u0442 \u0438\u0445 \u043d\u0430 BSCAN-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 m0_bscan, \u0430 \u0441\u0430\u043c \u0445\u0430\u0431, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f ILA, \u0436\u0438\u0432\u0435\u0442 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u041f\u0440\u0438\u0447\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e BSCAN master-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 (C_NUM_BS_MASTER) \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e, \u0442\u043e \u0435\u0441\u0442\u044c m0_bscan \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u0442. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u0442\u043e DRC \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 bitstream \u0440\u0443\u0433\u043d\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 TDO \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0441\u0442\u0430:[DRC NDRV-1] Driverless Nets: Undriven nets found. &#8230; Net bsip_tdo_0 are undriven.\u041f\u043e\u044d\u0442\u043e\u043c\u0443:\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043c\u043e\u0441\u0442\u0435 (debug_bridge_0, From AXI to BSCAN) \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e BSCAN master-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0432 1 \u2014 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f m0_bscan.\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0442\u043e\u0440\u043e\u0439 Debug Bridge (debug_bridge_1) \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 From BSCAN to DebugHub. \u042d\u0442\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0448 debug hub.\u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c debug_bridge_0\/m0_bscan -&gt; debug_bridge_1\/S_BSCAN, \u0430 debug_bridge_1\/clk \u0437\u0430\u0432\u043e\u0434\u0438\u043c \u043d\u0430 \u0442\u043e\u0442 \u0436\u0435 \u043a\u043b\u043e\u043a, \u0447\u0442\u043e \u0438 AXI (\u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 FCLK_CLK0 \u0441 PS).\u0412 tcl \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:set debug_bridge_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:debug_bridge:3.0 debug_bridge_0 ]set_property -dict [list \\  CONFIG.C_DEBUG_MODE {2} \\  CONFIG.C_NUM_BS_MASTER {1} \\] $debug_bridge_0set debug_bridge_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:debug_bridge:3.0 debug_bridge_1 ]set_property CONFIG.C_DEBUG_MODE {1} $debug_bridge_1connect_bd_intf_net [get_bd_intf_pins debug_bridge_0\/m0_bscan] [get_bd_intf_pins debug_bridge_1\/S_BSCAN]\u0425\u0430\u0431 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u2014 \u0432\u043d\u0443\u0442\u0440\u0438 debug_bridge_1, \u0438 \u0432\u0441\u0435 ILA \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435 Vivado \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442 \u043a \u043d\u0435\u043c\u0443.\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c DebugBridge \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 dts, \u0438 \u0447\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0434\u0435\u043b\u0430\u0442\u044c\u0421\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u044e\u0441\u044c, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c DebugBridge \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e bitstream \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 linux, \u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441 \u043a\u043b\u043e\u043a\u043e\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c.\u041d\u043e \u0435\u0441\u043b\u0438 ILA \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0441\u0435\u0442\u044c \u043d\u0430 \u043a\u043b\u043e\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 bitstream, \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0438\u0437 linux, \u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.\u041a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u0435\u0441\u043b\u0438 \u0441\u0438\u0433\u043d\u0430\u043b \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0434\u0435\u0442 \u0441 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043a\u043b\u043e\u043a\u0430 \u0442\u0438\u043f\u0430 LMK, HMC \u0438 \u0442.\u0434.\u041c\u044b \u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u2014 \u043a\u043b\u043e\u043a \u0434\u043b\u044f ILA \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u0441 PS.\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 fpga bitstream \u0431\u044b\u043b \u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043d\u0430\u0439\u0442\u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 \u043d\u0438\u0436\u0435.https:\/\/habr.com\/ru\/articles\/1052912\/\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c DeviceTree\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0438\u0437 userspace \u0441 \u043d\u0430\u0448\u0438\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c, \u0431\u0443\u0434\u0435\u043c \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c devicetreeuio_xvc {status = &#171;disabled&#187;;compatible = &#171;generic-uio&#187;;reg = &lt;0x43C00000 0x10000&gt;;    &#8230;};xvc: debug-bridge@43C00000 {compatible = &#171;xlnx,xvc&#187;;reg = &lt;0x43C00000 0x10000&gt;;&#8230;};\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c dts \u0444\u0430\u0439\u043b \u043e\u0431\u0435 \u043d\u043e\u0434\u044b \u0441 status = &#171;okay&#187;, \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u043f\u0430\u043c\u044f\u0442\u044c \u0438\u0437 \u0434\u0432\u0443\u0445 \u043c\u0435\u0441\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.\u0420\u0443\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043d\u043e\u0434\u044b \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c xsa \u0444\u0430\u0439\u043b, \u0438 \u0438\u0437 \u043d\u0435\u0433\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c dts. \u0418 \u0443\u0436\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 dts \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c devicetree overlay.\u041a\u0430\u043a \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c devicetree \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e xsa1. \u0412\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u0412 \u043c\u043e\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0442\u043e\u0438\u0442 Vitis 2025.1. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 DTG-flow: xsct \u0438 HSI API \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u0438\u0437 device-tree-xlnx. \u042d\u0442\u043e\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0443\u0436\u0435 \u0431\u044b\u043b \u0443 \u043c\u0435\u043d\u044f \u0432 ~\/dev_linux\/device-tree-xlnx \u043d\u0430 \u0432\u0435\u0442\u043a\u0435 xlnx_rel_v2025.1, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u043e\u0439 \u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0447\u0442\u043e \u0438 Vitis. \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u0438 \u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u0432\u0435\u0440\u0441\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u043f\u043e\u0434\u043e\u0439\u0442\u0438 \u043a HSI.2. TCL-\u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f xsct:set xsa   [lindex $argv 0]set repo  [lindex $argv 1]set out   [lindex $argv 2]hsi::open_hw_design $xsahsi::set_repo_path $repohsi::create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0hsi::set_property CONFIG.dt_overlay true [hsi::get_os]hsi::generate_target -dir $outhsi::close_hw_design [hsi::current_hw_design]\u041f\u043e \u0448\u0430\u0433\u0430\u043c:\u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f XSA;\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\u00a0device-tree-xlnx;\u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f SW-\u0434\u0438\u0437\u0430\u0439\u043d \u0441 \u041e\u0421\u00a0device_tree\u00a0\u0434\u043b\u044f \u044f\u0434\u0440\u0430\u00a0ps7_cortexa9_0;\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f overlay (CONFIG.dt_overlay true), \u0447\u0442\u043e\u0431\u044b PL-\u0443\u0437\u043b\u044b \u0441\u0440\u0430\u0437\u0443 \u043e\u0444\u043e\u0440\u043c\u0438\u043b\u0438\u0441\u044c \u0432 \u0432\u0438\u0434\u0435 \/plugin\/-\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 (pl.dtsi), \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0432 .dtbo, \u0430 \u043d\u0435 \u0432\u043b\u0438\u043b\u0438\u0441\u044c \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e;\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b.3. \u0417\u0430\u043f\u0443\u0441\u043a:source ~\/tools\/Xilinx\/2025.1\/Vitis\/settings64.shxsct gen_dt_overlay.tcl $PWD\/system_wrapper_ila_db.xsa ~\/dev_linux\/device-tree-xlnx $PWD\/dts4. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0431\u043e\u0440\u043a\u0438:\u0411\u0430\u0437\u043e\u0432\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0440\u0430\u043d\u044c\u0448\u0435, \u043d\u043e \u0441 -@:gcc -E -nostdinc -undef -D__DTS__ -x assembler-with-cpp -I dts -I dts\/include dts\/system-top.dts -o pp.dtsdtc -@ -I dts -O dtb -o devicetree.dtb pp.dts\u0410 \u0441\u0430\u043c \u043e\u0432\u0435\u0440\u043b\u0435\u0439 \u2014 pl.dtsi \u2014 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 incluse, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u043e\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e:dtc -@ -O dtb -o pl.dtbo -I dts dts\/pl.dtsi\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044csystem-top.dts \u2014 \u0432 overlay-\u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u043e\u0447\u0442\u0438 \u043f\u0443\u0441\u0442\u043e\u0439, \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0447\u0435\u0447\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f (chosen, mac-\u0430\u0434\u0440\u0435\u0441 gem0).pl.dtsi \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e PL-\u0447\u0430\u0441\u0442\u044c. HSI \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 PL-\u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u0435 \u0443\u0437\u043b\u044b \u043d\u0435 \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e PS-\u0448\u0438\u043d\u0443 amba, \u0430 \u0432 \u043d\u043e\u0432\u0443\u044e \u043d\u043e\u0434\u0443 amba_pl: pl-bus (compatible = &#171;simple-bus&#187;) \u2014 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 simple-bus, \u0430 \u043d\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 amba: axi { &#8230; } \u0438\u0437 zynq-7000.dtsi: &amp;fpga_full { firmware-name = &#171;system_wrapper_ila_db.bit.bin&#187;; &#8230; };amba_pl { &#8230; } \u2014 \u0443\u0437\u0435\u043b \u0441\u043e \u0432\u0441\u0435\u043c\u0438 PL-\u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c\u0438 \u0443\u0437\u043b\u0430\u043c\u0438: \u043f\u044f\u0442\u044c AXI GPIO (dds_ctrl, dds_ftw, lfm_start, lfm_stop, lfm_incr, \u0430\u0434\u0440\u0435\u0441\u0430 0x4121_0000\u20130x4125_0000) \u0438 debug_bridge_0 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x43c00000 \u2014 \u0443\u0436\u0435 \u0432 \u0433\u043e\u0442\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435.zynq-7000.dtsi, pcw.dtsi, skeleton.dtsi, include\/ \u2014 \u043e\u0431\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b SoC \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u043d\u0443\u0436\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u043c\u0443 \u0434\u0435\u0440\u0435\u0432\u0443.system.dts, device-tree.mss \u2014 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b HSI.\u041d\u0430&#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-497641","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/497641","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=497641"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/497641\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=497641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=497641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=497641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}