SIP xov tooj ntawm STM32F7-Discovery

Nyob zoo txhua tus.

Ib pliag dhau los peb sau tau hais txog yuav ua li cas peb tau tswj kom tso lub xov tooj SIP ntawm STM32F4-Discovery nrog 1 MB ROM thiab 192 KB RAM) raws li Embox. Ntawm no nws yuav tsum tau hais tias cov version ntawd tsawg heev thiab txuas ob lub xov tooj ncaj qha yam tsis muaj lub server thiab nrog lub suab xa mus rau ib qho kev taw qhia xwb. Yog li ntawd, peb tau txiav txim siab tso lub xov tooj ua tiav ntau dua nrog kev hu los ntawm lub server, lub suab xa mus rau ob qho tib si, tab sis tib lub sijhawm khaws cia nyob rau hauv qhov tsawg tshaj plaws lub cim xeeb.


Rau lub xov tooj, nws tau txiav txim siab xaiv ib daim ntawv thov simple_pjsua raws li ib feem ntawm lub tsev qiv ntawv PJSIP. Qhov no yog ib daim ntawv thov tsawg kawg nkaus uas tuaj yeem tso npe rau ntawm lub server, txais thiab teb hu. Hauv qab no kuv yuav muab cov lus piav qhia ntawm yuav ua li cas khiav nws ntawm STM32F7-Discovery.

Yuav ua li cas khiav

  1. Configuring Embox
    make confload-platform/pjsip/stm32f7cube
  2. Teem SIP tus account uas yuav tsum tau ua hauv cov ntaub ntawv conf/mods.config.
    
    include platform.pjsip.cmd.simple_pjsua_imported(
        sip_domain="server", 
        sip_user="username",
        sip_passwd="password")
    

    qhov twg neeg rau zaub mov yog SIP server (piv txwv li, sip.linphone.org), username ΠΈ lo lus zais - tus account username thiab password.

  3. Sib sau Embox ua ib pab neeg ua. Hais txog board firmware peb muaj wiki thiab nyob rau hauv Tshooj.
  4. Khiav "simple_pjsua_imported" hais kom ua hauv 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. Thaum kawg, nws tseem yuav ntxig cov hais lus lossis lub mloog pob ntseg rau hauv lub suab tso zis, thiab hais lus rau ob lub MEMS me me ntawm ib sab ntawm cov zaub. Peb hu los ntawm Linux los ntawm daim ntawv thov simple_pjsua, pjsua. Zoo, lossis koj tuaj yeem siv lwm hom linphone.

Tag nrho cov no tau piav qhia ntawm peb wiki.

Peb tau mus li cas

Yog li, thawj zaug cov lus nug tshwm sim txog kev xaiv lub hardware platform. Txij li nws tau pom tseeb tias STM32F4-Discovery yuav tsis haum los ntawm kev nco, STM32F7-Discovery tau xaiv. Nws muaj 1 MB flash drive thiab 256 KB ntawm RAM (+ 64 tshwj xeeb ceev ceev, uas peb kuj yuav siv). Tsis tas li ntawd ntau heev rau kev hu los ntawm lub server, tab sis peb txiav txim siab los sim ua kom haum.

Raws li rau lawv tus kheej, txoj haujlwm tau muab faib ua ntau theem:

  • Khiav PJSIP ntawm QEMU. Nws yooj yim rau kev debugging, ntxiv rau peb twb muaj kev txhawb nqa rau AC97 codec nyob ntawd.
  • Lub suab kaw thiab ua si ntawm QEMU thiab ntawm STM32.
  • Porting ib daim ntawv thov simple_pjsua los ntawm PJSIP. Nws tso cai rau koj sau npe ntawm SIP server thiab hu xov tooj.
  • Xa koj tus kheej lub hnub qub-raws li server thiab sim rau nws, tom qab ntawd sim lwm tus xws li sip.linphone.org

Suab hauv Embox ua haujlwm los ntawm Portaudio, uas tseem siv hauv PISIP. Thawj qhov teeb meem tshwm sim ntawm QEMU - WAV ua si zoo ntawm 44100 Hz, tab sis ntawm 8000 ib yam dab tsi kom meej meej mus lawm. Nws muab tawm tias nws yog ib qho teeb meem ntawm kev teeb tsa zaus - los ntawm lub neej ntawd nws yog 44100 hauv cov khoom siv, thiab qhov no tsis hloov pauv raws li qhov programmatically.

Ntawm no, tej zaum, nws tsim nyog piav me ntsis seb lub suab ua si li cas. Daim npav suab tuaj yeem raug teeb tsa rau qee qhov taw qhia rau ib qho ntawm lub cim xeeb uas koj xav ua si lossis kaw ntawm qhov zaus tau txiav txim siab. Tom qab qhov tsis tiav, qhov kev cuam tshuam raug tsim tawm thiab kev ua tiav txuas ntxiv nrog rau qhov tsis sib xws. Qhov tseeb yog tias cov buffers no yuav tsum tau sau ua ntej thaum yav dhau los ua si. Peb yuav ntsib qhov teeb meem no ntxiv ntawm STM32F7.

Tom ntej no, peb xauj ib lub server thiab xa Asterisk rau nws. Txij li thaum nws yog ib qho tsim nyog yuav tsum tau debug ntau, tab sis kuv tsis xav hais lus rau hauv lub microphone ntau, nws yog qhov yuav tsum tau ua kom tsis siv neeg playback thiab kaw. Ua li no, peb patched simple_pjsua kom koj plam cov ntaub ntawv es tsis txhob siv lub suab. Hauv PJSIP, qhov no yog ua tiav yooj yim, txij li lawv muaj lub tswv yim ntawm qhov chaw nres nkoj, uas tuaj yeem yog lub cuab yeej lossis cov ntaub ntawv. Thiab cov chaw nres nkoj no tuaj yeem hloov pauv mus rau lwm qhov chaw nres nkoj. Koj tuaj yeem pom cov lej hauv peb pjsip chaw khaws cia. Yog li ntawd, cov txheej txheem tau ua raws li hauv qab no. Ntawm Asterisk neeg rau zaub mov, kuv pib ob tus account - rau Linux thiab rau Embox. Tom ntej no, cov lus txib tau ua tiav ntawm Embox simple_pjsua_imported, Embox tau sau npe rau ntawm lub server, tom qab ntawd peb hu Embox los ntawm Linux. Thaum lub sijhawm kev sib txuas, peb tshawb xyuas ntawm Asterisk server tias qhov kev sib txuas tau tsim, thiab tom qab ib ntus peb yuav tsum hnov ​​suab los ntawm Linux hauv Embox, thiab hauv Linux peb khaws cov ntaub ntawv uas tau ua los ntawm Embox.

Tom qab nws ua haujlwm ntawm QEMU, peb tau tsiv mus rau qhov chaw nres nkoj rau STM32F7-Discovery. Thawj qhov teeb meem yog tias lawv tsis haum rau 1 MB ntawm ROM yam tsis muaj kev ua kom zoo tshaj plaws compiler "-Os" rau qhov loj ntawm daim duab. Tias yog vim li cas peb suav nrog "-Os". Tsis tas li ntawd, thaj ua rau tsis taus kev txhawb nqa rau C ++, yog li nws tsuas yog xav tau rau pjsua, thiab peb siv simple_pjsua.

Tom qab muab tso rau simple_pjsua, txiav txim siab tias tam sim no muaj lub sijhawm los tso nws. Tab sis ua ntej nws yog ib qho tsim nyog yuav tsum tau ua nrog cov kaw lus thiab playback ntawm lub suab. Lo lus nug yog qhov twg sau? Peb xaiv lub cim xeeb sab nraud - SDRAM (128 MB). Koj tuaj yeem sim qhov no koj tus kheej:

Tsim lub tso suab WAV nrog zaus ntawm 16000 Hz thiab lub sijhawm ntawm 10 vib nas this:


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

Peb poob:


play -m C0000000

Muaj ob qhov teeb meem ntawm no. Thawj nrog lub codec - WM8994 yog siv, thiab nws muaj xws li ib tug ntau yam li ib lub qhov, thiab muaj 4 ntawm cov slots. Yog li, los ntawm lub neej ntawd, yog tsis configured, ces thaum ua si suab, playback tshwm sim nyob rau hauv tag nrho plaub slots. . Yog li ntawd, ntawm qhov zaus ntawm 16000 Hz, peb tau txais 8000 Hz, tab sis rau 8000 Hz, playback tsuas tsis ua haujlwm. Thaum tsuas yog qhov 0 thiab 2 raug xaiv, nws ua haujlwm raws li nws yuav tsum tau ua. Lwm qhov teeb meem yog lub suab interface hauv STM32Cube, uas lub suab tso tawm ua haujlwm ntawm SAI (Serial Audio Interface) synchronously nrog lub suab tawm tswv yim (Kuv tsis tau nkag siab cov ntsiab lus, tab sis nws hloov tawm tias lawv sib koom lub moos thiab thaum lub lub suab tso zis yog pib, suab yog qee yam txuas rau nws nkag). Ntawd yog, koj tsis tuaj yeem khiav lawv sib cais, yog li peb tau ua hauv qab no - lub suab tawm tswv yim thiab lub suab tso tawm ib txwm ua haujlwm (xws li kev cuam tshuam tau tsim). Tab sis thaum tsis muaj dab tsi tab tom ua si hauv qhov system, ces peb tsuas yog plam qhov khoob khoob rau hauv lub suab tso tawm, thiab thaum pib playback, peb ua siab ncaj pib sau nws.

Tsis tas li ntawd, peb tau ntsib qhov tseeb tias lub suab thaum lub suab kaw tau ntsiag to heev. Qhov no yog vim qhov tseeb tias MEMS microphones ntawm STM32F7-Discovery qee yam tsis ua haujlwm zoo ntawm cov zaus hauv qab 16000 Hz. Yog li ntawd, peb teem 16000 Hz, txawm tias 8000 Hz los. Txhawm rau ua qhov no, txawm li cas los xij, nws yog qhov yuav tsum tau ntxiv software hloov dua siab tshiab ntawm ib zaus mus rau lwm qhov.

Tom ntej no, kuv yuav tsum tau nce qhov loj ntawm cov heap, uas yog nyob rau hauv RAM. Raws li peb cov kev suav, pjsip xav tau txog 190 KB, thiab peb tsuas muaj li 100 KB sab laug. Ntawm no kuv yuav tsum tau siv qee lub cim xeeb sab nraud - SDRAM (txog 128 KB).

Tom qab tag nrho cov kev hloov kho no, kuv pom thawj pob ntawm Linux thiab Embox, thiab kuv tau hnov ​​lub suab! Tab sis lub suab txaus ntshai, tsis yog tib yam li ntawm QEMU, nws tsis tuaj yeem ua dab tsi. Tom qab ntawd peb xav txog dab tsi yuav yog qhov teeb meem. Kev debugging tau pom tias Embox tsuas yog tsis muaj sijhawm los sau / tshem tawm suab buffers. Thaum pjsip tab tom ua ib lub thav duab, 2 cuam tshuam muaj sij hawm tshwm sim txog qhov ua tiav ntawm kev ua tsis tiav, uas yog ntau dhau. Thawj qhov kev xav rau kev ceev yog compiler optimization, tab sis nws twb muaj nyob rau hauv PJSIP. Qhov thib ob yog lub hardware floating point, peb tham txog nws nyob rau hauv Tshooj. Tab sis raws li kev xyaum tau pom, FPU tsis tau ua kom muaj kev nrawm nrawm. Cov kauj ruam tom ntej yog los ua qhov tseem ceeb ntawm cov xov. Embox muaj cov tswv yim teem sijhawm sib txawv, thiab kuv tau suav nrog ib qho uas txhawb nqa qhov tseem ceeb thiab teeb tsa cov kwj suab rau qhov tseem ceeb tshaj plaws. Qhov no kuj tsis pab.

Lub tswv yim tom ntej yog tias peb tab tom ua haujlwm nrog kev nco sab nraud thiab nws yuav zoo rau kev txav cov qauv nyob ntawd uas tau nkag mus rau ntau zaus. Kuv tau ua qhov kev ntsuam xyuas ua ntej ntawm thaum twg thiab nyob rau hauv dab tsi simple_pjsua faib kev nco. Nws muab tawm tias tawm ntawm 190 Kb, thawj 90 Kb tau faib rau cov kev xav tau sab hauv ntawm PJSIP thiab lawv tsis nkag mus ntau zaus. Tsis tas li ntawd, thaum lub sij hawm hu tuaj, pjsua_call_answer muaj nuj nqi hu ua, nyob rau hauv uas buffers tau muab faib rau kev ua hauj lwm nrog cov khoom nkag thiab tawm. Nws tseem yog 100 Kb. Thiab tom qab ntawd peb tau ua cov hauv qab no. Txog thaum lub sijhawm hu, peb muab cov ntaub ntawv tso rau hauv lub cim xeeb sab nraud. Thaum hu, peb tam sim hloov lub heap nrog lwm tus - hauv RAM. Yog li, tag nrho cov ntaub ntawv "kub" raug xa mus rau nrawm dua thiab nco tau ntau dua.

Yog li ntawd, tag nrho cov no ua ke ua rau nws muaj peev xwm tso tawm simple_pjsua thiab hu los ntawm koj lub server. Thiab tom qab ntawd los ntawm lwm cov servers xws li sip.linphone.org.

tshawb pom

Raws li qhov tshwm sim, nws tau tso tawm simple_pjsua nrog lub suab xa mus rau ob qho tib si cov lus qhia los ntawm lub server. Qhov teeb meem nrog ntxiv siv 128 KB ntawm SDRAM tuaj yeem daws tau los ntawm kev siv lub zog me ntsis Cortex-M7 (piv txwv li, STM32F769NI nrog 512 KB ntawm RAM), tab sis tib lub sijhawm, peb tseem tsis tau tso kev cia siab kom nkag mus rau 256. KB πŸ™‚ Peb yuav zoo siab yog tias ib tug neeg txaus siab, Los yog zoo dua, sim nws. Txhua qhov chaw, raws li niaj zaus, muaj nyob hauv peb chaw khaws cia.

Tau qhov twg los: www.hab.com

Ntxiv ib saib