История изменений
Исправление SZT, (текущая версия) :
Сколько у Вас в итоге получилось потребление ОЗУ, если не секрет? Я к тому, что в SIP телефоне должны быть реализованны как минимум две подсистемы, IP стек и аудио подсистема (вход выход). обе эти подсистемы требуют буферов. Добавляем к этому все остальное, многозадачность, синхронизация, какая то файловая подсистема и так далее.
Оно там еще не закончено до конца, да и там не совсем SIP, в качестве сигнального протокола применяется (S)MQTT, но вообще это можно и на SIP сделать, просто не люблю я парсить текстовые протоколы.
Ну в целом там как получается - есть звуковой чип, он по I2S отдает звук с микрофона и одновременно воспроизводит (притом с DMA), передача звуковых семплов в кодек из контроллера и передача из кодека в микроконтроллер происходит синхронно, там еще два кольцевых буфера, один под микрофон, другой под то что надо воспроизвести. В обработчике прерываний от I2S он напрямую читается-пишется. Еще есть поток, который периодически мониторит кольцевой буфер с семплами от микрофона, и если на буфере с микрофона накопилось достаточно байтов чтоб его в RTP отправить по сети, он берет и отправляет (хотя наверное в обработчике прерываний можно что-то такое хитрое сделать, чтоб планировщик сразу же по выходу из прерывания прыгал куда надо, но это сложно). Ну и там когда прилетает RTP пакет, срабатывает код который его записывает в очередь на воспроизведение с динамика.
какая то файловая подсистема и так далее.
Какая-то файловая подсистема тут по-моему совершенно не требуется
Исправление SZT, :
Сколько у Вас в итоге получилось потребление ОЗУ, если не секрет? Я к тому, что в SIP телефоне должны быть реализованны как минимум две подсистемы, IP стек и аудио подсистема (вход выход). обе эти подсистемы требуют буферов. Добавляем к этому все остальное, многозадачность, синхронизация, какая то файловая подсистема и так далее.
Оно там еще не закончено до конца, да и там не совсем SIP, в качестве сигнального протокода применяется (S)MQTT, но вообще это можно и на SIP сделать, просто не люблю я парсить текстовые протоколы.
Ну в целом там как получаеся - есть звуковой чип, он по I2S отдает звук с микрофона и одновременно воспроизводит (притом с DMA), передача звуковых семплов в кодек из контроллера и передача из кодека в микроконтроллер происходит синхронно, там еще два кольцевых буфера, один под микрофон, другой под то что надо воспроизвести. В обработчике прерываний от I2S он напрямую читается-пишется. Еще есть поток, который периодически мониторит кольцевой буфер с семплами от микрофона, и если на микрофоне накопилось достаточно байтов чтоб его в RTP отправить по сети, он берет и отправляет (хотя наверное в обработчике прерываний можно что-то такое хитрое сделать, чтоб планировщик сразу же по выходу из прерывания прыгал куда надо, но это сложно). Ну и там когда прилетает RTP пакет, срабатывает код который его записывает в очередь на воспроизведение с динамика.
какая то файловая подсистема и так далее.
Какая-то файловая подсистема тут по-моему совершенно не требуется
Исправление SZT, :
Сколько у Вас в итоге получилось потребление ОЗУ, если не секрет? Я к тому, что в SIP телефоне должны быть реализованны как минимум две подсистемы, IP стек и аудио подсистема (вход выход). обе эти подсистемы требуют буферов. Добавляем к этому все остальное, многозадачность, синхронизация, какая то файловая подсистема и так далее.
Оно там еще не закончено до конца, да и там не совсем SIP, в качестве сигнального протокода применяется MQTT(S), но вообще это можно и на SIP сделать, просто не люблю я парсить текстовые протоколы.
Ну в целом там как получаеся - есть звуковой чип, он по I2S отдает звук с микрофона и одновременно воспроизводит (притом с DMA), передача звуковых семплов в кодек из контроллера и передача из кодека в микроконтроллер происходит синхронно, там еще два кольцевых буфера, один под микрофон, другой под то что надо воспроизвести. В обработчике прерываний от I2S он напрямую читается-пишется. Еще есть поток, который периодически мониторит кольцевой буфер с семплами от микрофона, и если на микрофоне накопилось достаточно байтов чтоб его в RTP отправить по сети, он берет и отправляет (хотя наверное в обработчике прерываний можно что-то такое хитрое сделать, чтоб планировщик сразу же по выходу из прерывания прыгал куда надо, но это сложно). Ну и там когда прилетает RTP пакет, срабатывает код который его записывает в очередь на воспроизведение с динамика.
какая то файловая подсистема и так далее.
Какая-то файловая подсистема тут по-моему совершенно не требуется
Исправление SZT, :
Сколько у Вас в итоге получилось потребление ОЗУ, если не секрет? Я к тому, что в SIP телефоне должны быть реализованны как минимум две подсистемы, IP стек и аудио подсистема (вход выход). обе эти подсистемы требуют буферов. Добавляем к этому все остальное, многозадачность, синхронизация, какая то файловая подсистема и так далее.
Оно там еще не закончено до конца, да и там не совсем SIP, в качестве сигнального протокода применяется MQTT(S), но вообще это можно и на SIP сделать, просто не люблю я парсить текстовые протоколы.
Ну в целом там как получаеся - есть звуковой чип, он по I2S отдает звук с микрофона и одновременно воспроизводит (притом с DMA), передача звуковых семплов в кодек из контроллера и передача из кодека в микроконтроллер происходит синхронно, там еще два кольцевых буфера, один под микрофон, другой под то что надо воспроизвести. В обработчике прерываний от I2S он напрямую читается-пишется. Еще есть поток, который периодически мониторит кольцевой буфер с семплами от микрофона, и если на микрофоне накопилось достаточно байтов чтоб его в RTP отправить по сети, он берет и отправляет (хотя наверное в обработчике прерываний можно что-то такое хитрое сделать, чтоб планировщик сразу же по выходу из прерывания прыгал куда надо, но это сложно). Ну и там когда прилетает RTP пакет, срабатывает код который его записывает в очередь на воспроизведение с динамика.
какая то файловая подсистема и так далее.
Какая-то файловая система по-моему совершенно не требуется.
Исходная версия SZT, :
Сколько у Вас в итоге получилось потребление ОЗУ, если не секрет? Я к тому, что в SIP телефоне должны быть реализованны как минимум две подсистемы, IP стек и аудио подсистема (вход выход). обе эти подсистемы требуют буферов. Добавляем к этому все остальное, многозадачность, синхронизация, какая то файловая подсистема и так далее.
Оно там еще не закончено до конца, да и там не совсем SIP, в качестве сигнального протокода применяется MQTT(S), но вообще это можно и на SIP сделать, просто не люблю я парсить текстовые протоколы.
Ну в целом там как получаеся - есть звуковой чип, он по I2S отдает звук с микрофона и одновременно воспроизводит (притом с DMA), передача звуковых семплов в кодек из контроллера и передача из кодека в микроконтроллер происходит синхронно, там еще два кольцевых буфера, один под микрофон, другой под то что надо воспроизвести. В обработчике прерываний от I2S он напрямую читается-пишется. Еще есть поток, который периодически мониторит кольцевой буфер с семплами от микрофона, и если на микрофоне накопилось достаточно байтов чтоб его в RTP отправить по сети, он берет и отправляет (хотя наверное в обработчике прерываний можно что-то такое хитрое сделать, чтоб планировщик сразу же по выходу из прерывания прыгал куда надо, но это сложно). Ну и там когда прилетает RTP пакет, срабатывает код который его записывает в очередь на воспроизведение с динамика.