telefaona SIP amin'ny STM32F7-Discovery

Salama daholo.

Fotoana vitsy lasa izay nanoratra momba ny fomba nahavitanay nandefa telefaona SIP amin'ny STM32F4-Discovery miaraka amin'ny 1 MB ROM sy 192 KB RAM) mifototra amin'ny Embox. Eto dia tsy maintsy lazaina fa kely indrindra io dikan-teny io ary mampifandray finday roa mivantana tsy misy mpizara ary misy fampitana feo amin'ny lalana iray ihany. Noho izany, nanapa-kevitra izahay ny handefa telefaona feno kokoa miaraka amin'ny antso amin'ny alΓ lan'ny mpizara, fampitana feo amin'ny lafiny roa, fa miaraka amin'izay koa, mitazona ao anatin'ny haben'ny fahatsiarovana kely indrindra.


Ho an'ny finday dia nanapa-kevitra ny hisafidy fampiharana simple_pjsua ao anatin'ny tranomboky PJSIP. Ity dia fampiharana kely indrindra afaka misoratra anarana amin'ny mpizara, mandray ary mamaly antso. Ity ambany ity dia hanome famaritana avy hatrany ny fomba fampandehanana azy amin'ny STM32F7-Discovery.

Ahoana no mihazakazaka

  1. Configuring Embox
    make confload-platform/pjsip/stm32f7cube
  2. Apetraho ao amin'ny rakitra conf/mods.config ny kaonty SIP ilaina.
    
    include platform.pjsip.cmd.simple_pjsua_imported(
        sip_domain="server", 
        sip_user="username",
        sip_passwd="password")
    

    izay mpizara dia mpizara SIP (ohatra, sip.linphone.org), Anaran'ny mpampiasa ΠΈ tenimiafina - solon'anarana sy tenimiafina kaonty.

  3. Assembling Embox ho ekipa manao. Momba ny firmware board ananantsika Wiki ary ao lahatsoratra.
  4. Alefaso ny baiko "simple_pjsua_imported" ao amin'ny console 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. Farany, mijanona ny mampiditra mpandahateny na Γ©couteur amin'ny famoahana feo, ary miteny amin'ny mikrofonina MEMS kely roa eo akaikin'ny fampisehoana. Miantso avy amin'ny Linux izahay amin'ny alΓ lan'ny fampiharana simple_pjsua, pjsua. Eny, na azonao atao ny mampiasa karazana linphone hafa.

Izany rehetra izany dia voalaza ato aminay Wiki.

Ahoana no nahatongavanay tany

Noho izany, tamin'ny voalohany dia nipoitra ny fanontaniana momba ny fisafidianana sehatra hardware. Satria nazava fa ny STM32F4-Discovery dia tsy mifanaraka amin'ny fitadidiana, STM32F7-Discovery no voafidy. Manana kapila tselatra 1 MB izy ary 256 KB an'ny RAM (+ 64 fahatsiarovana haingana manokana, izay hampiasainay ihany koa). Tsy dia betsaka ihany koa ny antso amin'ny alΓ lan'ny mpizara, fa nanapa-kevitra izahay fa hiezaka ny hifanaraka.

Araka ny fepetra ho an'ny tenany, ny asa dia nizara ho dingana maromaro:

  • Mandeha PJSIP amin'ny QEMU. Mety ho an'ny debugging izany, ary efa nahazo fanohanana ny codec AC97 izahay.
  • Fandraketana feo sy playback amin'ny QEMU sy amin'ny STM32.
  • Famoahana fampiharana simple_pjsua avy amin'ny PJSIP. Izany dia ahafahanao misoratra anarana amin'ny mpizara SIP ary manao antso.
  • Ampidiro ny lohamilinao mifototra amin'ny Asterisk ary andramo izany, dia andramo ny ivelany toy ny sip.linphone.org

Ny feo ao amin'ny Embox dia miasa amin'ny Portaudio, izay ampiasaina amin'ny PISIP ihany koa. Ny olana voalohany dia niseho tao amin'ny QEMU - WAV nilalao tsara tamin'ny 44100 Hz, fa tamin'ny 8000 dia nisy zavatra tsy nety. Hita fa resaka fametrahana matetika - amin'ny alΓ lan'ny default dia 44100 ao amin'ny fitaovana, ary tsy niova programmatically izany.

Eto angamba dia ilaina ny manazava kely ny fomba filalaovana ny feo amin'ny ankapobeny. Ny karatra fanamafisam-peo dia azo apetraka amin'ny tondro sasany amin'ny fahatsiarovana tianao halefa na horaketinao amin'ny fatra efa voafaritra mialoha. Aorian'ny fiafaran'ny buffer dia misy fiatoana ary mitohy ny famonoana miaraka amin'ny buffer manaraka. Ny zava-misy dia mila fenoina mialoha ireo buffer ireo raha mbola lalaovina ilay teo aloha. Hiatrika io olana io bebe kokoa isika amin'ny STM32F7.

Avy eo, nanofa mpizara izahay ary nametraka Asterisk teo aminy. Satria nilaina ny debug be dia be, saingy tsy te hiresaka firy amin'ny mikrofona aho, dia ilaina ny manao playback sy firaketana mandeha ho azy. Mba hanaovana an'izany, dia nasianay patch simple_pjsua mba hahafahanao misintona rakitra fa tsy fitaovana audio. Ao amin'ny PJSIP dia atao tsotra izao, satria manana ny foto-kevitry ny seranana izy ireo, izay mety ho fitaovana na rakitra. Ary ireo seranana ireo dia azo ampifandraisina amin'ny seranana hafa. Hitanao ao amin'ny pjsip ny kaody repository. Vokatr'izany dia toy izao ny tetika. Tao amin'ny mpizara Asterisk dia nanomboka kaonty roa aho - ho an'ny Linux sy ho an'ny Embox. Manaraka, ny baiko dia tanterahina amin'ny Embox simple_pjsua_imported, Embox dia voasoratra ao amin'ny server, ary avy eo dia antsoina hoe Embox avy amin'ny Linux. Amin'ny fotoanan'ny fifandraisana dia manamarina ny mpizara Asterisk izahay fa napetraka ny fifandraisana, ary rehefa afaka kelikely dia tokony handre feo avy amin'ny Linux ao amin'ny Embox, ary amin'ny Linux dia mitahiry ny rakitra izay nilalao avy amin'ny Embox.

Rehefa niasa tao amin'ny QEMU izy dia nifindra nankany amin'ny STM32F7-Discovery izahay. Ny olana voalohany dia tsy tafiditra ao anatin'ny 1 MB ROM izy ireo raha tsy misy ny fanamafisana ny compiler "-Os" ho an'ny haben'ny sary. Izany no nahatonga ny "-Os". Fanampin'izany, ny patch dia nanakana ny fanohanana C ++, noho izany dia ilaina ho an'ny pjsua ihany, ary mampiasa simple_pjsua izahay.

Rehefa avy napetraka simple_pjsua, dia nanapa-kevitra fa izao dia misy ny fahafahana hanomboka izany. Fa aloha dia ilaina ny miatrika ny fandraisam-peo sy ny playback ny feo. Ny fanontaniana dia hoe aiza no hanoratana? Nisafidy fitadidiana ivelany izahay - SDRAM (128 MB). Azonao atao ny manandrana ity tenanao ity:

Mamorona WAV stereo manana matetika 16000 Hz ary maharitra 10 segondra:


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

Resy isika:


play -m C0000000

Misy olana roa eto. Ny voalohany miaraka amin'ny codec - WM8994 no ampiasaina, ary misy zavatra toy ny slot, ary misy 4 amin'ireo slots. Noho izany, amin'ny alΓ lan'ny default, raha tsy voarindra izany, dia rehefa milalao audio dia miseho amin'ny slot efatra ny playback. . Noho izany, amin'ny fatran'ny 16000 Hz dia nahazo 8000 Hz izahay, fa ho an'ny 8000 Hz, ny playback dia tsy mandeha fotsiny. Rehefa ny slots 0 sy 2 ihany no nofantenana dia nandeha araka ny tokony ho izy. Ny olana iray hafa dia ny interface audio ao amin'ny STM32Cube, izay miasa amin'ny alΓ lan'ny SAI (Serial Audio Interface) ny output audio miaraka amin'ny fampidirana audio (tsy azoko ny antsipiriany, fa hita fa mizara famantaranandro mahazatra izy ireo ary rehefa natomboka ny famoahana feo, ny feo dia miraikitra amin'ny fidirana). Izany hoe, tsy afaka mihazakazaka azy ireo misaraka ianao, noho izany dia nanao izao manaraka izao izahay - ny fampidiran-peo sy ny famoahana feo dia miasa foana (anisan'izany ny fiatoana misy). Saingy rehefa tsy misy na inona na inona lalaovina ao amin'ny rafitra, dia ampidino fotsiny ny buffer tsy misy na inona na inona ao amin'ny famoahana feo, ary rehefa manomboka ny playback, dia manomboka mameno izany marina isika.

Fanampin'izany, nifanena taminay fa mangina be ny feo nandritra ny fandraketana feo. Izany dia noho ny zava-misy fa ny mikrofonina MEMS amin'ny STM32F7-Discovery dia tsy mandeha tsara amin'ny fatrany ambany 16000 Hz. Noho izany, mametraka 16000 Hz izahay, na dia tonga aza ny 8000 Hz. Mba hanaovana izany anefa, dia nilaina ny nampiana rindrambaiko fiovam-po amin'ny hafa matetika.

Avy eo, tsy maintsy nampitombo ny haben'ny antontan-taratasy aho, izay hita ao amin'ny RAM. Araka ny kajikajinay, mila 190 KB eo ho eo ny pjsip, ary 100 KB eo ho eo sisa no anananay. Eto aho dia tsy maintsy nampiasa fitadidiana ivelany - SDRAM (eo amin'ny 128 KB).

Taorian'ireo fanovana rehetra ireo dia hitako ny fonosana voalohany teo anelanelan'ny Linux sy Embox, ary naheno ny feo aho! Fa ny feo dia nahatsiravina, tsy mitovy amin'ny QEMU mihitsy, tsy azo fantarina na inona na inona. Dia nieritreritra izay mety ho olana izahay. Nasehon'ny debugging fa tsy manam-potoana hamenoana / hamoahana ireo buffer audio fotsiny i Embox. Raha teo am-pikarakarana sary iray ny pjsip dia nisy fiatoana 2 niseho momba ny fahavitan'ny fanodinana buffer, izay be loatra. Ny eritreritra voalohany momba ny hafainganam-pandeha dia ny fanatsarana ny compiler, saingy efa tafiditra ao amin'ny PJSIP izany. Ny faharoa dia teboka mitsingevana fitaovana, niresaka momba izany izahay lahatsoratra. Saingy araka ny nasehon'ny fanazaran-tena, ny FPU dia tsy nampitombo ny hafainganam-pandehany. Ny dingana manaraka dia ny laharam-pahamehana ny kofehy. Embox dia manana paikadin'ny fandaharam-potoana samihafa, ary nampiditra iray izay manohana ny laharam-pahamehana aho ary mametraka ny onjam-peo ho laharam-pahamehana indrindra. Tsy nanampy koa izany.

Ny hevitra manaraka dia ny hoe miasa miaraka amin'ny fitadidiana ivelany isika ary tsara ny mamindra rafitra any izay idirana matetika. Nanao famakafakana mialoha momba ny fotoana sy ny inona aho simple_pjsua manome fahatsiarovana. Hita fa amin'ny 190 Kb, ny 90 Kb voalohany dia natokana ho an'ny filana anatiny ao amin'ny PJSIP ary tsy azo idirana matetika. Fanampin'izay, mandritra ny antso miditra, dia antsoina ny pjsua_call_answer function, izay atokana ho an'ny fiasana amin'ny frames miditra sy mivoaka. Mbola 100 Kb teo ho eo izany. Dia nanao izao manaraka izao izahay. Mandra-pahatongan'ny fotoanan'ny fiantsoana dia apetrakay ao anaty fitadidiana ivelany ny angona. Raha vantany vao miantso dia manolo avy hatrany ny amboara amin'ny iray hafa - amin'ny RAM. Noho izany, ny angon-drakitra "mafana" rehetra dia nafindra tany amin'ny fahatsiarovana haingana kokoa sy azo vinavinaina kokoa.

Vokatr'izany, izany rehetra izany niaraka dia nahafahana natomboka simple_pjsua ary miantso amin'ny alΓ lan'ny mpizara anao. Ary avy eo amin'ny alΓ lan'ny mpizara hafa toa ny sip.linphone.org.

hitany

Vokatr'izany dia azo natao ny natomboka simple_pjsua miaraka amin'ny fampitana feo amin'ny lafiny roa amin'ny alΓ lan'ny mpizara. Ny olana amin'ny fandaniana fanampiny 128 KB an'ny SDRAM dia azo vahana amin'ny fampiasana Cortex-M7 matanjaka kokoa (ohatra, STM32F769NI miaraka amin'ny 512 KB an'ny RAM), saingy amin'ny fotoana iray dia mbola tsy kivy izahay ny hiditra amin'ny 256. KB πŸ™‚ Ho faly izahay raha misy liana, Na tsara kokoa, andramo. Ny loharanom-baovao rehetra, toy ny mahazatra, dia ato aminay repository.

Source: www.habr.com

Add a comment