{"id":271281,"date":"2015-12-28T13:14:02","date_gmt":"2015-12-28T10:14:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=271281"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=271281","title":{"rendered":"Cypress FX3 \u0438 (\u0441\u0438\u043b\u044c\u043d\u043e)\u0443\u0434\u0430\u043b\u0451\u043d\u043d\u0430\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0430"},"content":{"rendered":"<p>       \u0414\u0430\u043d\u043e: \u0435\u0441\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0441 ARM926E-JS (Cypress FX3) \u043d\u0430 \u0431\u043e\u0440\u0442\u0443. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u043a\u043e\u043d\u0442\u0438\u043d\u0435\u043d\u0442\u0435. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e (JTAG+USB+COM) \u043a Linux \u043a\u043e\u043c\u043f\u0443. \u041d\u0430 \u043a\u043e\u043c\u043f \u0435\u0441\u0442\u044c SSH \u0434\u043e\u0441\u0442\u0443\u043f (\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u0447\u0435\u0433\u043e, \u0442\u043e\u043b\u044c\u043a\u043e SSH \u043f\u043e\u0440\u0442). <\/p>\n<p>  \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0434 \u043d\u0435\u0433\u043e \u043a\u043e\u0434. \u0418 \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0443\u0434\u043e\u0431\u043d\u043e.<\/p>\n<p>  \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c OpenOCD, GDB \u0438 Qt Creator, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0443\u0442\u0438 \u043a \u043d\u0435\u043c\u0443, \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0420\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043d\u043e\u0433\u043e. \u0421\u0430\u043c\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0435 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0435: \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0432\u044f\u0437\u043a\u0438 GDB+OpenOCD \u043d\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u0435 \u0447\u0435\u0440\u0435\u0437 ssh \u0441\u0435\u0441\u0441\u0438\u044e. \u0423\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043d\u0435 \u043c\u043d\u043e\u0433\u043e, \u0442.\u043a. \u043a\u043e\u0434 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u0430 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0437\u0430\u043b\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 scp \u0438\u043b\u0438 rsync.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0434\u043e\u043b\u0433\u0438\u0445 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0439, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0438\u0434\u0435\u044f: \u0430 \u0432\u0435\u0434\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f SSH:  <\/p>\n<pre><code class=\"bash\">ssh user@host some-command some-arguments <\/code><\/pre>\n<p>  \u0425\u043c\u2026 \u0410 \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 GDB \u043c\u043e\u0436\u0435\u0442 \u0441\u0430\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c OpenOCD \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 (pipe) \u0438 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c. \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e \u0431\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e OpenOCD, \u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0439, \u043f\u043e ssh, \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u043a\u0430 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438.<\/p>\n<p>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0435\u0436\u0438\u0437\u043d\u0435\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u043c: \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u043e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0443.<\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0438\u0434\u0435\u044f \u0431\u044b\u043b\u0430: \u043a\u0430\u043a-\u0442\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c VPN \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043b\u044e\u0431\u044b\u043c \u043f\u043e\u0440\u0442\u0430\u043c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e OpenOCD.<\/p>\n<p>  \u041d\u043e \u043a\u0430\u043a \u043f\u043e\u0434\u043d\u044f\u0442\u044c VPN, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u043e\u0440\u0442\u043e\u0432, \u043a\u0440\u043e\u043c\u0435 SSH? \u041b\u0430\u0434\u043d\u043e, \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e SSH \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u0442\u044b. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e OpenOCD, \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442\u2026 \u0414\u0430, \u0447\u0443\u0442\u044c \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430. \u041d\u043e \u0438\u043c\u0435\u043d\u043d\u043e, \u0447\u0442\u043e \u0447\u0443\u0442\u043e\u043a. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0433\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n<p>  \u041f\u043e\u0447\u0442\u0438 \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0438\u043b \u0431\u0440\u043e\u0441\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u043f\u0435\u0440\u0432\u044b\u043c, \u043f\u0440\u043e\u0441\u0442\u044b\u043c, \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u043c, \u043d\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u043d\u043e \u0442\u0443\u0442 \u043d\u0430\u0431\u0440\u0430\u043b \u0432 \u0433\u0443\u0433\u043b\u0435 \u0441\u0432\u044f\u0437\u043a\u0443: SSH VPN. \u0421\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044f \u0431\u044b\u043b \u0443\u0434\u0438\u0432\u043b\u0451\u043d \u2014 \u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0438\u0447\u0435\u0433\u043e. \u0427\u0442\u043e \u0431\u044b \u043d\u0435 \u0438\u0441\u043a\u0430\u0442\u044c, \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e:  <\/p>\n<ul>\n<li><a href=\"https:\/\/help.ubuntu.com\/community\/SSH_VPN\">help.ubuntu.com\/community\/SSH_VPN<\/a><\/li>\n<li><a href=\"http:\/\/linuxoid.in\/VPN-%D1%82%D1%83%D0%BD%D0%BD%D0%B5%D0%BB%D1%8C_%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B0%D0%BC%D0%B8_ssh\">linuxoid.in\/VPN-%D1%82%D1%83%D0%BD%D0%BD%D0%B5%D0%BB%D1%8C_%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B0%D0%BC%D0%B8_ssh<\/a><\/li>\n<\/ul>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043d\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 tap8 \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c 192.168.100.1 \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e: \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 tap7 \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c 192.168.100.2 (\u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c).<\/p>\n<p>  \u041f\u0440\u043e\u0431\u0443\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u2026 \u041e \u0447\u0443\u0434\u043e! \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0431\u043e\u0447\u0438\u043c! \u041a\u043e\u0434 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f, \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u0441\u0442\u0430\u0432\u044f\u0442\u0441\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0434\u043d\u0430: \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e. \u0418 \u0435\u0441\u043b\u0438 \u0441 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (\u0441\u0442\u0435\u043a\u0442\u0440\u0435\u0439\u0441\u044b, \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u0442.\u043f.) \u044f \u043c\u043e\u0433\u0443 \u0441\u043c\u0438\u0440\u0438\u0442\u044c\u0441\u044f, \u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 300 \u043a\u0411 elf&#8217;\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 6 \u043c\u0438\u043d\u0443\u0442. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0417\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>  \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0432\u043e\u0442 \u043f\u0430\u0440\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 (\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 SSH \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0436\u0443):  <\/p>\n<ol>\n<li>openocd-remote \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e OpenOCD \u0447\u0435\u0440\u0435\u0437 ssh. \u041e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435<br \/>   \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0438 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0431\u044b \u0441\u043b\u0443\u0447\u0430\u0435<br \/>   \u0432 \u044d\u0442\u043e\u0442 \u0436\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0431\u044b \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 sed, \u0447\u0442\u043e \u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043c\u0435\u043d\u044b. \u041f\u043b\u044e\u0441,<br \/>   OpenOCD \u0443 \u043c\u0435\u043d\u044f \u0441\u043e\u0431\u0440\u0430\u043d \u0438\u0437 Git \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d \u0432 <code> ~\/bin\/openocd-git\/{bin,share} <\/code> (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438).<br \/>   \u041a\u043e\u043d\u0444\u0438\u0433\u0438 \u0434\u043b\u044f FX3 (\u043e \u043d\u0438\u0445 \u0434\u0430\u043b\u044c\u0448\u0435) \u043b\u0435\u0436\u0430\u0442 \u0432 <code> ~\/bin\/openocd-git\/ <\/code>. \u0412 <code> ~\/bin\/ <\/code> \u0441\u0434\u0435\u043b\u0430\u043d \u0441\u0438\u043c\u043b\u0438\u043d\u043a \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 <br \/>   \u0444\u0430\u0439\u043b openocd.<br \/> \n<pre><code class=\"bash\">#!\/bin\/sh ssh user@host -T killall -9 openocd exec ssh -TC user@host bin\/openocd $@ <\/code><\/pre>\n<\/li>\n<li>gdb-remote \u2014 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u043c\u0443 OpenOCD, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043a\u043e\u0434:<br \/> \n<pre><code class=\"bash\">#!\/bin\/sh  gdbcfg=fx3_gdb.ini elf=some-code.elf  cat &gt; $gdbcfg &lt;&lt; EOF set prompt (arm-gdb) set remotetimeout 30 target remote 192.168.100.1:3333 monitor halt monitor soft_reset_halt monitor adapter_khz 1000 set endian little load EOF  arm-none-eabi-gdb -x $gdbcfg $elf <\/code><\/pre>\n<\/li>\n<\/ol>\n<p>  \u0420\u0430\u0437\u0434\u0443\u043c\u044c\u044f \u043e\u0431 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0448\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0440\u0443\u0441\u043b\u0435: \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 elf \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0435\u043a\u0443\u043d\u0434 10, \u043f\u043b\u044e\u0441-\u043c\u0438\u043d\u0443\u0441. \u0410 \u0432\u043e\u0442 \u0431\u044b \u0431\u044b\u043b\u043e \u043a\u0440\u0443\u0442\u043e, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0437 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0443 \u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0443\u0436\u0435 \u0441 \u043d\u0435\u0433\u043e\u2026<\/p>\n<p>  \u0428\u0442\u0443\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e OpenOCD \u0438 \u0432\u043e\u0442 \u043e\u043d\u043e: \u0441\u0430\u043c OpenOCD \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043a\u043e\u0434 \u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0430 GDB \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u0438 \u0434\u0430\u0441\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 \u0441\u0442\u0430\u0440\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438. \u0412\u043e\u043b\u0448\u0435\u0431\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430: <code>load_image<\/code>.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0431\u044b\u043b\u0438 \u043d\u0435\u0443\u0442\u0435\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438: \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u041e\u0427\u0415\u041d\u042c \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e. \u041a\u043e\u0434 \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f, \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u043e: 1 \u043c\u0438\u043d\u0443\u0442\u0430 \u043f\u0440\u043e\u0442\u0438\u0432 6 \u0441 \u0445\u0432\u043e\u0441\u0442\u043e\u043c). \u041d\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0442\u043e \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442, \u0442\u043e \u043d\u0435\u0442. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0435\u0441\u043b\u0438 \u0436\u0435 \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0435\u0441\u0441\u0438\u0438 GDB \u0441\u0434\u0435\u043b\u0430\u0442\u044c <code>load<\/code>, \u0442\u043e \u0432\u0441\u0451 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u041d\u0430\u0447\u0430\u043b \u0438\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f. \u0417\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 <code>load<\/code>:  <\/p>\n<pre><code>Start address 0x40035948, load size 298456 <\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043d\u0430\u0432\u0435\u044f\u043b\u043e \u0437\u0430\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 <code>load<\/code> \u0438 \u0447\u0435\u0440\u0435\u0437 <code>load_image<\/code> (\u0447\u0435\u0440\u0435\u0437 OpenOCD) \u0438 \u043f\u0435\u0440\u0435\u0434 \u0441\u0442\u0430\u0440\u0442\u043e\u043c (<code>continue<\/code>) \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 <code>$pc<\/code>. \u0418\u2026 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e: \u043f\u043e\u0441\u043b\u0435 <code>load<\/code> <code>$pc<\/code> \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u0442 \u00abStart address\u00bb, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u043f\u043e\u0441\u043b\u0435 <code>load_image<\/code> \u0432 <code>$pc<\/code> \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0447\u0442\u043e-\u0442\u043e, \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0447\u0435\u0433\u043e \u0431\u044b\u043b\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 <code>pc<\/code> \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0442\u0430\u043b\u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439. \u041e\u0441\u0442\u0430\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441: \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 \u043d\u0435 \u0435\u0441\u0442\u044c \u0433\u0443\u0434. \u041d\u043e \u0442\u0443\u0442 \u043f\u043e\u043c\u043e\u0433\u043b\u043e \u0442\u043e, \u0447\u0442\u043e \u0432 GDB \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u044f\u0442 \u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 FX3 \u044d\u0442\u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b: <code>CyU3PFirmwareEntry<\/code> (\u043a \u0441\u043b\u043e\u0432\u0443, \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, <code>_start<\/code>) \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 <code>$pc<\/code> \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0430\u0441\u044c \u0432 \u0442\u0430\u043a\u0443\u044e:  <\/p>\n<pre><code>set $pc = CyU3PFirmwareEntry <\/code><\/pre>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0443 GDB \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043b\u0435\u0433\u043a\u043e \u0438 \u043d\u0435\u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0451\u043d\u043d\u043e \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0437\u0430\u043b\u0438\u0442\u044c elf \u0444\u0430\u0439\u043b \u043d\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0434\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u043c\u0443 OpenOCD \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0433\u043e (\u043b\u044e\u0431\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f OpenOCD \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u0438\u0437 GDB \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0432 \u0435\u0451 \u0441\u043b\u043e\u0432\u043e\u043c <code>monitor<\/code>).<\/p>\n<p>  \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 GDB:  <\/p>\n<pre><code class=\"bash\">#!\/bin\/sh  gdbcfg=fx3_gdb.ini elf=some-code.elf  # \u0413\u0435\u043d\u0435\u0440\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433 \u0434\u043b\u044f GDB cat &gt; $gdbcfg &lt;&lt; EOF set prompt (arm-gdb) set remotetimeout 30 target remote 192.168.100.1:3333 shell scp $elf user@192.168.100.1: monitor halt monitor soft_reset_halt monitor sleep 1000 monitor load_image %elf 0x00 elf set $pc = CyU3PFirmwareEntry EOF  arm-none-eabi-gdb -x $gdbcfg $elf  <\/code><\/pre>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 OpenOCD \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u043c \u0436\u0435.<\/p>\n<p>  \u0427\u0442\u043e \u043d\u0430\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e \u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u0443\u044e \u043e\u0442\u043b\u0430\u0434\u043a\u0443:  <\/p>\n<ol>\n<li>\u0417\u0430\u043f\u0443\u0441\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 openocd-remote. \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044f\u043c.<\/li>\n<li>\u041e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043e\u0434 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c gdb \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0432\u044b\u0448\u0435.<\/li>\n<li>&#8230;<\/li>\n<li>PROFIT<\/li>\n<\/ol>\n<p>\u0410 PROFIT \u043b\u0438? \u041f\u043e \u043c\u043d\u0435, \u0442\u0430\u043a \u043d\u0435\u0442. \u041a\u043e\u0434 \u044f \u043f\u0438\u0448\u0443 \u0432 Qt Creator \u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d \u043a\u043b\u0438\u043a \u0432\u0441\u0451 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043d\u0435\u0433\u043e. \u0418 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d \u043a\u043b\u0438\u043a. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e:  <\/p>\n<ol>\n<li>\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u0438\u0430\u043b\u043e\u0433 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a<\/li>\n<li>\u0412\u044b\u0431\u0440\u0430\u0442\u044c Bare Metal \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 GDB Server Provider \u0441 \u0442\u0438\u043f\u043e\u043c OpenOCD \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\n<ul>\n<li>Name: \u043d\u0430 \u0432\u0430\u0448\u0435 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435, \u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 FX3 Remote<\/li>\n<li>Startup mode: Startup in TCP\/IP<\/li>\n<li>Host: 192.168.100.1<\/li>\n<li>Port: 3333<\/li>\n<li>Executable file: \u043f\u0443\u0442\u044c \u043a openocd-remote, \u0443 \u043c\u0435\u043d\u044f \u044d\u0442\u043e \/home\/alexd\/bin\/openocd-remote<\/li>\n<li>Root scripts directory: \/home\/alexd\/bin\/openocd-git\/share\/openocd\/scripts \u2014 \u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f,<br \/>   \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u0443\u043c\u043d\u044b\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0449\u0438\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u044d\u0442\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c, \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f<br \/>   \u0434\u0435\u043b\u0430\u043b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0438 \u043d\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u043c.<\/li>\n<li>Configuration file: \/home\/alexd\/bin\/openocd-git\/share\/openocd\/scripts\/interface\/ftdi\/olimex-arm-usb-ocd-h.cfg \u2014 \u0443 <br \/>   \u043c\u0435\u043d\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a Olimex ARM-USB-OCD-H, \u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e.<\/li>\n<li>Additional argumets: -f ~\/bin\/openocd-git\/fx3-common.cfg -f ~\/bin\/openocd-git\/fx3-threadx.cfg \u2014 \u044d\u0442\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b<br \/>   \u044f \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e \u043d\u0438\u0436\u0435.<\/li>\n<li>Init commands \u2014 \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435:<br \/> \n<pre><code>monitor echo &quot;Upload image...&quot; shell scp %{DebuggedExecutable:NativeFilePath} user@192.168.100.1: monitor halt monitor soft_reset_halt monitor sleep 1000 monitor echo &quot;Load image...&quot; monitor load_image %{DebuggedExecutable:FileName} 0x00 elf set $pc = CyU3PFirmwareEntry monitor echo &quot;Run image...&quot; <\/code><\/pre>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u043a\u043e\u0434 \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043c\u0430\u043a\u0440\u043e\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\u043c\u0438, \u0447\u0442\u043e \u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0430\u0440\u0433\u0435\u0442\u0430.<\/li>\n<li>Reset commands: <code>monitor reset halt<\/code> (\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).<\/li>\n<\/ul>\n<\/li>\n<li>\u0417\u0430\u0442\u0435\u043c \u0438\u0434\u0451\u043c \u0432 Devices, \u0434\u0435\u043b\u0430\u0435\u043c Add -&gt; Bare Metal Device -&gt; \u0414\u0430\u0451\u043c \u0438\u043c\u044f (\u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 FX3 Device Remote) \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u043d\u0430\u0448 GDB Server provider (FX3 Remote)<\/li>\n<li>\u0417\u0430\u0442\u0435\u043c \u0438\u0434\u0451\u043c \u0432 Build &#038; Runs \u0438 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 (Kits) \u0434\u043b\u044f Cypress (\u0438\u043b\u0438 ARM \u0438\u043b\u0438 \u0447\u0435\u0433\u043e \u0443 \u0432\u0430\u0441 \u0442\u0430\u043c) \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c:<br \/> \n<ul>\n<li>Device type: Bare Metal Device<\/li>\n<li>Device: FX3 Device Remote<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>\u0422\u0443\u0442 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0430\u0431\u043e\u0440\u0430 \u2014 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0438 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041d\u043e \u0447\u0442\u043e \u0436\u2026 \u041f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>  \u0412\u0441\u0451, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e, \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Run \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0440\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c &quot;(via GDB Server or hardware debugger)&quot; \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c F5.<\/p>\n<h5>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<\/h5>\n<p>  \u0421\u043a\u0440\u0438\u043f\u0442\u044b fx3-common.cfg, fx3-threadx.cfg, fx3-boot.cfg (\u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0431\u0443\u0442\u043b\u043e\u0434\u0435\u0440\u0430 \u0438\u043b\u0438 \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442 ThreadX) \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">fx3-common.cfg<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">###################################### # Target: CYPRESS FX3 ARM926-ejs # Common part ###################################### if { [info exists CHIPNAME] } { set _CHIPNAME $CHIPNAME } else { set _CHIPNAME fx3 }  if { [info exists ENDIAN] } { set _ENDIAN $ENDIAN } else { set _ENDIAN little }  if { [info exists CPUTAPID] } { set _CPUTAPID $CPUTAPID } else { set _CPUTAPID 0x07926069 }  #delays on reset lines adapter_nsrst_delay 200 jtag_ntrst_delay 200  adapter_khz 1000  #reset_config trst_only #reset_config trst_only combined #reset_config trst_and_srst combined #reset_config trst_and_srst srst_pulls_trst # From the Cypress SDK reset_config trst_and_srst srst_pulls_trst # My own well worked #reset_config trst_only  jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID jtag_rclk 3 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">fx3-threadx.cfg<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">###################################### # Target: CYPRESS FX3 ARM926-ejs ######################################  #source [find fx3-common.inc]  ###################### # Target configuration ###################### set _TARGETNAME $_CHIPNAME.cpu  target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -rtos ThreadX adapter_khz 1000 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">fx3-boot.cfg<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">###################################### # Target: CYPRESS FX3 ARM926-ejs ######################################  #source [find fx3-common.inc]  ###################### # Target configuration ###################### set _TARGETNAME $_CHIPNAME.cpu  target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME  adapter_khz 1000 <\/code><\/pre>\n<\/p><\/div>\n<\/div>\n<p>  \u0422\u0438\u043f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 Qt Creator \u0434\u043b\u044f ARM, FX3 \u0438 \u0438\u0436\u0435 \u0441 \u043d\u0438\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c Generic, \u043d\u043e \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b CMake \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f FX3: <a href=\"https:\/\/github.com\/h4tr3d\/fx3-cmake\">github.com\/h4tr3d\/fx3-cmake<\/a> \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e CMake Project manager, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0445, \u0442\u0435\u043d\u0435\u0432\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u043f\u043e\u0432\u043e\u0434 \u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.<\/p>\n<p>  \u041a\u043e\u043c\u0430\u043d\u0434\u044b OpenOCD: <a href=\"http:\/\/openocd.org\/doc\/html\/General-Commands.html\">openocd.org\/doc\/html\/General-Commands.html<\/a><\/p>\n<p>  \u0414\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f Entry Point \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c GDB \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043f\u0438\u0442\u043e\u043d \u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f\u043c\u0438:  <\/p>\n<ul>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/10483544\/stopping-at-the-first-machine-code-instruction-in-gdb\">stackoverflow.com\/questions\/10483544\/stopping-at-the-first-machine-code-instruction-in-gdb<\/a><\/li>\n<li><a href=\"http:\/\/ryanarn.blogspot.ru\/2011\/04\/gdb-python-script-to-get-start-address.html\">ryanarn.blogspot.ru\/2011\/04\/gdb-python-script-to-get-start-address.html<\/a><\/li>\n<\/ul>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/274179\/\"> http:\/\/habrahabr.ru\/post\/274179\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       \u0414\u0430\u043d\u043e: \u0435\u0441\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0441 ARM926E-JS (Cypress FX3) \u043d\u0430 \u0431\u043e\u0440\u0442\u0443. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u043a\u043e\u043d\u0442\u0438\u043d\u0435\u043d\u0442\u0435. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e (JTAG+USB+COM) \u043a Linux \u043a\u043e\u043c\u043f\u0443. \u041d\u0430 \u043a\u043e\u043c\u043f \u0435\u0441\u0442\u044c SSH \u0434\u043e\u0441\u0442\u0443\u043f (\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u0447\u0435\u0433\u043e, \u0442\u043e\u043b\u044c\u043a\u043e SSH \u043f\u043e\u0440\u0442). <\/p>\n<p>  \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0434 \u043d\u0435\u0433\u043e \u043a\u043e\u0434. \u0418 \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0443\u0434\u043e\u0431\u043d\u043e.<\/p>\n<p>  \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c OpenOCD, GDB \u0438 Qt Creator, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0443\u0442\u0438 \u043a \u043d\u0435\u043c\u0443, \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-271281","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/271281","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=271281"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/271281\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=271281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=271281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=271281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}