{"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\/sv\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","title":{"rendered":"SIP telefon p\u00e5 STM32F7-Discovery","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hej alla.<\/p>\n<p>F\u00f6r en tid sedan pratade vi <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/259721\">om<\/a><\/noindex> om hur vi lyckades k\u00f6ra en SIP-telefon p\u00e5 STM32F4-Discovery med 1 MB ROM och 192 KB RAM baserat p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\">Embox<\/a><\/noindex>. H\u00e4r m\u00e5ste jag n\u00e4mna att den versionen var minimal och kopplade samman tv\u00e5 telefoner direkt utan server och med r\u00f6st\u00f6verf\u00f6ring endast i en riktning. D\u00e4rf\u00f6r beslutade vi oss f\u00f6r att starta en mer fullst\u00e4ndig telefon som skulle ringa genom servern, med r\u00f6st\u00f6verf\u00f6ring i b\u00e5da riktningarna, men samtidigt h\u00e5lla oss till s\u00e5 liten minnesstorlek som m\u00f6jligt.<\/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=\"Spela 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 \/>\nF\u00f6r telefonen beslutade vi att v\u00e4lja applikationen <i>simple_pjsua<\/i> i PJSIP-biblioteket. Det h\u00e4r \u00e4r en minimal applikation som kan registrera sig p\u00e5 en server, ta emot och svara p\u00e5 samtal. Nedan ska jag omedelbart ge en beskrivning av hur man startar den p\u00e5 STM32F7-Discovery.<\/p>\n<h3>Hur man startar<\/h3>\n<p><\/p>\n<ol>\n<li> Konfigurera Embox\n<pre><code class=\"bash\">make confload-platform\/pjsip\/stm32f7cube<\/code><\/pre>\n<\/li>\n<li>I filen conf\/mods.config anger vi det \u00f6nskade SIP-kontot.\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>\nw <i>server<\/i> \u2014 detta \u00e4r SIP-servern (till exempel sip.linphone.org), <i>username<\/i> och <i>password<\/i> \u2014 anv\u00e4ndarnamn och l\u00f6senord f\u00f6r kontot.\n<\/li>\n<li>Bygg Embox med kommandot <i>make<\/i>. Om firmware f\u00f6r kortet har vi p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\/wiki\/Running-Embox-on-STM32xxDiscovery\">wiki<\/a><\/noindex> och i <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/349034\/\">artikeln<\/a><\/noindex>.\n<\/li>\n<li>K\u00f6r kommandot \u201csimple_pjsua_imported\u201d i Embox-konsolen\n<pre><code class=\"bash\">\n00:00:12.870    pjsua_acc.c  ....SIP outbound status f\u00f6r acc 0 \u00e4r inte aktiv\n00:00:12.884    pjsua_acc.c  ....sip:alexk2222@sip.linphone.org: registrering lyckades, status=200 (Registrering lyckades\n00:00:12.911    pjsua_acc.c  ....Keep-alive-timer startad f\u00f6r acc 0, destination: 91.121.209.194:5060, intervall: 15s\n<\/code><\/pre>\n<p>\n<\/li>\n<li>Till slut \u00e5terst\u00e5r det att s\u00e4tta in h\u00f6gtalare eller h\u00f6rlurar i ljuduttaget och prata i tv\u00e5 sm\u00e5 MEMS-mikrofoner n\u00e4ra sk\u00e4rmen. Vi ringer fr\u00e5n Linux via applikationen simple_pjsua, pjsua. Eller s\u00e5 kan man anv\u00e4nda vilket annat alternativ som helst, som linphone.\n<\/li>\n<\/ol>\n<p>\nAllt detta beskrivs p\u00e5 v\u00e5r <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\/wiki\/AUDIO-on-STM32\">wiki<\/a><\/noindex>.<\/p>\n<h3>Hur vi kom dit<\/h3>\n<p>\nS\u00e5, inledningsvis uppstod fr\u00e5gan om att v\u00e4lja h\u00e5rdvaruplattform. Eftersom det stod klart att STM32F4-Discovery inte skulle passa f\u00f6r minnet, valdes STM32F7-Discovery. Den har 1 MB flash och 256 KB RAM (+ 64 snabb minne, som vi ocks\u00e5 kommer att anv\u00e4nda). Inte mycket f\u00f6r samtal genom servern, men vi beslutade att f\u00f6rs\u00f6ka f\u00e5 plats.<\/p>\n<p>Villkorligt delade vi upp uppgiften i flera steg:<\/p>\n<ul>\n<li>K\u00f6r PJSIP p\u00e5 QEMU. Det var bekv\u00e4mt f\u00f6r fels\u00f6kning, plus att vi redan hade st\u00f6d f\u00f6r AC97-codec d\u00e4r. <\/li>\n<li>Inspelning av r\u00f6st och uppspelning p\u00e5 QEMU och p\u00e5 STM32. <\/li>\n<li> Portering av applikationen <i>simple_pjsua<\/i> fr\u00e5n PJSIP. Den m\u00f6jligg\u00f6r registrering p\u00e5 SIP-servern och samtal. <\/li>\n<li>S\u00e4tta upp en egen server baserad p\u00e5 Asterisk och testa p\u00e5 den, och sedan prova externa, som sip.linphone.org. <\/li>\n<\/ul>\n<p>\nLjud i Embox fungerar genom Portaudio, vilket ocks\u00e5 anv\u00e4nds i PISIP. P\u00e5 QEMU uppstod de f\u00f6rsta problemen \u2013 WAV-filer spelades upp korrekt vid 44100 Hz, men vid 8000 var det uppenbart n\u00e5got som gick fel. Det visade sig att det berodde p\u00e5 inst\u00e4llningen av frekvensen \u2013 som standard var den inst\u00e4lld p\u00e5 44100 i h\u00e5rdvaran, och vi \u00e4ndrade inte detta programmerat. <\/p>\n<p>H\u00e4r kanske det \u00e4r v\u00e4rt att f\u00f6rklara hur ljuduppspelning \u00f6verhuvudtaget g\u00e5r till. Ljudkortet kan f\u00e5 en pekare till en minnesbit som ska spelas upp eller spelas in vid en f\u00f6rutbest\u00e4md frekvens. N\u00e4r bufferten tar slut genereras ett avbrott, och exekveringen forts\u00e4tter med n\u00e4sta buffert. Problemet \u00e4r att dessa buffertar m\u00e5ste fyllas i f\u00f6rv\u00e4g medan den f\u00f6reg\u00e5ende spelas upp. Vi kommer att st\u00f6ta p\u00e5 detta problem l\u00e4ngre fram p\u00e5 STM32F7. <\/p>\n<p>D\u00e4refter hyrde vi en server och installerade Asterisk p\u00e5 den. Eftersom det kr\u00e4vdes mycket fels\u00f6kning och vi inte ville prata mycket i mikrofonen beh\u00f6vde vi automatisera uppspelning och inspelning. F\u00f6r detta patchade vi simple_pjsua s\u00e5 att vi kunde mata in filer ist\u00e4llet f\u00f6r ljudenheter. I PJSIP g\u00f6rs detta ganska enkelt, eftersom de har begreppet port som kan vara b\u00e5de en enhet och en fil. Dessa portar kan kopplas flexibelt till andra portar. Koden kan ses i v\u00e5r pjsip. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/pjsip\">f\u00f6rr\u00e5det<\/a><\/noindex>. Resultatet blev f\u00f6ljande. P\u00e5 Asterisk-servern skapade jag tv\u00e5 konton \u2013 f\u00f6r Linux och f\u00f6r Embox. D\u00e4refter utf\u00f6rs kommandot <i>simple_pjsua_imported<\/i>, Embox registreras p\u00e5 servern, och efter det ringer vi fr\u00e5n Linux till Embox. N\u00e4r anslutningen har uppr\u00e4ttats kontrollerar vi p\u00e5 Asterisk-servern att hela anslutningen \u00e4r etablerad, och efter en stund ska vi h\u00f6ra ljudet fr\u00e5n Linux i Embox, medan vi p\u00e5 Linux sparar den fil som spelas upp fr\u00e5n Embox.<\/p>\n<p>Efter att detta fungerade p\u00e5 QEMU gick vi vidare till porteringen p\u00e5 STM32F7-Discovery. Det f\u00f6rsta problemet var att vi inte fick plats inom 1 MB ROM utan att aktivera kompileringsoptimeringen \u201c-Os\u201d f\u00f6r bildstorleken. S\u00e5 vi aktiverade \u201c-Os\u201d. D\u00e4refter st\u00e4ngde vi av C++-st\u00f6det med en patch eftersom det bara beh\u00f6vs f\u00f6r pjsua, och vi anv\u00e4nder simple_pjsua. <\/p>\n<p>N\u00e4r vi v\u00e4l fick plats <i>simple_pjsua<\/i>, beslutade vi att chansen att f\u00e5 detta att fungera nu fanns. Men f\u00f6rst beh\u00f6vde vi reda ut inspelning och uppspelning av r\u00f6sten. Fr\u00e5gan var \u2013 vart ska vi spela in? Vi valde extern minne \u2013 SDRAM (128 MB). Du kan f\u00f6rs\u00f6ka detta sj\u00e4lv:<\/p>\n<p>Skapar stereo WAV med en frekvens p\u00e5 16000 Hz och en l\u00e4ngd p\u00e5 10 sekunder:<\/p>\n<pre><code class=\"bash\">\nrecord -r 16000 -c 2 -d 10000 -m C0000000\n<\/code><\/pre>\n<p>\nSpelar upp:<\/p>\n<pre><code class=\"bash\">\nplay -m C0000000\n<\/code><\/pre>\n<p>\nH\u00e4r uppstod tv\u00e5 problem. Det f\u00f6rsta med codec\u2019en \u2014 WM8994 anv\u00e4nds, och det finns ett begrepp som kallas slot, och det finns fyra s\u00e5dana slots. S\u00e5, om man inte konfigurerar detta, s\u00e5 kommer uppspelning av ljud att ske i alla fyra slots. D\u00e4rf\u00f6r fick vi 8000 Hz vid 16000 Hz, och f\u00f6r 8000 Hz fungerade inte uppspelningen alls. N\u00e4r vi valde endast slots 0 och 2, fungerade det som det skulle. Ett annat problem var ljudgr\u00e4nssnittet i STM32Cube, d\u00e4r ljudutg\u00e5ngen arbetar via SAI (Serial Audio Interface) synkront med ljuding\u00e5ngen (jag har inte g\u00e5tt in i detaljerna, men det verkar som om de delar en gemensam klocka och vid initialisering av ljudutg\u00e5ngen kopplas den p\u00e5 n\u00e5got s\u00e4tt till ljuding\u00e5ngen). Det inneb\u00e4r att de inte kan startas separat, s\u00e5 vi gjorde f\u00f6ljande \u2013 ljuding\u00e5ng och ljudutg\u00e5ng fungerar alltid (inklusive avbrott genereras). Men n\u00e4r inget spelas i systemet, s\u00e5 skickar vi en tom buffert till ljudutg\u00e5ngen, och n\u00e4r uppspelningen startas, b\u00f6rjar vi fylla den p\u00e5 riktigt.<\/p>\n<p>D\u00e4refter st\u00f6tte vi p\u00e5 att ljudet vid r\u00f6stinspelning var v\u00e4ldigt tyst. Detta beror p\u00e5 att MEMS mikrofonerna p\u00e5 STM32F7-Discovery fungerar d\u00e5ligt vid frekvenser under 16000 Hz. S\u00e5 vi st\u00e4ller in 16000 Hz, \u00e4ven om 8000 Hz tas emot. F\u00f6r detta beh\u00f6vdes dock ett programvaruomvandling av en frekvens till en annan.<\/p>\n<p>D\u00e4refter var vi tvungna att \u00f6ka storleken p\u00e5 minnet som finns i RAM. Enligt v\u00e5ra ber\u00e4kningar kr\u00e4vde pjsip cirka 190 kB, och vi hade bara cirka 100 kB kvar. H\u00e4r var vi tvungna att anv\u00e4nda lite extern minne \u2014 SDRAM (cirka 128 kB).<\/p>\n<p>Efter alla dessa justeringar s\u00e5g jag de f\u00f6rsta paketen mellan Linux och Embox, och h\u00f6rde ljud! Men ljudet var fruktansv\u00e4rt, inte alls som p\u00e5 QEMU, och ingenting kunde s\u00e4rskiljas. D\u00e5 b\u00f6rjade vi undra vad som kunde vara fel. Debugging visade att Embox sannerligen inte h\u00e4ngde med i att fylla\/t\u00f6mma ljudbuffrarna. Medan pjsip bearbetade ett ram, intr\u00e4ffade tv\u00e5 avbrott om avslutning av buffertbehandling, vilket \u00e4r f\u00f6r mycket. Den f\u00f6rsta tanken f\u00f6r att snabba p\u00e5 processen var att optimera kompilatorn, men den var redan aktiverad i PJSIP. Det andra \u2013 h\u00e5rdvaru-flytpunkt, om den pratar vi i <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/418295\">artikeln<\/a><\/noindex>. Men som praktiken har visat, gav FPU ingen betydande \u00f6kning av hastigheten. N\u00e4sta steg var att st\u00e4lla in prioriteringar f\u00f6r fl\u00f6den. I Embox finns det olika schemal\u00e4ggningsstrategier, och jag aktiverade den som st\u00f6djer prioriteringar och satte ljudfl\u00f6dena till h\u00f6gsta prioritet. Detta hj\u00e4lpte inte heller.<\/p>\n<p>N\u00e4sta id\u00e9 var att vi arbetar med extern minne och det skulle vara bra att flytta strukturer dit som det ofta g\u00f6rs h\u00e4nvisningar till. Jag genomf\u00f6rde en prelimin\u00e4r analys av n\u00e4r och under vad <i>simple_pjsua<\/i> minnet allokeras. Det visade sig att av 190 Kb allokeras de f\u00f6rsta 90 Kb f\u00f6r interna behov av PJSIP och att h\u00e4nvisningarna till dem sker inte s\u00e5 ofta. Vid ett inkommande samtal anropas funktionen pjsua_call_answer, d\u00e4r buffrar sedan allokeras f\u00f6r att arbeta med inkommande och utg\u00e5ende ramar. Det var ytterligare cirka 100 Kb. Och h\u00e4r gjorde vi p\u00e5 f\u00f6ljande s\u00e4tt. Fram till samtalet placerade vi data i det externa minnet. S\u00e5 snart samtalet kom \u2014 bytte vi omg\u00e5ende ut heapen mot en annan \u2014 i RAM. P\u00e5 s\u00e5 s\u00e4tt flyttades alla \"heta\" data till ett snabbare och mer f\u00f6ruts\u00e4gbart minne.<\/p>\n<p>Slutresultatet av allt detta m\u00f6jliggjorde lanseringen <i>simple_pjsua<\/i> och att ringa via v\u00e5r server. Och sedan \u00e4ven genom andra servrar som sip.linphone.org.<\/p>\n<h3>Slutsatser<\/h3>\n<p>\nResultatet blev en fungerande l\u00f6sning <i>simple_pjsua<\/i> med r\u00f6st\u00f6verf\u00f6ring i b\u00e5da riktningarna via servern. Problemet med de ytterligare 128 Kb SDRAM kan l\u00f6sas genom att anv\u00e4nda en n\u00e5got kraftfullare Cortex-M7 (till exempel STM32F769NI med 512 Kb RAM), men vi har fortfarande inte gett upp hoppet att f\u00e5 plats med 256 Kb \ud83d\ude42 Vi skulle vara glada om n\u00e5gon \u00e4r intresserad, eller \u00e4nnu b\u00e4ttre \u2014 testar. Alla k\u00e4llkoder finns som vanligt i v\u00e5r <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\">f\u00f6rr\u00e5det<\/a><\/noindex>.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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 alla. F\u00f6r en tid sedan skrev vi om hur vi lyckades starta en SIP-telefon p\u00e5 STM32F4-Discovery med 1 Mb.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/37916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=37916"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37916\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=37916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=37916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=37916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}