{"id":37916,"date":"2019-10-31T22:20:31","date_gmt":"2019-10-31T19:20:31","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sip-telefon-na-stm32f7-discovery\/"},"modified":"2019-10-31T22:20:31","modified_gmt":"2019-10-31T19:20:31","slug":"sip-telefon-na-stm32f7-discovery","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","title":{"rendered":"SIP telef\u00f3n na STM32F7-Discovery","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ahojte v\u0161etci.<\/p>\n<p>Pred nejak\u00fdm \u010dasom sme <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/259721\">p\u00edsali<\/a><\/noindex> hovorili o tom, ako sa n\u00e1m podarilo spusti\u0165 SIP telef\u00f3n na STM32F4-Discovery s 1 MB ROM a 192 KB RAM) na z\u00e1klade <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\">Embox<\/a><\/noindex>. Je potrebn\u00e9 poveda\u0165, \u017ee t\u00e1 verzia bola minim\u00e1lna a spojila dva telef\u00f3ny priamo bez servera a s prenosom hlasu len jedn\u00fdm smerom. Preto sme sa rozhodli spusti\u0165 plnohodnotnej\u0161\u00ed telef\u00f3n so volan\u00edm cez server, prenosom hlasu v oboch smeroch, ale pritom sa zmesti\u0165 do \u010do najmen\u0161ej pam\u00e4ti.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"W6wuEIZJf8o\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/W6wuEIZJf8o\/hqdefault.jpg\" alt=\"Prehrajte video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPre telef\u00f3n bolo rozhodnut\u00e9 vybra\u0165 aplik\u00e1ciu <i>simple_pjsua<\/i> ausch PJSIP. Ide o minim\u00e1lnu aplik\u00e1ciu, ktor\u00e1 vie registrova\u0165 na serveri, prij\u00edma\u0165 a odpoveda\u0165 na hovory. Ni\u017e\u0161ie okam\u017eite uvediem popis toho, ako to spusti\u0165 na STM32F7-Discovery.<\/p>\n<h3>Ako spusti\u0165<\/h3>\n<p><\/p>\n<ol>\n<li> Konfigurujeme Embox\n<pre><code class=\"bash\">make confload-platform\/pjsip\/stm32f7cube<\/code><\/pre>\n<\/li>\n<li>V s\u00fabore conf\/mods.config nastav\u00edme potrebn\u00fd SIP \u00fa\u010det.\n<pre><code class=\"bash\">\ninclude platform.pjsip.cmd.simple_pjsua_imported(\n    sip_domain=\"server\", \n    sip_user=\"username\",\n    sip_passwd=\"password\")\n<\/code><\/pre>\n<p>\nkde <i>server<\/i> \u2014 to je SIP server (napr\u00edklad sip.linphone.org), <i>username<\/i> a <i>password<\/i> \u2014 pou\u017e\u00edvate\u013esk\u00e9 meno a heslo \u00fa\u010dtu.\n<\/li>\n<li>Sklad\u00e1me Embox pr\u00edkazom <i>make<\/i>. O firmv\u00e9ri dosky m\u00e1me inform\u00e1cie na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\/wiki\/Running-Embox-on-STM32xxDiscovery\">wiki<\/a><\/noindex> a v <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/349034\/\">\u010dl\u00e1nku<\/a><\/noindex>.\n<\/li>\n<li>Sp\u00fa\u0161\u0165ame v konzole Embox pr\u00edkaz \u201csimple_pjsua_imported\u201d\n<pre><code class=\"bash\">\n00:00:12.870    pjsua_acc.c  ....SIP outbound status pre acc 0 nie je akt\u00edvny\n00:00:12.884    pjsua_acc.c  ....sip:alexk2222@sip.linphone.org: registr\u00e1cia \u00faspe\u0161n\u00e1, stav=200 (Registr\u00e1cia \u00faspe\u0161n\u00e1\n00:00:12.911    pjsua_acc.c  ....Keep-alive \u010dasova\u010d spusten\u00fd pre acc 0, cie\u013e: 91.121.209.194:5060, interval: 15s\n<\/code><\/pre>\n<p>\n<\/li>\n<li>Nakoniec zost\u00e1va zasun\u00fa\u0165 reproduktory alebo sl\u00fachadl\u00e1 do audio v\u00fdstupu a hovori\u0165 do dvoch mal\u00fdch MEMS mikrof\u00f3nov ved\u013ea displeja. Vol\u00e1me z Linuxu cez aplik\u00e1ciu simple_pjsua, pjsua. Alebo m\u00f4\u017eeme pou\u017ei\u0165 aj ak\u00fako\u013evek in\u00fa, ako je linphone.\n<\/li>\n<\/ol>\n<p>\nV\u0161etko toto je pop\u00edsan\u00e9 na na\u0161ej <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\/wiki\/AUDIO-on-STM32\">wiki<\/a><\/noindex>.<\/p>\n<h3>Ako sme k tomu dospeli<\/h3>\n<p>\nTeda, p\u00f4vodne sa objavila ot\u00e1zka vo\u013eby hardv\u00e9rovej platformy. Ke\u010f\u017ee bolo jasn\u00e9, \u017ee STM32F4-Discovery nebude vyhovova\u0165 z h\u013eadiska pam\u00e4te, bola vybran\u00e1 STM32F7-Discovery. M\u00e1 1 MB Flash a 256 KB RAM (+ 64 \u0161peci\u00e1lnej r\u00fdchlej pam\u00e4te, ktor\u00fa tie\u017e pou\u017eijeme). Tie\u017e to nie je ve\u013ea na telefonovanie cez server, ale rozhodli sme sa to sk\u00fasi\u0165.<\/p>\n<p>\u00dalohu sme si podmiene\u010dne rozdelili na nieko\u013eko et\u00e1p:<\/p>\n<ul>\n<li>Spustenie PJSIP na QEMU. To bolo pohodln\u00e9 na ladenie, plus sme tam u\u017e mali podporu kodeku AC97. <\/li>\n<li>Z\u00e1znam hlasu a jeho prehr\u00e1vanie na QEMU a na STM32. <\/li>\n<li> Portovanie aplik\u00e1cie <i>simple_pjsua<\/i> z PJSIP. Umo\u017e\u0148uje registrova\u0165 sa na SIP serveri a vola\u0165. <\/li>\n<li>Rozbehn\u00fa\u0165 svoj vlastn\u00fd server na b\u00e1ze Asterisk a testova\u0165 na \u0148om, potom vysk\u00fa\u0161a\u0165 vonkaj\u0161ie, ako sip.linphone.org <\/li>\n<\/ul>\n<p>\nZvuk v Emboxe pracuje cez Portaudio, ktor\u00fd sa pou\u017e\u00edva aj v PISIP. Na QEMU sa objavili prv\u00e9 probl\u00e9my \u2013 WAV s\u00fabory na 44100 Hz sa prehr\u00e1vali dobre, ale na 8000 Hz nie\u010do o\u010dividne nefungovalo. Zistilo sa, \u017ee probl\u00e9m bol v nastaven\u00ed frekvencie \u2013 v hardv\u00e9ri bola predvolen\u00e1 hodnota 44100 a t\u00fato sme programovo nezmenili. <\/p>\n<p>Tu asi stoj\u00ed za to trochu objasni\u0165, ako sa vlastne prehr\u00e1vanie zvuku deje. Zvukovej karte m\u00f4\u017eete nastavi\u0165 ur\u010dit\u00fd ukazovate\u013e na \u00fasek pam\u00e4te, z ktor\u00e9ho sa m\u00e1 prehr\u00e1va\u0165 alebo zapisova\u0165 pri vopred nastavenej frekvencii. Po ukon\u010den\u00ed jedn\u00e9ho buffera sa vytvor\u00ed preru\u0161enie a vykon\u00e1vanie pokra\u010duje s \u010fal\u0161\u00edm bufferom. Probl\u00e9m je v tom, \u017ee tieto buffery mus\u00edte stihn\u00fa\u0165 naplni\u0165 vopred, k\u00fdm sa prehr\u00e1va predch\u00e1dzaj\u00faci. S t\u00fdmto probl\u00e9mom sa e\u0161te stretneme na STM32F7. <\/p>\n<p>N\u00e1sledne sme si prenajali server a nasadili na \u0148om Asterisk. Preto\u017ee bolo potrebn\u00e9 ve\u013ea ladit, a nechcelo sa n\u00e1m neust\u00e1le hovori\u0165 do mikrof\u00f3nu, potrebovali sme automatick\u00e9 prehr\u00e1vanie a nahr\u00e1vanie. Na to sme upravili simple_pjsua tak, aby sme mohli nahradi\u0165 audio zariadenia s\u00fabormi. V PJSIP sa to rob\u00ed celkom jednoducho, preto\u017ee tam maj\u00fa pojem port, ktor\u00fd m\u00f4\u017ee by\u0165 zariaden\u00edm aj s\u00faborom. A tieto porty je mo\u017en\u00e9 flexibilne pripoji\u0165 k in\u00fdm portom. K\u00f3d si m\u00f4\u017eete pozrie\u0165 v na\u0161om pjsipe. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/pjsip\">repozit\u00e1ri<\/a><\/noindex>. V\u00fdsledn\u00e1 sch\u00e9ma bola nasleduj\u00faca. Na serveri Asterisk som vytvoril dva \u00fa\u010dty \u2013 pre Linux a pre Embox. Potom sa na Emboxe vykon\u00e1 pr\u00edkaz <i>simple_pjsua_imported<\/i>, Embox sa zaregistruje na serveri, po \u010dom vol\u00e1me z Linuxu na Embox. V okamihu spojenia kontrolujeme na serveri Asterisk, \u017ee je v\u0161etko pripojen\u00e9, a po chv\u00edli by sme mali po\u010du\u0165 v Emboxe zvuk z Linuxu, pri\u010dom v Linuxe si uklad\u00e1me s\u00fabor, ktor\u00fd sa prehr\u00e1va z Emboxu.<\/p>\n<p>Potom, \u010do to za\u010dalo fungova\u0165 na QEMU, sme pre\u0161li k portovaniu na STM32F7-Discovery. Prv\u00fd probl\u00e9m \u2013 nezmestili sme sa do 1 MB ROM bez zapnutej optimaliz\u00e1cie kompil\u00e1tora \u201e-Os\u201c kv\u00f4li ve\u013ekosti obrazu. Preto sme zapli \u201e-Os\u201c. N\u00e1sledne sme patchom vypnuli podporu C++, preto\u017ee t\u00e1 je potrebn\u00e1 len pre pjsua, a my pou\u017e\u00edvame simple_pjsua. <\/p>\n<p>Potom, \u010do sme to zmestili <i>simple_pjsua<\/i>, sme us\u00fadili, \u017ee m\u00e1me teraz \u0161ance to spusti\u0165. Ale najsk\u00f4r sme sa museli vysporiada\u0165 s nahr\u00e1van\u00edm a prehr\u00e1van\u00edm hlasu. Ot\u00e1zka \u2014 kam nahr\u00e1va\u0165? Vybrali sme vonkaj\u0161iu pam\u00e4\u0165 \u2014 SDRAM (128 MB). M\u00f4\u017eete to vysk\u00fa\u0161a\u0165 sami:<\/p>\n<p>Vytvor\u00ed stereo WAV s frekvenciou 16000 Hz a d\u013a\u017ekou 10 sek\u00fand:<\/p>\n<pre><code class=\"bash\">\nrecord -r 16000 -c 2 -d 10000 -m C0000000\n<\/code><\/pre>\n<p>\nPrehr\u00e1vame:<\/p>\n<pre><code class=\"bash\">\nplay -m C0000000\n<\/code><\/pre>\n<p>\nTu sa objavili dve probl\u00e9my. Prv\u00fd sa t\u00fdka kodeku \u2013 pou\u017e\u00edva sa WM8994, ktor\u00fd m\u00e1 \u0161tyri sloty. Tak\u017ee ak to nenastav\u00edte, po\u010das prehr\u00e1vania sa zvuk prehr\u00e1va vo v\u0161etk\u00fdch \u0161tyroch slotoch. Preto pri frekvencii 16000 Hz sme dostali 8000 Hz a prehr\u00e1vanie pri 8000 Hz jednoducho nefungovalo. Ke\u010f sme vybrali len sloty 0 a 2, fungovalo to spr\u00e1vne. \u010eal\u0161\u00edm probl\u00e9mom bol audio rozhranie v STM32Cube, kde audio v\u00fdstup funguje cez SAI (Serial Audio Interface) synchronne s audio vstupom (neponorili sme sa do podrobnost\u00ed, ale zrejme zdie\u013eaj\u00fa spolo\u010dn\u00fd clock a pri inicializ\u00e1cii audio v\u00fdstupu sa nejako via\u017ee audio vstup). Teda ich nie je mo\u017en\u00e9 spusti\u0165 samostatne, tak\u017ee sme urobili nasledovn\u00e9 \u2013 v\u017edy funguje (vr\u00e1tane generovania preru\u0161enia) audio vstup a audio v\u00fdstup. Ale ke\u010f v syst\u00e9me ni\u010d neprehr\u00e1va, jednoducho pos\u00favame audio v\u00fdstupu pr\u00e1zdny buffer a ke\u010f sa spust\u00ed prehr\u00e1vanie, za\u010d\u00edname ho poctivo plni\u0165.<\/p>\n<p>N\u00e1sledne sme sa stretli s t\u00fdm, \u017ee zvuk pri nahr\u00e1van\u00ed hlasu bol ve\u013emi tich\u00fd. To sa deje preto, \u017ee MEMS mikrof\u00f3ny na STM32F7-Discovery zle funguj\u00fa na frekvenci\u00e1ch pod 16000 Hz. Preto nastavujeme 16000 Hz, aj ke\u010f sa dostane 8000 Hz. Na to bolo treba prida\u0165 programov\u00fa konverziu jednej frekvencie na druh\u00fa.<\/p>\n<p>N\u00e1sledne sme museli zv\u00fd\u0161i\u0165 ve\u013ekos\u0165 hromady, ktor\u00e1 sa nach\u00e1dza v RAM. Pod\u013ea na\u0161ich v\u00fdpo\u010dtov, pjsip vy\u017eadoval pribli\u017ene 190 kB, a u n\u00e1s zostalo len okolo 100 kB. Tu sme museli zapoji\u0165 trochu vonkaj\u0161ej pam\u00e4te \u2013 SDRAM (pribli\u017ene 128 kB).<\/p>\n<p>Po v\u0161etk\u00fdch t\u00fdchto \u00faprav\u00e1ch som videl prv\u00e9 pakety medzi Linuxom a Emboxom a po\u010dul zvuk! Ale zvuk bol hrozn\u00fd, rozhodne nie tak\u00fd ako na QEMU, ni\u010d nebolo mo\u017en\u00e9 rozl\u00ed\u0161i\u0165. Potom sme sa zamysleli, v \u010dom m\u00f4\u017ee by\u0165 probl\u00e9m. Debugging uk\u00e1zal, \u017ee Embox jednoducho nest\u00edha plni\u0165\/vypr\u00e1zd\u0148ova\u0165 audio buffery. K\u00fdm pjsip spracov\u00e1va jeden r\u00e1mec, do\u0161lo k dvom preru\u0161en\u00edm o dokon\u010den\u00ed spracovania bufferov, \u010do je pr\u00edli\u0161 ve\u013ea. Prvou my\u0161lienkou na ur\u00fdchlenie bola optimaliz\u00e1cia kompil\u00e1tora, no bola u\u017e zapnut\u00e1 v PJSIP. Druh\u00fdm - hardv\u00e9rov\u00e1 pl\u00e1vaj\u00faca desatinn\u00e1 \u010diarka, o ktorej sme rozpr\u00e1vali v <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/418295\">\u010dl\u00e1nku<\/a><\/noindex>. No ako uk\u00e1zala prax, FPU neprinieslo podstatn\u00e9 zv\u00fd\u0161enie r\u00fdchlosti. \u010eal\u0161\u00edm krokom bolo nastavenie prior\u00edt pre pr\u00fady. V Embox s\u00fa r\u00f4zne strat\u00e9gie pl\u00e1novania, a ja som zapol t\u00fa, ktor\u00e1 podporuje priority, a nastavila som audiospr\u00e1vy na najvy\u0161\u0161iu prioritu. To tie\u017e nepomohlo.<\/p>\n<p>\u010eal\u0161ia my\u0161lienka bola, \u017ee pracujeme s externou pam\u00e4\u0165ou, a bolo by dobr\u00e9 tam presun\u00fa\u0165 \u0161trukt\u00fary, k ktor\u00fdm sa pristupuje ve\u013emi \u010dasto. Urobil som predbe\u017en\u00fa anal\u00fdzu toho, kedy a pod \u010do <i>simple_pjsua<\/i> sa pride\u013euje pam\u00e4\u0165. Uk\u00e1zalo sa, \u017ee z 190 Kb prv\u00fdch 90 Kb je vyhraden\u00fdch pre vn\u00fatorn\u00e9 potreby PJSIP a k nim sa pristupuje nie ve\u013emi \u010dasto. Potom po\u010das pr\u00edchoz\u00edho hovoru sa vyvol\u00e1 funkcia pjsua_call_answer, v ktorej sa n\u00e1sledne vyhradzuj\u00fa buffery na pr\u00e1cu s pr\u00edchoz\u00edmi a odchoz\u00edmi r\u00e1mcami. To bolo \u010fal\u0161\u00edch pribli\u017ene 100 Kb. A tu sme postupovali nasledovne. Pred momentom hovoru s\u00fa d\u00e1ta umiestnen\u00e9 v externej pam\u00e4ti. Hne\u010f ako je hovor - okam\u017eite nahrad\u00edme haldu za in\u00fa - v RAM. T\u00fdmto sp\u00f4sobom sa v\u0161etky \u201ehor\u00face\u201c d\u00e1ta presunuli do r\u00fdchlej\u0161ej a predv\u00eddate\u013enej\u0161ej pam\u00e4ti.<\/p>\n<p>Nakoniec to v\u0161etko spolu umo\u017enilo spusti\u0165 <i>simple_pjsua<\/i> a zavola\u0165 cez svoj server. A potom aj cez in\u00e9 servery ako sip.linphone.org.<\/p>\n<h3>Zhrnutie<\/h3>\n<p>\nNakoniec sa podarilo spusti\u0165 <i>simple_pjsua<\/i> s prenosom hlasu oboma smermi cez server. Probl\u00e9m s dodato\u010dn\u00fdmi 128 Kb SDRAM sa d\u00e1 vyrie\u0161i\u0165 pou\u017eit\u00edm o nie\u010do v\u00fdkonnej\u0161ieho Cortex-M7 (napr\u00edklad STM32F769NI s 512 Kb RAM), ale z\u00e1rove\u0148 sme e\u0161te nestratili n\u00e1dej zmesti\u0165 sa aj do 256 Kb \ud83d\ude42 Budeme radi, ak sa niekto zauj\u00edma, a e\u0161te lep\u0161ie \u2014 vysk\u00fa\u0161a to. V\u0161etky zdrojov\u00e9 k\u00f3dy, ako obvykle, s\u00fa v na\u0161om <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\">repozit\u00e1ri<\/a><\/noindex>.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/431134\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u043d\u0430\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c SIP \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 STM32F4-Discovery c 1 \u041c\u0431 ROM \u0438 192 \u041a\u0431 RAM) \u043d\u0430 \u0431\u0430\u0437\u0435 Embox. \u0422\u0443\u0442 \u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u044b\u043b\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u043b\u0430 \u0434\u0432\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0431\u0435\u0437 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u0433\u043e\u043b\u043e\u0441\u0430 \u043b\u0438\u0448\u044c \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37916","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u043d\u0430\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c SIP \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 STM32F4-Discovery c 1 \u041c\u0431.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47SIP \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 STM32F7-Discovery | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u043d\u0430\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c SIP \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 STM32F4-Discovery c 1 \u041c\u0431.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:20:31+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:20:31+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47SIP telef\u00f3n na STM32F7-Discovery | ProHoster","description":"Ahojte. Pred \u010dasom sme p\u00edsali o tom, ako sa n\u00e1m podarilo spusti\u0165 SIP telef\u00f3n na STM32F4-Discovery s 1 Mb.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47SIP \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 STM32F7-Discovery | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u043d\u0430\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c SIP \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 STM32F4-Discovery c 1 \u041c\u0431.","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:20:31+00:00","article:modified_time":"2019-10-31T19:20:31+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37916","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 19:45:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:18:22","updated":"2026-01-23 19:45:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/37916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=37916"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/37916\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=37916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=37916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=37916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}