STM32F7-Discovery์˜ SIP ์ „ํ™”

์•ˆ๋…• ๋ชจ๋‘

์–ผ๋งˆ ์ „ ์šฐ๋ฆฌ ะฟะธัะฐะปะธ 32MB ROM ๋ฐ 4KB RAM์„ ์‚ฌ์šฉํ•˜์—ฌ STM1F192-Discovery์—์„œ SIP ์ „ํ™”๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์— ๋ฐ•์Šค. ์—ฌ๊ธฐ์—์„œ ๊ทธ ๋ฒ„์ „์€ ์ตœ์†Œํ•œ์ด์—ˆ๊ณ  ์„œ๋ฒ„ ์—†์ด ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์Œ์„ฑ ์ „์†ก์ด ๊ฐ€๋Šฅํ•œ ๋‘ ๋Œ€์˜ ์ „ํ™”๋ฅผ ์ง์ ‘ ์—ฐ๊ฒฐํ–ˆ๋‹ค๊ณ  ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์„œ๋ฒ„๋ฅผ ํ†ตํ•œ ํ†ตํ™”, ์–‘๋ฐฉํ–ฅ ์Œ์„ฑ ์ „์†ก์„ ํ†ตํ•ด ๋ณด๋‹ค ์™„๋ฒฝํ•œ ์ „ํ™”๋ฅผ ์ถœ์‹œํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์ง€๋งŒ ๋™์‹œ์— ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ์ž‘์€ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.


์ „ํ™”์˜ ๊ฒฝ์šฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์„ ํƒํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. simple_pjsua PJSIP ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ผ๋ถ€๋กœ. ์ด๊ฒƒ์€ ์„œ๋ฒ„์— ๋“ฑ๋กํ•˜๊ณ  ์ „ํ™”๋ฅผ ๋ฐ›๊ณ  ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œํ•œ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ STM32F7-Discovery์—์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ฆ‰์‹œ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰ ๋ฐฉ๋ฒ•

  1. ์— ๋ฐ•์Šค ๊ตฌ์„ฑ
    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๋ฅผ ํŒ€์œผ๋กœ ๊ตฌ์„ฑํ•˜๊ธฐ ํ™•์ธ. ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณด๋“œ ํŽŒ์›จ์–ด ์ •๋ณด ์œ„ํ‚ค ๊ณผ ๊ธฐ์‚ฌ.
  4. Embox ์ฝ˜์†”์—์„œ "simple_pjsua_imported" ๋ช…๋ น ์‹คํ–‰
    
    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 ๋งˆ์ดํฌ์— ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ simple_pjsua, pjsua๋ฅผ ํ†ตํ•ด Linux์—์„œ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ธ€์Ž„, ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์ „ํ™”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์€ ์šฐ๋ฆฌ์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค ์œ„ํ‚ค.

์šฐ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ๊ฑฐ๊ธฐ์— ๋„์ฐฉ ํ–ˆ์Šต๋‹ˆ๊นŒ?

๋”ฐ๋ผ์„œ ์ฒ˜์Œ์—๋Š” ํ•˜๋“œ์›จ์–ด ํ”Œ๋žซํผ ์„ ํƒ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. STM32F4-Discovery๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— STM32F7-Discovery๊ฐ€ ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋…€๋Š” 1MB ํ”Œ๋ž˜์‹œ ๋“œ๋ผ์ด๋ธŒ์™€ 256KB RAM (+ 64 ํŠน์ˆ˜ ๊ณ ์† ๋ฉ”๋ชจ๋ฆฌ, ์šฐ๋ฆฌ๋„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž„)์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•œ ํ˜ธ์ถœ์ด ๋งŽ์ง€๋Š” ์•Š์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๋งž์ถฐ๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์กฐ๊ฑด๋ถ€๋กœ ์ž‘์—…์€ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  • QEMU์—์„œ PJSIP ์‹คํ–‰. ๋””๋ฒ„๊น…์— ํŽธ๋ฆฌํ–ˆ๊ณ  ์ด๋ฏธ AC97 ์ฝ”๋ฑ์„ ์ง€์›ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • QEMU ๋ฐ STM32์—์„œ ์Œ์„ฑ ๋…น์Œ ๋ฐ ์žฌ์ƒ.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํฌํŒ… simple_pjsua PJSIP์—์„œ. SIP ์„œ๋ฒ„์— ๋“ฑ๋กํ•˜๊ณ  ์ „ํ™”๋ฅผ ๊ฑธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ณ ์œ ํ•œ Asterisk ๊ธฐ๋ฐ˜ ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•œ ๋‹ค์Œ sip.linphone.org์™€ ๊ฐ™์€ ์™ธ๋ถ€ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์‹ญ์‹œ์˜ค.

Embox์˜ ์‚ฌ์šด๋“œ๋Š” PISIP์—์„œ๋„ ์‚ฌ์šฉ๋˜๋Š” Portaudio๋ฅผ ํ†ตํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” QEMU์—์„œ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. WAV๋Š” 44100Hz์—์„œ ์ž˜ ์žฌ์ƒ๋˜์—ˆ์ง€๋งŒ 8000Hz์—์„œ๋Š” ๋ถ„๋ช…ํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ฃผํŒŒ์ˆ˜ ์„ค์ •์˜ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์žฅ๋น„์—์„œ 44100์ด์—ˆ๊ณ  ์ด๊ฒƒ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์†Œ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์žฌ์ƒ๋˜๋Š”์ง€ ์กฐ๊ธˆ ์„ค๋ช…ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šด๋“œ ์นด๋“œ๋Š” ๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ ์ฃผํŒŒ์ˆ˜๋กœ ์žฌ์ƒํ•˜๊ฑฐ๋‚˜ ๋…น์Œํ•˜๋ ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„ํผ๊ฐ€ ๋๋‚˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๋‹ค์Œ ๋ฒ„ํผ์—์„œ ์‹คํ–‰์ด ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ด๋Ÿฌํ•œ ๋ฒ„ํผ๋Š” ์ด์ „ ๋ฒ„ํผ๊ฐ€ ์žฌ์ƒ๋˜๋Š” ๋™์•ˆ ๋ฏธ๋ฆฌ ์ฑ„์›Œ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” STM32F7์—์„œ ์ด ๋ฌธ์ œ์— ๋” ์ง๋ฉดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ ์„œ๋ฒ„๋ฅผ ์ž„๋Œ€ํ•˜๊ณ  Asterisk๋ฅผ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊น…์ด ๋งŽ์ด ํ•„์š”ํ–ˆ์ง€๋งŒ ๋งˆ์ดํฌ์— ๋Œ€๊ณ  ๋ณ„๋กœ ๋งํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™ ์žฌ์ƒ ๋ฐ ๋…น์Œ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์˜ค๋””์˜ค ์žฅ์น˜ ๋Œ€์‹  ํŒŒ์ผ์„ ์Šฌ๋ฆฝํ•  ์ˆ˜ ์žˆ๋„๋ก simple_pjsua๋ฅผ ํŒจ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. PJSIP์—์„œ๋Š” ์žฅ์น˜๋‚˜ ํŒŒ์ผ์ด ๋  ์ˆ˜ ์žˆ๋Š” ํฌํŠธ ๊ฐœ๋…์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ํฌํŠธ๋Š” ๋‹ค๋ฅธ ํฌํŠธ์— ์œ ์—ฐํ•˜๊ฒŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. pjsip์—์„œ ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์žฅ์†Œ. ๊ทธ ๊ฒฐ๊ณผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณ„ํš์„ ์„ธ์› ๋‹ค. Asterisk ์„œ๋ฒ„์—์„œ ์ €๋Š” Linux์šฉ๊ณผ Embox์šฉ์œผ๋กœ ๋‘ ๊ฐœ์˜ ๊ณ„์ •์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ Embox์—์„œ ๋ช…๋ น์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. simple_pjsua_imported, Embox๋Š” ์„œ๋ฒ„์— ๋“ฑ๋ก๋œ ํ›„ Linux์—์„œ Embox๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ๋˜๋Š” ์ˆœ๊ฐ„ Asterisk ์„œ๋ฒ„์—์„œ ์—ฐ๊ฒฐ์ด ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ž ์‹œ ํ›„ Embox์—์„œ Linux์—์„œ ์†Œ๋ฆฌ๊ฐ€ ๋“ค๋ฆฌ๊ณ  Linux์—์„œ๋Š” Embox์—์„œ ์žฌ์ƒ๋˜๋Š” ํŒŒ์ผ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

QEMU์—์„œ ์ž‘์—…ํ•œ ํ›„ STM32F7-Discovery๋กœ ํฌํŒ…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” ์ด๋ฏธ์ง€ ํฌ๊ธฐ์— ๋Œ€ํ•ด ํ™œ์„ฑํ™”๋œ ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™” "-Os" ์—†์ด๋Š” 1MB ROM์— ๋งž์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ "-Os"๋ฅผ ํฌํ•จ์‹œํ‚จ ์ด์œ ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ํŒจ์น˜๋Š” C ++์— ๋Œ€ํ•œ ์ง€์›์„ ๋น„ํ™œ์„ฑํ™”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— pjsua์—๋งŒ ํ•„์š”ํ•˜๋ฉฐ simple_pjsua๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐ์น˜ ํ›„ simple_pjsua, ์ด์ œ ์‹œ์ž‘ํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋จผ์ € ์Œ์„ฑ ๋…น์Œ ๋ฐ ์žฌ์ƒ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์–ด๋””์— ์“ธ ๊ฒƒ์ธ๊ฐ€? ์šฐ๋ฆฌ๋Š” ์™ธ๋ถ€ ๋ฉ”๋ชจ๋ฆฌ์ธ SDRAM(128MB)์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง์ ‘ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผํŒŒ์ˆ˜๊ฐ€ 16000Hz์ด๊ณ  ์ง€์† ์‹œ๊ฐ„์ด 10์ดˆ์ธ ์Šคํ…Œ๋ ˆ์˜ค WAV๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.


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

์šฐ๋ฆฌ๋Š” ์žƒ๋Š”๋‹ค:


play -m C0000000

์—ฌ๊ธฐ์—๋Š” ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ฝ”๋ฑ์ธ WM8994๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์Šฌ๋กฏ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ๊ณ  ์ด๋Ÿฐ ์Šฌ๋กฏ์ด 4๊ฐœ ์žˆ์–ด์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๊ฒƒ์ด ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ์˜ค๋””์˜ค ์žฌ์ƒ ์‹œ 16000๊ฐœ ์Šฌ๋กฏ ๋ชจ๋‘์—์„œ ์žฌ์ƒ์ด ๋ฉ๋‹ˆ๋‹ค. . ๋”ฐ๋ผ์„œ 8000Hz์˜ ์ฃผํŒŒ์ˆ˜์—์„œ 8000Hz๋ฅผ ์ˆ˜์‹ ํ–ˆ์ง€๋งŒ 0Hz์˜ ๊ฒฝ์šฐ ์žฌ์ƒ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์Šฌ๋กฏ 2๊ณผ 32๋งŒ ์„ ํƒํ•˜๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” STMXNUMXCube์˜ ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค์˜€๋Š”๋ฐ ์˜ค๋””์˜ค ์ถœ๋ ฅ์ด ์˜ค๋””์˜ค ์ž…๋ ฅ๊ณผ ๋™์‹œ์— SAI(Serial Audio Interface)๋ฅผ ํ†ตํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ์ง€๋งŒ ๊ณตํ†ต ํด๋Ÿญ์„ ๊ณต์œ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์˜ค๋””์˜ค ์ถœ๋ ฅ์ด ์ดˆ๊ธฐํ™”๋˜๊ณ  ์˜ค๋””์˜ค๊ฐ€ ์ž…๊ตฌ์— ์—ฐ๊ฒฐ๋จ). ์ฆ‰, ๋ณ„๋„๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์˜ค๋””์˜ค ์ž…๋ ฅ ๋ฐ ์˜ค๋””์˜ค ์ถœ๋ ฅ์ด ํ•ญ์ƒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(์ธํ„ฐ๋ŸฝํŠธ ์ƒ์„ฑ ํฌํ•จ). ๊ทธ๋Ÿฌ๋‚˜ ์‹œ์Šคํ…œ์—์„œ ์•„๋ฌด ๊ฒƒ๋„ ์žฌ์ƒ๋˜์ง€ ์•Š์„ ๋•Œ ๋นˆ ๋ฒ„ํผ๋ฅผ ์˜ค๋””์˜ค ์ถœ๋ ฅ์— ์‚ฝ์ž…ํ•˜๊ณ  ์žฌ์ƒ์ด ์‹œ์ž‘๋˜๋ฉด ์ •์งํ•˜๊ฒŒ ์ฑ„์šฐ๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์Œ์„ฑ ๋…น์Œ ์‹œ ์†Œ๋ฆฌ๊ฐ€ ๋งค์šฐ ์กฐ์šฉํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” STM32F7-Discovery์˜ MEMS ๋งˆ์ดํฌ๊ฐ€ 16000Hz ๋ฏธ๋งŒ์˜ ์ฃผํŒŒ์ˆ˜์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 16000Hz๊ฐ€ ์˜ค๋”๋ผ๋„ 8000Hz๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ํ•œ ์ฃผํŒŒ์ˆ˜๋ฅผ ๋‹ค๋ฅธ ์ฃผํŒŒ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ RAM์— ์žˆ๋Š” ํž™์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ ค์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์‚ฐ์— ๋”ฐ๋ฅด๋ฉด pjsip์—๋Š” ์•ฝ 190KB๊ฐ€ ํ•„์š”ํ–ˆ๊ณ  ์•ฝ 100KB๋งŒ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์™ธ๋ถ€ ๋ฉ”๋ชจ๋ฆฌ์ธ SDRAM(์•ฝ 128KB)์„ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ํŽธ์ง‘ ํ›„์— Linux์™€ Embox ์‚ฌ์ด์˜ ์ฒซ ๋ฒˆ์งธ ํŒจํ‚ค์ง€๋ฅผ ๋ณด์•˜๊ณ  ์†Œ๋ฆฌ๋ฅผ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ ์†Œ๋ฆฌ๋Š” ๋”์ฐํ–ˆ๊ณ  QEMU์™€ ์ „ํ˜€ ๊ฐ™์ง€ ์•Š์•˜์œผ๋ฉฐ ์•„๋ฌด๊ฒƒ๋„ ์•Œ์•„๋‚ผ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊น… ๊ฒฐ๊ณผ Embox์— ์˜ค๋””์˜ค ๋ฒ„ํผ๋ฅผ ์ฑ„์šฐ๊ฑฐ๋‚˜ ์–ธ๋กœ๋“œํ•  ์‹œ๊ฐ„์ด ์—†๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. pjsip์ด ํ•œ ํ”„๋ ˆ์ž„์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ ๋ฒ„ํผ ์ฒ˜๋ฆฌ ์™„๋ฃŒ์— ๋Œ€ํ•ด 2๊ฐœ์˜ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. ์†๋„์— ๋Œ€ํ•œ ์ฒซ ๋ฒˆ์งธ ์ƒ๊ฐ์€ ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™”์˜€์ง€๋งŒ ์ด๋ฏธ PJSIP์— ํฌํ•จ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋Š” ํ•˜๋“œ์›จ์–ด ๋ถ€๋™ ์†Œ์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์Šต์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด FPU๋Š” ์†๋„๋ฅผ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ์Šค๋ ˆ๋“œ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. Embox์—๋Š” ๋‹ค์–‘ํ•œ ์Šค์ผ€์ค„๋ง ์ „๋žต์ด ์žˆ์œผ๋ฉฐ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์›ํ•˜๊ณ  ์˜ค๋””์˜ค ์ŠคํŠธ๋ฆผ์„ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋กœ ์„ค์ •ํ•˜๋Š” ์ „๋žต์„ ํฌํ•จํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ๋„ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์•„์ด๋””์–ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ์™ธ๋ถ€ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ๊ณ  ๋งค์šฐ ์ž์ฃผ ์•ก์„ธ์Šค๋˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ทธ๊ณณ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์–ธ์ œ, ๋ฌด์—‡์— ๋Œ€ํ•œ ์˜ˆ๋น„ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. simple_pjsua ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. 190Kb ์ค‘ ์ฒ˜์Œ 90Kb๋Š” PJSIP์˜ ๋‚ด๋ถ€ ์š”๊ตฌ ์‚ฌํ•ญ์— ํ• ๋‹น๋˜์—ˆ์œผ๋ฉฐ ์ž์ฃผ ์•ก์„ธ์Šค๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ˆ˜์‹  ํ˜ธ์ถœ ์ค‘์— pjsua_call_answer ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ์ˆ˜์‹  ๋ฐ ๋ฐœ์‹  ํ”„๋ ˆ์ž„ ์ž‘์—…์„ ์œ„ํ•ด ๋ฒ„ํผ๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์•ฝ 100Kb์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ „ํ™”๊ฐ€ ์˜ค๋Š” ์ˆœ๊ฐ„๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ถœํ•˜์ž๋งˆ์ž ํž™์„ RAM์˜ ๋‹ค๋ฅธ ํž™์œผ๋กœ ์ฆ‰์‹œ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  "ํ•ซ" ๋ฐ์ดํ„ฐ๋Š” ๋” ๋น ๋ฅด๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ์ด ๋ชจ๋“  ๊ฒƒ์ด ํ•จ๊ป˜ ์ถœ์‹œ ๋  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. simple_pjsua ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ sip.linphone.org์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด.

์กฐ์‚ฌ ๊ฒฐ๊ณผ

๊ทธ ๊ฒฐ๊ณผ ๋ฐœ์‚ฌ๊ฐ€ ๊ฐ€๋Šฅํ–ˆ๋‹ค. simple_pjsua ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์Œ์„ฑ ์ „์†ก. 128KB์˜ SDRAM์„ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๋Š” ์•ฝ๊ฐ„ ๋” ๊ฐ•๋ ฅํ•œ Cortex-M7(์˜ˆ: 32KB RAM์˜ STM769F512NI)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋™์‹œ์— ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ 256์— ๋„๋‹ฌํ•  ํฌ๋ง์„ ํฌ๊ธฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. KB ๐Ÿ™‚ ๋ˆ„๊ตฐ๊ฐ€ ๊ด€์‹ฌ์„ ๊ฐ€์ ธ ์ฃผ์‹œ๋ฉด ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์‹œ๋„ํ•ด๋ณด์‹ญ์‹œ์˜ค. ํ‰์†Œ์™€ ๊ฐ™์ด ๋ชจ๋“  ์ถœ์ฒ˜๋Š” ์ €์žฅ์†Œ.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€