{"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\/da\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","title":{"rendered":"SIP-Telefon auf STM32F7-Discovery","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hej alle.<\/p>\n<p>For et stykke tid siden <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/259721\">skrevet<\/a><\/noindex> om hvordan vi form\u00e5ede at k\u00f8re en SIP-telefon p\u00e5 STM32F4-Discovery med 1 MB ROM og 192 KB RAM) baseret p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\">Embox<\/a><\/noindex>. Her skal det siges, at den version var minimal og kun forbandt to telefoner direkte uden server og med stemmeoverf\u00f8rsel kun i \u00e9n retning. Derfor besluttede vi at lancere en mere fuldgyldig telefon med opkald via server, stemmeoverf\u00f8rsel i begge retninger, men samtidig holde os inden for s\u00e5 lille hukommelsesst\u00f8rrelse som muligt.<\/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=\"Afspil 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 \/>\nTil telefonen besluttede vi at v\u00e6lge applikationen <i>simple_pjsua<\/i> som en del af PJSIP-biblioteket. Dette er en minimal applikation, som kan registrere sig p\u00e5 serveren, modtage og besvare opkald. Nedenfor vil jeg straks give en beskrivelse af, hvordan man starter det op p\u00e5 STM32F7-Discovery.<\/p>\n<h3>S\u00e5dan starter du<\/h3>\n<p><\/p>\n<ol>\n<li> Konfigurerer Embox\n<pre><code class=\"bash\">make confload-platform\/pjsip\/stm32f7cube<\/code><\/pre>\n<\/li>\n<li>I filen conf\/mods.config angiver vi den \u00f8nskede SIP-konto.\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>\nhvor <i>server<\/i> \u2014 dette er SIP-serveren (for eksempel sip.linphone.org), <i>brugernavn<\/i> og <i>adgangskode<\/i> \u2014 brugernavn og adgangskode til kontoen.\n<\/li>\n<li>Saml Embox med kommandoen <i>make<\/i>. Vi har information om flashen af kortet p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\/wiki\/Running-Embox-on-STM32xxDiscovery\">wiki<\/a><\/noindex> og i <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/349034\/\">artikel<\/a><\/noindex>.\n<\/li>\n<li>K\u00f8r kommandoen \u201csimple_pjsua_imported\u201d i Embox-konsollen\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>Endelig er det tilbage at tilslutte h\u00f8jttalere eller hovedtelefoner til lydudgangen og tale ind i to sm\u00e5 MEMS-mikrofoner t\u00e6t p\u00e5 sk\u00e6rmen. Vi ringer fra Linux via applikationen simple_pjsua, pjsua. Eller man kan bruge en hvilken som helst anden som linphone.\n<\/li>\n<\/ol>\n<p>\nAlt dette er beskrevet p\u00e5 vores <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\/wiki\/AUDIO-on-STM32\">wiki<\/a><\/noindex>.<\/p>\n<h3>Hvordan vi kom hertil<\/h3>\n<p>\nS\u00e5 i starten opstod sp\u00f8rgsm\u00e5let om valg af hardwareplatform. Da det blev klart, at STM32F4-Discovery ikke ville v\u00e6re tilstr\u00e6kkelig med hensyn til hukommelse, blev STM32F7-Discovery valgt. Den har 1 MB flash og 256 KB RAM (+ 64 KB speciel hurtig hukommelse, som vi ogs\u00e5 vil bruge). Det er heller ikke meget til opkald gennem serveren, men vi besluttede at pr\u00f8ve at presse det ind.<\/p>\n<p>For os selv delte vi opgaven op i flere faser:<\/p>\n<ul>\n<li>K\u00f8rsel af PJSIP p\u00e5 QEMU. Det var praktisk til debugging, plus vi havde allerede support for AC97 codec der. <\/li>\n<li>Optagelse og afspilning af lyd p\u00e5 QEMU og p\u00e5 STM32. <\/li>\n<li> Portering af applikationen <i>simple_pjsua<\/i> fra PJSIP-biblioteket. Den g\u00f8r det muligt at registrere sig p\u00e5 SIP-serveren og ringe. <\/li>\n<li>Ops\u00e6tning af vores egen server baseret p\u00e5 Asterisk og teste p\u00e5 den, hvorefter vi vil pr\u00f8ve eksterne, s\u00e5som sip.linphone.org <\/li>\n<\/ul>\n<p>\nLyden i Embox fungerer gennem Portaudio, som ogs\u00e5 anvendes i PISIP. P\u00e5 QEMU opstod de f\u00f8rste problemer \u2013 WAV-filer ved 44100 Hz blev afspillet fint, men ved 8000 Hz gik noget tydeligvis galt. Det viste sig, at problemet l\u00e5 i indstillingen af frekvensen \u2013 standarden i hardwaren var 44100, og det blev ikke \u00e6ndret programm\u00e6ssigt. <\/p>\n<p>Her er det m\u00e5ske v\u00e6rd at forklare lidt om, hvordan lyden faktisk afspilles. Der kan s\u00e6ttes en indikator p\u00e5 lydkortet til et hukommelsesomr\u00e5de, hvorfra der skal afspilles eller optages ved en forudbestemt frekvens. N\u00e5r bufferen er brugt op, genereres der et afbrydelse, og udf\u00f8relsen forts\u00e6tter fra den n\u00e6ste buffer. Problemet er, at disse buffere skal fyldes i forvejen, mens den tidligere afspilles. Denne udfordring vil vi ogs\u00e5 st\u00f8de p\u00e5 senere med STM32F7. <\/p>\n<p>Derefter lejede vi en server og installerede Asterisk p\u00e5 den. Da vi m\u00e5tte debugge meget, og det ikke var sjovt at tale ind i mikrofonen, besluttede vi at lave automatisk afspilning og optagelse. For at g\u00f8re dette patchede vi simple_pjsua, s\u00e5 vi kunne inds\u00e6tte filer i stedet for lydudstyr. I PJSIP er dette meget enkelt, da de har et begreb om port, som kan v\u00e6re b\u00e5de en enhed og en fil. Og disse porte kan fleksibelt tilsluttes til andre porte. Koden kan ses i vores pjsip. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/pjsip\">repository<\/a><\/noindex>Sammenfattende var diagrammet som f\u00f8lger. P\u00e5 Asterisk-serveren oprettede jeg to konti \u2013 en til Linux og en til Embox. Dern\u00e6st udf\u00f8res kommandoen p\u00e5 Embox. <i>simple_pjsua_imported<\/i>, Embox registrerer sig p\u00e5 serveren, hvorefter vi fra Linux ringer til Embox. I forbindelse med forbindelsen kontrollerer vi p\u00e5 Asterisk-serveren, at forbindelsen er oprettet, og efter nogen tid skal vi h\u00f8re lyden fra Linux i Embox, og i Linux gemmer vi den fil, der bliver afspillet fra Embox.<\/p>\n<p>Efter at dette fungerede p\u00e5 QEMU, gik vi videre til porteringen til STM32F7-Discovery. Det f\u00f8rste problem var, at vi ikke kunne f\u00e5 plads i 1 MB ROM uden at aktivere compilationsoptimeringen \u201c-Os\u201d for billedst\u00f8rrelsen. Derfor aktiverede vi \u201c-Os\u201d. Dern\u00e6st, med et patch, deaktiverede vi C++-support, da det kun er n\u00f8dvendigt for pjsua, og vi bruger simple_pjsua. <\/p>\n<p>Efter at vi fik plads <i>simple_pjsua<\/i>, besluttede vi, at der nu var chancer for at starte det. Men f\u00f8rst skulle vi finde ud af optagelse og afspilning af stemmen. Sp\u00f8rgsm\u00e5let var \u2013 hvor skulle vi optage? Vi valgte ekstern hukommelse \u2013 SDRAM (128 MB). Du kan pr\u00f8ve dette selv:<\/p>\n<p>Opretter stereo WAV med en frekvens p\u00e5 16000 Hz og en varighed p\u00e5 10 sekunder:<\/p>\n<pre><code class=\"bash\">\nrecord -r 16000 -c 2 -d 10000 -m C0000000\n<\/code><\/pre>\n<p>\nAfspiller:<\/p>\n<pre><code class=\"bash\">\nplay -m C0000000\n<\/code><\/pre>\n<p>\nHer opstod der to problemer. Det f\u00f8rste med codec'en \u2014 WM8994 bruges, og der er noget, der hedder slot, og der er 4 slotter. Som standard, hvis man ikke konfigurerer det, s\u00e5 afspilles lyd i alle fire slotter. Derfor fik vi ved 16000 Hz 8000 Hz, og for 8000 Hz fungerede afspilningen bare ikke. Da vi valgte kun slottene 0 og 2, s\u00e5 fungerede det som det skulle. Et andet problem var lydinterfacet i STM32Cube, hvor lydudgangen fungerer via SAI (Serial Audio Interface) synkront med lydindgangen (jeg har ikke unders\u00f8gt detaljerne, men det ser ud til, at de deler f\u00e6lles clock, og ved initialisering af lydudgangen binds lydindgangen eller lignende). Det vil sige, at man ikke kan starte dem separat, derfor gjorde vi f\u00f8lgende \u2014 b\u00e5de lydindgang og lydudgang fungerer altid (herunder genereres afbrydelser). Men n\u00e5r der ikke afspilles noget i systemet, inds\u00e6tter vi bare en tom buffer til lydudgangen, og n\u00e5r afspilningen starter, s\u00e5 begynder vi \u00e6rligt at fylde den.<\/p>\n<p>Derefter st\u00f8dte vi p\u00e5, at lyden ved optagelse af stemmen var meget lav. Dette skyldes, at MEMS mikrofonerne p\u00e5 STM32F7-Discovery fungerer d\u00e5rligt ved frekvenser under 16000 Hz. Derfor indstiller vi 16000 Hz, selv hvis der kommer 8000 Hz. Faktisk var det n\u00f8dvendigt at tilf\u00f8je en softwarekonvertering af en frekvens til en anden.<\/p>\n<p>Dern\u00e6st var vi n\u00f8dt til at \u00f8ge st\u00f8rrelsen p\u00e5 bunken, der ligger i RAM. If\u00f8lge vores beregninger kr\u00e6vede pjsip omkring 190 KB, men vi havde kun omkring 100 KB tilbage. Her m\u00e5tte vi bruge lidt ekstern hukommelse \u2014 SDRAM (omkring 128 KB).<\/p>\n<p>Efter alle disse \u00e6ndringer s\u00e5 jeg de f\u00f8rste pakker mellem Linux og Embox og h\u00f8rte lyd! Men lyden var forf\u00e6rdelig, slet ikke som p\u00e5 QEMU, intet kunne forst\u00e5s. S\u00e5 begyndte vi at undre os over, hvad der kunne v\u00e6re galt. Debugging viste, at Embox simpelthen ikke kunne n\u00e5 at fylde\/udlevere lydbufferne. Mens pjsip behandlede en ramme, skete der to afbrydelser om afslutningen af bufferbehandlingen, hvilket var for meget. Den f\u00f8rste tanke til at fremskynde var compileroptimering, men det var allerede aktiveret i PJSIP. Det andet \u2014 hardware flydende punkt, om det fortalte vi i <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/418295\">artikel<\/a><\/noindex>. Men som praksis har vist, gav FPU ikke en betydelig stigning i hastighed. N\u00e6ste skridt var at prioritere tr\u00e5de. I Embox er der forskellige planl\u00e6gningsstrategier, og jeg aktiverede den, der underst\u00f8tter prioriteter, og gav lyden den h\u00f8jeste prioritet. Dette hjalp heller ikke.<\/p>\n<p>N\u00e6ste id\u00e9 var, at vi arbejder med ekstern hukommelse, og det ville v\u00e6re godt at flytte strukturer derhen, som der er meget hyppig adgang til. Jeg udf\u00f8rte en forudg\u00e5ende analyse af, hvorn\u00e5r og til hvad <i>simple_pjsua<\/i> hukommelse bliver tildelt. Det viste sig, at ud af 190 Kb blev de f\u00f8rste 90 Kb tildelt til interne behov i PJSIP, og adgangen til dem sker ikke s\u00e6rlig ofte. Derefter, under et indg\u00e5ende opkald, kaldes funktionen pjsua_call_answer, hvor der derefter tildeles buffere til behandling af indg\u00e5ende og udg\u00e5ende rammer. Det var omkring 100 Kb mere. Og her gjorde vi det p\u00e5 f\u00f8lgende m\u00e5de. Indtil opkaldet placerer vi data i den eksterne hukommelse. S\u00e5 snart opkaldet er modtaget - s\u00e5 skifter vi hurtigt til en anden stak - i RAM. P\u00e5 denne m\u00e5de blev alle \"hot\" data flyttet til hurtigere og mere forudsigelig hukommelse.<\/p>\n<p>Samlet set gjorde alt dette det muligt at starte <i>simple_pjsua<\/i> og ringe gennem vores server. Og derefter ogs\u00e5 gennem andre servere som sip.linphone.org.<\/p>\n<h3>Konklusioner<\/h3>\n<p>\nResultatet blev, at vi fik startet <i>simple_pjsua<\/i> med stemmeoverf\u00f8rsel i begge retninger gennem serveren. Problemet med de ekstra brugte 128 Kb SDRAM kan l\u00f8ses ved at bruge en lidt mere kraftfuld Cortex-M7 (for eksempel STM32F769NI med 512 Kb RAM), men vi har stadig ikke mistet h\u00e5bet om at f\u00e5 det til at passe ind i 256 Kb \ud83d\ude42 Vi vil v\u00e6re glade, hvis nogen er interesseret, og endnu bedre - pr\u00f8ver det. Alle kildekoder er, som s\u00e6dvanligt, tilg\u00e6ngelige i vores <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\">repository<\/a><\/noindex>.<br \/>\n<br \/>Kilde: <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\/da\/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=\"da_DK\" \/>\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\/da\/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 p\u00e5 STM32F7-Discovery | ProHoster","description":"Hej alle. For noget tid siden skrev vi om, hvordan vi fik startet en SIP-telefon p\u00e5 STM32F4-Discovery med 1 Mb.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/37916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=37916"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37916\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=37916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=37916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=37916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}