{"id":316691,"date":"2021-01-21T09:00:31","date_gmt":"2021-01-21T09:00:31","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=316691"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=316691","title":{"rendered":"SIP-\u0442\u0435\u043b\u0435\u0444\u043e\u043d c GUI \u043d\u0430 STM32F7"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\u0411\u044b\u043b \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0440\u043e\u043d\u043e\u0432\u0438\u0440\u0443\u0441\u043d\u044b\u0445 \u0432\u0435\u0447\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u043c\u043d\u043e\u0439 \u0432 \u0441\u0430\u043c\u043e\u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438. \u041d\u0430 \u0441\u0442\u043e\u043b\u0435 \u043b\u0435\u0436\u0430\u043b\u0430 \u043f\u043b\u0430\u0442\u0430 <a href=\"https:\/\/www.st.com\/en\/evaluation-tools\/32f769idiscovery.html\">STM32F769I-Discovery<\/a>. \u042f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0430 \u043d\u0435\u0435 \u0438 \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0432\u0435\u0434\u044c \u044d\u0442\u043e \u0436\u0435 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d. \u0415\u0441\u0442\u044c \u044d\u043a\u0440\u0430\u043d c \u0442\u0430\u0447\u0441\u043a\u0440\u0438\u043d\u043e\u043c 800&#215;480, \u0435\u0441\u0442\u044c \u0430\u0443\u0434\u0438\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0435\u0441\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043f\u0443\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0438 \u043d\u0435 \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439. \u0412\u0441\u0435 \u044d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432. \u0418 \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435. \u041d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0438\u043a\u0430\u043a\u043e\u0439 Android \u0434\u0430\u0436\u0435 \u0431\u043b\u0438\u0437\u043a\u043e \u043d\u0435 \u0432\u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443. \u0418 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u043d\u0430 <a href=\"http:\/\/embox.github.io\/\">Embox<\/a>.  <\/p>\n<div class=\"oembed\"><iframe allowfullscreen id=\"600846a3b4c396d242e096e8\" src=\"https:\/\/embedd.srv.habr.com\/iframe\/600846a3b4c396d242e096e8\"><\/iframe><\/div>\n<p>  <a name=\"habracut\"><\/a><br \/>  \u041c\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438. \u041f\u0435\u0440\u0432\u0430\u044f \u2014 \u044d\u0442\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d, \u043f\u0440\u0438\u0447\u0435\u043c, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u0412\u0442\u043e\u0440\u0430\u044f \u2014 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u0432\u043e\u043d\u043e\u043a \u0438 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f.<\/p>\n<h2>\u0422\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 STM32F769I-Discovery<\/h2>\n<p>   Embox \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u041e\u0421 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u041e\u0442\u043b\u0438\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0447\u0435\u0440\u0442\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u041f\u041e Linux \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438.<\/p>\n<p>  \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 VOIP \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <a href=\"https:\/\/www.pjsip.org\/\">PJSIP<\/a>. \u0415\u0433\u043e \u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0446\u0435\u043b\u0435\u0439.<\/p>\n<h3>\u0421\u0431\u043e\u0440\u043a\u0430 PJSIP \u043d\u0430 Linux<\/h3>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c, \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u2014 PJSIP, SIP \u0441\u0442\u0435\u043a \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. <a href=\"https:\/\/www.pjsip.org\/download.htm\">\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e<\/a>. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u044d\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u044f 2.10.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442. \u042d\u0442\u043e \u043b\u0435\u0433\u043a\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0434 \u0432\u0430\u0448\u0443 \u0445\u043e\u0441\u0442\u043e\u0432\u0443\u044e \u041e\u0421. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e Linux.<\/p>\n<pre><code class=\"bash\">$ .\/configure --prefix=~\/pj_build<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u044f \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u043f\u0446\u0438\u0439 \u043a\u0440\u043e\u043c\u0435 prefix, \u043f\u0443\u0442\u0438 \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435 \u0432\u0435\u0449\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u0432 \u043d\u0430\u0448\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c<\/p>\n<pre><code class=\"bash\">$ make dep $ make<\/code><\/pre>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a PJSIP \u043d\u0430 Linux<\/h3>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u043e\u0441\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 PJSIP, \u0430 \u0442\u0430\u043a\u0436\u0435 demo \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<br \/>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435, \u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435. \u041d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0437\u0432\u043e\u043d\u043e\u043a \u0432 \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0432\u043e\u0437\u044c\u043c\u0435\u043c pjsip-apps\/src\/samples\/simple_pjsua.c. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u043d\u0430 \u0437\u0432\u043e\u043d\u043e\u043a. \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 simple_pjsua.c \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c SIP \u0430\u043a\u043a\u0430\u0443\u043d\u0442. \u0417\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<pre><code class=\"cpp\"> #define SIP_DOMAIN   &quot;example.com&quot;  #define SIP_USER     &quot;alice&quot;  #define SIP_PASSWD   &quot;secret&quot; <\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\">$ .\/pjsip-apps\/bin\/samples\/x86_64-unknown-linux-gnu\/simple_pjsua<\/code><\/pre>\n<p>  \u0414\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435:<\/p>\n<pre><code class=\"plaintext\">15:21:22.181        \tpjsua_acc.c  ....SIP outbound status for acc 0 is not active 15:21:22.181        \tpjsua_acc.c  ....sip:bob@sip.linphone.org: registration success, status=200 (Registration successful), will re-register in 300 seconds 15:21:22.181        \tpjsua_acc.c  ....Keep-alive timer started for acc 0, destination:91.121.209.194:5060, interval:15s<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0437\u0432\u043e\u043d\u043a\u0438.<\/p>\n<h3>\u0421\u0431\u043e\u0440\u043a\u0430 PJSIP \u043d\u0430 Embox<\/h3>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043d\u0430 Embox. \u0421\u043d\u0430\u0447\u0430\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u044c\u0441\u044f \u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u043e\u0434 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 Qemu.<\/p>\n<p>  \u0412 Embox \u0435\u0441\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043d\u0430\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0430\u0442\u0447\u0438 \u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u0442\u0440\u0435\u0445 \u0441\u0442\u0430\u0434\u0438\u0439: configure, build, install.<\/p>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e \u0432 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u2018@Build\u2019 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c &#8216;script=$(EXTERNAL_MAKE)&#8217;.<\/p>\n<pre><code class=\"plaintext\">@Build(stage=2,script=&quot;$(EXTERNAL_MAKE) PJSIP_ENABLE_CXX=false&quot;) @BuildArtifactPath(cppflags=&quot;-I$(abspath $(EXTERNAL_BUILD_DIR))\/third_party\/pjproject\/core\/install\/include\/&quot;) module core_c extends core { \tdepends pjsip_dependencies }<\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 Makefile \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u043e\u0434 Embox:<\/p>\n<pre><code class=\"cmake\">PKG_NAME := pjproject PKG_VER  := 2.10  PKG_SOURCES := https:\/\/github.com\/pjsip\/pjproject\/archive\/$(PKG_VER).tar.gz PKG_MD5 \t:= 13e5c418008ae46c4ce0c1e27cdfe9b5  include $(EXTBLD_LIB)  PKG_PATCHES := pjproject-$(PKG_VER).patch \\ \tsha256_error_fix-$(PKG_VER).patch \\ \taddr_resolv_sock-$(PKG_VER).patch \u2026  DISABLE_FEATURES := \\ \tl16-codec   \\ \tilbc-codec  \\ \tspeex-codec \\ \tspeex-aec   \\ \tgsm-codec   \\ \tg722-codec  \\ \tg7221-codec \\ \tlibyuv \\ \tlibwebrtc  $(CONFIGURE) : \texport EMBOX_GCC_LINK=full; \\ \tcd $(BUILD_ROOT) &amp;&amp; ( \\     \t.\/configure \\         \tCC=$(EMBOX_GCC) \\         \tCXX=$(EMBOX_GXX) \\         \t--host=$(AUTOCONF_TARGET_TRIPLET) \\         \t--target=$(AUTOCONF_TARGET_TRIPLET) \\         \t--prefix=$(PJSIP_INSTALL_DIR) \\         \t$(DISABLE_FEATURES:%=--disable-%) \\         \t--with-external-pa; \\ \t) \ttouch $@  $(BUILD) : \tcd $(BUILD_ROOT) &amp;&amp; ( \\     \t     $(MAKE) dep; \\     \t     $(MAKE) MAKEFLAGS='$(EMBOX_IMPORTED_MAKEFLAGS)'; \\ \t) \ttouch $@  $(INSTALL) : ... <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u044d\u0442\u043e \u0442\u0435 \u0436\u0435 configure, make dep, make \u0447\u0442\u043e \u0438 \u0434\u043b\u044f Linux. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u0440\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e ( &#8212;host, &#8212;target, CC, CXX) \u0434\u043b\u044f \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0438\u0435. \u041c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c &#8212;with-external-pa, \u0442\u043e \u0435\u0441\u0442\u044c \u0433\u043e\u0432\u043e\u0440\u0438\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0430\u0443\u0434\u0438\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0438\u0437 Embox. Audio \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0432 Embox \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 portaudio, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 Linux.<\/p>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u043c\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a libyuv \u0438 libwebrtc. \u0422\u0430\u043a\u0436\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043c \u0432\u0441\u0435 \u043b\u0438\u0448\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u043e \u043a\u043e\u0434\u0435\u043a\u0438 \u043a\u0440\u043e\u043c\u0435 PCMA\/PCMU. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u041b\u0438\u043d\u0443\u043a\u0441\u0435:<\/p>\n<pre><code class=\"bash\">$ .\/configure \\ \t--prefix=$PREFIX \\ \t--disable-l16-codec   \\ \t--disable-ilbc-codec  \\ \t--disable-speex-codec \\ \t--disable-speex-aec   \\ \t--disable-gsm-codec   \\ \t--disable-g722-codec  \\ \t--disable-g7221-codec \\ \t--disable-libyuv \\ \t--disable-libwebrtc $ make dep &amp;&amp; make<\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c simple_pjsua \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043c \u043a\u043e\u0434 \u0432 Embox. \u0418\u0437 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043d\u0435\u0441\u0435\u043c \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 SIP \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0438\u0437 \u0421\u0438-\u0448\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u0444\u0430\u0439\u043b \u2018simple_pjsua_sip_account.inc\u2019, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u043e\u0436\u0438\u043c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u0422\u043e \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u043c \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u0436\u043d\u0438\u043c:<\/p>\n<pre><code class=\"cpp\">#define SIP_DOMAIN \t&lt;sip_domain&gt; #define SIP_USER   \t&lt;sip_user&gt; #define SIP_PASSWD \t&lt;sip_passwd&gt; <\/code><\/pre>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 simple_pjsua \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0430 Linux. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 PJSIP \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b configure \u0437\u0430\u0442\u0435\u043c \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 Makefile \u043d\u0430 Embox.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 Makefile \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cmake\"> PKG_NAME := pjproject PKG_VER  := 2.10  PKG_SOURCES := https:\/\/github.com\/pjsip\/pjproject\/archive\/$(PKG_VER).tar.gz PKG_MD5 \t:= 13e5c418008ae46c4ce0c1e27cdfe9b5  include $(EXTBLD_LIB)  PKG_PATCHES := pjproject-$(PKG_VER).patch \\     sha256_error_fix-$(PKG_VER).patch \\     addr_resolv_sock-$(PKG_VER).patch  ifeq ($(PJSIP_ENABLE_CXX),false) PKG_PATCHES    += pjsua2_disable-$(PKG_VER).patch endif  DISABLE_FEATURES := \\     l16-codec   \\     ilbc-codec  \\     speex-codec \\     speex-aec   \\     gsm-codec   \\     g722-codec  \\     g7221-codec \\     libyuv \\     libwebrtc \\     #g711-codec  BUILD_ROOT  := $(BUILD_DIR)\/$(PKG_NAME)-$(PKG_VER) PJSIP_INSTALL_DIR := $(EXTERNAL_BUILD_DIR)\/third_party\/pjproject\/core\/install  $(CONFIGURE) :     export EMBOX_GCC_LINK=full; \\     cd $(BUILD_ROOT) &amp;&amp; ( \\    \t .\/configure \\    \t\t CC=$(EMBOX_GCC) \\    \t\t CXX=$(EMBOX_GXX) \\    \t\t --host=$(AUTOCONF_TARGET_TRIPLET) \\    \t\t --target=$(AUTOCONF_TARGET_TRIPLET) \\    \t\t --prefix=$(PJSIP_INSTALL_DIR) \\    \t\t $(DISABLE_FEATURES:%=--disable-%) \\    \t\t --with-external-pa; \\     )     cp .\/config_site.h $(BUILD_ROOT)\/pjlib\/include\/pj\/config_site.h     touch $@  $(BUILD) :     cd $(BUILD_ROOT) &amp;&amp; ( \\    \t $(MAKE) -j1 dep; \\    \t $(MAKE) -j1 MAKEFLAGS='$(EMBOX_IMPORTED_MAKEFLAGS)'; \\     )     touch $@  $(INSTALL) :     cd $(BUILD_ROOT) &amp;&amp; $(MAKE) install     # Remove AUTOCONF_TARGET_TRIPLET from file names to use them in Mybuild     for f in $(PJSIP_INSTALL_DIR)\/lib\/*-$(AUTOCONF_TARGET_TRIPLET).a; do \\    \t fn=$$(basename $$f); \\    \t cp $$f $(PJSIP_INSTALL_DIR)\/lib\/$${fn%-$(AUTOCONF_TARGET_TRIPLET).a}.a; \\     done     # Copy binaries and     # remove AUTOCONF_TARGET_TRIPLET from file names to use them in Mybuild     for f in $(BUILD_ROOT)\/pjsip-apps\/bin\/samples\/$(AUTOCONF_TARGET_TRIPLET)\/*; do \\    \t cp $$f $(PJSIP_INSTALL_DIR)\/$$(basename $$f).o; \\     done     for f in $(BUILD_ROOT)\/pjsip-apps\/bin\/*-$(AUTOCONF_TARGET_TRIPLET); do \\    \t fn=$$(basename $$f); \\    \t cp $$f $(PJSIP_INSTALL_DIR)\/$${fn%-$(AUTOCONF_TARGET_TRIPLET)}.o; \\     done     touch $@<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 Mybuild \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">package third_party.pjproject  module pjsip_dependencies {     depends embox.net.lib.getifaddrs      depends embox.compat.posix.pthreads     depends embox.compat.posix.pthread_key     depends embox.compat.posix.pthread_rwlock     depends embox.compat.posix.semaphore     depends embox.compat.posix.fs.fsop     depends embox.compat.posix.idx.select     depends embox.compat.posix.net.getaddrinfo     depends embox.compat.posix.net.gethostbyname     depends embox.compat.posix.util.gethostname      depends embox.compat.posix.proc.pid     depends embox.compat.posix.proc.exit     depends embox.compat.libc.stdio.fseek     depends embox.compat.posix.time.time      depends embox.kernel.thread.thread_local_heap      depends embox.driver.audio.portaudio_api }  @DefaultImpl(core_c) abstract module core { }  @Build(stage=2,script=&quot;$(EXTERNAL_MAKE) PJSIP_ENABLE_CXX=false&quot;) @BuildArtifactPath(cppflags=&quot;-I$(abspath $(EXTERNAL_BUILD_DIR))\/third_party\/pjproject\/core\/install\/include\/&quot;) module core_c extends core {     depends pjsip_dependencies }  \/* Currently not used. It will be used for PJSUA2 if required. *\/ @Build(stage=2,script=&quot;$(EXTERNAL_MAKE) PJSIP_ENABLE_CXX=true&quot;) @BuildArtifactPath(cppflags=&quot;-I$(abspath $(EXTERNAL_BUILD_DIR))\/third_party\/pjproject\/core\/install\/include\/&quot;) @BuildDepends(third_party.STLport.libstlportg) module core_cxx extends core {     depends pjsip_dependencies     depends third_party.STLport.libstlportg }  @BuildDepends(core) @Build(stage=2,script=&quot;true&quot;) static module libpjsip {     @AddPrefix(&quot;^BUILD\/extbld\/third_party\/pjproject\/core\/install\/lib&quot;)     source &quot;libpjsip.a&quot;,    \t\t &quot;libpjsip-simple.a&quot;,    \t\t &quot;libpjsip-ua.a&quot;      @NoRuntime depends core }  @BuildDepends(core) @Build(stage=2,script=&quot;true&quot;) static module libpjsua {     @AddPrefix(&quot;^BUILD\/extbld\/third_party\/pjproject\/core\/install\/lib&quot;)     source &quot;libpjsua.a&quot;      @NoRuntime depends core }  @BuildDepends(core) @Build(stage=2,script=&quot;true&quot;) static module libpjlib_util {     @AddPrefix(&quot;^BUILD\/extbld\/third_party\/pjproject\/core\/install\/lib&quot;)     source &quot;libpjlib-util.a&quot;      @NoRuntime depends core }  @BuildDepends(core) @Build(stage=2,script=&quot;true&quot;) static module libpj {     @AddPrefix(&quot;^BUILD\/extbld\/third_party\/pjproject\/core\/install\/lib&quot;)     source &quot;libpj.a&quot;      @NoRuntime depends core }  @BuildDepends(core) @Build(stage=2,script=&quot;true&quot;) static module libpjmedia {     @AddPrefix(&quot;^BUILD\/extbld\/third_party\/pjproject\/core\/install\/lib&quot;)     source &quot;libpjmedia.a&quot;,    \t\t &quot;libpjmedia-codec.a&quot;,    \t\t &quot;libpjmedia-audiodev.a&quot;      @NoRuntime depends core }  @BuildDepends(core) @Build(stage=2,script=&quot;true&quot;) static module libpjnath {     @AddPrefix(&quot;^BUILD\/extbld\/third_party\/pjproject\/core\/install\/lib&quot;)     source &quot;libpjnath.a&quot;      @NoRuntime depends core }  @BuildDepends(core) @Build(stage=2,script=&quot;true&quot;) static module libpj_third_party {     @AddPrefix(&quot;^BUILD\/extbld\/third_party\/pjproject\/core\/install\/lib&quot;)     source &quot;libresample.a&quot;,    \t\t &quot;libsrtp.a&quot;      @NoRuntime depends core }  @BuildDepends(libpjsua) @BuildDepends(libpjsip) @BuildDepends(libpjmedia) @BuildDepends(libpj) @BuildDepends(libpjlib_util) @BuildDepends(libpjnath) @BuildDepends(libpj_third_party) @Build(stage=2,script=&quot;true&quot;) static module libpj_all {     @NoRuntime depends libpjsua,    \t\t libpjsip,    \t\t libpjmedia,    \t\t libpj,    \t\t libpjlib_util,    \t\t libpjnath,    \t\t libpj_third_party }  @AutoCmd @Cmd(name=&quot;streamutil&quot;, help=&quot;&quot;, man=&quot;&quot;) @BuildDepends(core) @Build(stage=2,script=&quot;true&quot;) module streamutil {     source &quot;^BUILD\/extbld\/third_party\/pjproject\/core\/install\/streamutil.o&quot;     depends core }  @AutoCmd @Cmd(name=&quot;pjsua&quot;, help=&quot;&quot;, man=&quot;&quot;) @BuildDepends(core) @Build(stage=2,script=&quot;true&quot;) module pjsua {     source &quot;^BUILD\/extbld\/third_party\/pjproject\/core\/install\/pjsua.o&quot; }  @AutoCmd @Cmd(name=&quot;pjsip_simpleua&quot;, help=&quot;&quot;, man=&quot;&quot;) @BuildDepends(core) @Build(stage=2,script=&quot;true&quot;) module simpleua {     source &quot;^BUILD\/extbld\/third_party\/pjproject\/core\/install\/simpleua.o&quot;     depends core } <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0437\u0432\u043e\u043d\u043a\u0438, \u043d\u043e \u0443\u0436\u0435 \u043d\u0430 Embox.<\/p>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a PJSIP \u043d\u0430 STM32F769I-Discovery<\/h3>\n<p>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Embox c PJSIP \u0434\u043b\u044f QEMU \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u2014 STM32F769I-Discovery. \u0414\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Embox \u043d\u0443\u0436\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445:<\/p>\n<ul>\n<li>\u0424\u0430\u0439\u043b \u0441 \u0444\u043b\u0430\u0433\u0430\u043c\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 (build.conf).<\/li>\n<li>\u0424\u0430\u0439\u043b \u043b\u0438\u043d\u043a\u0435\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043a\u0430\u043a\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043a\u0430\u043a \u0432 \u043d\u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 (lds.conf).<\/li>\n<li>\u0424\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 Embox (mods.conf).<\/li>\n<li>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f PJSIP.<\/li>\n<\/ul>\n<p>  \u0421 \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0434\u0432\u0443\u043c\u044f \u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e. \u042d\u0442\u043e \u043e\u043f\u0446\u0438\u0438 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430, \u0438 \u043e\u043d\u0438 \u0440\u0435\u0434\u043a\u043e \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u043f\u043b\u0430\u0442\u044b. \u0417\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0444\u043b\u0430\u0433\u043e\u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u0438 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u043c \u043f\u0443\u043d\u043a\u0442\u0430\u0445.<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Embox. \u0412 \u0447\u0435\u043c \u0437\u0434\u0435\u0441\u044c \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 \u041b\u0438\u043d\u0443\u043a\u0441? \u041d\u0430 \u041b\u0438\u043d\u0443\u043a\u0441\u0435 \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e \u043f\u043e\u0447\u0442\u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u043c\u044f\u0442\u0438, \u043c\u044b \u043d\u0435 \u0437\u0430\u0431\u043e\u0442\u0438\u043b\u0438\u0441\u044c \u043e \u0447\u0438\u0441\u043b\u0435 \u0437\u0430\u0434\u0430\u0447, \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0442.\u0434. \u0422\u0435\u043f\u0435\u0440\u044c \u0436\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u043e 2\u041c\u0431 ROM \u0438 512\u041c\u0431 RAM, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u043f\u0430\u043c\u044f\u0442\u044c. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043d\u0443\u0436\u0434\u044b.<\/p>\n<p>  \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, PJSIP \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0441\u0432\u043e\u0435\u043c \u043f\u043e\u0442\u043e\u043a\u0435. \u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0435\u0449\u0435 \u043f\u043e\u0442\u043e\u043a. \u0418 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0430\u0443\u0434\u0438\u043e. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u043e\u0434\u043d\u043e\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, 3 \u043f\u043e\u0442\u043e\u043a\u0430. \u0414\u0430\u043b\u0435\u0435, \u0445\u043e\u0442\u0438\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c DHCP \u2014 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a. \u0418\u0442\u043e\u0433\u043e, \u0443\u0436\u0435 4. \u0412\u0441\u0435 \u044d\u0442\u043e \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<pre><code class=\"plaintext\">include embox.kernel.thread.core(thread_pool_size=5,thread_stack_size=12000)<\/code><\/pre>\n<p>  \u041c\u044b \u0437\u0430\u0434\u0430\u043b\u0438 \u0441\u0442\u0435\u043a\u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0438 \u0440\u0430\u0437\u043d\u043e\u0433\u043e. \u0412\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0447\u0438\u0441\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432:<\/p>\n<pre><code class=\"plaintext\">\tinclude embox.net.skbuff(amount_skb=28) \tinclude embox.net.skbuff_data(amount_skb_data=28)<\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0443\u0447\u0438 (\u043e\u0442\u043a\u0443\u0434\u0430 malloc() \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442):<\/p>\n<pre><code class=\"plaintext\">\tinclude embox.mem.heap_bm \tinclude embox.mem.static_heap(heap_size=0x3C000)<\/code><\/pre>\n<p>  \u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043a\u0430\u043a \u043d\u0430 QEMU.<\/p>\n<h3>\u0412\u044b\u044f\u0441\u043d\u044f\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0443\u0447\u0438<\/h3>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u0430\u043a \u0436\u0435 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b? \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043f\u043e\u0447\u0435\u043c\u0443 \u043a\u0443\u0447\u0430 0x3C000, \u0447\u0438\u0441\u043b\u043e \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 28, \u0430 \u0441\u0442\u0435\u043a \u0443 \u043f\u043e\u0442\u043e\u043a\u0430 12\u041a\u0431? \u042f \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434. \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u043e \u0441\u0442\u0435\u043a\u0430\u043c\u0438 \u0438 \u043a\u0443\u0447\u0435\u0439. \u041a\u0443\u0447\u0443 \u043c\u043e\u0436\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u041b\u0438\u043d\u0443\u043a\u0441\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Valgrind. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0449\u0438\u043a Valgrind \u2014 Massif. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u201c\u0441\u043d\u0438\u043c\u043a\u0430\u043c\u201d \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b\u0430.<\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c valgrind \u0441 \u043d\u0430\u0448\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c:<\/p>\n<pre><code class=\"bash\">$ valgrind --tool=massif --time-unit=B --massif-out-file=pjsip.massif .\/pjsip-apps\/bin\/samples\/x86_64-unknown-linux-gnu\/simple_pjsua<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 massif-visualizer:<\/p>\n<pre><code class=\"bash\">$ massif-visualizer pjsip.massif<\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bl\/i3\/js\/bli3jsnpvdtewpp5vcaojuxrf0o.png\"><\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0432\u0438\u0434\u043d\u043e \u0447\u0442\u043e \u043f\u0430\u043c\u044f\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 PJSIP, \u043d\u043e \u0438 \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 libasound (\u044d\u0442\u043e \u0445\u043e\u0441\u0442\u043e\u0432\u044b\u0439 \u0437\u0432\u0443\u043a \u2014 ALSA). \u0421\u0430\u043c PJSIP \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0431\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0438\u0437 \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0433\u0440\u0430\u0444\u0438\u043a\u0430. \u042d\u0442\u043e \u0432 \u043f\u0438\u043a\u0435 600 \u041a\u0431, \u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043e\u043a\u043e\u043b\u043e 320 \u041a\u0431. \u041d\u0430 \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u0435 512\u043a\u0411 RAM. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c PJSIP, \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0432 \u0440\u0430\u0441\u0445\u043e\u0434 \u043f\u0430\u043c\u044f\u0442\u0438\u2026<\/p>\n<p>  \u042f \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<pre><code class=\"cpp\">#define PJ_LOG_USE_STACK_BUFFER    \t0  #define PJ_LOG_MAX_LEVEL 6  #define PJ_POOL_DEBUG    \t0 #define PJ_HAS_POOL_ALT_API  0  \/* make PJSUA slim *\/ #define PJSUA_MAX_ACC 3 #define PJSUA_MAX_CALLS 1 #define PJSUA_MAX_VID_WINS 0 #define PJSUA_MAX_BUDDIES 1 #define PJSUA_MAX_CONF_PORTS 4 #define PJSUA_MAX_PLAYERS 1 #define PJSUA_MAX_RECORDERS 1  \/* Changing to #if 0 will increase memory consumption  * but insreases communication speed. *\/ #if 1 \t\/* This sample derived from pjlib\/include\/pj\/config_site_sample.h: *\/ \t#define PJ_OS_HAS_CHECK_STACK\t0 \t#define PJ_ENABLE_EXTRA_CHECK\t0 \t#define PJ_HAS_ERROR_STRING  \t0 \t#undef PJ_IOQUEUE_MAX_HANDLES \t#define PJ_IOQUEUE_MAX_HANDLES   8 \t#define PJ_CRC32_HAS_TABLES  \t0 \t#define PJSIP_MAX_TSX_COUNT  \t15 \t#define PJSIP_MAX_DIALOG_COUNT   15 \t#define PJSIP_UDP_SO_SNDBUF_SIZE 4000 \t#define PJSIP_UDP_SO_RCVBUF_SIZE 4000 \t#define PJMEDIA_HAS_ALAW_ULAW_TABLE  0 #endif<\/code><\/pre>\n<p>  \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0435\u0435 \u0432 PJSIP \u0432 \u0444\u0430\u0439\u043b pjlib\/include\/pj\/config_site.h. \u041f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c. \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gb\/j8\/nf\/gbj8nf7ai0luorgrvgkfqgqjkga.png\"><\/p>\n<p>  \u0412 \u043f\u0438\u043a\u0435 \u0443\u0436\u0435 \u043e\u043a\u043e\u043b\u043e 300 \u041a\u0431, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u043b\u0435\u0437\u0442\u044c \u043d\u0430 \u043f\u043b\u0430\u0442\u0443.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u044f \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b \u043a\u0443\u0447\u0443 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 300 \u041a\u0431 \u0432 Embox \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u043f\u0443\u043b\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f (\u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0443\u0447\u0438 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0434\u043e 240 \u041a\u0431). \u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u043f\u0443\u043b\u043e\u0432 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u043f\u0446\u0438\u0435\u0439:<\/p>\n<pre><code class=\"cpp\">#define PJ_POOL_DEBUG    \t1<\/code><\/pre>\n<p>  \u0432 \u0442\u043e\u043c \u0436\u0435 pjlib\/include\/pj\/config_site.h.<\/p>\n<p>  \u0425\u043e\u0440\u043e\u0448\u043e, \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0442\u0435\u043a\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u0447\u0438\u0441\u043b\u043e \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0417\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0435\u0441\u043b\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u043e, \u0442\u043e \u0437\u0432\u0443\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u201c\u0437\u0430\u0445\u043b\u0435\u0431\u043d\u0435\u0442\u0441\u044f\u201d. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e, \u0442\u043e \u043f\u043e\u0434 \u0441\u0442\u0435\u043a\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f. \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0442\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0441\u0442\u0435\u043a\u0430\u043c. \u0415\u0441\u043b\u0438 \u0441\u0442\u0435\u043a \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u043b\u0441\u044f \u2014 \u0432\u0441\u0435 \u043f\u0440\u043e\u043f\u0430\u043b\u043e.<\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u0442\u0435\u043a\u0430 \u0438 \u0434\u0430\u043b\u0435\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u043c \u0435\u0433\u043e \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440 \u043f\u043e\u043a\u0430 \u0441\u043e\u0444\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439. \u0415\u0441\u043b\u0438 \u043b\u043e\u0432\u0438\u043c \u043f\u043e\u0440\u0447\u0443 \u0441\u0442\u0435\u043a\u0430 \u2014 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u0441\u044f. \u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u043d\u043e\u0441\u0438\u043c \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0435\u043a, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u0430\u0448 \u0441\u0442\u0435\u043a \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434 \u0432\u0430\u0448\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443.<\/p>\n<pre><code class=\"plaintext\">@Runlevel(0) include embox.arch.arm.armmlib.exception_entry(irq_stack_size=1024)<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0442\u0434\u0430\u0435\u043c \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b. \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b \u0432\u044b\u0448\u0435, \u0438\u0445 \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c 28 \u0448\u0442\u0443\u043a.<\/p>\n<p>  \u0412\u0441\u0435, \u043f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 simple_pjsia \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 STM32F769I-Discovery \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 512 \u041a\u0431.<\/p>\n<h2>\u0414\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c SIP-\u0442\u0435\u043b\u0435\u0444\u043e\u043d. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/h2>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435. \u041f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u043d\u0430\u0434\u043f\u0438\u0441\u044c. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u201cPJSIP DEMO\u201d. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0437\u0432\u043e\u043d\u043e\u043a, \u0442\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0442\u043a\u0443\u0434\u0430 \u0437\u0432\u043e\u043d\u043e\u043a, \u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0432\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0441 \u0438\u043a\u043e\u043d\u043a\u0430\u043c\u0438 \u2014 \u201cAccept\u201d, \u201cDecline\u201d. \u0417\u0432\u043e\u043d\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043b\u0438\u0431\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u0437\u0432\u043e\u043d\u043e\u043a \u043f\u0440\u0438\u043d\u044f\u0442, \u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440, \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u0430\u0431\u043e\u043d\u0435\u043d\u0442\u0435, \u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u2014 \u201cHang\u201d. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u0437\u0432\u043e\u043d\u043e\u043a \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d \u2014 \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0441 \u201cPJSIP DEMO\u201d.<\/p>\n<p>  \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/4c\/o-\/sa\/4co-sawszs_kbiobkxmqn81ho8e.png\"><\/p>\n<h3>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043d\u0430 \u041b\u0438\u043d\u0443\u043a\u0441\u0435.<\/h3>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u0432 Embox \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Nuklear, \u044f \u0440\u0435\u0448\u0438\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442. \u0425\u043e\u0442\u044f \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u0437\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c UI \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0449\u0435 \u043d\u0430 \u041b\u0438\u043d\u0443\u043a\u0441\u0435, \u043a\u0430\u043a \u044d\u0442\u043e \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 PJSIP \u0432\u044b\u0448\u0435.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0431\u0435\u0440\u0435\u043c \u0434\u0432\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e simple_pjsua \u0438\u0437 PJSIP. \u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e demo\/x11_rawfb\/ \u0438\u0437 Nuklear. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0448\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u043f\u043e\u0434 \u041b\u0438\u043d\u0443\u043a\u0441.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u044f \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0437\u0432\u043e\u043d\u043e\u043a \u0432 PJSIP \u043d\u0430 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u044e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438). \u0414\u0430\u043b\u0435\u0435, \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043b\u043e\u0433\u0438\u043a\u0443 \u043d\u0430 Nuklear.<\/p>\n<p>  \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0438\u043a\u043e\u043d\u043a\u0438 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043d\u043e\u043f\u043e\u043a. \u041d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u043d\u0438\u0436\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c \u0438\u043a\u043e\u043d\u043a\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0437\u0435\u043b\u0435\u043d\u043e\u0439 \u0438 \u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043e\u043a. \u042d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e \u0432\u0441\u0435 \u043d\u0430 100% \u043a\u0440\u043e\u043c\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0439 \u0442\u0440\u0443\u0431\u043a\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0438\u0445 \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043b\u0438\u0448\u044c \u0431\u0435\u043b\u044b\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u044b. \u0414\u0435\u043b\u043e \u0431\u044b\u043b\u043e \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 rawfb. \u0412\u0438\u0434\u0438\u043c\u043e, \u043e\u043d \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043d\u0435\u043c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0443\u0440\u0441\u043e\u0440. \u042f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u043e\u043d \u043f\u0430\u043c\u044f\u0442\u0438 Nuklear.<\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u0441\u043b\u0435 \u0434\u043d\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/na\/gd\/7q\/nagd7qwpgis7can6dfiamsg1uo0.png\"><br \/>  \u0417\u043d\u0430\u044f, \u0447\u0442\u043e \u0443 STM32F76I-Discovery \u0440\u0430\u0437\u043c\u0435\u0440 \u044d\u043a\u0440\u0430\u043d\u0430 800&#215;480, \u0430 \u0432 QEMU 800&#215;600 \u044f \u0441\u0440\u0430\u0437\u0443 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b \u043d\u0443\u0436\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0432 Nuklear, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0449\u0435 \u0431\u044b\u043b\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043d\u0430\u0434\u043f\u0438\u0441\u0435\u0439 \u0438 \u043a\u043d\u043e\u043f\u043e\u043a. \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c:<\/p>\n<pre><code class=\"cpp\">\tif (nk_begin(ctx, &quot;Demo&quot;, nk_rect(0, 0, WIN_WIDTH, WIN_HEIGHT),         \tNK_WINDOW_NO_SCROLLBAR)) {     \tint answer_pressed = 0, decline_pressed = 0;      \tif (!draw_mouse) {         \tnk_style_hide_cursor(ctx);     \t}      \tnk_layout_row_static(ctx,         \t(WIN_HEIGHT - CALL_BTN_HEIGHT - 2 * CALL_INFO_TEXTBOX_HEIGHT - WIN_HEIGHT \/ 4), 15, 1);      \tnk_layout_row_dynamic(ctx, CALL_INFO_TEXTBOX_HEIGHT, 1);      \tnk_style_set_font(ctx, &amp;rawfb_fonts[RAWFB_FONT_DEFAULT]-&gt;handle);          switch (call_info-&gt;state) {         case CALL_INACTIVE:             rawfb_fonts[RAWFB_FONT_DEFAULT]-&gt;handle.height = 56;             nk_label(ctx, &quot;PJSIP demo&quot;, NK_TEXT_CENTERED);             rawfb_fonts[RAWFB_FONT_DEFAULT]-&gt;handle.height = 32;             break;         case CALL_INCOMING:             rawfb_fonts[RAWFB_FONT_DEFAULT]-&gt;handle.height = 32;             nk_label(ctx, &quot;Incoming call from:&quot;, NK_TEXT_CENTERED);             rawfb_fonts[RAWFB_FONT_DEFAULT]-&gt;handle.height = 38;             nk_label(ctx, call_info-&gt;incoming, NK_TEXT_CENTERED);             rawfb_fonts[RAWFB_FONT_DEFAULT]-&gt;handle.height = 32;             break;         case CALL_ACTIVE:             rawfb_fonts[RAWFB_FONT_DEFAULT]-&gt;handle.height = 32;             nk_label(ctx, &quot;Active call:&quot;, NK_TEXT_CENTERED);             rawfb_fonts[RAWFB_FONT_DEFAULT]-&gt;handle.height = 38;             nk_label(ctx, call_info-&gt;remote_uri, NK_TEXT_CENTERED);             rawfb_fonts[RAWFB_FONT_DEFAULT]-&gt;handle.height = 32;             break;         }          if (call_info-&gt;state != CALL_INACTIVE) {             nk_layout_row_static(ctx, (WIN_WIDTH - 9 * 4) \/ 9, (WIN_WIDTH - 9 * 4) \/ 9, 9);              switch (call_info-&gt;state) {             case CALL_INCOMING:                 nk_spacing(ctx, 2);                 demo_nk_accept_btn(ctx, im_accept, &amp;answer_pressed);                 nk_spacing(ctx, 3);                 demo_nk_decline_btn(ctx, im_decline, &amp;decline_pressed);                 nk_spacing(ctx, 2);                 break;             case CALL_ACTIVE:                 nk_spacing(ctx, 4);                 demo_nk_decline_btn(ctx, im_decline, &amp;decline_pressed);                 nk_spacing(ctx, 4);                 break;             default:                 break;             }         }      \tif (answer_pressed &amp;&amp; call_info-&gt;state == CALL_INCOMING) {         \tdemo_pj_answer();     \t}     \tif (decline_pressed) {         \tdemo_pj_hang();     \t} \t} \tnk_end(ctx); <\/code><\/pre>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a \u043d\u0430 \u043f\u043b\u0430\u0442\u0435.<\/h3>\n<p>  \u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430 QEMU, \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u0430 \u043f\u043b\u0430\u0442\u0443. \u0423 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0432\u0441\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043e \u0434\u043b\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u041b\u0438\u043d\u0443\u043a\u0441\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c Mybuild \u0444\u0430\u0439\u043b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 Embox:<\/p>\n<pre><code class=\"plaintext\">@AutoCmd @Cmd(name=&quot;sip_nuklear&quot;, help=&quot;&quot;, man=&quot;&quot;) @BuildDepends(third_party.pjproject.libpj_all) @BuildDepends(third_party.lib.nuklear) @Build(stage=2) module sip_nuklear { \t@InitFS \tsource &quot;icons\/phone-accept-80.png&quot;,        \t&quot;icons\/phone-decline-80.png&quot;,        \t&quot;fonts\/Roboto-Regular.ttf&quot;  \tsource &quot;main.c&quot;  \tsource &quot;nuklear_main.c&quot;  \t@IncludePath(&quot;$(CONF_DIR)&quot;) \t@DefineMacro(&quot;PJ_AUTOCONF=1&quot;) \tsource &quot;pjsua.c&quot;  \t@NoRuntime depends third_party.pjproject.libpj_all \t@NoRuntime depends third_party.lib.nuklear \tdepends embox.driver.input.core \tdepends rawfb_api } <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438. \u0418\u043a\u043e\u043d\u043a\u0438 \u0438 \u0448\u0440\u0438\u0444\u0442\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 read-only \u0444\u0430\u0439\u043b\u044b. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a pjsip \u0438 nuklear.<\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435, \u044f \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0447\u0442\u043e \u0448\u0440\u0438\u0444\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0437 Nuclear \u0443\u0436\u0430\u0441\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 STM32F769I. \u0427\u0430\u0441\u0442\u044c \u0431\u0443\u043a\u0432 \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u044b\u043b\u0430 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u0430. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u201c1\u201d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u043a\u0430\u043a \u201c|\u201d, \u0430 \u201cm\u201d \u043a\u0430\u043a \u201cn\u201d. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0448\u0440\u0438\u0444\u0442\u044b \u0438\u0437 ttf \u0444\u0430\u0439\u043b\u043e\u0432 \u2014 Roboto-Regular.ttf. \u042d\u0442\u043e\u0442 \u0448\u0440\u0438\u0444\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 150 \u041a\u0431 \u0444\u043b\u044d\u0448-\u043f\u0430\u043c\u044f\u0442\u0438, \u0437\u0430\u0442\u043e \u0442\u0435\u043a\u0441\u0442 \u0440\u0430\u0437\u0431\u043e\u0440\u0447\u0438\u0432.<\/p>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0432 \u043d\u0430 \u041b\u0438\u043d\u0443\u043a\u0441 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u043b\u0430\u0442\u0430. \u0418 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0448\u0440\u0438\u0444\u0442\u043e\u0432 32 \u0438 38. \u041d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b segfault. \u0412 \u0438\u0442\u043e\u0433\u0435 \u044f \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0442 \u0438\u0434\u0435\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0448\u0440\u0438\u0444\u0442\u0430 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430, \u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b \u0442\u043e\u043b\u044c\u043a\u043e 32-\u043e\u0439 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043b \u0435\u0433\u043e.<\/p>\n<h3>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u0435.<\/h3>\n<p>  \u0412\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435. \u0417\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 UI \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c, \u0430 \u044d\u043a\u0440\u0430\u043d 800&#215;480, \u0442\u043e \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 1-\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0439 RGB \u043f\u0430\u043b\u0438\u0442\u0440\u0435 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c 800 * 480 * 1 = 384000 \u0431\u0430\u0439\u0442, \u0442\u043e \u0435\u0441\u0442\u044c 375 \u041a\u0431. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u043c\u044b \u0443\u0436\u0435 \u0437\u0430\u043d\u044f\u043b\u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u044e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u043f\u0430\u043c\u044f\u0442\u044c 512 \u041a\u0431 \u043f\u043e\u0434 \u043d\u0443\u0436\u0434\u044b PJSIP, \u043d\u0430\u0439\u0442\u0438 \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0434 \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u041f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c SDRAM. \u041d\u0430 STM32F76I-Discovery \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e 16 \u041c\u0431. \u0420\u0430\u0437 \u043c\u044b \u0443\u0436\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u043f\u0430\u043c\u044f\u0442\u044c, \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0441\u0438\u043b\u044c\u043d\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c RGBA 32 \u0431\u0438\u0442. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 800 * 480 * 4 = 1536000 \u0431\u0430\u0439\u0442 \u0438\u043b\u0438 1.5 \u041c\u0431.<\/p>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 SDRAM \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0435 0x60000000. \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u043a\u0430\u043a \u0430\u0434\u0440\u0435\u0441 \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440\u0430.<\/p>\n<pre><code class=\"plaintext\">\t@Runlevel(1) include embox.driver.video.stm32f7_lcd(     \tfb_base=0x60000000, width=800, height=480, ltdc_irq=88, bpp=32 \t) \tinclude embox.driver.video.fb<\/code><\/pre>\n<p>  \u042f \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043f\u0440\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u043c\u0435\u0440\u0446\u0430\u043d\u0438\u044f \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u043c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0447\u0442\u043e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u043e\u0439\u043d\u0430\u044f \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f, \u0430, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0443\u0436\u043d\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e\u0434 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0431\u0443\u0444\u0435\u0440 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 1.5 \u041c\u0431. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0448\u0440\u0438\u0444\u0442\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0435\u0449\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 256 \u041a\u0431. \u0418\u0442\u043e\u0433\u043e, \u043d\u0443\u0436\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043a\u0443\u0447\u0443 \u043d\u0430 2 \u041c\u0431. \u0422\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u043c \u0435\u0435 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<pre><code class=\"plaintext\">\t@Runlevel(2) include embox.driver.input.touchscreen.stm32f7cube_ts \t@Runlevel(2) include embox.driver.input.input_dev_devfs<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0442\u0430\u0447\u0441\u043a\u0440\u0438\u043d \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \/dev\/stm32-ts \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 devfs \u0432 Embox, \u0438 \u0441 \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 open()\/read().<\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0447\u0442\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430. \u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u0447\u0442\u0438? \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043c\u044b \u0443\u0447\u043b\u0438 \u0432\u0441\u0435 \u043d\u044e\u0430\u043d\u0441\u044b \u043f\u043e \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u043e \u043d\u0435 \u0443\u0447\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 PJSIP \u0437\u0432\u0443\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u043e, \u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0441 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439 \u043e\u043d \u0437\u0430\u0445\u043b\u0435\u0431\u043d\u0435\u0442\u0441\u044f. \u042d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e \u043e\u0442\u043b\u0430\u0434\u0438\u0442\u044c \u043d\u0430 \u041b\u0438\u043d\u0443\u043a\u0441\u0435. \u041d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438 \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u0435.<\/p>\n<pre><code class=\"plaintext\">\t@Runlevel(0) include embox.arch.arm.armmlib.armv7m_cpu_cache(     \tlog_level=4,     \tsram_nocache_section_size=0x10000 \t)<\/code><\/pre>\n<p>  \u0412 Embox \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0430\u0443\u0434\u0438\u043e \u0431\u0443\u0444\u0435\u0440\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 DMA \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0439 \u043a\u0430\u043a \u043d\u0435\u043a\u044d\u0448\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0432 MPU. \u042d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u044b\u043b\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u043a\u0430\u043a \u0434\u043b\u044f CPU \u0442\u0430\u043a \u0438 \u0434\u043b\u044f DMA.<\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 SIP-\u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0441 UI c \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/8i\/ki\/fd\/8ikifd9kx4o7on4zio5l5e3jwbe.jpeg\"><\/p>\n<h2>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435<\/h2>\n<p>  \u041c\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0432\u0435\u043b\u0441\u044f \u043a \u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/3c\/re\/nu\/3crenuktcpyybqnbaygj7vu71ls.jpeg\"><br \/>  \u0418 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041e\u0434\u0438\u043d \u0434\u0435\u043d\u044c \u043d\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u041b\u0438\u043d\u0443\u043a\u0441\u0435 \u0438 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0434\u0435\u043d\u044c \u043d\u0430 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435. \u0414\u0430, \u0432 Embox \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u044d\u043a\u0440\u0430\u043d\u0430, \u0441\u0435\u0442\u0435\u0432\u0443\u0445\u0438 \u0438 \u0430\u0443\u0434\u0438\u043e \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b. \u041d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u044d\u0442\u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0434\u0435\u043b\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440. \u041a\u0443\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u043f\u043b\u0430\u0442\u0435. \u0412 \u043d\u0430\u0448\u0435\u043c \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e \u043f\u043e\u0434 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u042d\u0442\u043e \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<p>  \u0412\u0438\u0434\u0435\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0435\u0441\u0442\u044c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043d\u0430 <a href=\"https:\/\/github.com\/embox\/embox\/wiki\/PJSIP\">wiki<\/a>.<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/538416\/\"> https:\/\/habr.com\/ru\/company\/embox\/blog\/538416\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\u0411\u044b\u043b \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0440\u043e\u043d\u043e\u0432\u0438\u0440\u0443\u0441\u043d\u044b\u0445 \u0432\u0435\u0447\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u043c\u043d\u043e\u0439 \u0432 \u0441\u0430\u043c\u043e\u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438. \u041d\u0430 \u0441\u0442\u043e\u043b\u0435 \u043b\u0435\u0436\u0430\u043b\u0430 \u043f\u043b\u0430\u0442\u0430 <a href=\"https:\/\/www.st.com\/en\/evaluation-tools\/32f769idiscovery.html\">STM32F769I-Discovery<\/a>. \u042f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0430 \u043d\u0435\u0435 \u0438 \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0432\u0435\u0434\u044c \u044d\u0442\u043e \u0436\u0435 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d. \u0415\u0441\u0442\u044c \u044d\u043a\u0440\u0430\u043d c \u0442\u0430\u0447\u0441\u043a\u0440\u0438\u043d\u043e\u043c 800&#215;480, \u0435\u0441\u0442\u044c \u0430\u0443\u0434\u0438\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0435\u0441\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043f\u0443\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0438 \u043d\u0435 \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439. \u0412\u0441\u0435 \u044d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432. \u0418 \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435. \u041d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0438\u043a\u0430\u043a\u043e\u0439 Android \u0434\u0430\u0436\u0435 \u0431\u043b\u0438\u0437\u043a\u043e \u043d\u0435 \u0432\u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443. \u0418 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u043d\u0430 <a href=\"http:\/\/embox.github.io\/\">Embox<\/a>.  <\/p>\n<div class=\"oembed\"><iframe allowfullscreen id=\"600846a3b4c396d242e096e8\" src=\"https:\/\/embedd.srv.habr.com\/iframe\/600846a3b4c396d242e096e8\"><\/iframe><\/div>\n<p>  <\/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-316691","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/316691","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=316691"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/316691\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=316691"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=316691"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=316691"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}