Molweni nonke.
Kwixesha elidlulileyo thina
Kwifowuni, kwagqitywa ukuba kukhethwe isicelo simple_pjsua njengenxalenye yethala leencwadi le-PJSIP. Esi sisicelo esincinci esinokubhalisa kwiseva, samkele kwaye siphendule iifowuni. Ngezantsi ndiza kunika ngokukhawuleza inkcazo yendlela yokuyiqhuba kwi-STM32F7-Discovery.
Ukubaleka njani
- Ukuqwalasela i-Emboks
make confload-platform/pjsip/stm32f7cube
- Misela i-akhawunti ye-SIP efunekayo kwifayile ye-conf/mods.config.
include platform.pjsip.cmd.simple_pjsua_imported( sip_domain="server", sip_user="username", sip_passwd="password")
apho Mncedisi yiseva ye-SIP (umzekelo, sip.linphone.org), lomsebenzisi ΠΈ inombolo yokuvula - igama lomsebenzisi leakhawunti kunye negama lokugqitha.
- Ukudibanisa i-Emboks njengeqela enza. Malunga nebhodi firmware esinayo
wiki kunyenqaku . - Qalisa "simple_pjsua_imported" umyalelo kwi-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
- Ekugqibeleni, kusele ukufaka izithethi okanye ii-headphones kwi-audio output, kwaye uthethe kwiimakrofoni ezimbini ze-MEMS ezikufutshane nesiboniso. Sifowunela kwiLinux ngesicelo simple_pjsua, pjsua. Ewe, okanye ungasebenzisa naluphi na olunye uhlobo lwe-linphone.
Konke oku kuchazwe kwinqaku lethu
Sifike njani apho
Ngoko, ekuqaleni kwavela umbuzo malunga nokukhetha iqonga le-hardware. Ekubeni kwakucacile ukuba i-STM32F4-Discovery ayiyi kungena kwimemori, i-STM32F7-Discovery yakhethwa. Une-1 MB flash drive kunye ne-256 KB ye-RAM (+ 64 imemori ekhethekileyo ekhawulezayo, esiya kuyisebenzisa kwakhona). Kananjalo ayininzi iminxeba ngomncedisi, kodwa sigqibe kwelokuba sizame ukungena.
Ngokwemeko ngokwabo, umsebenzi wahlulahlulwe waba ngamanqanaba ahlukeneyo:
- Ukuqhuba i-PJSIP kwi-QEMU. Kwakulula ukulungisa ingxaki, kwaye sasisele sinenkxaso ye-codec ye-AC97 apho.
- Ukurekhodwa kwelizwi kunye nokudlala kwakhona kwi-QEMU nakwi-STM32.
- Ukuhambisa isicelo simple_pjsua ukusuka kwi-PJSIP. Ikuvumela ukuba ubhalise kwiseva ye-SIP kwaye wenze iifowuni.
- Beka iseva yakho esekwe kwiAsterisk kwaye uvavanye kuyo, emva koko uzame ezangaphandle ezifana ne-sip.linphone.org
Isandi kwi-Embox sisebenza ngePortaudio, ekwasetyenziswa kwi-PISIP. Iingxaki zokuqala zavela kwi-QEMU - i-WAV idlale kakuhle kwi-44100 Hz, kodwa kwi-8000 into ephosakeleyo ngokucacileyo. Kwavela ukuba ngumcimbi wokumisela i-frequency - ngokuzenzekelayo yayiyi-44100 kwisixhobo, kwaye oku akuzange kutshintshe ngokwenkqubo.
Apha, mhlawumbi, kuyafaneleka ukuchaza kancinci indlela isandi esidlalwa ngayo ngokubanzi. Ikhadi lesandi linokusetwa kwisikhombisi kwimemori ofuna ukuyidlala okanye urekhode ngamaxesha amisiweyo. Emva kokuba isithinteli siphelile, uphazamiseko luyenziwa kwaye uphumezo luqhubeke nebuffer elandelayo. Inyani yeyokuba ezi buffers kufuneka zizaliswe kwangethuba ngelixa edlulileyo idlalwa. Siza kujongana nale ngxaki ngakumbi kwi-STM32F7.
Emva koko, saqasha iseva kwaye safaka iAsterisk kuyo. Kuba bekuyimfuneko ukulungisa ingxaki kakhulu, kodwa bendingafuni ukuthetha kumbhobho kakhulu, bekuyimfuneko ukwenza ukudlala okuzenzekelayo kunye nokurekhoda. Ukwenza oku, sikhuphe i-simple_pjsua ukuze ukwazi ukutyibilika iifayile endaweni yezixhobo zomsindo. Kwi-PJSIP, oku kwenziwa ngokulula, kuba banombono wezibuko, enokuba sisixhobo okanye ifayile. Kwaye ezi zibuko zinokudityaniswa bhetyebhetye kwamanye amazibuko. Ungayibona ikhowudi kwi-pjsip yethu
Emva kokuba isebenze kwi-QEMU, siye saya kwi-porting kwi-STM32F7-Discovery. Ingxaki yokuqala kukuba abazange bangene kwi-1 MB ye-ROM ngaphandle kokwenza umququli owenziwe wasebenza "-Os" kubungakanani bomfanekiso. Yiyo loo nto sifake "-Os". Ngaphaya koko, isiziba sivaliwe inkxaso ye-C ++, ngoko ifuneka kuphela kwi-pjsua, kwaye sisebenzisa simple_pjsua.
Emva kokubekwa simple_pjsua, yagqiba ekubeni ngoku kukho ithuba lokuyisungula. Kodwa okokuqala kwakuyimfuneko ukujongana nokurekhoda kunye nokudlala kwakhona kwelizwi. Umbuzo ngowokuba ubhale phi? Sakhetha imemori yangaphandle - SDRAM (128 MB). Ungazama oku ngokwakho:
Yenza istiriyo WAV kunye rhoqo 16000 Hz kunye nexesha 10 imizuzwana:
record -r 16000 -c 2 -d 10000 -m C0000000
Siyaphulukana:
play -m C0000000
Kukho iingxaki ezimbini apha. Eyokuqala kunye ne-codec - i-WM8994 isetyenzisiwe, kwaye inendawo efana ne-slot, kwaye kukho ezi 4 ze-slots.Ngoko, ngokuzenzekelayo, ukuba le nto ayicwangciswanga, ngoko xa udlala i-audio, ukudlala kwakhona kwenzeka kuzo zonke iindawo zokubeka. . Ke ngoko, kwi-frequency ye-16000 Hz, sifumene i-8000 Hz, kodwa kwi-8000 Hz, ukudlala kwakhona akuzange kusebenze. Xa kuphela iindawo zokubeka u-0 kunye no-2 ezikhethiweyo, zasebenza njengoko kufanele. Enye ingxaki yayilunxibelelwano lweaudio kwi-STM32Cube, apho imveliso yeaudiyo isebenza nge-SAI (Serial Audio Interface) ngolungelelwaniso kunye negalelo lomsindo (andizange ndiqonde iinkcukacha, kodwa kuye kwavela ukuba babelana ngewotshi eqhelekileyo kwaye xa imveliso yomsindo iyaqaliswa, iaudio incamathele ngandlel' ithile ekungeneni kwayo). Oko kukuthi, awukwazi ukuziqhuba ngokwahlukeneyo, ngoko ke senze oku kulandelayo - igalelo lomsindo kunye nemveliso yeaudio ihlala isebenza (kubandakanya iziphazamiso zenziwe). Kodwa xa kungekho nto idlalwayo kwinkqubo, emva koko sityibilika i-buffer engenanto kwisiphumo somsindo, kwaye xa kuqala ukudlala, siqala ukuyigcwalisa ngokunyaniseka.
Ngapha koko, siye sadibana nenyaniso yokuba isandi ngexesha lokurekhodwa kwelizwi sasithe cwaka kakhulu. Oku kungenxa yokuba ii-microphone ze-MEMS kwi-STM32F7-Discovery ngandlela-thile azisebenzi kakuhle kwiifrikhwensi ezingaphantsi kwe-16000 Hz. Ngoko ke, siseta i-16000 Hz, nokuba i-8000 Hz iza. Ukwenza oku, nangona kunjalo, bekuyimfuneko ukongeza ukuguqulwa kwesoftware yefrikhwensi enye ukuya kwenye.
Emva koko, kwafuneka ndonyuse ubungakanani bemfumba, ebekwe kwi-RAM. Ngokobalo lwethu, ipjsip ifuna malunga ne-190 KB, kwaye sishiyeke malunga ne-100 KB kuphela. Apha bekufuneka ndisebenzise imemori yangaphandle - SDRAM (malunga ne-128 KB).
Emva kwazo zonke ezi zihlengiso, ndabona iiphakheji zokuqala phakathi kweLinux kunye ne-Embox, kwaye ndeva isandi! Kodwa isandi sasisoyikeka, singafani kwaphela ne-QEMU, kwakungenakwenzeka ukwenza nantoni na. Emva koko sacinga ukuba yintoni ingxaki. Ukulungisa ingxaki kubonise ukuba i-Emboks ayinalo ixesha lokuzalisa / ukukhulula ii-buffers zeaudio. Ngelixa i-pjsip yayilungisa isakhelo esinye, iziphazamiso ezi-2 zinexesha lokwenzeka malunga nokugqityezelwa kokusetyenzwa kwebuffer, eninzi kakhulu. Ingcamango yokuqala yesantya yayiyi-compiler optimization, kodwa yayisele ifakiwe kwi-PJSIP. Eyesibini yindawo edadayo yehardware, sithethe ngayo kuyo
Umbono olandelayo yayikukuba sisebenza ngenkumbulo yangaphandle kwaye kuya kuba kuhle ukushenxisa izakhiwo apho ezifikelelwa rhoqo. Ndenze uhlalutyo lokuqala xa kwaye phantsi kwantoni simple_pjsua yabela inkumbulo. Kwavela ukuba kwi-190 Kb, i-90 Kb yokuqala yabelwe iimfuno zangaphakathi ze-PJSIP kwaye azifikelelwa rhoqo. Ngaphaya koko, ngexesha lomnxeba ongenayo, i pjsua_call_answer umsebenzi ubizwa, apho iibuffers zabelwa ukusebenza ngezakhelo ezingenayo neziphumayo. Ibiseyimalunga ne-100 KB. Kwaye ke senze oku kulandelayo. Kuze kube ngumzuzu womnxeba, sibeka idatha kwimemori yangaphandle. Ngokukhawuleza nje umnxeba, ngokukhawuleza sibuyisela imfumba ngenye enye-kwi-RAM. Ngaloo ndlela, yonke idatha "eshushu" idluliselwe kwimemori ekhawulezayo kunye nokuqikelelwa ngakumbi.
Ngenxa yoko, konke oku kunye kwenze ukuba kube lula ukuqalisa simple_pjsua kwaye ufowunele ngeseva yakho. Kwaye ke ngezinye iiseva ezinje nge sip.linphone.org.
ezifunyanisiweyo
Ngenxa yoko, kwakunokwenzeka ukuqalisa simple_pjsua ngogqithiso lwelizwi kumacala omabini ngomncedisi. Ingxaki eyongeziweyo echithwe i-128 KB ye-SDRAM inokusonjululwa ngokusebenzisa i-Cortex-M7 enamandla ngakumbi (umzekelo, i-STM32F769NI kunye ne-512 KB ye-RAM), kodwa kwangaxeshanye, asikanikezeli ithemba lokungena kwi-256. KB π Siya kuvuya ukuba kukho umntu onomdla, Okanye ngcono okwangoku, yizame. Yonke imithombo, njengesiqhelo, ikwindawo yethu
umthombo: www.habr.com