เป‚เบ—เบฅเบฐเบชเบฑเบš SIP เปƒเบ™ STM32F7-Discovery

เบชเบฐเบšเบฒเบเบ”เบตเบ—เบธเบเป†เบ—เปˆเบฒเบ™.

เบ„เบฒเบง เปœเบถเปˆเบ‡ เบžเบงเบเป€เบฎเบปเบฒ wrote เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฑเบ”เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเป‚เบ—เบฅเบฐเบชเบฑเบš SIP เปƒเบ™ STM32F4-Discovery เบเบฑเบš 1 MB ROM เปเบฅเบฐ 192 KB RAM) เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ Embox. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบกเบฑเบ™เบ•เป‰เบญเบ‡เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบชเบฐเบšเบฑเบšเบ™เบตเป‰เปเบกเปˆเบ™เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เปเบฅเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเบญเบ‡เป‚เบ—เบฅเบฐเบชเบฑเบšเป‚เบ”เบเบเบปเบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบฅเบฐเบกเบตเบเบฒเบ™เบชเบปเปˆเบ‡เบชเบฝเบ‡เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบ”เบฝเบง. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบ›เบตเบ”เบ•เบปเบงเป‚เบ—เบฅเบฐเบชเบฑเบšเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เบเบงเปˆเบฒเบ”เป‰เบงเบเบเบฒเบ™เป‚เบ—เบซเบฒเบœเปˆเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบเบฒเบ™เบชเบปเปˆเบ‡เบชเบฝเบ‡เปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบ—เบดเบ”เบ—เบฒเบ‡, เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เป€เบซเบกเบฒเบฐเบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”.


เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบฅเบทเบญเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบ—เบฅเบฐเบชเบฑเบš simple_pjsua เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” PJSIP. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบฎเบฑเบšเปเบฅเบฐเบฎเบฑเบšเบชเบฒเบ. เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเปƒเบซเป‰เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ™เบตเป‰เปƒเบ™ STM32F7-Discovery เบ—เบฑเบ™เบ—เบต.

เบงเบดเบ—เบตเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง

  1. เบเบณเบฅเบฑเบ‡เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Embox
    make confload-platform/pjsip/stm32f7cube
  2. เปƒเบ™เป„เบŸเบฅเปŒ conf/mods.config เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบŠเบต SIP เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™.
    
    include platform.pjsip.cmd.simple_pjsua_imported(
        sip_domain="server", 
        sip_user="username",
        sip_passwd="password")
    

    เบšเปˆเบญเบ™เบ—เบตเปˆ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบต SIP (เบ•เบปเบงเบขเปˆเบฒเบ‡, sip.linphone.org), เบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰ ะธ เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™ โ€” เบŠเบทเปˆโ€‹เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹เปเบฅเบฐโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบœเปˆเบฒเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบšเบฑเบ™โ€‹เบŠเบตโ€‹.

  3. เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบเบญเบš Embox เบเบฑเบšเบ—เบตเบกเบ‡เบฒเบ™ เป€เบฎเบฑเบ”เปƒเบซเป‰. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบš board firmware เบขเบนเปˆ wiki เปเบฅเบฐเปƒเบ™ เบšเบปเบ”เบ„เบงเบฒเบก.
  4. เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ โ€œsimple_pjsua_importedโ€ เปƒเบ™ Embox console
    
    00:00:12.870    pjsua_acc.c  ....SIP outbound status for acc 0 is not active
    00:00:12.884    pjsua_acc.c  ....sip:[email protected]: registration success, status=200 (Registration succes
    00:00:12.911    pjsua_acc.c  ....Keep-alive timer started for acc 0, destination:91.121.209.194:5060, interval:15s
    

  5. เบชเบธเบ”เบ—เป‰เบฒเบ, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เบเบฒเบ™เปƒเบชเปˆเบฅเปเบฒเป‚เบžเบ‡เบซเบผเบทเบซเบนเบŸเบฑเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบชเบฝเบ‡, เปเบฅเบฐเป€เบงเบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบญเบ‡เป„เบกเป‚เบ„เป‚เบŸเบ™ MEMS เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบขเบนเปˆเบ‚เป‰เบฒเบ‡เบˆเปเบชเบฐเปเบ”เบ‡เบœเบปเบ™. เบžเบงเบเป€เบฎเบปเบฒเป‚เบ—เบซเบฒเบˆเบฒเบ Linux เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ simple_pjsua, pjsua. เบ”เบต, เบซเบผเบทเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ›เบฐเป€เบžเบ”เบญเบทเปˆเบ™เป†เบ‚เบญเบ‡ linphone.

เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เปเบกเปˆเบ™เป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเบขเบนเปˆเปƒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ wiki.

เบžเบงเบเป€เบฎเบปเบฒเบกเบฒเบ—เบตเปˆเบ™เบตเป‰เป„เบ”เป‰เปเบ™เบงเปƒเบ”

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฅเบทเบญเบเป€เบงเบ—เบตเบฎเบฒเบ”เปเบง. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒ STM32F4-Discovery เบˆเบฐเบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, STM32F7-Discovery เป„เบ”เป‰เบ–เบทเบเป€เบฅเบทเบญเบ. เบ™เบฒเบ‡เบกเบต flash drive 1 MB เปเบฅเบฐ 256 KB เบ‚เบญเบ‡ RAM (+ 64 เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเป„เบงเบžเบดเป€เบชเบ”, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เป€เบŠเบฑเปˆเบ™เบเบฑเบ™). เบกเบฑเบ™เบเบฑเบ‡เบšเปเปˆเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ—เบœเปˆเบฒเบ™เป€เบŠเบตเบšเป€เบงเบต, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเป€เบ‚เบปเป‰เบฒ.

เบ•เบฒเบกเบ—เปเบฒเบกเบฐเบ”เบฒ, เบงเบฝเบเบ‡เบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบซเบผเบฒเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™:

  • เปเบฅเปˆเบ™ PJSIP เปƒเบ™ QEMU. เบกเบฑเบ™เบชเบฐเบ”เบงเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เบตเบšเบฑเบ, เบšเบงเบเบเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ•เบปเบงเปเบ›เบ‡เบชเบฑเบ™เบเบฒเบ™ AC97 เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™.
  • เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบชเบฝเบ‡ เปเบฅเบฐเบซเบผเบดเป‰เบ™เบ„เบทเบ™เปƒเบ™ QEMU เปเบฅเบฐ STM32.
  • Porting เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ simple_pjsua เบˆเบฒเบ PJSIP. เบกเบฑเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ SIP เปเบฅเบฐเป‚เบ—เบญเบญเบ.
  • เบ™เบณเปƒเบŠเป‰เป€เบŠเบตเบšเป€เบงเบตเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเป€เบญเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบฎเบนเบšเบ”เบฒเบง เปเบฅเบฐเบ—เบปเบ”เบชเบญเบšเบกเบฑเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบฅเบญเบ‡เปƒเบŠเป‰เบžเบฒเบเบ™เบญเบเป€เบŠเบฑเปˆเบ™ sip.linphone.org

เบชเบฝเบ‡เปƒเบ™ Embox เป€เบฎเบฑเบ”เบงเบฝเบเบœเปˆเบฒเบ™ Portaudio, เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เบ–เบทเบเปƒเบŠเป‰เปƒเบ™ PISIP. เบšเบฑเบ™เบซเบฒเบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ QEMU - WAVs เบ–เบทเบเบซเบผเบตเป‰เบ™เป„เบ”เป‰เบ”เบตเบขเบนเปˆเบ—เบตเปˆ 44100 Hz, เปเบ•เปˆเบขเบนเปˆเบ—เบตเปˆ 8000 เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™. เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบงเปˆเบฒเบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ„เบงเบฒเบกเบ–เบตเปˆ - เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบกเบฑเบ™เปเบกเปˆเบ™ 44100, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ™เบตเป‰เปƒเบ™เบŠเบญเบšเปเบง.

เบ—เบตเปˆเบ™เบตเป‰, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบเป€เบฅเบฑเบเบ™เป‰เบญเบเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบชเบฝเบ‡เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›. เปเบœเปˆเบ™เบชเบฝเบ‡เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบšเบฒเบ‡เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบซเบผเบดเป‰เบ™เบซเบผเบทเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เบ„เบงเบฒเบกเบ–เบตเปˆเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒ. เบซเบผเบฑเบ‡เบˆเบฒเบ buffer เปเบปเบ”, เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฑเบ‡เบชเบทเบšเบ•เปเปˆเบˆเบฒเบ buffer เบ•เปเปˆเป„เบ›. เบˆเบธเบ”เปเบกเปˆเบ™เบงเปˆเบฒ buffers เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบ•เบตเบกเบฅเบปเบ‡เป„เบ›เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบญเบฑเบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเปเบกเปˆเบ™เป„เบ”เป‰เบ–เบทเบเบซเบผเบตเป‰เบ™. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบžเบปเบšเบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบ•เบทเปˆเบกเบญเบตเบเปƒเบ™ STM32F7.

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบปเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰ Asterisk เปƒเบชเปˆเบกเบฑเบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบกเบตเบเบฒเบ™เบ”เบตเบšเบฑเปŠเบเบซเบผเบฒเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”, เปเบฅเบฐเบ‚เป‰เบญเบเบšเปเปˆเบขเบฒเบเป€เบงเบปเป‰เบฒเบซเบผเบฒเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบกเป‚เบ„เบฃเป‚เบŸเบ™, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฒเบ™เบซเบผเบดเป‰เบ™เปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒ patched simple_pjsua เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปƒเบชเปˆเป„เบŸเบฅเปŒเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบญเบธเบ›เบฐเบเบญเบ™เบชเบฝเบ‡. เปƒเบ™ PJSIP เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ, เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบกเบตเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบžเบญเบ”, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบญเบธเบ›เบฐเบเบญเบ™เบซเบผเบทเป„เบŸเบฅเปŒ. เปเบฅเบฐเบžเบญเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบขเปˆเบฒเบ‡เบเบทเบ”เบซเบเบธเปˆเบ™เบเบฑเบšเบžเบญเบ”เบญเบทเปˆเบ™เป†. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เปƒเบ™ pjsip เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ เบ„เบฑเบ‡เป€เบเบฑเบšเบกเป‰เบฝเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบ›เบฑเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰. เบ‚เป‰เบญเบเบชเป‰เบฒเบ‡เบชเบญเบ‡เบšเบฑเบ™เบŠเบตเปƒเบ™เป€เบŠเบตเบšเป€เบงเบต Asterisk - เบชเปเบฒเบฅเบฑเบš Linux เปเบฅเบฐ Embox. เบ•เปเปˆเป„เบ›, เบ„เปเบฒเบชเบฑเปˆเบ‡เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™ Embox simple_pjsua_เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ, Embox เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป‚เบ—เบซเบฒ Embox เบˆเบฒเบ Linux. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Asterisk เบงเปˆเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบšเบฒเบ‡เป€เบงเบฅเบฒเบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เบˆเบฐเป„เบ”เป‰เบเบดเบ™เบชเบฝเบ‡เบˆเบฒเบ Linux เปƒเบ™ Embox, เปเบฅเบฐเปƒเบ™ Linux เบžเบงเบเป€เบฎเบปเบฒเบšเบฑเบ™เบ—เบถเบเป„เบŸเบฅเปŒเบ—เบตเปˆเบซเบผเบดเป‰เบ™เบˆเบฒเบ Embox.

เป€เบกเบทเปˆเบญเบญเบฑเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™ QEMU, เบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบเป„เบ›เปƒเบชเปˆเบกเบฑเบ™เปƒเบชเปˆ STM32F7-Discovery. เบšเบฑเบ™เบซเบฒเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบซเบกเบฒเบฐเบเบฑเบš 1 MB เบ‚เบญเบ‡ ROM เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ "-Os" compiler optimization เบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบฎเบนเบšเบžเบฒเบšเป€เบ›เบตเบ”. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบฅเบงเบกเป€เบญเบปเบฒ "-Os". เบ•เปเปˆเป„เบ›, patch disabled เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš C ++, เบชเบฐเบ™เบฑเป‰เบ™เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบš pjsua, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ simple_pjsua.

เบซเบผเบฑเบ‡เบˆเบฒเบเบงเบฒเบ‡ simple_pjsua, เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒเบ•เบญเบ™เบ™เบตเป‰เบกเบตเป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเบกเบฑเบ™. เปเบ•เปˆเบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบ„เบดเบ”เบญเบญเบเบงเบดเบ—เบตเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเปเบฅเบฐเบซเบผเบดเป‰เบ™เบชเบฝเบ‡เบ„เบทเบ™. เบ„เปเบฒเบ–เบฒเบก: เบšเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™? เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบžเบฒเบเบ™เบญเบ - SDRAM (128 MB). เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ—เบปเบ”โ€‹เบฅเบญเบ‡โ€‹เบ”เป‰เบงเบโ€‹เบ•เบปเบงโ€‹เบ—เปˆเบฒเบ™โ€‹เป€เบญเบ‡โ€‹:

เบˆเบฐเบชเป‰เบฒเบ‡ WAV stereo เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบ–เบตเปˆ 16000 Hz เปเบฅเบฐเป„เบฅเบเบฐเป€เบงเบฅเบฒ 10 เบงเบดเบ™เบฒเบ—เบต:


record -r 16000 -c 2 -d 10000 -m C0000000

เบžเบงเบเป€เบฎเบปเบฒเบชเบนเบ™เป€เบชเบ:


play -m C0000000

เบกเบตเบšเบฑเบ™เบซเบฒเบชเบญเบ‡เบญเบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบเบฑเบšเบ•เบปเบงเปเบ›เบ‡เบชเบฑเบ™เบเบฒเบ™ - WM8994 เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เปเบฅเบฐเบกเบฑเบ™เบกเบตเบชเบดเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบ›เบฑเบ™เบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡, เปเบฅเบฐเบกเบต 4 เบ‚เบญเบ‡เบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบซเบผเบดเป‰เบ™เบชเบฝเบ‡, เบเบฒเบ™เบซเบผเบดเป‰เบ™เบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ” เบชเบตเปˆเบŠเปˆเบญเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เบ„เบงเบฒเบกเบ–เบตเปˆเบ‚เบญเบ‡ 16000 Hz เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš 8000 Hz, เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบซเบผเบดเป‰เบ™ 8000 Hz เบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบ. เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบเบžเบฝเบ‡เปเบ•เปˆเบŠเปˆเบญเบ‡ 0 เปเบฅเบฐ 2, เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰. เบšเบฑเบ™เบซเบฒเบญเบตเบเบ›เบฐเบเบฒเบ™เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบชเบฝเบ‡เปƒเบ™ STM32Cube, เป€เบŠเบดเปˆเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบชเบฝเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบœเปˆเบฒเบ™ SAI (Serial Audio Interface) synchronously เบเบฑเบšเบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบชเบฝเบ‡ (เบ‚เป‰เบญเบเบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบฅเบฒเบเบฅเบฐเบญเบฝเบ”, เปเบ•เปˆเบกเบฑเบ™เบ›เบฒเบเบปเบ”เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเปเบšเปˆเบ‡เบ›เบฑเบ™เป‚เบกเบ‡เบ—เบปเปˆเบงเป„เบ›เปเบฅเบฐเป€เบกเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบชเบฝเบ‡โ€‹, เบชเบฝเบ‡ somehow เบœเบนเบโ€‹เบžเบฑเบ™โ€‹เบเบฑเบšโ€‹เบกเบฑเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹)โ€‹. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰ - เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบชเบฝเบ‡เปเบฅเบฐเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบชเบฝเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบชเบฐเป€เบซเบกเบต (เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เปเบกเปˆเบ™เบชเป‰เบฒเบ‡). เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบš, เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเป€เบฅเบทเปˆเบญเบ™ buffer เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบชเบฝเบ‡, เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ playback เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบŠเบทเปˆเบชเบฑเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ•เบทเปˆเบกเบกเบฑเบ™.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบปเบšเบเบฑเบšเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบชเบฝเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบšเบฑเบ™เบ—เบถเบเบชเบฝเบ‡เปเบกเปˆเบ™เบ‡เบฝเบšเบซเบผเบฒเบ. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ™เบทเปˆเบญเบ‡เบกเบฒเบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเป„เบกเป‚เบ„เบฃเป‚เบŸเบ™ MEMS เปƒเบ™ STM32F7-Discovery somehow เป€เบฎเบฑเบ”เบงเบฝเบเบšเปเปˆเบ”เบตเปƒเบ™เบ„เบงเบฒเบกเบ–เบตเปˆเบ•เปˆเปเบฒเบเบงเปˆเบฒ 16000 Hz. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเป‰เบ‡เบกเบฑเบ™เป€เบ›เบฑเบ™ 16000 Hz, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ 8000 Hz เบกเบฒเบฎเบญเบ”. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบกเบเบฒเบ™เปเบ›เบ‡เบŠเบญเบšเปเบงเบ‚เบญเบ‡เบ„เบงเบฒเบกเบ–เบตเปˆเบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบญเบตเบ.

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบกเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ heap, เป€เบŠเบดเปˆเบ‡เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™ RAM. เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, pjsip เบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฐเบกเบฒเบ™ 190 KB, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเบกเบฒเบ™ 100 KB เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบžเบฒเบเบ™เบญเบเป€เบฅเบฑเบเบ™เป‰เบญเบ - SDRAM (เบ›เบฐเบกเบฒเบ™ 128 KB).

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบซเบฑเบ™เบŠเบธเบ”เบ—เปเบฒเบญเบดเบ”เบฅเบฐเบซเบงเปˆเบฒเบ‡ Linux เปเบฅเบฐ Embox, เปเบฅเบฐเป„เบ”เป‰เบเบดเบ™เบชเบฝเบ‡! เปเบ•เปˆเบชเบฝเบ‡เปเบกเปˆเบ™เบ‚เบตเป‰เบฎเป‰เบฒเบ, เบšเปเปˆเบ„เบทเบเบฑเบš QEMU, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เป„เบ”เป‰เบเบดเบ™. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบปเบ‡เป„เบชเบงเปˆเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡. Debugging เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ Embox เบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเบกเบตเป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆ / unload buffers เบชเบฝเบ‡. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ pjsip เบเปเบฒเบฅเบฑเบ‡เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบซเบ™เบถเปˆเบ‡เป€เบŸเบฃเบก, 2 เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡ buffer เป„เบ”เป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›. เบ„เบงเบฒเบกเบ„เบดเบ”เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เปเบกเปˆเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เปเบ•เปˆเบงเปˆเบฒเบ™เบฑเป‰เบ™เป„เบ”เป‰เบ–เบทเบเบฅเบงเบกเบขเบนเปˆเปƒเบ™ PJSIP เปเบฅเป‰เบง. เบญเบฑเบ™เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบˆเบธเบ”เบ—เบตเปˆเป€เบฅเบทเปˆเบญเบ™เป„เบ”เป‰เบ‚เบญเบ‡เบฎเบฒเบ”เปเบง, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™ เบšเบปเบ”เบ„เบงเบฒเบก. เปเบ•เปˆเป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™, FPU เบšเปเปˆเป„เบ”เป‰เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเปƒเบ™เบ„เบงเบฒเบกเป„เบง. เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบšเบนโ€‹เบฅเบดโ€‹เบกเบฐโ€‹เบชเบดเบ”โ€‹เบเบฐโ€‹เบ—เบนเป‰โ€‹. Embox เบกเบตเบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เปเบฅเบฐเบ‚เป‰เบญเบเป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เบญเบฑเบ™เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เปเบฅเบฐเปƒเบซเป‰เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบชเบฝเบ‡เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบชเบนเบ‡เบชเบธเบ”. เบญเบฑเบ™เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบŠเปˆเบงเบเบ„เบทเบเบฑเบ™.

เบ„เบงเบฒเบกเบ„เบดเบ”เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบžเบฒเบเบ™เบญเบเปเบฅเบฐเบกเบฑเบ™เบˆเบฐเบ”เบตเบ—เบตเปˆเบˆเบฐเบเป‰เบฒเบเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบฅเบทเป‰เบญเบเป†. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบงเปˆเบฒเป€เบงเบฅเบฒเปƒเบ”เปเบฅเบฐเบžเบฒเบเปƒเบ•เป‰เบญเบฑเบ™เปƒเบ” simple_pjsua เบˆเบฑเบ”เบชเบฑเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ. เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบงเปˆเบฒเบญเบญเบเบˆเบฒเบ 190 KB, 90 KB เบ—เปเบฒเบญเบดเบ”เบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ PJSIP เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบฅเบทเป‰เบญเบเป†. เบ•เปเปˆเป„เบ›, เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป‚เบ—เป€เบ‚เบปเป‰เบฒ, เบŸเบฑเบ‡เบŠเบฑเบ™ pjsua_call_answer เบ–เบทเบเป€เบญเบตเป‰เบ™, เปƒเบ™เบ™เบฑเป‰เบ™ buffers เบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบญเบšเบ‚เบฒเป€เบ‚เบปเป‰เบฒเปเบฅเบฐเบ‚เบฒเบญเบญเบ. เบกเบฑเบ™เบเบฑเบ‡เบ›เบฐเบกเบฒเบ™ 100 KB. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰. เบˆเบปเบ™เบเบงเปˆเบฒเบˆเบฐเป‚เบ—เบญเบญเบ, เบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเบžเบฒเบเบ™เบญเบ. เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบเบฒเบ™เป‚เบ—เบ”เบฑเบ‡เบ‚เบถเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ™เบ—เบตเบ›เปˆเบฝเบ™ heap เบ”เป‰เบงเบเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™ RAM. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เปเป‰เบกเบนเบ™ "เบฎเป‰เบญเบ™" เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบ—เบตเปˆเป„เบงเบ‚เบถเป‰เบ™เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เป€เบ”เบปเบฒเป„เบ”เป‰.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบฎเปˆเบงเบกเบเบฑเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบตเบ”เบ•เบปเบง simple_pjsua เปเบฅเบฐเป‚เบ—เบซเบฒเบœเปˆเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป‚เบ”เบเบœเปˆเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบญเบทเปˆเบ™เป†เป€เบŠเบฑเปˆเบ™ sip.linphone.org.

เบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบš

เปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบกเบฑเบ™เบเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบง simple_pjsua เบ”เป‰เบงเบเบเบฒเบ™เบชเบปเปˆเบ‡เบชเบฝเบ‡เปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบ—เบดเบ”เบ—เบฒเบ‡เบœเปˆเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบกเบต SDRAM เป€เบžเบตเปˆเบกเป€เบ•เบตเบก 128 KB เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰ Cortex-M7 เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบฅเบฑเบเบ™เป‰เบญเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡, STM32F769NI เบเบฑเบš 512 KB เบ‚เบญเบ‡ RAM), เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบ›เบฐเบ–เบดเป‰เบกเบ„เบงเบฒเบกเบซเบงเบฑเบ‡เบ—เบตเปˆเบˆเบฐเป€เบซเบกเบฒเบฐเปƒเบ™ 256 KB :) เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐ เบ”เบตเปƒเบˆเบ–เป‰เบฒเปƒเบœเบชเบปเบ™เปƒเบˆ, เบซเบผเบทเบ”เบตเบเบงเปˆเบฒ, เบฅเบญเบ‡เบกเบฑเบ™. เปเบซเบผเปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”, เบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบด, เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ เบ„เบฑเบ‡เป€เบเบฑเบšเบกเป‰เบฝเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™