OpenLinux kiel parto de SIM7600E-H-moduloj

OpenLinux kiel parto de SIM7600E-H-moduloj

La mekanismo por disvolvi kutiman aplikaĵon kaj ŝargi ĝin en la modulon estas disponebla sub la operaciumoj Linukso kaj Vindozo. En ĉi tiu artikolo ni detale rigardos kiel, uzante ekzemplojn de la SDK provizita SIMCom Sendrataj Solvoj kompili kaj ŝarĝi kutiman aplikaĵon en modulon.

Antaŭ ol verki la artikolon, unu el miaj konatoj, malproksime de disvolvi por Linukso, petis, ke mi traktu la aferon kiel eble plej detale priskribi la procezon de evoluigo de mia propra aplikaĵo por la modulo SIM7600E-H. La kriterio por taksi la alireblecon de la prezento de materialo estis la frazo "por ke mi komprenu."

Mi invitas vin konatiĝi kun kio okazis.

La artikolo estas regule kompletigita kaj ĝisdatigita

Antaŭparolo

Tipe, ĉelaj komunikadomoduloj estas uzataj nur por transdono de datumoj, voĉvokoj, SMS-transdono kaj similaj. Ĉio ĉi estas farita per AT-komandoj senditaj de ekstera kontrola mikroregilo. Sed ekzistas kategorio da moduloj, kiuj ebligas al vi ekzekuti propran kodon ŝarĝitan de ekstere. En iuj kazoj, ĉi tio signife reduktas la ĝeneralan buĝeton de la aparato, permesante al vi instali pli simplan (kaj egale buĝetan) mikroregilon sur la tabulo aŭ forlasi ĝin entute. Kun la apero de LTE-moduloj kontrolitaj de Android aŭ Linukso OS kaj iliaj potencaj rimedoj, eblas solvi ajnajn taskojn disponeblajn por popularaj procesoroj. Ĉi tiu artikolo parolos pri SIM7600E-H, kontrolita de Linux OS. Ni rigardos kiel elŝuti kaj ruli plenumeblan aplikaĵon.

Multmaniere, la materialo baziĝas sur la dokumento "SIM7600 Open Linux development quide", sed kelkaj aldonoj kaj, antaŭ ĉio, la rusa versio estos utilaj. La artikolo helpos tiujn, kiuj ĵus komencas regi la modulon, kompreni kiel elŝuti la demo-aplikaĵon kaj provizi la necesajn kapablojn por posta laboro.

Mallonge pri kiu estas SIM7600E-H

SIM7600E-H estas modulo konstruita sur la ARM Cortex-A7 1.3GHz-procesoro de Qualcomm, havanta la Linuksan operaciumon (kerno 3.18.20) ene, kapabla labori kun eŭropaj (inkluzive de rusa) frekvencbendoj 2G/3G/LTE subtenaj Cat. .4, disponigante maksimumajn elŝutajn rapidojn de ĝis 150Mbps kaj alŝutajn rapidojn de ĝis 50Mbps. Riĉaj ekstercentraj, industria temperaturo gamo kaj la ĉeesto de enkonstruita GPS/GLONASS-navigado kovras iujn ajn postulojn por moderna modula solvo en la kampo M2M.

Sistemo superrigardo

La modulo SIM7600E-H baziĝas sur la Linukso operaciumo (kerno 3.18.20). Siavice, la dosiersistemo estas konstruita surbaze de la ĵurnaligita dosiersistemo UBIFS (Unsorted Block Image File System).

Gravaj trajtoj de ĉi tiu dosiersistemo inkluzivas:

  • funkcias kun sekcioj, permesas krei, forigi aŭ ŝanĝi ilian grandecon;
  • certigas registran vicigon tra la tuta amaskomunikila volumo;
  • funkcias kun Malbonaj blokoj;
  • minimumigas la verŝajnecon de datumperdo dum elektropaneo aŭ aliaj fiaskoj;
  • konservante protokolojn.

Priskribo prenita de ĉi tie, ekzistas ankaŭ pli detala priskribo de tia dosiersistemo.

Tiuj. Ĉi tiu tipo de dosiersistemo estas ideala por severaj funkciaj kondiĉoj de la modulo kaj eblaj potencproblemoj. Sed ĉi tio ne signifas, ke malstabilaj potenckondiĉoj estos la atendata maniero de funkciado de la modulo; ĝi nur indikas la pli grandan daŭrigeblecon de la aparato.

memoro

La distribuado de memorareoj estas konstruita jene:

OpenLinux kiel parto de SIM7600E-H-moduloj

Estas tri ĉefaj areoj por reliefigi:

ubi0:rootfs – nurlegebla kaj enhavas la Linuksan kernon mem
ubi0:usrfs – uzata ĉefe por uzantprogramo kaj datumstokado
ubi0:cahcefs - rezervita por FOTA-ĝisdatigoj. Se la disponebla spaco ne sufiĉas por elŝuti la ĝisdatigon, la sistemo forigos neuzatajn dosierojn kaj tiel liberigos spacon. Sed pro sekurecaj kialoj, vi ne devus meti viajn dosierojn tie.

Ĉiuj tri sekcioj estas distribuitaj jene:

Dosier-sistemo
grandeco
uzita
havebla
Uzu%
Surmuntita

ubi0:rootfs
40.7M
36.2M
4.4M
89%
/

ubi0:usrfs
10.5M
360K
10.1M
3%
/ datumoj

ubi0:cachefs
50.3M
20K
47.7M
0%
/kaŝaĵo

Disponebla funkcieco

Kiel menciite supre, la modulo estas konstruita sur la pecetaro Cortex A7 de Qualcomm. Estus malĝuste ne provizi tian alt-efikan kernon por prilabori la uzantprogramon kaj malŝarĝi la ĉefan procesoron de la aparato malŝarĝante iun parton de la programo al la modulo.

Por la uzantprogramo, la sekvaj ekstercentraj operaciumoj estos disponeblaj por ni:

Pinglo Ne.
Nomo
Sys GPIO No.
Defaŭlta ago
Funk1
Funk2
tiri
Vekiĝointerrompo

6
SPI_CLK
-
UART1_RTS
-
-
B-PD
-

7
SPI_MISO
-
UART1_Rx
-
-
B-PD
-

8
SPI_MOSI
-
UART1_Tx
-
-
B-PD
-

9
SPI_CS
-
UART1_CTS
-
-
B-PD
-

21
SD_CMD
-
SD-Karto
-
-
B-PD
-

22
SD_DATA0
-
SD-Karto
-
-
B-PD
-

23
SD_DATA1
-
SD-Karto
-
-
B-PD
-

24
SD_DATA2
-
SD-Karto
-
-
B-PD
-

25
SD_DATA3
-
SD-Karto
-
-
B-PD
-

26
SD_CLK
-
SD-Karto
-
-
B-PN
-

27
SDIO_DATA1
-
Fi
-
-
B-PD
-

28
SDIO_DATA2
-
Fi
-
-
B-PD
-

29
SDIO_CMD
-
Fi
-
-
B-PD
-

30
SDIO_DATA0
-
Fi
-
-
B-PD
-

31
SDIO_DATA3
-
Fi
-
-
B-PD
-

32
SDIO_CLK
-
Fi
-
-
B-PN
-

33
GPIO3
GPIO_1020
MIFI_POWER_EN
GPIO
MIFI_POWER_EN
B-PU
-

34
GPIO6
GPIO_1023
MIFI_SLEEP_CLK
GPIO
MIFI_SLEEP_CLK
B-PD
-

46
ADC2
-
ADC
-
-
-
-

47
ADC1
-
ADC
-
-
B-PU
-

48
SD_DET
GPIO_26
GPIO
GPIO
SD_DET
B-PD
X

49
STATUSO
GPIO_52
Statuso
GPIO
Statuso
B-PD
X

50
GPIO43
GPIO_36
MIFI_COEX
GPIO
MIFI_COEX
B-PD
-

52
GPIO41
GPIO_79
BT
GPIO
BT
B-PD
X

55
SCL
-
I2C_SCL
-
-
B-PD
-

56
naturresursoj
-
I2C_SDA
-
-
B-PU
-

66
RTS
-
UART2_RTS
-
-
B-PD
-

67
CTS
-
UART2_CTS
-
-
B-PD
-

68
RxD
-
UART2_Rx
-
-
B-PD
-

69
RI
-
GPIO(RI)
-
-
B-PD
-

70
DCD
-
GPIO
-
-
B-PD
-

71
TxD
-
UART2_Tx
-
-
B-PD
-

72
DTR Pli
-
GPIO(DTR)
-
-
B-PD
X

73
PCM_OUT
-
PCM
-
-
B-PD
-

74
PCM_IN
-
PCM
-
-
B-PD
-

75
PCM_SYNC
-
PCM
-
-
B-PD
-

76
PCM_CLK
-
PCM
-
-
B-PU
-

87
GPIO77
GPIO77
BT
GPIO
BT
B-PD
-

Konsentu, la listo estas impresa kaj notu: parto de la ekstercentraj estas uzata por funkciigi la modulon kiel enkursigilo. Tiuj. Surbaze de tia modulo, vi povas fari malgrandan enkursigilon, kiu distribuos la Interreton per Wi-Fi. Cetere, ekzistas preta solvo nomata SIM7600E-H-MIFI kaj estas miniPCIE-karto kun lutita SIM7600E-H-modulo kaj pluraj antenaj pingloj, unu el ili estas Wi-Fi-anteno. Tamen ĉi tio estas temo por aparta artikolo.

Merkredo (ne tago de la semajno)

SIMCom Sendrataj Solvoj doni la ŝancon al programistoj elekti la plej konatan evolumedion por Linukso aŭ Vindozo. Se ni parolas pri unu plenumebla aplikaĵo sur modulo, tiam estas pli bone elekti Vindozon, ĝi estos pli rapida kaj pli facila. Se oni atendas kompleksan aplikaĵarkitekturon kaj postajn ĝisdatigojn, estas pli bone uzi Linukso. Ni ankaŭ bezonas Linukson por kompili ruleblajn dosierojn por posta ŝarĝo en la modulon; virtuala maŝino sufiĉas por kompilo.

Kion vi bezonas ne estas libere elŝutebla - SDK, kiun vi povas peti de via distribuisto.

Instalado de utilecoj por labori kun la modulo

Poste, ni laboros sub Vindozo kiel la plej konata OS por la plej multaj uzantoj.

Ni devos instali la necesan programaron en kelkaj simplaj paŝoj por poste regi labori kun la modulo:

  1. GNU/Linukso
  2. Cigvino
  3. Ŝoforoj
  4. ADB

Instalante GNU/Linukso

Por konstrui la aplikaĵon, vi povas uzi ajnan kongruan kompililon ARM-Linukso. Ni uzos SourceryCodeBenchLiteARM GNU/Linuxtranslater disponebla por elŝuto ĉe ligilo.

Por certigi, ke ĉiuj komponantoj estas ĝuste instalitaj, mi lasos kelkajn ekrankopiojn de la instala procezo. En principo, estas nenio komplika en la instalado.

Por certigi, ke ĉiuj komponantoj estas ĝuste instalitaj, mi lasos kelkajn ekrankopiojn de la instala procezo. En principo, estas nenio komplika en la instalado.

  1. Ni akceptas la licencan interkonsenton
    OpenLinux kiel parto de SIM7600E-H-moduloj
  2. Indiku la instalan dosierujon
    OpenLinux kiel parto de SIM7600E-H-moduloj
  3. Ni lasas la necesajn komponantojn senŝanĝaj
    OpenLinux kiel parto de SIM7600E-H-moduloj
  4. Lasu ĝin tia
    OpenLinux kiel parto de SIM7600E-H-moduloj
  5. Plurfoje "Sekva", "Instali" kaj esence tio estas
    OpenLinux kiel parto de SIM7600E-H-moduloj

Instalante Cygwin

Plue, por disvolviĝo, vi bezonos aron da bibliotekoj kaj iloj el la provizita aro Cigvino. Ĉio estas simpla ĉi tie, la nuna versio de Cygwin estas elŝutebla senpage en la oficiala retejo de la projekto; en la momento de la skribado, estis disponebla versio 3.1.5, kion ni uzis kiam ni preparis la materialon.

Estas nenio komplika instali Cygwin, la sola afero, kiun vi bezonas elekti, estas spegulo, el kiu la instalilo elŝutos la necesajn dosierojn, elektos iun ajn kaj instalos ĝin, same kiel aron da utilecoj kaj bibliotekoj, lasante ĉiujn disponeblajn bibliotekojn kaj iloj elektitaj.

instali ŝoforoj

Post kiam la modulo estas konektita al la komputilo, vi devos instali ŝoforojn. Ĉi tiuj povas esti petitaj de via distribuisto (rekomendita). Mi ne rekomendas serĉi en la Interreto memstare, ĉar... Eble necesas multe da tempo por trovi kio kaŭzis la aparaton konflikton.

OpenLinux kiel parto de SIM7600E-H-moduloj

Inter la elektitaj havenoj ni vidas la jenajn:

fenestroj
linux
Priskribo

SimTech HS-USB-Diagnozo
USBa Serio
Diagnoza Interfaco

SimTech HS-USB NMEA
USBa Serio
GPS-NMEA-Interfaco

SimTech HS-USB AT Haveno
USBa Serio
AT-havena Interfaco

SimTech HS-USB-Modemo
USBa Serio
Modema haveno Interfaco

SimTech HS-USB Aŭdio
USBa Serio
USBa Interfaco

SimTech HS-USB WWAN-Adaptilo
USB Reto
NDIS WWAN-Interfaco

Android Komponita ADB-Interfaco
USB ADB
Android aldonu sencimigan havenon

Kiel vi verŝajne rimarkis, ne ekzistas USB ADB inter la havenoj en la ekrankopio, ĉi tio estas ĉar la ADB-haveno en la modulo estas fermita defaŭlte kaj vi devas ebligi ĝin sendante la komandon 'AT+CUSBADB=1' al la AT. haveno de la modulo kaj rekomencu ĝin (ĉi tio povas esti farita per la komando 'AT+CRESET').

Kiel rezulto, ni ricevas la deziratan interfacon en la aparata administranto:

OpenLinux kiel parto de SIM7600E-H-moduloj

Ni finis kun la ŝoforoj, ni pluiru al ADB.

Instalante ADB

Iru al la oficiala retejo de Android Developer ligilo. Ni ne elŝutos la volumenan Android Studion, ni nur bezonas la komandlinion, disponeblan por elŝuto per la ligilo "Elŝuti SDK-Platformon-Iloj por Vindozo".

OpenLinux kiel parto de SIM7600E-H-moduloj

Elŝutu kaj malpaku la rezultan arkivon al la radiko de stirado C.

Mediaj Variabloj

Post instalo de Cygwin, vi devos aldoni la Cygwin/bin/-vojon al la disvolvaj medio-variabloj (Klasika Kontrolpanelo → Sistemo → Altnivelaj sistemaj agordoj → Altnivelaj → Mediaj Variabloj → Sistemaj Variabloj → Vojo → Redakti) kiel montrite en la suba ekrankopio:

OpenLinux kiel parto de SIM7600E-H-moduloj

Simile, aldonu la vojon al la elŝutita kaj malpakita ADB-arkivo al la radiko de stirado C.

OpenLinux kiel parto de SIM7600E-H-moduloj

Klaku OK plurfoje kaj rekomencu la komputilon.

Post rekomenco, vi povas facile kontroli ĉu ADB funkcias ĝuste, malfermante la komandlinion (Win+R → cmd) kaj tajpante la komandon 'adb version'. Ni ricevas ion tian:

OpenLinux kiel parto de SIM7600E-H-moduloj

Ni konektu la modulon al la komputilo (se ĝi estas malkonektita) kaj kontrolu ĉu ADB vidas ĝin per la komando 'adb-aparatoj':

OpenLinux kiel parto de SIM7600E-H-moduloj

Farita, ĉi tio kompletigas la agordon de la konekto al la modulo kaj ni povas lanĉi la ŝelon por labori kun la modulo.

OpenLinux kiel parto de SIM7600E-H-moduloj

Malpaki kaj kompili la SDK

Nun kiam ni havas aliron al la ŝelo kaj povas komenci labori kun la komandlinio de la modulo, ni provu kompili nian unuan aplikaĵon por ŝargi en la modulon.

Multaj homoj eble havos malfacilaĵojn kun ĉi tio! Ĉar La modulo funkcias per la Linukso operaciumo; por eviti koliziojn dum kompilado de kodo sub Vindozo, estas plej bone kompili en la denaska medio - Linukso.

Ni ne detale pritraktos kiel, sen Linukso kaj la deziro instali ĝin sur via maŝino, vi povas instali ĝin sur virtuala maŝino. Ni uzos VirtualBox, instalos Ubuntu-version 20.04 (la nuna versio en la momento de la skribado) kaj sub ĝi ni komencos labori kun kompililoj, SDK-oj, ktp.

Ni iru al la Linukso-medio kaj malpaku la arkivon ricevitan de la distribuisto.

simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz 

Iru al la dosierujo sim_open_sdk kaj aldonu la medion:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ cd sim_open_sdk
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ source sim_crosscompile/sim-crosscompile-env-init 

Ni restas en la sama dosierujo kaj plenumas postajn komandojn dum en ĝi.
Instalu la bibliotekon libncurses5-dev se ĝi ne estis instalita:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y

Python, se ĝi ankaŭ ne estis instalita:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y

kaj gcc:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc

Kompilo:

Nun ni devas kompili plurajn dosierojn, ni rulas la sekvajn komandojn sinsekve.

Se la fenestro de agordo de la kerno aperas dum kompilo, simple elektu Eliri kaj revenu al la konzolo; ni ne bezonas agordi la kernon nun.

Ni faras:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make

Kompilanta ekŝargilon:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot

Kompilante la kernon:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel

Kompilu la radikan dosiersistemon:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs

Por uzantoj de Linukso estos grave kompili la modulan pelilon:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module

Ni kompilu la demonstraĵon:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo

Post tio pluraj novaj dosieroj aperos en la dosierujo sim_open_sdk/output:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn  boot.img  demo_app  helloworld  system.img

Demo

Ni provu ŝargi la demon en nian modulon kaj vidu, kio eliras el ĝi.

Elŝuti

En la dosierujo sim_open_sdk ni povas vidi la dosieron demo_app. Ni prenas ĝin kaj translokigas ĝin al la radiko de stirado C sur la komputilo al kiu la modulo estas konektita. Poste lanĉu la Vindozan komandlinion (Win+R -> cmd) kaj enigu:

C:>adb push C:demo_app /data/

La konzolo diros al ni:

C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)

Ĉi tio signifas, ke la dosiero estis sukcese sendita al la modulo kaj ĉio, kion ni devas fari, estas ruli ĝin. Ni ne hezitu.

Ni faras:

C:>adb shell

Ni pligrandigas la rajtojn de la elŝutita dosiero:

/ # cdhmod 777 /data/demo_app

Kaj ni kuras:

/ # /data/demo_app

En la sama konzolo, la modulo diros al ni la jenon:

SDK_VER : SIM_SDK_VER_20191205
DEMO_VER: SIM_SDK_VER_20191205

Please select an option to test from the items listed below.

1. WIFI                       2. VOICE CALL
3. DATA CALL                  4. SMS
5. WDS(APN)                   6. NAS
7. AT                         8. OTA
9. TTS                        10. GPIO
11. GPS                       12. Bluetooth
13. TCP/UDP                   14. Timer
15. ADC                       16. I2C
17. UIM(SimCard)              18. DMS(IMEI,MEID)
19. UART                      20. SPI
21. Version                   22. Ethernet
23. FTP                       24. SSL
25. HTTP(S)                   26. FTP(S)
27. MQTT(S)                   28. ALSA
29. DEV                       30. AUDIO
31. JSON                      32. LBS
99. EXIT
Option >   

Ni rigardu la IMEI de la modulo, enigu 7 (ŝanĝu al komanda reĝimo) kaj poste enigu 5:

Please select an option to test from the items listed below.

1. WIFI                       2. VOICE CALL
3. DATA CALL                  4. SMS
5. WDS(APN)                   6. NAS
7. AT                         8. OTA
9. TTS                        10. GPIO
11. GPS                       12. Bluetooth
13. TCP/UDP                   14. Timer
15. ADC                       16. I2C
17. UIM(SimCard)              18. DMS(IMEI,MEID)
19. UART                      20. SPI
21. Version                   22. Ethernet
23. FTP                       24. SSL
25. HTTP(S)                   26. FTP(S)
27. MQTT(S)                   28. ALSA
29. DEV                       30. AUDIO
31. JSON                      32. LBS
99. EXIT
Option > 7

Please select an option to test from the items listed below.

1. get Module Version         2. get CSQ
3. get CREG                   4. get ICCID
5. get IMEI                   6. get CIMI
99. back
Option > 5
IMEI: 867584030090489

Please select an option to test from the items listed below.

1. get Module Version         2. get CSQ
3. get CREG                   4. get ICCID
5. get IMEI                   6. get CIMI
99. back
Option >

Tiel ni vidos la IMEI de la modulo.

Kiel konkludo

Mi esperas, ke ni povis havi ĝeneralan ideon pri kiel komenci kun la modulo. En la sekvaj artikoloj, ni rigardos pli detale la kapablojn, kiujn provizas la platformo SIM7600E-H, kaj ankaŭ kiel vi povas malproksime ĝisdatigi vian propran aplikaĵon en la modulo.

Mi invitas vin demandi demandojn en la komentoj, kaj ankaŭ indiki kiu aspekto de la kapabloj de la modulo devus esti reflektita en postaj artikoloj.

fonto: www.habr.com

Aldoni komenton