{"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\/es\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","title":{"rendered":"Tel\u00e9fono SIP en STM32F7-Discovery","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hola a todos.<\/p>\n<p>Hace alg\u00fan tiempo, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/259721\">hemos escrito<\/a><\/noindex> discutimos c\u00f3mo logramos ejecutar un tel\u00e9fono SIP en STM32F4-Discovery con 1 MB de ROM y 192 KB de RAM, basado en <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\">Embox<\/a><\/noindex>. Es importante mencionar que esa versi\u00f3n era m\u00ednima y conectaba dos tel\u00e9fonos directamente sin servidor y con transmisi\u00f3n de voz solo en una direcci\u00f3n. As\u00ed que decidimos lanzar un tel\u00e9fono m\u00e1s completo, con llamadas a trav\u00e9s de un servidor y transmisi\u00f3n de voz en ambas direcciones, pero tratando de utilizar la menor cantidad de memoria posible.<\/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=\"Reproducir 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 \/>\nPara el tel\u00e9fono, decidimos elegir la aplicaci\u00f3n <i>simple_pjsua<\/i> que forma parte de la biblioteca PJSIP. Esta es una aplicaci\u00f3n m\u00ednima que puede registrarse en un servidor, recibir y hacer llamadas. A continuaci\u00f3n, proporcionar\u00e9 una descripci\u00f3n de c\u00f3mo ejecutarla en STM32F7-Discovery.<\/p>\n<h3>C\u00f3mo ejecutar<\/h3>\n<p><\/p>\n<ol>\n<li> Configuramos Embox\n<pre><code class=\"bash\">make confload-platform\/pjsip\/stm32f7cube<\/code><\/pre>\n<\/li>\n<li>En el archivo conf\/mods.config, configuramos la cuenta SIP necesaria.\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>\ndonde <i>servidor<\/i> \u2014 es el servidor SIP (por ejemplo, sip.linphone.org), <i>username<\/i> y <i>password<\/i> \u2014 el nombre de usuario y la contrase\u00f1a de la cuenta.\n<\/li>\n<li>Compilamos Embox con el comando <i>make<\/i>. Tenemos informaci\u00f3n sobre la programaci\u00f3n de la placa en <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\/wiki\/Running-Embox-on-STM32xxDiscovery\">wiki<\/a><\/noindex> y en <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/349034\/\">el art\u00edculo<\/a><\/noindex>.\n<\/li>\n<li>Ejecutamos en la consola de Embox el comando \u201csimple_pjsua_imported\u201d\n<pre><code class=\"bash\">\n00:00:12.870    pjsua_acc.c  ....El estado de salida SIP para el acc 0 no est\u00e1 activo\n00:00:12.884    pjsua_acc.c  ....sip:alexk2222@sip.linphone.org: registro exitoso, estado=200 (Registro exitoso)\n00:00:12.911    pjsua_acc.c  ....Temporizador de mantenimiento iniciado para acc 0, destino:91.121.209.194:5060, intervalo:15s\n<\/code><\/pre>\n<p>\n<\/li>\n<li>Finalmente, solo queda conectar los altavoces o auriculares a la salida de audio y hablar en dos peque\u00f1os micr\u00f3fonos MEMS cerca de la pantalla. Llamamos desde Linux a trav\u00e9s de la aplicaci\u00f3n simple_pjsua, pjsua. O se puede usar cualquier otra como linphone.\n<\/li>\n<\/ol>\n<p>\nTodo esto est\u00e1 descrito en nuestro <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\/wiki\/AUDIO-on-STM32\">wiki<\/a><\/noindex>.<\/p>\n<h3>C\u00f3mo llegamos a esto<\/h3>\n<p>\nAs\u00ed que, inicialmente, surgi\u00f3 la cuesti\u00f3n de elegir la plataforma de hardware. Dado que estaba claro que STM32F4-Discovery no funcionar\u00eda debido a la memoria, se eligi\u00f3 STM32F7-Discovery. Tiene 1 MB de memoria flash y 256 KB de RAM (+ 64 KB de memoria r\u00e1pida especial, que tambi\u00e9n utilizaremos). No es mucho para llamadas a trav\u00e9s de un servidor, pero decidimos intentarlo.<\/p>\n<p>Condicionalmente, dividimos la tarea en varias etapas:<\/p>\n<ul>\n<li>Ejecutar PJSIP en QEMU. Esto fue conveniente para depuraci\u00f3n, adem\u00e1s ya ten\u00edamos soporte para el c\u00f3dec AC97. <\/li>\n<li>Grabaci\u00f3n de voz y reproducci\u00f3n en QEMU y en STM32. <\/li>\n<li> Portar la aplicaci\u00f3n <i>simple_pjsua<\/i> que forma parte de PJSIP. Permite registrarse en un servidor SIP y realizar llamadas. <\/li>\n<li>Desplegar nuestro propio servidor basado en Asterisk y probar en \u00e9l, despu\u00e9s de lo cual intentar con externos como sip.linphone.org. <\/li>\n<\/ul>\n<p>\nEl sonido en Embox funciona a trav\u00e9s de Portaudio, que tambi\u00e9n se utiliza en PISIP. En QEMU surgieron los primeros problemas: los archivos WAV se reproduc\u00edan bien a 44100 Hz, pero a 8000 algo claramente no estaba bien. Result\u00f3 que el problema era la configuraci\u00f3n de frecuencia: por defecto en el hardware era 44100, y esto no se cambiaba program\u00e1ticamente. <\/p>\n<p>Aqu\u00ed, probablemente, valga la pena aclarar un poco c\u00f3mo se produce la reproducci\u00f3n del sonido. Se puede establecer un puntero en la tarjeta de sonido hacia un bloque de memoria desde el cual se debe reproducir o grabar a una frecuencia previamente establecida. Una vez que el b\u00fafer se agota, se genera una interrupci\u00f3n y la ejecuci\u00f3n contin\u00faa desde el siguiente b\u00fafer. El asunto es que estos b\u00faferes deben llenarse con anticipaci\u00f3n mientras se reproduce el anterior. Este problema tambi\u00e9n lo encontraremos m\u00e1s adelante en STM32F7. <\/p>\n<p>A continuaci\u00f3n, alquilamos un servidor y desplegamos Asterisk en \u00e9l. Como hab\u00eda mucho que depurar y no quer\u00edamos hablar demasiado por el micr\u00f3fono, necesit\u00e1bamos implementar reproducci\u00f3n y grabaci\u00f3n autom\u00e1ticas. Para ello, parcheamos simple_pjsua para poder insertar archivos en lugar de dispositivos de audio. En PJSIP esto se hace de manera bastante sencilla, ya que tienen el concepto de puerto, que puede ser tanto un dispositivo como un archivo. Y estos puertos se pueden conectar de forma flexible a otros puertos. Puedes ver el c\u00f3digo en nuestro pjsip. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/pjsip\">el repositorio<\/a><\/noindex>Como resultado, el esquema fue el siguiente. En el servidor Asterisk cre\u00e9 dos cuentas: una para Linux y otra para Embox. Luego en Embox se ejecuta el comando <i>simple_pjsua_imported<\/i>, Embox se registra en el servidor, despu\u00e9s de lo cual hacemos una llamada desde Linux a Embox. En el momento de la conexi\u00f3n, comprobamos en el servidor Asterisk que toda la conexi\u00f3n est\u00e1 establecida, y despu\u00e9s de un tiempo debemos escuchar en Embox el sonido desde Linux, mientras que en Linux guardamos el archivo que se reproduce desde Embox.<\/p>\n<p>Despu\u00e9s de que esto funcion\u00f3 en QEMU, pasamos a la portaci\u00f3n a STM32F7-Discovery. El primer problema fue que no entr\u00e1bamos en 1 MB de ROM sin activar la optimizaci\u00f3n del compilador \u201c-Os\u201d por el tama\u00f1o de la imagen. Por lo tanto, activamos \u201c-Os\u201d. Luego, mediante un parche, desactivamos el soporte para C++, que solo se necesita para pjsua, mientras que nosotros usamos simple_pjsua. <\/p>\n<p>Despu\u00e9s de que lo acomodamos <i>simple_pjsua<\/i>, decidimos que ahora hab\u00eda posibilidades de ejecutarlo. Pero primero ten\u00edamos que resolver el problema de grabaci\u00f3n y reproducci\u00f3n de voz. La pregunta es: \u00bfd\u00f3nde grabar? Elegimos la memoria externa: SDRAM (128 MB). Puedes probarlo t\u00fa mismo:<\/p>\n<p>Se crear\u00e1 un WAV est\u00e9reo con una frecuencia de 16000 Hz y una duraci\u00f3n de 10 segundos:<\/p>\n<pre><code class=\"bash\">\nrecord -r 16000 -c 2 -d 10000 -m C0000000\n<\/code><\/pre>\n<p>\nReproduciendo:<\/p>\n<pre><code class=\"bash\">\nplay -m C0000000\n<\/code><\/pre>\n<p>\nAqu\u00ed surgieron dos problemas. El primero estaba relacionado con el c\u00f3dec: se utiliza WM8994, y hay un concepto llamado slot, y hay 4 de estos slots. Por defecto, si no se configura, la reproducci\u00f3n de audio se realiza en los cuatro slots. Por lo tanto, a una frecuencia de 16000 Hz obten\u00edamos 8000 Hz, y para 8000 Hz la reproducci\u00f3n simplemente no funcionaba. Al elegir solo los slots 0 y 2, funcion\u00f3 como era debido. Otro problema fue la interfaz de audio en STM32Cube, donde la salida de audio funciona a trav\u00e9s de SAI (Serial Audio Interface) de manera s\u00edncrona con la entrada de audio (no profundic\u00e9 en los detalles, pero parece que comparten un reloj com\u00fan y, al inicializar la salida de audio, de alguna manera se vincula a la entrada de audio). Es decir, no se pueden iniciar por separado, por lo que hicimos lo siguiente: la entrada y salida de audio siempre est\u00e1n activas (incluyendo la generaci\u00f3n de interrupciones). Pero cuando no se reproduce nada en el sistema, simplemente proporcionamos un b\u00fafer vac\u00edo a la salida de audio, y cuando se inicia la reproducci\u00f3n, comenzamos a llenarlo correctamente.<\/p>\n<p>A continuaci\u00f3n, nos encontramos con que el sonido al grabar la voz era muy bajo. Esto sucede porque los micr\u00f3fonos MEMS en STM32F7-Discovery funcionan mal a frecuencias inferiores a 16000 Hz. Por lo tanto, configuramos 16000 Hz, incluso si llega a 8000 Hz. Para ello, de hecho, fue necesario agregar una conversi\u00f3n de frecuencia de audio a otra.<\/p>\n<p>Luego tuvimos que aumentar el tama\u00f1o del heap que se ubica en la RAM. Seg\u00fan nuestros c\u00e1lculos, pjsip requer\u00eda alrededor de 190 Kb, y nosotros ten\u00edamos solo unos 100 Kb. Aqu\u00ed fue necesario utilizar un poco de memoria externa: SDRAM (alrededor de 128 Kb).<\/p>\n<p>Despu\u00e9s de todas estas correcciones, vi los primeros paquetes entre Linux y Embox, \u00a1y escuch\u00e9 sonido! Pero el sonido era horrible, nada parecido al de QEMU, no se pod\u00eda entender nada. Entonces, nos preguntamos cu\u00e1l podr\u00eda ser el problema. La depuraci\u00f3n mostr\u00f3 que Embox simplemente no logra llenar\/descargar los b\u00faferes de audio. Mientras pjsip procesa un marco, ocurren 2 interrupciones de finalizaci\u00f3n del procesamiento de b\u00faferes, lo que es demasiado. La primera idea para acelerar fue la optimizaci\u00f3n del compilador, pero ya estaba habilitada en PJSIP. La segunda - la coma flotante por hardware, de la cual hablamos en <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/418295\">el art\u00edculo<\/a><\/noindex>. Pero como ha demostrado la pr\u00e1ctica, la FPU no ofreci\u00f3 un aumento significativo en la velocidad. El siguiente paso fue establecer prioridades para los flujos. En Embox hay diferentes estrategias de programaci\u00f3n, y activ\u00e9 la que soporta prioridades, asignando la m\u00e1xima prioridad a los flujos de audio. Esto tampoco ayud\u00f3.<\/p>\n<p>La siguiente idea fue que trabajamos con memoria externa y ser\u00eda bueno mover all\u00ed las estructuras a las que se accede con mucha frecuencia. Hice un an\u00e1lisis preliminar de cu\u00e1ndo y para qu\u00e9 <i>simple_pjsua<\/i> se asigna memoria. Result\u00f3 que de 190 Kb, los primeros 90 Kb se asignan para las necesidades internas de PJSIP y no se accede a ellos con frecuencia. Luego, durante una llamada entrante, se llama a la funci\u00f3n pjsua_call_answer, donde se asignan los buffers para trabajar con los frames entrantes y salientes. Esto fue alrededor de 100 Kb m\u00e1s. Y aqu\u00ed procederemos de la siguiente manera. Hasta el momento de la llamada, los datos se ubican en memoria externa. Una vez que hay una llamada, se sustituye inmediatamente el heap por otro en RAM. De este modo, todos los datos \u201ccalientes\u201d se trasladan a una memoria m\u00e1s r\u00e1pida y predecible.<\/p>\n<p>Al final, todo esto permiti\u00f3 iniciar <i>simple_pjsua<\/i> y llamar a trav\u00e9s de nuestro servidor. Luego tambi\u00e9n a trav\u00e9s de otros servidores como sip.linphone.org.<\/p>\n<h3>Conclusiones<\/h3>\n<p>\nComo resultado, logramos iniciar <i>simple_pjsua<\/i> con la transmisi\u00f3n de voz en ambas direcciones a trav\u00e9s del servidor. El problema de los 128 Kb SDRAM adicionales se puede resolver utilizando un Cortex-M7 un poco m\u00e1s potente (por ejemplo, STM32F769NI con 512 Kb de RAM), pero a\u00fan no hemos perdido la esperanza de entrar en 256 Kb \ud83d\ude42 Estaremos encantados si alguien est\u00e1 interesado, y mejor a\u00fan, si lo intenta. Todo el c\u00f3digo fuente, como siempre, est\u00e1 en nuestro <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\">el repositorio<\/a><\/noindex>.<br \/>\n<br \/>Fuente: <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.2 - 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\/es\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47Tel\u00e9fono SIP en STM32F7-Discovery | ProHoster","description":"Hola a todos. Hace un tiempo, escribimos sobre c\u00f3mo logramos iniciar un tel\u00e9fono SIP en el STM32F4-Discovery con 1 Mb.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/37916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=37916"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/37916\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=37916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=37916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=37916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}