Ekwentị SIP na STM32F7-Nchọpụta

Ndewonu onye obula.

A mgbe gara aga anyị dere banyere otu anyị siri were malite ekwentị SIP na STM32F4-Discovery nwere 1 MB ROM na 192 KB RAM) dabere na igbe igbe. N'ebe a, a ghaghị ikwu na ụdị ahụ pere mpe ma jikọọ ekwentị abụọ ozugbo na-enweghị ihe nkesa yana na ntinye olu naanị n'otu ụzọ. Ya mere, anyị kpebiri ịmalite ekwentị zuru oke na oku site na ihe nkesa, nnyefe olu n'akụkụ abụọ ahụ, mana n'otu oge ahụ dabara na nha ebe nchekwa kacha nta.


E kpebiri ịhọrọ ngwa maka ekwentị mfe_pjsua dịka akụkụ nke ọba akwụkwọ PJSIP. Nke a bụ obere ngwa nwere ike ịdebanye aha na sava, nata na zaa oku. N'okpuru ebe a, m ga-enye nkọwa ozugbo otu esi agba ọsọ a na STM32F7-Discovery.

Otu esi malite

  1. Na-ahazi igbe igbe
    make confload-platform/pjsip/stm32f7cube
  2. Na conf/mods.config faịlụ anyị edobere akaụntụ SIP achọrọ.
    
    include platform.pjsip.cmd.simple_pjsua_imported(
        sip_domain="server", 
        sip_user="username",
        sip_passwd="password")
    

    ebe server bụ ihe nkesa SIP (dịka ọmụmaatụ, sip.linphone.org), aha njirimara и password - aha njirimara na paswọọdụ maka akaụntụ ahụ.

  3. Anyị na-ejikọta Embox na otu -eme ka. Anyị nwere ozi gbasara bọọdụ firmware na wiki na na ederede.
  4. Gbaa iwu "simple_pjsua_imported" na njikwa Embox
    
    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. N'ikpeazụ, naanị ihe fọdụrụ bụ itinye ọkà okwu ma ọ bụ ekweisi n'ime mmepụta ọdịyo, ma kwuo okwu n'ime obere igwe MEMS abụọ n'akụkụ ngosi ahụ. Anyị na-akpọ site na Linux site na iji ngwa simple_pjsua, pjsua. Ọfọn, ma ọ bụ ị nwere ike iji ụdị ọ bụla ọzọ nke linphone.

A na-akọwa ihe a niile na anyị wiki.

Kedu ka anyị siri bịa ebe a

Ya mere, na mbụ ajụjụ bilitere banyere ịhọrọ ikpo okwu ngwaike. Ebe ọ bụ na o doro anya na STM32F4-Nchọpụta agaghị adị mma maka ebe nchekwa, a họọrọ STM32F7-Nchọpụta. O nwere 1 MB flash mbanye na 256 KB nke RAM (+ 64 pụrụ iche ngwa ngwa ebe nchekwa, nke anyị ga-eji). Ọ bụghịkwa ọtụtụ oku site na ihe nkesa, ma anyị kpebiri ịgbalị ịbanye.

Dị ka o kwesịrị ịdị, e kewara ọrụ ahụ n'ọtụtụ usoro:

  • Na-agba ọsọ PJSIP na QEMU. Ọ dị mma maka nbipu, gbakwunyere na anyị enweela nkwado maka codec AC97 ebe ahụ.
  • Ndekọ olu na ịkpọghachi na QEMU na STM32.
  • Na-ebubata ngwa ahụ mfe_pjsua sitere na PJSIP. Ọ na-enye gị ohere ịdebanye aha na sava SIP wee kpọọ oku.
  • Wepụ ihe nkesa nke gị dabere na akara mmuke wee nwalee na ya, wee nwaa nke mpụga, dị ka sip.linphone.org

Ụda dị na Embox na-arụ ọrụ site na Portaudio, nke a na-ejikwa na PISIP. Nsogbu mbụ pụtara na QEMU - WAV na-egwuri nke ọma na 44100 Hz, ma na 8000 ihe doro anya na-ezighị ezi. Ọ tụgharịrị na nsogbu ahụ bụ ịtọ ugboro ugboro - na ndabara na akụrụngwa ọ bụ 44100, anyị agbanweghị nke a na ngwanrọ.

N'ebe a, ọ ga-abụ na ọ bara uru ịkọwa ntakịrị banyere otu esi akpọ ụda n'ozuzu ya. Kaadị ụda ahụ nwere ike ịtọ ntụnye ụfọdụ n'otu ebe nchekwa nke ọ ga-adị mkpa ka e kpọọ ya ma ọ bụ dekọọ ya n'ogo a kara aka. Mgbe ihe nchekwa ahụ gwụchara, a na-ewepụta nkwụsị ma na-aga n'ihu site na nchekwa na-esote. Isi ihe bụ na ọ dị mkpa ka ejupụta ihe nchekwa ndị a n'ihu mgbe a na-egwu nke gara aga. Anyị ga-ezute nsogbu a n'ihu na STM32F7.

Ọzọ, anyị gbazitere ihe nkesa wee tinye akara nrịba ama na ya. Ebe ọ bụ na enwere ọtụtụ nbipu ime, na achọghị m ikwu ọtụtụ okwu n'ime igwe okwu, ọ dị mkpa ịmegharị egwu na-akpaghị aka na ndekọ. Iji mee nke a, anyị kpachie simple_pjsua ka anyị nwee ike itinye faịlụ kama itinye ngwaọrụ. Na PJSIP, a na-eme nke a n'ụzọ dị mfe, ebe ha nwere echiche nke ọdụ ụgbọ mmiri, nke nwere ike ịbụ ngwaọrụ ma ọ bụ faịlụ. Enwere ike ijikọ ọdụ ụgbọ mmiri ndị a n'ụzọ dị nro na ọdụ ụgbọ mmiri ndị ọzọ. Ị nwere ike ịlele koodu na pjsip anyị ebe nchekwa. N'ihi ya, atụmatụ ahụ bụ nke a. Emepụtara m akaụntụ abụọ na sava akara ngosi - maka Linux yana maka Embox. Na-esote, a na-eme iwu ahụ na Embox simple_pjsua_ibubata, Embox ndekọ na ihe nkesa, mgbe nke a anyị na-akpọ Embox si Linux. N'oge njikọ, anyị na-elele na ihe nkesa akara ngosi na njikọ niile na-eguzobe, ma mgbe oge ụfọdụ gasịrị, anyị ga-anụ ụda Linux na Embox, na Linux anyị na-echekwa faịlụ a na-egwu na Embox.

Ozugbo nke a na-arụ ọrụ na QEMU, anyị gara n'ihu na-ebufe ya na STM32F7-Discovery. Nsogbu mbụ bụ na anyị enweghị ike ịbanye n'ime 1 MB nke ROM na-enweghị "-Os" nchịkọta mkpokọta maka nha onyonyo enyere. Ya mere, anyị gụnyere "-Os". Na-esote, patch nwere nkwarụ nkwado maka C++, ya mere ọ dị naanị maka pjsua, anyị na-ejikwa simple_pjsua.

Mgbe itinye mfe_pjsua, kpebiri na enwere ohere ugbu a ịmalite ya. Mana anyị ga-ebu ụzọ chọpụta ka esi edekọ na ịkpọghachi olu. Ajụjụ - ebe a ga-ede? Anyị họọrọ mpụga ebe nchekwa - SDRAM (128 MB). Ị nwere ike ịnwale nke a n'onwe gị:

Ọ ga-emepụta WAV stereo nwere ugboro nke 16000 Hz yana oge nke 10 sekọnd:


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

Anyị na-atụfu:


play -m C0000000

Enwere nsogbu abụọ ebe a. Nke mbụ bụ na codec - WM8994 na-eji, na ọ nwere ihe dị otú ahụ dị ka oghere, na e nwere 4 nke oghere ndị a, na ndabara, ma ọ bụrụ na nke a na-adịghị ahazi, mgbe ahụ mgbe na-egwu audio, playback na-eme na niile oghere anọ. Ya mere, na a ugboro nke 16000 Hz anyị nwetara 8000 Hz, ma maka 8000 Hz playback nanị adịghị arụ ọrụ. Mgbe anyị họrọ naanị oghere 0 na 2, ọ rụrụ ọrụ dịka a tụrụ anya ya. Nsogbu ọzọ bụ audio interface na STM32Cube, nke audio mmepụta na-arụ ọrụ site SAI (Serial Audio Interface) synchronously na audio ntinye (Aghọtaghị m nkọwa, ma ọ na-atụgharị na ha na-ekekọrịta a nkịtị elekere na mgbe ịmalite). mmepụta ọdịyo, audio na-agbanye n'ụzọ ọ bụla na ntinye ya). Ya bụ, ọ gaghị ekwe omume ịme ha iche iche, yabụ anyị mere ihe ndị a - ntinye ọdịyo na mmepụta ọdịyo na-arụ ọrụ mgbe niile (gụnyere nkwụsịtụ na-emepụta). Mana ọ bụrụ na ọ nweghị ihe na-egwu na sistemụ ahụ, anyị na-atụba ihe nchekwa efu n'ime mmepụta ọdịyo, ma mgbe ịmaliteghachi, anyị na-amalite imeju ya n'eziokwu.

Mgbe ahụ, anyị zutere eziokwu ahụ bụ na ụda mgbe ị na-edekọ ụda dị jụụ. Nke a bụ n'ihi na eziokwu na MEMS microphones na STM32F7-Discovery n'ụzọ ụfọdụ adịghị arụ ọrụ nke ọma na ugboro ugboro n'okpuru 16000 Hz. Ya mere, anyị na-edozi ya na 16000 Hz, ọ bụrụgodị na 8000 Hz bịarutere. Iji mee nke a, agbanyeghị, ọ dị mkpa ịgbakwunye ntughari ngwanrọ nke otu ugboro gaa na nke ọzọ.

Ọzọ, anyị ga-abawanye nha nke ikpo, nke dị na RAM. Dịka ngụkọ anyị siri dị, pjsip chọrọ ihe dịka 190 KB, naanị ihe dị ka 100 KB hapụrụ anyị. N'ebe a, anyị ga-eji ntakịrị ebe nchekwa mpụga - SDRAM (ihe dịka 128 KB).

Mgbe ndezigharị ndị a niile gasịrị, ahụrụ m ngwugwu mbụ n'etiti Linux na Embox, wee nụ ụda ahụ! Mana ụda ahụ dị egwu, ọ bụghị dịka na QEMU, ọ nweghị ihe a ga-anụ. Mgbe ahụ, anyị nọ na-eche ihe nwere ike ịbụ okwu ahụ. Debugging gosiri na Embox enweghị oge iji mejupụta/bupu ihe nchekwa ọdịyo. Mgbe pjsip na-ahazi otu etiti, 2 kwụsịrị maka mmecha nhazi ihe nchekwa, nke karịrị akarị. Echiche mbụ m maka ịgba ọsọ bụ njikarịcha mkpokọta, mana esonyelarị nke ahụ na PJSIP. Nke abụọ bụ ngwaike na-ese n'elu mmiri, anyị kwuru maka ya ederede. Mana dịka omume gosipụtara, FPU enyeghị mmụba dị ukwuu na ọsọ. Nzọụkwụ ọzọ bụ idobe eri ụzọ. Embox nwere usoro nhazi oge dị iche iche, enyere m onye na-akwado ihe ndị kacha mkpa ma nye iyi iyi ihe kacha mkpa. Nke a enyeghịkwa aka.

Echiche ọzọ bụ na anyị na-eji ebe nchekwa mpụga na-arụ ọrụ na ọ ga-adị mma ịkwaga ihe owuwu ebe ahụ nke a na-enwetakarị. Emere m nyocha izizi nke mgbe na n'okpuru ihe mfe_pjsua na-ekenye ebe nchekwa. Ọ tụgharịrị na n'ime 190 KB, a na-ekenye 90 KB mbụ maka mkpa ime PJSIP na anaghị enweta ya ọtụtụ oge. Na-esote, n'oge oku mbata, a na-akpọ ọrụ pjsua_call_answer, nke a na-ekenyekwa ihe nchekwa maka ịrụ ọrụ na okpokolo agba na-abata na nke na-apụ apụ. Ọ ka dị ihe dịka 100 KB. Ma anyị mere ihe ndị a. Ruo mgbe akpọre oku, echekwara data na ebe nchekwa mpụga. Ozugbo oku na-ada, anyị na-eji nke ọzọ dochie obo ahụ ozugbo. Ya mere, a na-ebufe data "ọkụ" niile na ebe nchekwa ngwa ngwa na karịa.

N'ihi ya, ihe a niile ọnụ kwere ka anyị malite mfe_pjsua ma kpọọ site na ihe nkesa gị. Na site na sava ndị ọzọ dị ka sip.linphone.org.

Nchoputa

N'ikpeazụ ọ ga-ekwe omume ịmalite mfe_pjsua na nnyefe olu n'akụkụ abụọ site na nkesa. Enwere ike idozi nsogbu ahụ na mgbakwunye 128 KB nke SDRAM site na iji Cortex-M7 dị ike karị (dịka ọmụmaatụ, STM32F769NI nwere 512 KB nke RAM), mana anyị ahapụbeghị olileanya nke dabara na 256 KB :) Anyị ga nwee obi ụtọ ma ọ bụrụ na mmadụ nwere mmasị, ma ọ bụ karịa, gbalịa ya. Isi mmalite niile, dị ka ọ dị na mbụ, dị na anyị ebe nchekwa.

isi: www.habr.com

Tinye a comment