Mekanismen til at udvikle en brugerdefineret applikation og indlæse den i modulet er tilgængelig under både Linux- og Windows-operativsystemerne. I denne artikel vil vi tage et detaljeret kig på hvordan, ved hjælp af eksempler fra SDK'et
Inden jeg skrev artiklen, bad en af mine bekendte, langt fra at udvikle til Linux, mig om at nærme mig spørgsmålet om at beskrive processen med at udvikle min egen applikation til SIM7600E-H-modulet så detaljeret som muligt. Kriteriet for at vurdere tilgængeligheden af præsentationen af materiale var sætningen "så jeg forstår."
Jeg inviterer dig til at gøre dig bekendt med, hvad der skete.
Artiklen bliver løbende suppleret og opdateret
Prelude
Typisk bruges cellulære kommunikationsmoduler kun til datatransmission, taleopkald, SMS-transmission og lignende. Alt dette gøres gennem AT-kommandoer sendt fra en ekstern kontrolmikrocontroller. Men der er en kategori af moduler, der giver dig mulighed for at udføre tilpasset kode indlæst udefra. I nogle tilfælde reducerer dette enhedens samlede budget betydeligt, hvilket giver dig mulighed for at installere en enklere (og lige så budget) mikrocontroller på kortet eller helt opgive det. Med fremkomsten af LTE-moduler styret af Android eller Linux OS og deres kraftfulde ressourcer er det muligt at løse alle opgaver, der er tilgængelige for populære processorer. Denne artikel vil tale om SIM7600E-H, styret af Linux OS. Vi vil se på, hvordan du downloader og kører et eksekverbart program.
På mange måder er materialet baseret på dokumentet "SIM7600 Open Linux development quide", men nogle tilføjelser og først og fremmest den russiske version vil være nyttige. Artiklen hjælper dem, der lige er begyndt at mestre modulet, med at forstå, hvordan man downloader demoapplikationen og giver de nødvendige færdigheder til efterfølgende arbejde.
Kort om hvem SIM7600E-H er
SIM7600E-H er et modul bygget på ARM Cortex-A7 1.3 GHz-processoren fra Qualcomm, med Linux-operativsystemet (kerne 3.18.20) inde, der er i stand til at arbejde med europæiske (inklusive russiske) frekvensbånd 2G/3G/ LTE, der understøtter Cat .4, der giver maksimale downloadhastigheder på op til 150 Mbps og uploadhastigheder på op til 50 Mbps. Rigt periferiudstyr, et industrielt temperaturområde og tilstedeværelsen af indbygget GPS/GLONASS-navigation dækker alle krav til en moderne modulopbygget løsning på M2M-området.
System overblik
SIM7600E-H-modulet er baseret på Linux-operativsystemet (kerne 3.18.20). Til gengæld er filsystemet bygget på basis af det journalførte filsystem UBIFS (Unsorted Block Image File System).
Vigtige funktioner i dette filsystem inkluderer:
- arbejder med partitioner, giver dig mulighed for at oprette, slette eller ændre deres størrelse;
- sikrer optagelsesjustering på tværs af hele medievolumen;
- arbejder med dårlige blokke;
- minimerer sandsynligheden for tab af data under strømafbrydelser eller andre fejl;
- føre logs.
Beskrivelse taget
De der. Denne type filsystem er ideel til modulets hårde driftsforhold og mulige strømproblemer. Men dette betyder ikke, at ustabile strømforhold vil være modulets forventede driftsform; det indikerer kun enhedens større levedygtighed.
Память
Fordelingen af hukommelsesområder er konstrueret som følger:
Der er tre hovedområder at fremhæve:
ubi0:rootfs – skrivebeskyttet og indeholder selve Linux-kernen
ubi0:usrfs – bruges primært til brugerprogrammer og datalagring
ubi0:cahcefs – forbeholdt FOTA-opdateringer. Hvis den tilgængelige plads ikke er nok til at downloade opdateringen, vil systemet slette ubrugte filer og dermed frigøre plads. Men af sikkerhedsmæssige årsager bør du ikke placere dine filer der.
Alle tre sektioner er fordelt som følger:
Filsystem
Størrelse
KØB Brugte
tilgængelig
Brug%
Monteret på
ubi0:rootfs
40.7M
36.2M
4.4M
89 %
/
ubi0:usrfs
10.5M
360K
10.1M
3%
/data
ubi0:cachefs
50.3M
20K
47.7M
0%
/cache
Tilgængelig funktionalitet
Som nævnt ovenfor er modulet bygget på Cortex A7-chipsættet fra Qualcomm. Det ville være forkert ikke at tilvejebringe en så højtydende kerne til at behandle brugerprogrammet og aflaste enhedens hovedprocessor ved at aflaste en del af programmet til modulet.
For brugerprogrammet vil følgende perifere driftstilstande være tilgængelige for os:
Pin nr.
Navn
Sys GPIO nr.
Standardhandling
Funktion 1
Funktion 2
Træk
Wakeup afbrydelse
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 kort
—
—
B-PD
—
22
SD_DATA0
—
SD kort
—
—
B-PD
—
23
SD_DATA1
—
SD kort
—
—
B-PD
—
24
SD_DATA2
—
SD kort
—
—
B-PD
—
25
SD_DATA3
—
SD kort
—
—
B-PD
—
26
SD_CLK
—
SD kort
—
—
B-PN
—
27
SDIO_DATA1
—
WLAN
—
—
B-PD
—
28
SDIO_DATA2
—
WLAN
—
—
B-PD
—
29
SDIO_CMD
—
WLAN
—
—
B-PD
—
30
SDIO_DATA0
—
WLAN
—
—
B-PD
—
31
SDIO_DATA3
—
WLAN
—
—
B-PD
—
32
SDIO_CLK
—
WLAN
—
—
B-PN
—
33
GPIO3
GPIO_1020
MIFI_POWER_DA
GPIO
MIFI_POWER_DA
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
STATUS
GPIO_52
Status
GPIO
Status
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
naturressourcer
—
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
—
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
—
Enig, listen er imponerende, og bemærk: en del af de eksterne enheder bruges til at betjene modulet som en router. De der. Baseret på et sådant modul kan du lave en lille router, der distribuerer internettet via Wi-Fi. Der findes i øvrigt en færdig løsning kaldet SIM7600E-H-MIFI og er et miniPCIE-kort med et loddet SIM7600E-H-modul og flere antennestifter, en af dem er en Wi-Fi-antenne. Dette er dog et emne for en separat artikel.
Onsdag (ikke en dag i ugen)
Det, du har brug for, er ikke frit tilgængeligt til download - et SDK, som du kan anmode din distributør om.
Installation af hjælpeprogrammer til at arbejde med modulet
Herefter vil vi arbejde under Windows som det mest velkendte OS for de fleste brugere.
Vi bliver nødt til at installere den nødvendige software i nogle få enkle trin for efterfølgende at mestre arbejdet med modulet:
- GNU / Linux
- Cygwin
- Chauffør
- ADB
Installerer GNU/Linux
For at bygge applikationen kan du bruge enhver ARM-Linux-kompatibel compiler. Vi vil bruge SourceryCodeBenchLiteARM GNU/Linuxtranslater tilgængelig til download på
For at sikre, at alle komponenter er installeret korrekt, vil jeg efterlade et par skærmbilleder af installationsprocessen. I princippet er der ikke noget kompliceret i installationen.
For at sikre, at alle komponenter er installeret korrekt, vil jeg efterlade et par skærmbilleder af installationsprocessen. I princippet er der ikke noget kompliceret i installationen.
- Vi accepterer licensaftalen
- Angiv installationsmappen
- Vi lader de nødvendige komponenter være uændrede
- Lad det være som det er
- Flere gange "Næste", "Installer" og i bund og grund er det det
Installerer Cygwin
Yderligere, til udvikling, skal du bruge et sæt biblioteker og hjælpeprogrammer fra det medfølgende sæt
Der er intet kompliceret i at installere Cygwin, det eneste du skal vælge er et spejl, hvorfra installationsprogrammet vil downloade de nødvendige filer, vælge en og installere den, samt et sæt hjælpeprogrammer og biblioteker, der efterlader alle tilgængelige biblioteker og forsyningsselskaber valgt.
Driver installation
Når modulet er tilsluttet pc'en, skal du installere drivere. Disse kan rekvireres hos din forhandler (anbefales). Jeg anbefaler ikke at søge på internettet på egen hånd, fordi... Det kan tage meget tid at finde ud af, hvad der forårsagede enhedskonflikten.
Blandt de udvalgte porte ser vi følgende:
Windows
Linux
beskrivelse
SimTech HS-USB Diagnostik
USB-serie
Diagnostisk grænseflade
SimTech HS-USB NMEA
USB-serie
GPS NMEA-grænseflade
SimTech HS-USB AT-port
USB-serie
AT port interface
SimTech HS-USB-modem
USB-serie
Modemport Interface
SimTech HS-USB Audio
USB-serie
USB Audio Interface
SimTech HS-USB WWAN-adapter
USB-net
NDIS WWAN-grænseflade
Android Composite ADB Interface
USB ADB
Android tilføje debug port
Som du sikkert har bemærket, er der ingen USB ADB blandt portene på skærmbilledet, det skyldes, at ADB-porten i modulet er lukket som standard, og du skal aktivere den ved at sende kommandoen 'AT+CUSBADB=1' til AT'en port på modulet og genstart det (dette kan gøres med kommandoen 'AT+CRESET').
Som et resultat får vi den ønskede grænseflade i enhedshåndteringen:
Vi er færdige med chaufførerne, lad os gå videre til ADB.
Installation af ADB
Gå til det officielle Android-udviklerwebsted
Download og udpak det resulterende arkiv til roden af drev C.
miljøvariabler
Efter installation af Cygwin, skal du tilføje Cygwin/bin/-stien til udviklingsmiljøvariablerne (Klassisk kontrolpanel → System → Avancerede systemindstillinger → Avanceret → Miljøvariabler → Systemvariabler → Sti → Rediger) som vist på skærmbilledet nedenfor:
Tilsvarende skal du tilføje stien til det downloadede og udpakkede ADB-arkiv til roden af drev C.
Klik på OK flere gange, og genstart computeren.
Efter genstart kan du nemt tjekke om ADB fungerer korrekt ved at åbne kommandolinjen (Win+R → cmd) og skrive kommandoen 'adb version'. Vi får noget som dette:
Lad os forbinde modulet til pc'en (hvis det skete, at det blev afbrudt) og kontrollere, om ADB ser det med kommandoen 'adb devices':
Færdig, dette fuldender konfigurationen af forbindelsen til modulet, og vi kan starte skallen for at arbejde med modulet.
Udpakning og kompilering af SDK
Nu hvor vi har adgang til skallen og kan begynde at arbejde med modulets kommandolinje, lad os prøve at kompilere vores første applikation, der indlæses i modulet.
Mange mennesker kan have svært ved dette! Fordi Modulet kører på Linux-operativsystemet; for at undgå kollisioner ved kompilering af kode under Windows, er det bedst at kompilere i det oprindelige miljø - Linux.
Vi vil ikke dvæle i detaljer om, hvordan du i mangel af Linux og ønsket om at installere det på din maskine kan installere det på en virtuel maskine. Vi vil bruge VirtualBox, installere Ubuntu version 20.04 (den nuværende version i skrivende stund) og under den vil vi begynde at arbejde med compilere, SDK'er osv.
Lad os gå til Linux-miljøet og pakke arkivet ud fra distributøren.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz
Gå til sim_open_sdk biblioteket og tilføj miljøet:
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
Vi forbliver i den samme mappe og udfører efterfølgende kommandoer, mens vi er i den.
Installer libncurses5-dev-biblioteket, hvis det ikke er blevet installeret:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y
Python, hvis det heller ikke var installeret:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y
og gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc
Samling:
Nu skal vi kompilere flere filer, vi kører følgende kommandoer sekventielt.
Hvis kernekonfigurationsvinduet dukker op under kompilering, skal du blot vælge Afslut og vende tilbage til konsollen; vi behøver ikke at konfigurere kernen nu.
Det gør vi:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make
Kompilere bootloader:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot
Kompilering af kernen:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
Kompiler rodfilsystemet:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs
For Linux-brugere vil det være relevant at kompilere moduldriveren:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module
Lad os kompilere demoen:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo
Hvorefter flere nye filer dukker op i sim_open_sdk/output-mappen:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn boot.img demo_app helloworld system.img
Демо
Lad os prøve at indlæse demoen i vores modul og se, hvad der kommer ud af det.
Hent
I sim_open_sdk biblioteket kan vi se filen demo_app. Vi tager det og overfører det til roden af drev C på den pc, som modulet er tilsluttet. Start derefter Windows-kommandolinjen (Win+R -> cmd) og indtast:
C:>adb push C:demo_app /data/
Konsollen vil fortælle os:
C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)
Det betyder, at filen blev sendt til modulet, og alt vi skal gøre er at køre den. Lad os ikke tøve.
Det gør vi:
C:>adb shell
Vi udvider rettighederne til den downloadede fil:
/ # cdhmod 777 /data/demo_app
Og vi kører:
/ # /data/demo_app
I den samme konsol vil modulet fortælle os følgende:
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 >
Lad os se på modulets IMEI, indtast 7 (skift til kommandotilstand) og indtast derefter 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 >
På denne måde vil vi se modulets IMEI.
Som en konklusion
Jeg håber, vi var i stand til at få en generel idé om, hvordan man kommer i gang med modulet. I de følgende artikler vil vi se nærmere på de muligheder, som SIM7600E-H platformen giver, samt hvordan du fjernopdaterer din egen applikation i modulet.
Jeg inviterer dig til at stille spørgsmål i kommentarerne og også angive, hvilket aspekt af modulets muligheder, der skal afspejles i efterfølgende artikler.
Kilde: www.habr.com