STM32F7-ഡിസ്കവറിയിലെ SIP ഫോൺ

എല്ലാവർക്കും ഹലോ.

കുറച്ച് മുമ്പ് ഞങ്ങൾ എഴുതി 32 MB റോമും 4 KB റാമും ഉള്ള STM1F192-Discovery-ൽ ഒരു SIP ഫോൺ ലോഞ്ച് ചെയ്യാൻ ഞങ്ങൾക്ക് എങ്ങനെ കഴിഞ്ഞു എന്നതിനെ കുറിച്ച് എംബോക്സ്. ആ പതിപ്പ് വളരെ കുറവാണെന്നും ഒരു സെർവറില്ലാതെയും ഒരു ദിശയിൽ മാത്രം വോയ്‌സ് ട്രാൻസ്മിഷനോടെയും രണ്ട് ഫോണുകൾ നേരിട്ട് ബന്ധിപ്പിച്ചിട്ടുണ്ടെന്നും ഇവിടെ പറയണം. അതിനാൽ, സെർവറിലൂടെയുള്ള ഒരു കോൾ, രണ്ട് ദിശകളിലേക്കും വോയ്‌സ് ട്രാൻസ്മിഷൻ എന്നിവ ഉപയോഗിച്ച് കൂടുതൽ സമ്പൂർണ്ണ ഫോൺ സമാരംഭിക്കാൻ ഞങ്ങൾ തീരുമാനിച്ചു, എന്നാൽ അതേ സമയം സാധ്യമായ ഏറ്റവും ചെറിയ മെമ്മറി വലുപ്പത്തിൽ സൂക്ഷിക്കുക.


ഫോണിനായി, ഒരു ആപ്ലിക്കേഷൻ തിരഞ്ഞെടുക്കാൻ തീരുമാനിച്ചു simple_pjsua PJSIP ലൈബ്രറിയുടെ ഭാഗമായി. സെർവറിൽ രജിസ്റ്റർ ചെയ്യാനും കോളുകൾ സ്വീകരിക്കാനും ഉത്തരം നൽകാനും കഴിയുന്ന ഏറ്റവും കുറഞ്ഞ ആപ്ലിക്കേഷനാണിത്. STM32F7-Discovery-ൽ ഇത് എങ്ങനെ പ്രവർത്തിപ്പിക്കാം എന്നതിന്റെ ഒരു വിവരണം ഞാൻ ഉടൻ തന്നെ ചുവടെ നൽകും.

എങ്ങനെ ഓടണം

  1. എംബോക്സ് കോൺഫിഗർ ചെയ്യുന്നു
    make confload-platform/pjsip/stm32f7cube
  2. conf/mods.config ഫയലിൽ ആവശ്യമായ SIP അക്കൗണ്ട് സജ്ജമാക്കുക.
    
    include platform.pjsip.cmd.simple_pjsua_imported(
        sip_domain="server", 
        sip_user="username",
        sip_passwd="password")
    

    എവിടെ സെർവർ ഒരു SIP സെർവറാണ് (ഉദാഹരണത്തിന്, sip.linphone.org), ഉപയോക്തൃനാമം и പാസ്വേഡ് - അക്കൗണ്ട് ഉപയോക്തൃനാമവും പാസ്‌വേഡും.

  3. ഒരു ടീമായി എംബോക്‌സ് കൂട്ടിച്ചേർക്കുന്നു ഉണ്ടാക്കുക. ഞങ്ങൾക്കുള്ള ബോർഡ് ഫേംവെയറിനെക്കുറിച്ച് വിക്കി ഒപ്പം അകത്തേക്കും ലേഖനം.
  4. Embox കൺസോളിൽ "simple_pjsua_imported" കമാൻഡ് പ്രവർത്തിപ്പിക്കുക
    
    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. അവസാനമായി, ഓഡിയോ ഔട്ട്‌പുട്ടിലേക്ക് സ്പീക്കറുകളോ ഹെഡ്‌ഫോണുകളോ ചേർക്കാനും ഡിസ്‌പ്ലേയ്‌ക്ക് അടുത്തുള്ള രണ്ട് ചെറിയ MEMS മൈക്രോഫോണുകളിൽ സംസാരിക്കാനും ഇത് ശേഷിക്കുന്നു. ഞങ്ങൾ സിമ്പിൾ_pjsua, pjsua എന്ന ആപ്ലിക്കേഷൻ വഴി ലിനക്സിൽ നിന്ന് വിളിക്കുന്നു. ശരി, അല്ലെങ്കിൽ നിങ്ങൾക്ക് മറ്റേതെങ്കിലും തരത്തിലുള്ള ലിൻഫോൺ ഉപയോഗിക്കാം.

ഇതെല്ലാം നമ്മിൽ വിവരിച്ചിരിക്കുന്നു വിക്കി.

ഞങ്ങൾ എങ്ങനെ അവിടെ എത്തി

അതിനാൽ, തുടക്കത്തിൽ ഒരു ഹാർഡ്‌വെയർ പ്ലാറ്റ്ഫോം തിരഞ്ഞെടുക്കുന്നതിനെക്കുറിച്ചുള്ള ചോദ്യം ഉയർന്നു. മെമ്മറിയിൽ നിന്ന് STM32F4-ഡിസ്കവറി അനുയോജ്യമല്ലെന്ന് വ്യക്തമായതിനാൽ, STM32F7-ഡിസ്കവറി തിരഞ്ഞെടുത്തു. അവൾക്ക് 1 MB ഫ്ലാഷ് ഡ്രൈവും 256 KB റാമും ഉണ്ട് (+ 64 പ്രത്യേക ഫാസ്റ്റ് മെമ്മറി, ഞങ്ങളും ഇത് ഉപയോഗിക്കും). സെർവർ വഴിയുള്ള കോളുകൾക്ക് കാര്യമായ കാര്യമില്ല, പക്ഷേ ഞങ്ങൾ യോജിക്കാൻ തീരുമാനിച്ചു.

സോപാധികമായി, ചുമതല പല ഘട്ടങ്ങളായി തിരിച്ചിരിക്കുന്നു:

  • QEMU-ൽ PJSIP പ്രവർത്തിക്കുന്നു. ഡീബഗ്ഗിംഗിന് ഇത് സൗകര്യപ്രദമായിരുന്നു, കൂടാതെ AC97 കോഡെക്കിനുള്ള പിന്തുണ ഞങ്ങൾക്ക് ഇതിനകം ഉണ്ടായിരുന്നു.
  • QEMU-ലും STM32-ലും വോയ്‌സ് റെക്കോർഡിംഗും പ്ലേബാക്കും.
  • ഒരു ആപ്ലിക്കേഷൻ പോർട്ട് ചെയ്യുന്നു simple_pjsua PJSIP ൽ നിന്ന്. SIP സെർവറിൽ രജിസ്റ്റർ ചെയ്യാനും കോളുകൾ വിളിക്കാനും ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.
  • നിങ്ങളുടെ സ്വന്തം ആസ്റ്ററിസ്‌ക് അടിസ്ഥാനമാക്കിയുള്ള സെർവർ വിന്യസിച്ച് അതിൽ പരീക്ഷിക്കുക, തുടർന്ന് sip.linphone.org പോലുള്ള ബാഹ്യമായവ പരീക്ഷിക്കുക

എംബോക്‌സിലെ ശബ്‌ദം പോർട്ടോഡിയോയിലൂടെ പ്രവർത്തിക്കുന്നു, ഇത് PISIP-ലും ഉപയോഗിക്കുന്നു. QEMU-ൽ ആദ്യ പ്രശ്നങ്ങൾ പ്രത്യക്ഷപ്പെട്ടു - WAV 44100 Hz-ൽ നന്നായി കളിച്ചു, എന്നാൽ 8000-ൽ എന്തോ കുഴപ്പം സംഭവിച്ചു. ഇത് ആവൃത്തി സജ്ജീകരിക്കുന്ന കാര്യമാണെന്ന് മനസ്സിലായി - സ്ഥിരസ്ഥിതിയായി ഇത് ഉപകരണങ്ങളിൽ 44100 ആയിരുന്നു, ഇത് പ്രോഗ്രാമാമാറ്റിക് ആയി മാറിയില്ല.

ഇവിടെ, ഒരുപക്ഷേ, ശബ്ദം പൊതുവെ പ്ലേ ചെയ്യുന്നതെങ്ങനെയെന്ന് അല്പം വിശദീകരിക്കുന്നത് മൂല്യവത്താണ്. നിങ്ങൾ പ്ലേ ചെയ്യാനോ മുൻകൂട്ടി നിശ്ചയിച്ച ആവൃത്തിയിൽ റെക്കോർഡ് ചെയ്യാനോ ആഗ്രഹിക്കുന്ന മെമ്മറിയുടെ ഒരു ഭാഗത്തേക്ക് ചില പോയിന്ററിലേക്ക് സൗണ്ട് കാർഡ് സജ്ജമാക്കാൻ കഴിയും. ബഫർ അവസാനിച്ചതിന് ശേഷം, ഒരു തടസ്സം സൃഷ്ടിക്കപ്പെടുകയും അടുത്ത ബഫറിനൊപ്പം എക്സിക്യൂഷൻ തുടരുകയും ചെയ്യുന്നു. മുമ്പത്തേത് പ്ലേ ചെയ്യുമ്പോൾ ഈ ബഫറുകൾ മുൻകൂട്ടി പൂരിപ്പിക്കേണ്ടതുണ്ട് എന്നതാണ് വസ്തുത. STM32F7-ൽ ഞങ്ങൾ ഈ പ്രശ്നം നേരിടും.

അടുത്തതായി, ഞങ്ങൾ ഒരു സെർവർ വാടകയ്‌ക്കെടുക്കുകയും അതിൽ നക്ഷത്രചിഹ്നം വിന്യസിക്കുകയും ചെയ്തു. വളരെയധികം ഡീബഗ് ചെയ്യേണ്ടത് അത്യാവശ്യമായതിനാൽ, മൈക്രോഫോണിൽ കൂടുതൽ സംസാരിക്കാൻ ഞാൻ ആഗ്രഹിക്കാത്തതിനാൽ, യാന്ത്രിക പ്ലേബാക്കും റെക്കോർഡിംഗും ചെയ്യേണ്ടത് ആവശ്യമാണ്. ഇത് ചെയ്യുന്നതിന്, ഞങ്ങൾ simple_pjsua പാച്ച് ചെയ്തതിനാൽ നിങ്ങൾക്ക് ഓഡിയോ ഉപകരണങ്ങൾക്ക് പകരം ഫയലുകൾ സ്ലിപ്പ് ചെയ്യാൻ കഴിയും. PJSIP-യിൽ, ഇത് വളരെ ലളിതമായി ചെയ്യപ്പെടുന്നു, കാരണം അവർക്ക് ഒരു പോർട്ട് എന്ന ആശയം ഉണ്ട്, അത് ഒരു ഉപകരണമോ ഫയലോ ആകാം. കൂടാതെ ഈ പോർട്ടുകൾ മറ്റ് പോർട്ടുകളുമായി ഫ്ലെക്സിബിൾ ആയി കണക്ട് ചെയ്യാവുന്നതാണ്. ഞങ്ങളുടെ pjsip-ൽ നിങ്ങൾക്ക് കോഡ് കാണാം ശേഖരങ്ങൾ. തൽഫലമായി, പദ്ധതി ഇപ്രകാരമായിരുന്നു. ആസ്റ്ററിസ്ക് സെർവറിൽ, ഞാൻ രണ്ട് അക്കൗണ്ടുകൾ ആരംഭിച്ചു - ലിനക്സിനും എംബോക്സിനും. അടുത്തതായി, എംബോക്സിൽ കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നു simple_pjsua_imported, എംബോക്സ് സെർവറിൽ രജിസ്റ്റർ ചെയ്തിട്ടുണ്ട്, അതിനുശേഷം ഞങ്ങൾ ലിനക്സിൽ നിന്ന് എംബോക്സ് എന്ന് വിളിക്കുന്നു. കണക്ഷൻ സമയത്ത്, ആസ്റ്ററിസ്ക് സെർവറിൽ കണക്ഷൻ സ്ഥാപിച്ചിട്ടുണ്ടോ എന്ന് ഞങ്ങൾ പരിശോധിക്കുന്നു, കുറച്ച് സമയത്തിന് ശേഷം ലിനക്സിൽ നിന്ന് എംബോക്സിൽ നിന്ന് ശബ്ദം കേൾക്കണം, കൂടാതെ എംബോക്സിൽ നിന്ന് പ്ലേ ചെയ്യുന്ന ഫയൽ ലിനക്സിൽ ഞങ്ങൾ സംരക്ഷിക്കും.

ഇത് QEMU-ൽ പ്രവർത്തിച്ചതിന് ശേഷം, ഞങ്ങൾ STM32F7-Discovery-ലേക്ക് പോർട്ടിംഗിലേക്ക് നീങ്ങി. ചിത്രത്തിന്റെ വലുപ്പത്തിന് "-Os" പ്രവർത്തനക്ഷമമാക്കിയ കംപൈലർ ഒപ്റ്റിമൈസേഷൻ ഇല്ലാതെ അവ 1 MB റോമിലേക്ക് യോജിച്ചില്ല എന്നതാണ് ആദ്യത്തെ പ്രശ്നം. അതുകൊണ്ടാണ് ഞങ്ങൾ "-ഓസ്" ഉൾപ്പെടുത്തിയത്. കൂടാതെ, പാച്ച് C ++ നുള്ള പിന്തുണ പ്രവർത്തനരഹിതമാക്കി, അതിനാൽ ഇത് pjsua-യ്ക്ക് മാത്രമേ ആവശ്യമുള്ളൂ, ഞങ്ങൾ simple_pjsua ഉപയോഗിക്കുന്നു.

സ്ഥാപിച്ച ശേഷം simple_pjsua, ഇപ്പോൾ ലോഞ്ച് ചെയ്യാൻ അവസരമുണ്ടെന്ന് തീരുമാനിച്ചു. എന്നാൽ ആദ്യം ശബ്ദത്തിന്റെ റെക്കോർഡിംഗും പ്ലേബാക്കും കൈകാര്യം ചെയ്യേണ്ടത് ആവശ്യമാണ്. എവിടെ എഴുതണം എന്നതാണ് ചോദ്യം. ഞങ്ങൾ ബാഹ്യ മെമ്മറി തിരഞ്ഞെടുത്തു - SDRAM (128 MB). നിങ്ങൾക്ക് ഇത് സ്വയം പരീക്ഷിക്കാം:

16000 Hz ആവൃത്തിയും 10 സെക്കൻഡ് ദൈർഘ്യവുമുള്ള ഒരു സ്റ്റീരിയോ WAV സൃഷ്ടിക്കുന്നു:


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

നമ്മൾ തോറ്റു:


play -m C0000000

ഇവിടെ രണ്ട് പ്രശ്നങ്ങളുണ്ട്. കോഡെക്കിനൊപ്പം ആദ്യത്തേത് - WM8994 ഉപയോഗിക്കുന്നു, ഇതിന് സ്ലോട്ട് പോലെയുള്ള ഒരു സംഗതിയുണ്ട്, കൂടാതെ ഈ സ്ലോട്ടുകളിൽ 4 ഉണ്ട്. അതിനാൽ, സ്ഥിരസ്ഥിതിയായി, ഇത് കോൺഫിഗർ ചെയ്തിട്ടില്ലെങ്കിൽ, ഓഡിയോ പ്ലേ ചെയ്യുമ്പോൾ, നാല് സ്ലോട്ടുകളിലും പ്ലേബാക്ക് സംഭവിക്കുന്നു. . അതിനാൽ, 16000 Hz ആവൃത്തിയിൽ, ഞങ്ങൾക്ക് 8000 Hz ലഭിച്ചു, എന്നാൽ 8000 Hz-ന്, പ്ലേബാക്ക് പ്രവർത്തിക്കുന്നില്ല. 0 ഉം 2 ഉം സ്ലോട്ടുകൾ മാത്രം തിരഞ്ഞെടുത്തപ്പോൾ, അത് ആവശ്യമുള്ളതുപോലെ പ്രവർത്തിച്ചു. മറ്റൊരു പ്രശ്നം STM32Cube-ലെ ഓഡിയോ ഇന്റർഫേസായിരുന്നു, അതിൽ SAI (സീരിയൽ ഓഡിയോ ഇന്റർഫേസ്) വഴി ഓഡിയോ ഇൻപുട്ടുമായി സമന്വയിപ്പിച്ച് ഓഡിയോ ഔട്ട്‌പുട്ട് പ്രവർത്തിക്കുന്നു (എനിക്ക് വിശദാംശങ്ങൾ മനസ്സിലായില്ല, പക്ഷേ അവർ ഒരു പൊതു ക്ലോക്ക് പങ്കിടുന്നു. ഓഡിയോ ഔട്ട്‌പുട്ട് ആരംഭിച്ചിരിക്കുന്നു, ഓഡിയോ എങ്ങനെയോ അതിലേക്ക് പ്രവേശന കവാടത്തിൽ ഘടിപ്പിച്ചിരിക്കുന്നു). അതായത്, നിങ്ങൾക്ക് അവ വെവ്വേറെ പ്രവർത്തിപ്പിക്കാൻ കഴിയില്ല, അതിനാൽ ഞങ്ങൾ ഇനിപ്പറയുന്നവ ചെയ്തു - ഓഡിയോ ഇൻപുട്ടും ഓഡിയോ ഔട്ട്പുട്ടും എല്ലായ്പ്പോഴും പ്രവർത്തിക്കുന്നു (തടസ്സങ്ങൾ സൃഷ്ടിക്കുന്നത് ഉൾപ്പെടെ). എന്നാൽ സിസ്റ്റത്തിൽ ഒന്നും പ്ലേ ചെയ്യാത്തപ്പോൾ, ഞങ്ങൾ ഓഡിയോ ഔട്ട്‌പുട്ടിലേക്ക് ഒരു ശൂന്യമായ ബഫർ സ്ലിപ്പ് ചെയ്യുന്നു, പ്ലേബാക്ക് ആരംഭിക്കുമ്പോൾ, ഞങ്ങൾ സത്യസന്ധമായി അത് പൂരിപ്പിക്കാൻ തുടങ്ങും.

കൂടാതെ, വോയ്‌സ് റെക്കോർഡിംഗ് സമയത്ത് ശബ്‌ദം വളരെ നിശബ്ദമായിരുന്നു എന്ന വസ്തുത ഞങ്ങൾ നേരിട്ടു. STM32F7-Discovery-ലെ MEMS മൈക്രോഫോണുകൾ 16000 Hz-ൽ താഴെയുള്ള ഫ്രീക്വൻസികളിൽ എങ്ങനെയെങ്കിലും നന്നായി പ്രവർത്തിക്കാത്തതാണ് ഇതിന് കാരണം. അതിനാൽ, 16000 Hz വന്നാലും ഞങ്ങൾ 8000 Hz സജ്ജമാക്കുന്നു. എന്നിരുന്നാലും, ഇത് ചെയ്യുന്നതിന്, ഒരു ഫ്രീക്വൻസി മറ്റൊന്നിലേക്ക് ഒരു സോഫ്റ്റ്വെയർ പരിവർത്തനം ചേർക്കേണ്ടത് ആവശ്യമാണ്.

അടുത്തതായി, എനിക്ക് റാമിൽ സ്ഥിതി ചെയ്യുന്ന കൂമ്പാരത്തിന്റെ വലുപ്പം വർദ്ധിപ്പിക്കേണ്ടി വന്നു. ഞങ്ങളുടെ കണക്കുകൂട്ടലുകൾ അനുസരിച്ച്, pjsip-ന് ഏകദേശം 190 KB ആവശ്യമാണ്, ഞങ്ങൾക്ക് ഏകദേശം 100 KB മാത്രമേ ശേഷിക്കുന്നുള്ളൂ. ഇവിടെ എനിക്ക് കുറച്ച് ബാഹ്യ മെമ്മറി ഉപയോഗിക്കേണ്ടി വന്നു - SDRAM (ഏകദേശം 128 KB).

ഈ എഡിറ്റുകൾക്കെല്ലാം ശേഷം, ലിനക്സും എംബോക്സും തമ്മിലുള്ള ആദ്യത്തെ പാക്കേജുകൾ ഞാൻ കണ്ടു, ഞാൻ ശബ്ദം കേട്ടു! എന്നാൽ ശബ്‌ദം ഭയങ്കരമായിരുന്നു, ക്യുഇഎംയുവിലേത് പോലെയല്ല, ഒന്നും ഉണ്ടാക്കുന്നത് അസാധ്യമായിരുന്നു. പിന്നെ എന്താ കാര്യം എന്ന് ആലോചിച്ചു. എംബോക്‌സിന് ഓഡിയോ ബഫറുകൾ പൂരിപ്പിക്കാനോ അൺലോഡ് ചെയ്യാനോ സമയമില്ലെന്ന് ഡീബഗ്ഗിംഗ് കാണിച്ചു. pjsip ഒരു ഫ്രെയിം പ്രോസസ്സ് ചെയ്യുമ്പോൾ, ബഫർ പ്രോസസ്സിംഗ് പൂർത്തിയാക്കുന്നതിന് 2 തടസ്സങ്ങൾ ഉണ്ടാകാൻ സമയമുണ്ടായിരുന്നു, അത് വളരെ കൂടുതലാണ്. വേഗതയുടെ ആദ്യ ചിന്ത കംപൈലർ ഒപ്റ്റിമൈസേഷനായിരുന്നു, എന്നാൽ ഇത് ഇതിനകം തന്നെ PJSIP-ൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. രണ്ടാമത്തേത് ഒരു ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റാണ്, ഞങ്ങൾ അതിനെക്കുറിച്ച് സംസാരിച്ചു ലേഖനം. എന്നാൽ പ്രാക്ടീസ് കാണിക്കുന്നതുപോലെ, എഫ്പിയു വേഗതയിൽ കാര്യമായ വർദ്ധനവ് നൽകിയില്ല. ത്രെഡുകൾക്ക് മുൻഗണന നൽകുക എന്നതായിരുന്നു അടുത്ത ഘട്ടം. എംബോക്സിന് വ്യത്യസ്‌ത ഷെഡ്യൂളിംഗ് സ്‌ട്രാറ്റജികളുണ്ട്, മുൻഗണനകളെ പിന്തുണയ്‌ക്കുന്ന ഒന്ന് ഞാൻ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്, ഒപ്പം ഓഡിയോ സ്ട്രീമുകൾ ഉയർന്ന മുൻഗണനയിലേക്ക് സജ്ജമാക്കുകയും ചെയ്യുന്നു. ഇതും സഹായിച്ചില്ല.

അടുത്ത ആശയം ഞങ്ങൾ എക്‌സ്‌റ്റേണൽ മെമ്മറി ഉപയോഗിച്ചാണ് പ്രവർത്തിക്കുന്നത്, പലപ്പോഴും ആക്‌സസ് ചെയ്യപ്പെടുന്ന ഘടനകൾ അവിടേക്ക് മാറ്റുന്നത് നന്നായിരിക്കും. എപ്പോൾ, എന്ത് എന്നതിന്റെ പ്രാഥമിക വിശകലനം ഞാൻ നടത്തി simple_pjsua മെമ്മറി അനുവദിക്കുന്നു. 190 കെബിയിൽ, ആദ്യത്തെ 90 കെബി പിജെഎസ്‌ഐപിയുടെ ആന്തരിക ആവശ്യങ്ങൾക്കായി നീക്കിവച്ചിട്ടുണ്ടെന്നും അവ പലപ്പോഴും ആക്‌സസ് ചെയ്യപ്പെടുന്നില്ലെന്നും തെളിഞ്ഞു. കൂടാതെ, ഒരു ഇൻകമിംഗ് കോളിനിടെ, pjsua_call_answer ഫംഗ്‌ഷൻ വിളിക്കുന്നു, അതിൽ ഇൻകമിംഗ്, ഔട്ട്‌ഗോയിംഗ് ഫ്രെയിമുകൾക്കൊപ്പം പ്രവർത്തിക്കാൻ ബഫറുകൾ അനുവദിക്കും. അത് അപ്പോഴും ഏകദേശം 100 Kb ആയിരുന്നു. തുടർന്ന് ഞങ്ങൾ ഇനിപ്പറയുന്നവ ചെയ്തു. കോളിന്റെ നിമിഷം വരെ, ഞങ്ങൾ ഡാറ്റ ബാഹ്യ മെമ്മറിയിൽ സ്ഥാപിക്കുന്നു. കോൾ വന്നയുടനെ, ഞങ്ങൾ ഉടൻ തന്നെ കൂമ്പാരം മറ്റൊന്ന് ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നു - റാമിൽ. അങ്ങനെ, എല്ലാ "ചൂടുള്ള" ഡാറ്റയും വേഗതയേറിയതും കൂടുതൽ പ്രവചിക്കാവുന്നതുമായ മെമ്മറിയിലേക്ക് കൈമാറ്റം ചെയ്യപ്പെട്ടു.

തൽഫലമായി, ഇതെല്ലാം ഒരുമിച്ച് വിക്ഷേപണം സാധ്യമാക്കി simple_pjsua നിങ്ങളുടെ സെർവർ വഴി വിളിക്കുക. തുടർന്ന് sip.linphone.org പോലുള്ള മറ്റ് സെർവറുകൾ വഴി.

കണ്ടെത്തലുകൾ

തൽഫലമായി, വിക്ഷേപണം സാധ്യമായി simple_pjsua സെർവറിലൂടെ രണ്ട് ദിശകളിലേക്കും വോയ്‌സ് ട്രാൻസ്മിഷനോടൊപ്പം. അധികമായി ചെലവഴിച്ച 128 KB SDRAM-ന്റെ പ്രശ്നം കുറച്ചുകൂടി ശക്തമായ Cortex-M7 (ഉദാഹരണത്തിന്, STM32F769NI 512 KB റാമുള്ള) ഉപയോഗിച്ച് പരിഹരിക്കാൻ കഴിയും, എന്നാൽ അതേ സമയം, 256-ൽ എത്തുമെന്ന പ്രതീക്ഷ ഞങ്ങൾ ഇപ്പോഴും കൈവിട്ടിട്ടില്ല. KB 🙂 ആർക്കെങ്കിലും താൽപ്പര്യമുണ്ടെങ്കിൽ ഞങ്ങൾ സന്തോഷിക്കും, അല്ലെങ്കിൽ ഇതിലും മികച്ചത് പരീക്ഷിക്കുക. എല്ലാ ഉറവിടങ്ങളും, പതിവുപോലെ, നമ്മുടേതാണ് ശേഖരങ്ങൾ.

അവലംബം: www.habr.com

ഒരു അഭിപ്രായം ചേർക്കുക