SIP fono ho STM32F7-Discovery

Lumela.

Nakoana e fetileng rona o ngotse mabapi le hore na re khonne ho qala mohala oa SIP joang ho STM32F4-Discovery ka 1 MB ROM le 192 KB RAM) ho latela Embox. Mona ho tlameha ho boleloa hore phetolelo eo e ne e fokola 'me e hokahane le lifono tse peli ka ho toba ntle le seva le ka phetiso ea lentsoe ka tsela e le' ngoe feela. Ka hona, re nkile qeto ea ho qala mohala o felletseng haholoanyane ka mohala ka seva, phetiso ea lentsoe ka mahlakore ka bobeli, empa ka nako e ts'oanang boloka ka har'a boholo ba mohopolo o monyane ka ho fetesisa.


Bakeng sa fono, ho ile ha etsoa qeto ea ho khetha kopo bonolo_pjsua e le karolo ea laebrari ea PJSIP. Ena ke sesebelisoa se fokolang se ka ingolisang ho seva, ho amohela le ho araba mehala. Ka tlase ke tla fana ka tlhaloso hang-hang ea mokhoa oa ho e sebelisa ho STM32F7-Discovery.

Mokhoa oa ho matha

  1. Ho lokisa Emboks
    make confload-platform/pjsip/stm32f7cube
  2. Beha akhaonto ea SIP e hlokahalang faeleng ea conf/mods.config.
    
    include platform.pjsip.cmd.simple_pjsua_imported(
        sip_domain="server", 
        sip_user="username",
        sip_passwd="password")
    

    moo seva ke seva sa SIP (mohlala, sip.linphone.org), mosebedisi и phasewete - lebitso la mosebedisi le password.

  3. Ho kopanya Embox joalo ka sehlopha etsa. Mabapi le boto ea firmware eo re nang le eona wiki le ho sehlooho.
  4. Sebelisa taelo ea "simple_pjsua_imported" ho 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. Qetellong, e sala e le ho kenya libui kapa li-headphones ka har'a tlhahiso ea molumo, 'me u bue ka li-microphone tse peli tse nyenyane tsa MEMS haufi le pontšo. Re letsetsa ho tsoa Linux ka kopo simple_pjsua, pjsua. Hantle, kapa u ka sebelisa mofuta ofe kapa ofe oa linphone.

Tsena tsohle li hlalositsoe sehloohong sa rona wiki.

Re fihlile joang moo

Kahoo, qalong ho ile ha hlaha potso mabapi le ho khetha sethala sa hardware. Kaha ho ne ho hlakile hore STM32F4-Discovery e ke ke ea lekana ho tsoa mohopolong, ho ile ha khethoa STM32F7-Discovery. O na le 1 MB flash drive le 256 KB ea RAM (+ 64 memori e khethehileng e potlakileng, eo re tla e sebelisa hape). Hape ha ho na mehala e mengata ka seva, empa re nkile qeto ea ho leka ho kenella.

Ho ea ka maemo bakeng sa bona, mosebetsi o ne o arotsoe ka mekhahlelo e mengata:

  • Ho matha PJSIP ho QEMU. E ne e le bonolo bakeng sa ho lokisa liphoso, hape re ne re se re ntse re e-na le tšehetso bakeng sa codec ea AC97 moo.
  • Ho rekota lentsoe le ho bapala hape ho QEMU le ho STM32.
  • Ho tsamaisa kopo bonolo_pjsua ho tsoa ho PJSIP. E u lumella ho ingolisa ho seva sa SIP le ho etsa mehala.
  • Kenya seva ea hau e thehiloeng ho Asterisk 'me u leke ho eona, ebe u leka tse kantle joalo ka sip.linphone.org

Molumo ho Embox o sebetsa ka Portaudio, e sebelisoang hape ho PISIP. Mathata a pele a hlahile QEMU - WAV e bapala hantle ho 44100 Hz, empa ho 8000 ho na le ntho e sa tsamaeeng hantle. Ho ile ha fumaneha hore e ne e le taba ea ho beha makhetlo a mangata - ka ho feletseng e ne e le 44100 ka thepa, 'me sena ha sea ka sa fetoha ka lenaneo.

Mona, mohlomong, ho bohlokoa ho hlalosa hanyenyane hore na molumo o bapaloa joang ka kakaretso. Karete ea molumo e ka hlophisoa ho sesupo se seng sa memori eo u batlang ho bapala kapa ho rekota ka lebelo le reriloeng esale pele. Kamora hore buffer e fele, tšitiso e ea hlahisoa 'me ts'ebetso e tsoela pele ka buffer e latelang. 'Nete ke hore li-buffer tsena li hloka ho tlatsoa esale pele ha e fetileng e ntse e bapaloa. Re tla tobana le bothata bona ho ea pele ho STM32F7.

Ka mor'a moo, re ile ra hira seva mme ra beha Asterisk ho eona. Kaha ho ne ho hlokahala ho lokisa liphoso tse ngata, empa ke ne ke sa batle ho bua haholo ka maekrofono, ho ne ho hlokahala hore ho bapaloe ka mokhoa o itekanetseng le ho rekota. Ho etsa sena, re patile simple_pjsua e le hore u ka thella lifaele ho fapana le lisebelisoa tsa molumo. Ho PJSIP, sena se etsoa ka mokhoa o bonolo, kaha ba na le mohopolo oa boema-kepe, e ka bang sesebelisoa kapa faele. 'Me likou tsena li ka hokahanngoa habonolo le likoung tse ling. U ka bona khoutu ho pjsip ea rona bobolokelo. Ka lebaka leo, morero o ne o le tjena. Ho seva sa Asterisk, ke qalile li-account tse peli - bakeng sa Linux le bakeng sa Embox. Ka mor'a moo, taelo e etsoa ho Embox simple_pjsua_imported, Ebox e ngolisa ho seva, ka mor'a moo re bitsa Embox ho tloha Linux. Nakong ea ho hokahanya, re hlahloba seva sa Asterisk hore khokahanyo e thehiloe, 'me ka mor'a nakoana re lokela ho utloa molumo o tsoang ho Linux ho Embox,' me ho Linux re boloka faele e bapaloang ho tloha Embox.

Ka mor'a hore e sebetse QEMU, re ile ra fetela pele ho ea ho STM32F7-Discovery. Bothata ba pele ke hore ha baa ka ba kena ho 1 MB ea ROM ntle le "-Os" e nolofalitsoeng ea compiler bakeng sa boholo ba setšoantšo. Ke kahoo re kenyelletseng "-Os". Ho feta moo, patch e holofalitse tšehetso ea C ++, kahoo e hlokahala feela bakeng sa pjsua, 'me re sebelisa simple_pjsua.

Kamora ho bewa bonolo_pjsua, e ile ea etsa qeto ea hore joale ho na le monyetla oa ho e qala. Empa pele ho ne ho hlokahala ho sebetsana le ho rekota le ho bapala ha lentsoe. Potso ke hore na u ngole hokae? Re khethile mohopolo oa kantle - SDRAM (128 MB). U ka leka sena ka bouena:

E theha stereo WAV e nang le maqhubu a 16000 Hz le nako ea metsotsoana e 10:


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

Re lahleheloa:


play -m C0000000

Ho na le mathata a mabeli mona. Ea pele e nang le codec - WM8994 e sebelisoa, 'me e na le ntho e kang slot,' me ho na le li-slots tsena tse 4. Kahoo, ka ho feletseng, haeba sena se sa lokisoe, joale ha ho bapala molumo, ho bapala ho etsahala likarolong tsohle tse 'nè. . Ka hona, ka makhetlo a 16000 Hz, re fumane 8000 Hz, empa bakeng sa 8000 Hz, ho bapala ha hoa ka ha sebetsa. Ha ho ne ho khethoa li-slots 0 le 2 feela, e ne e sebetsa kamoo e neng e loketse kateng. Bothata bo bong e ne e le sebopeho sa molumo ho STM32Cube, moo tlhahiso ea molumo e sebetsang ka SAI (Serial Audio Interface) ka tumellano le kenyelletso ea molumo (ke ne ke sa utloisise lintlha, empa ho ile ha fumaneha hore ba arolelana oache e tloaelehileng le ha tlhahiso ea molumo e ea qalisoa, molumo o kopantsoe ka tsela e itseng monyako oa eona). Ka mantsoe a mang, u ke ke ua li tsamaisa ka thoko, kahoo re entse tse latelang - tlhahiso ea molumo le tlhahiso ea molumo e lula e sebetsa (ho kenyeletsoa le litšitiso li hlahisoa). Empa ha ho se letho le bapaloang ka har'a sistimi, ebe re kenya buffer e se nang letho molemong oa molumo, 'me ha ho bapala ho qala, ka botšepehi re qala ho e tlatsa.

Ho feta moo, re ile ra kopana le taba ea hore molumo nakong ea ho rekota lentsoe o ne o khutsitse haholo. Sena se bakoa ke taba ea hore li-microphone tsa MEMS ho STM32F7-Discovery ka tsela e itseng ha li sebetse hantle ka maqhubu a ka tlase ho 16000 Hz. Ka hona, re beha 16000 Hz, leha 8000 Hz e tla. Ho etsa sena, leha ho le joalo, ho ne ho hlokahala ho eketsa phetoho ea software ea maqhubu a mang ho ea ho a mang.

Ka mor'a moo, ke ile ka tlameha ho eketsa boholo ba qubu, e leng RAM. Ho ea ka lipalo tsa rona, pjsip e hloka hoo e ka bang 190 KB, 'me re saletsoe ke 100 KB feela. Mona ke ne ke tlameha ho sebelisa mohopolo o mong oa kantle - SDRAM (e ka bang 128 KB).

Kamora liphetoho tsena kaofela, ke bone liphutheloana tsa pele lipakeng tsa Linux le Embox, mme ka utloa molumo! Empa molumo o ne o le mobe, o sa tšoane le oa QEMU, ho ne ho sa khonehe ho tseba letho. Eaba re nahana hore na bothata ke eng. Debugging e bonts'itse hore Embox ha e na nako ea ho tlatsa / ho theola li-buffers tsa audio. Ha pjsip e ntse e sebetsana le foreimi e le 'ngoe, litšitiso tse 2 li bile le nako ea ho etsahala mabapi le ho phetheloa ha ts'ebetso ea buffer, e leng ngata haholo. Mohopolo oa pele oa lebelo e ne e le ts'ebetso ea komporo, empa e ne e se e kenyelelitsoe ho PJSIP. Ea bobeli ke ea hardware floating point, re buile ka eona ka hare sehlooho. Empa joalo ka ha boikoetliso bo bontšitse, FPU ha ea ka ea fana ka keketseho e kholo ea lebelo. Mohato o latelang e ne e le ho beha likhoele pele. Embox e na le maano a fapaneng a ho hlophisa, 'me ke kenyelelitse e ts'ehetsang lintho tse tlang pele le ho beha melapo ea molumo ho ea pele. Sena le sona ha sea ka sa thusa.

Mohopolo o latelang e ne e le hore re sebetsa ka mohopolo o kantle mme ho ka ba monate ho tsamaisa meaho moo e fumanehang hangata haholo. Ke ile ka etsa tlhahlobo ea pele ea neng le tlas'a eng bonolo_pjsua e abela mohopolo. Ho ile ha fumaneha hore ho 190 Kb, 90 Kb ea pele e abetsoe litlhoko tsa ka hare tsa PJSIP 'me ha li fumanehe hangata. Ho feta moo, nakong ea mohala o kenang, ts'ebetso ea pjsua_call_answer e bitsoa, ​​moo li-buffers li abeloang ho sebetsa ka liforeimi tse kenang le tse tsoang. E ne e ntse e ka ba 100 KB. Eaba re etsa se latelang. Ho fihlela motsotsong oa mohala, re beha data mohopolong oa kantle. Hang ha mohala o fihla, hang-hang re nkela qubu sebaka ka e 'ngoe - ho RAM. Ka hona, data eohle e "chesang" e fetiselitsoe mohopolong o potlakileng le o sa lebelloang.

Ka lebaka leo, sena sohle hammoho se entse hore ho khonehe ho qala bonolo_pjsua mme o letse ka seva sa hau. 'Me ka li-server tse ling tse kang sip.linphone.org.

fumanoeng ke

Ka lebaka leo, ho ile ha khoneha ho qala bonolo_pjsua ka phetiso ea lentsoe ka nqa tsohle ka seva. Bothata ba ho sebelisa 128 KB ea SDRAM bo ka rarolloa ka ho sebelisa Cortex-M7 e matla haholoanyane (mohlala, STM32F769NI e nang le 512 KB ea RAM), empa ka nako e ts'oanang, ha re so ka re tela tšepo ea ho kena 256. KB 🙂 Re tla thaba haeba motho e mong a thahasella, Kapa ho betere, leka. Mehloli eohle, joalo ka kamehla, e ho rona bobolokelo.

Source: www.habr.com

Eketsa ka tlhaloso