{"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\/cs\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","title":{"rendered":"SIP telefon na STM32F7-Discovery","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ahoj v\u0161ichni.<\/p>\n<p>N\u011bjakou dobu zp\u00e1tky jsme <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/259721\">psali<\/a><\/noindex> o tom, jak se n\u00e1m poda\u0159ilo spustit SIP telefon na STM32F4-Discovery s 1 MB ROM a 192 KB RAM) na z\u00e1klad\u011b <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\">Embox<\/a><\/noindex>. Je t\u0159eba \u0159\u00edct, \u017ee ta verze byla minim\u00e1ln\u00ed a spojuje dva telefony p\u0159\u00edmo bez serveru s p\u0159enosem hlasu pouze jedn\u00edm sm\u011brem. Proto jsme se rozhodli spustit funk\u010dn\u011bj\u0161\u00ed telefon se spojen\u00edmi p\u0159es server, p\u0159enosem hlasu ob\u011bma sm\u011bry, ale p\u0159itom se vej\u00edt do co nejmen\u0161\u00edho rozm\u011bru pam\u011bti.<\/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=\"P\u0159ehr\u00e1t 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 \/>\nPro telefon bylo rozhodnuto vybrat aplikaci <i>simple_pjsua<\/i> v r\u00e1mci knihovny PJSIP. Toto je minim\u00e1ln\u00ed aplikace, kter\u00e1 um\u00ed se registrovat na serveru, p\u0159ij\u00edmat a odpov\u00eddat na hovory. N\u00ed\u017ee okam\u017eit\u011b uvedu popis, jak to spustit na STM32F7-Discovery.<\/p>\n<h3>Jak spustit<\/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 souboru conf\/mods.config nastav\u00edme pot\u0159ebn\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 (nap\u0159\u00edklad sip.linphone.org), <i>u\u017eivatelsk\u00e9 jm\u00e9no<\/i> a <i>heslo<\/i> \u2014 u\u017eivatelsk\u00e9 jm\u00e9no a heslo pro \u00fa\u010det.\n<\/li>\n<li>Sestav\u00edme Embox p\u0159\u00edkazem <i>make<\/i>. O firmwaru desky m\u00e1me informace 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>Spust\u00edme v konzoli Embox p\u0159\u00edkaz \u201csimple_pjsua_imported\u201d\n<pre><code class=\"bash\">\n00:00:12.870    pjsua_acc.c  ....SIP outbound status for acc 0 is not active\n00:00:12.884    pjsua_acc.c  ....sip:alexk2222@sip.linphone.org: registration success, status=200 (Registration success\n00:00:12.911    pjsua_acc.c  ....Keep-alive timer started for acc 0, destination:91.121.209.194:5060, interval:15s\n<\/code><\/pre>\n<p>\n<\/li>\n<li>Nakonec zb\u00fdv\u00e1 p\u0159ipojit sloupce nebo sluch\u00e1tka k audio v\u00fdstupu a mluvit do dvou mal\u00fdch MEMS mikrofon\u016f vedle displeje. Vol\u00e1me z Linuxu p\u0159es aplikaci simple_pjsua, pjsua. A nebo m\u016f\u017eeme pou\u017e\u00edt jakoukoliv jinou, jako je linphone.\n<\/li>\n<\/ol>\n<p>\nTo v\u0161e je pops\u00e1no na na\u0161em <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\/wiki\/AUDIO-on-STM32\">wiki<\/a><\/noindex>.<\/p>\n<h3>Jak jsme k tomu dosp\u011bli<\/h3>\n<p>\nTak\u017ee p\u016fvodn\u011b vyvstala ot\u00e1zka v\u00fdb\u011bru hardwarov\u00e9 platformy. Proto\u017ee bylo jasn\u00e9, \u017ee STM32F4-Discovery nebude vyhovovat pam\u011b\u0165ov\u00fdm n\u00e1rok\u016fm, byla zvolena STM32F7-Discovery. Ta m\u00e1 1 MB flash a 256 KB RAM (+ 64 KB speci\u00e1ln\u00ed rychl\u00e9 pam\u011bti, kterou tak\u00e9 pou\u017eijeme). Tak\u00e9 to nen\u00ed mnoho pro vol\u00e1n\u00ed p\u0159es server, ale rozhodli jsme se to zkusit.<\/p>\n<p>\u00dakol jsme si prakticky rozd\u011blili do n\u011bkolika etap:<\/p>\n<ul>\n<li>Spu\u0161t\u011bn\u00ed PJSIP na QEMU. To bylo pohodln\u00e9 pro lad\u011bn\u00ed, nav\u00edc jsme tam m\u011bli podporu kodeku AC97. <\/li>\n<li>Z\u00e1znam hlasu a p\u0159ehr\u00e1v\u00e1n\u00ed na QEMU a na STM32. <\/li>\n<li> Portace aplikace <i>simple_pjsua<\/i> z portfolia PJSIP. Umo\u017e\u0148uje registraci na SIP serveru a vol\u00e1n\u00ed. <\/li>\n<li>Rozb\u011bhnout vlastn\u00ed server na b\u00e1zi Asterisk a testovat na n\u011bm, pot\u00e9 zkusit extern\u00ed, jako sip.linphone.org <\/li>\n<\/ul>\n<p>\nZvuk v Emboxu funguje p\u0159es Portaudio, kter\u00e9 se pou\u017e\u00edv\u00e1 i v PISIP. Na QEMU se objevily prvn\u00ed probl\u00e9my \u2013 WAV soubory se p\u0159ehr\u00e1valy na 44100 Hz bez probl\u00e9m\u016f, ale na 8000 Hz to evidentn\u011b nefungovalo spr\u00e1vn\u011b. Uk\u00e1zalo se, \u017ee probl\u00e9m byl v nastaven\u00ed frekvence \u2013 v\u00fdchoz\u00ed hodnotou v hardware byla 44100, a v na\u0161em p\u0159\u00edpad\u011b to nebylo programov\u011b zm\u011bn\u011bno. <\/p>\n<p>Tady je asi dobr\u00e9 trochu vysv\u011btlit, jak vlastn\u011b prob\u00edh\u00e1 p\u0159ehr\u00e1v\u00e1n\u00ed zvuku. Zvukov\u00e9 kart\u011b lze nastavit ur\u010ditou adresu pam\u011bti, ze kter\u00e9 se m\u00e1 p\u0159ehr\u00e1vat nebo zapisovat p\u0159i p\u0159edem nastaven\u00e9 frekvenci. Jakmile se vypln\u00ed buffer, dojde k p\u0159eru\u0161en\u00ed a vykon\u00e1v\u00e1n\u00ed pokra\u010duje od dal\u0161\u00edho bufferu. V podstat\u011b je pot\u0159eba p\u0159edem naplnit tyto buffery, zat\u00edmco se p\u0159ehr\u00e1v\u00e1 ten p\u0159edchoz\u00ed. S t\u00edmto probl\u00e9mem se je\u0161t\u011b setk\u00e1me na STM32F7. <\/p>\n<p>D\u00e1le jsme si pronajali server a na n\u011bm rozjeli Asterisk. Proto\u017ee bylo pot\u0159eba mnoho ladit a mluvit do mikrofonu se mi necht\u011blo, museli jsme zajistit automatick\u00e9 p\u0159ehr\u00e1v\u00e1n\u00ed a nahr\u00e1v\u00e1n\u00ed. K tomu jsme upravili simple_pjsua tak, aby bylo mo\u017en\u00e9 nahradit audio za\u0159\u00edzen\u00ed soubory. V PJSIP se to d\u011bl\u00e1 docela jednodu\u0161e, proto\u017ee maj\u00ed pojem port, kter\u00fd m\u016f\u017ee b\u00fdt jak za\u0159\u00edzen\u00ed, tak soubor. Tyto porty lze flexibiln\u011b p\u0159ipojit k jin\u00fdm port\u016fm. K\u00f3d si m\u016f\u017eete prohl\u00e9dnout v na\u0161em pjsipu. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/pjsip\">repozit\u00e1\u0159e<\/a><\/noindex>. Nakonec byla sch\u00e9mata n\u00e1sleduj\u00edc\u00ed. Na serveru Asterisk jsem zalo\u017eil dva \u00fa\u010dty \u2013 pro Linux a pro Embox. Pot\u00e9 na Emboxu provedeme p\u0159\u00edkaz <i>simple_pjsua_imported<\/i>, Embox se registruje na serveru, n\u00e1sledn\u011b vol\u00e1me z Linuxu na Embox. V okam\u017eiku spojen\u00ed zkontrolujeme na serveru Asterisk, \u017ee je cel\u00e9 spojen\u00ed nav\u00e1z\u00e1no, a po n\u011bjak\u00e9 dob\u011b bychom m\u011bli v Emboxu sly\u0161et zvuk z Linuxu, p\u0159i\u010dem\u017e v Linuxu ulo\u017e\u00edme soubor, kter\u00fd se p\u0159ehr\u00e1v\u00e1 z Emboxu.<\/p>\n<p>Jakmile to za\u010dalo fungovat na QEMU, p\u0159e\u0161li jsme k portov\u00e1n\u00ed na STM32F7-Discovery. Prvn\u00ed probl\u00e9m \u2013 neve\u0161li jsme se do 1 MB ROM bez zapnut\u00e9 optimalizace p\u0159eklada\u010de \u201c-Os\u201d kv\u016fli velikosti obrazu. Proto jsme zapli \u201c-Os\u201d. D\u00e1le jsme patchem zak\u00e1zali podporu C++, proto\u017ee je pot\u0159ebn\u00e1 jen pro pjsua, a my pou\u017e\u00edv\u00e1me simple_pjsua. <\/p>\n<p>Pot\u00e9, co jsme se ve\u0161li <i>simple_pjsua<\/i>, jsme dosp\u011bli k n\u00e1zoru, \u017ee \u0161ance na spu\u0161t\u011bn\u00ed nyn\u00ed existuj\u00ed. Nejprve jsme se v\u0161ak museli vy\u0159e\u0161it probl\u00e9m s nahr\u00e1v\u00e1n\u00edm a p\u0159ehr\u00e1v\u00e1n\u00edm hlasu. Ot\u00e1zka \u2013 kam nahr\u00e1vat? Zvolili jsme extern\u00ed pam\u011b\u0165 \u2013 SDRAM (128 MB). M\u016f\u017eete to zkusit sami:<\/p>\n<p>Vytvo\u0159\u00ed stereo WAV s frekvenc\u00ed 16000 Hz a d\u00e9lkou 10 sekund:<\/p>\n<pre><code class=\"bash\">\nrecord -r 16000 -c 2 -d 10000 -m C0000000\n<\/code><\/pre>\n<p>\nP\u0159ehr\u00e1v\u00e1me:<\/p>\n<pre><code class=\"bash\">\nplay -m C0000000\n<\/code><\/pre>\n<p>\nTady vznikly dva probl\u00e9my. Prvn\u00ed s kodekem \u2014 pou\u017e\u00edv\u00e1 se WM8994 a ten m\u00e1 takov\u00fd pojem jako slot, a t\u011bch slot\u016f je 4. Tak tedy, pokud to nen\u00ed nastaveno, p\u0159i p\u0159ehr\u00e1v\u00e1n\u00ed audia doch\u00e1z\u00ed k p\u0159ehr\u00e1v\u00e1n\u00ed ve v\u0161ech \u010dty\u0159ech slotech. Proto p\u0159i frekvenci 16000 Hz jsme dostali 8000 Hz, a pro 8000 Hz p\u0159ehr\u00e1v\u00e1n\u00ed prost\u011b nefungovalo. Kdy\u017e jsme zvolili pouze sloty 0 a 2, za\u010dalo to fungovat jak m\u00e1. Dal\u0161\u00edm probl\u00e9mem byl audio interface v STM32Cube, ve kter\u00e9m audio v\u00fdstup funguje p\u0159es SAI (Serial Audio Interface) synchronn\u011b s audio vstupem (nezkoumal jsem detaily, ale vych\u00e1z\u00ed to tak, \u017ee sd\u00edlej\u00ed spole\u010dn\u00fd clock a p\u0159i inicializaci audio v\u00fdstupu se n\u011bjak navazuje na audio vstup). To znamen\u00e1, \u017ee je nelze spustit samostatn\u011b, proto jsme ud\u011blali n\u00e1sleduj\u00edc\u00ed \u2014 audio vstup a audio v\u00fdstup v\u017edy pracuj\u00ed (v\u010detn\u011b generov\u00e1n\u00ed p\u0159eru\u0161en\u00ed). Ale kdy\u017e se v syst\u00e9mu nic nehraje, jednodu\u0161e pos\u00edl\u00e1me v\u00fdstupu pr\u00e1zdn\u00fd buffer, a kdy\u017e za\u010d\u00edn\u00e1me p\u0159ehr\u00e1v\u00e1n\u00ed, poctiv\u011b jej za\u010dneme napl\u0148ovat.<\/p>\n<p>D\u00e1le jsme se setkali s t\u00edm, \u017ee zvuk p\u0159i nahr\u00e1v\u00e1n\u00ed hlasu byl velmi tich\u00fd. To se d\u011bje, proto\u017ee MEMS mikrofony na STM32F7-Discovery n\u011bjak \u0161patn\u011b funguj\u00ed na frekvenc\u00edch pod 16000 Hz. Proto nastavujeme 16000 Hz, i kdy\u017e p\u0159ijde 8000 Hz. K tomu bylo pravda pot\u0159eba p\u0159idat programovou konverzi jedn\u00e9 frekvence na druhou.<\/p>\n<p>D\u00e1le bylo nutn\u00e9 zv\u00fd\u0161it velikost haldy, kter\u00e1 se nach\u00e1z\u00ed v RAM. Podle na\u0161ich v\u00fdpo\u010dt\u016f pjsip vy\u017eadoval p\u0159ibli\u017en\u011b 190 kB, a n\u00e1m zbylo pouze asi 100 kB. Tady bylo nutn\u00e9 vyu\u017e\u00edt kousek extern\u00ed pam\u011bti \u2014 SDRAM (p\u0159ibli\u017en\u011b 128 kB).<\/p>\n<p>Po v\u0161ech t\u011bchto oprav\u00e1ch jsem vid\u011bl prvn\u00ed pakety mezi Linuxem a Emboxem a sly\u0161el zvuk! Ale zvuk byl hrozn\u00fd, v\u016fbec ne takov\u00fd jako na QEMU, nic nebylo mo\u017en\u00e9 rozpoznat. Tak jsme za\u010dali p\u0159em\u00fd\u0161let, v \u010dem by mohl b\u00fdt probl\u00e9m. Lad\u011bn\u00ed uk\u00e1zalo, \u017ee Embox prost\u011b nest\u00edh\u00e1 plnit\/vykl\u00e1dat audio buffery. Zat\u00edmco pjsip zpracov\u00e1v\u00e1 jeden frame, se stihly objevit 2 p\u0159eru\u0161en\u00ed o dokon\u010den\u00ed zpracov\u00e1n\u00ed buffer\u016f, co\u017e je p\u0159\u00edli\u0161 mnoho. Prvn\u00ed my\u0161lenkou pro zrychlen\u00ed byla optimalizace kompil\u00e1toru, ale ta byla u\u017e v PJSIP povolena. Druh\u00e1 \u2014 hardwarov\u00e1 floating point, o kter\u00e9 jsme mluvili v <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/418295\">\u010dl\u00e1nku<\/a><\/noindex>. Ale jak uk\u00e1zala praxe, FPU nep\u0159ineslo v\u00fdznamn\u00e9 zlep\u0161en\u00ed rychlosti. Dal\u0161\u00edm krokem bylo nastaven\u00ed priorit pro toky. V Emboxu existuj\u00ed r\u016fzn\u00e9 strategie pl\u00e1nov\u00e1n\u00ed, a j\u00e1 jsem zapnul tu, kter\u00e1 podporuje priority, a nastavil audiotok\u016fm co nejvy\u0161\u0161\u00ed prioritu. To tak\u00e9 nepomohlo.<\/p>\n<p>Dal\u0161\u00ed my\u0161lenka byla, \u017ee pracujeme s extern\u00ed pam\u011bt\u00ed a bylo by dobr\u00e9 tam p\u0159esunout struktury, ke kter\u00fdm doch\u00e1z\u00ed k velmi \u010dast\u00e9mu p\u0159\u00edstupu. Provedl jsem p\u0159edb\u011b\u017enou anal\u00fdzu toho, kdy a pro co <i>simple_pjsua<\/i> se pam\u011b\u0165 alokuje. Uk\u00e1zalo se, \u017ee z 190 kB prvn\u00edch 90 kB je vyhrazeno pro intern\u00ed pot\u0159eby PJSIP a k nim se neprov\u00e1d\u00ed p\u0159\u00edli\u0161 \u010dast\u00fd p\u0159\u00edstup. D\u00e1le b\u011bhem p\u0159\u00edchoz\u00edho hovoru se vol\u00e1 funkce pjsua_call_answer, kde se n\u00e1sledn\u011b alokuj\u00ed buffery pro pr\u00e1ci s p\u0159\u00edchoz\u00edmi a odchoz\u00edmi r\u00e1mci. To bylo dal\u0161\u00edch p\u0159ibli\u017en\u011b 100 kB. A tady jsme postupovali n\u00e1sledovn\u011b. P\u0159ed hovorem ukl\u00e1d\u00e1me data do extern\u00ed pam\u011bti. Jakmile dojde k hovoru \u2014 okam\u017eit\u011b vym\u011bn\u00edme haldu za jinou \u2014 v RAM. T\u00edmto zp\u016fsobem byla v\u0161echna \u201ehork\u00e1\u201c data p\u0159esunuta do rychlej\u0161\u00ed a p\u0159edv\u00eddateln\u011bj\u0161\u00ed pam\u011bti.<\/p>\n<p>V d\u016fsledku toho v\u0161eho spole\u010dn\u011b se poda\u0159ilo spustit <i>simple_pjsua<\/i> a zavolat p\u0159es sv\u016fj server. A pot\u00e9 i p\u0159es dal\u0161\u00ed servery jako sip.linphone.org.<\/p>\n<h3>Z\u00e1v\u011bry<\/h3>\n<p>\nNakonec se poda\u0159ilo spustit <i>simple_pjsua<\/i> s p\u0159enosem hlasu ob\u011bma sm\u011bry p\u0159es server. Probl\u00e9m s nav\u00edc spot\u0159ebovan\u00fdmi 128 kB SDRAM lze vy\u0159e\u0161it pou\u017eit\u00edm o n\u011bco v\u00fdkonn\u011bj\u0161\u00edho Cortex-M7 (nap\u0159\u00edklad STM32F769NI s 512 kB RAM), ale p\u0159esto jsme je\u0161t\u011b neztratili nad\u011bji vej\u00edt se i do 256 kB \ud83d\ude42 Budeme r\u00e1di, pokud se n\u011bkdo zaujme, a je\u0161t\u011b l\u00e9pe \u2014 vyzkou\u0161\u00ed. V\u0161echny zdrojov\u00e9 k\u00f3dy, jak obvykle, jsou v na\u0161em <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\">repozit\u00e1\u0159e<\/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.3 - 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\/cs\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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 telefon na STM32F7-Discovery | ProHoster","description":"Ahoj v\u0161ichni. P\u0159ed n\u011bjak\u00fdm \u010dasem jsme psali o tom, jak se n\u00e1m poda\u0159ilo spustit SIP telefon na STM32F4-Discovery s 1 MB.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/37916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=37916"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/37916\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=37916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=37916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=37916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}