
Udviklingsmekanismen for brugerdefinerede applikationer og upload til modulet er tilgÊngelig bÄde under Linux- og Windows-operativsystemer. I denne artikel vil vi grundigt gennemgÄ, hvordan man ved at bruge eksempler fra det leverede SDK kan kompilere og uploade en brugerdefineret applikation til modulet.
FÞr jeg skrev denne artikel, bad en bekendt, som ikke var bekendt med udvikling under Linux, mig om at beskrive udviklingsprocessen for en brugerdefineret applikation til SIM7600E-H modulet sÄ detaljeret som muligt. Kriteriet for materialets tilgÊngelighed var sÊtningen "sÄ jeg forstÄr".
Jeg inviterer dig til at se, hvad der er blevet til.
Artiklen opdateres og udvides regelmĂŠssigt
PrĂŠludium
Normalt bruges mobilmoduler kun til dataoverfÞrsel, stemmeopkald, SMS-overfÞrsel og lignende. Alt dette gÞres ved hjÊlp af AT-kommandoer sendt fra en ekstern kontroller. Men der er en kategori af moduler, der tillader udfÞrelse af brugerdefineret kode, der uploades udefra. I nogle tilfÊlde kan det betydeligt reducere det samlede budget for enheden, hvilket muliggÞr brug af en enklere (og derfor mere omkostningseffektiv) mikrocontroller eller helt at undgÄ en. Med fremkomsten af LTE-moduler, der kÞres pÄ Android- eller Linux-operativsystemerne og deres kraftige ressourcer, kan man lÞse alle de opgaver, som populÊre processorer kan hÄndtere. Denne artikel vil handle om SIM7600E-H, der kÞres pÄ Linux. Vi vil se pÄ, hvordan man uploader og kÞrer en eksekverbar applikation.
Materialet er i hÞj grad baseret pÄ dokumentet "SIM7600 Open Linux Development Guide", men nogle tilfÞjelser, isÊr den russisk sprogede version, vil vÊre nyttige. Artiklen vil hjÊlpe dem, der lige er begyndt at lÊre modulet, med at komme til at uploade en demonstrationsapplikation og give de nÞdvendige fÊrdigheder til senere arbejde.
Kort om, hvem SIM7600E-H er.
SIM7600E-H er en modul baseret pÄ Qualcomm ARM Cortex-A7 1.3GHz processor med et indbygget Linux-operativsystem (kernel 3.18.20), der kan arbejde med europÊiske (herunder russiske) 2G/3G/LTE frekvensbÄnd, understÞtter Cat.4, og opnÄr maksimum downloadhastighed pÄ op til 150 Mbps og uploadhastighed pÄ op til 50 Mbps. Den rige periferi, industrielle temperaturomrÄde og indbygget GPS/GLONASS-navigation opfylder alle krav til moderne modulÊre lÞsninger inden for M2M-omrÄdet.
Systemoversigt
Modulet SIM7600E-H er baseret pÄ et Linux-operativsystem (kernel 3.18.20). Filformatet er bygget pÄ en journaliseret filsystem kaldet UBIFS (Unsorted Block Image File System).
Vigtige funktioner i dette filsystem inkluderer:
- arbejde med partitioner, tillader oprettelse, sletning eller ĂŠndring af stĂžrrelse;
- sikrer udjÊvning af skrivning pÄ tvÊrs af lagermediet;
- arbejde med dÄrlige blokke;
- minimerer risikoen for datatab ved pludselig strĂžmafbrydelse eller andre fejl;
- fĂžringsjournaler.
Beskrivelsen er hentet , hvor der ogsÄ er givet en detaljeret beskrivelse af dette filsystem.
Det vil sige, denne type filsystem er ideel til barske driftsforhold for modulet og mulige strĂžmproblemer. Men det betyder ikke, at forhold med ustabil strĂžm vil vĂŠre den forventede driftstilstand for modulet; det indikerer kun en stĂžrre levedygtighed for enheden.
Hukommelse
Fordelingen af hukommelsesomrÄder er som fÞlger:

Der skal afsÊttes tre hovedomrÄder:
ubi0:rootfs â kun tilgĂŠngelig for lĂŠsning og indeholder selve Linux-kernen
ubi0:usrfs â bruges primĂŠrt til brugerprogrammer og datalagring
ubi0:cahcefs â reserveret til FOTA-opdateringer. Hvis der ikke er nok plads til at downloade opdateringen, vil systemet slette ubrugte filer for at frigive plads. Men af sikkerhedsmĂŠssige Ă„rsager anbefales det ikke at placere sine filer der.
Alle tre partitioner er fordelt som fĂžlger:
Filsystem
StĂžrrelse
Brugt
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 tidligere, er modulet bygget pÄ Qualcomm Cortex A7 chipset. Det ville vÊre forkert ikke at tilbyde en sÄ hÞjtydende kerne til behandling af brugerprogrammet og aflaste den centrale processor, ved at lade modulet hÄndtere en del af programmet.
For brugerprogrammet vil fĂžlgende driftsformer for den perifere enhed vĂŠre tilgĂŠngelige:
Pin Nr.
Navn
Sys GPIO Nr.
Standard handling
Func1
Func2
Pull
Wakeup interrupt
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_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
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
SDA
â
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
â
En imponerende liste, og bemÊrk: en del af periferien bruges til at fÄ modulet til at fungere som en router. Dvs. pÄ basis af et sÄdant modul kan der laves en lille router, som kan dele internet over Wi-Fi. Desuden findes der allerede en fÊrdig lÞsning, kaldet SIM7600E-H-MIFI, som er et miniPCIe-kort med det indbyggede SIM7600E-H modul og flere antenneudgange, hvoraf en er en Wi-Fi antenne. Dette er imidlertid et emne til et separat materiale.
MiljĂž (ikke ugedag)
giver udviklerne mulighed for selv at vĂŠlge det mest velkendte udviklingsmiljĂž under Linux eller Windows. Hvis der er tale om en enkelt eksekverbar applikation pĂ„ modulet, er det bedre at vĂŠlge Windows, da det bliver hurtigere og enklere. Hvis der planlĂŠgges en kompleks arkitektur af applikationen og efterfĂžlgende opgraderinger â er det bedre at bruge Linux. Vi vil ogsĂ„ have brug for Linux til at kompilere de eksekverbare filer til efterfĂžlgende upload til modulet; til kompilering er en virtuel maskine tilstrĂŠkkelig.
Hvad du skal bruge, som ikke er frit tilgĂŠngeligt for download â SDK, som kan anmodes om hos din distributĂžr.
Installation af vĂŠrktĂžjer til arbejde med modulet
Her og fremover vil vi arbejde under Windows, som er det mest kendte operativsystem for de fleste brugere.
Vi skal gennem nogle enkle trin installere det nĂždvendige software til at lĂŠre at arbejde med modulet:
- GNU/Linux
- Cygwin
- Drivere
- ADB
Installation af GNU/Linux
For application assembly, you can use any ARM-Linux compatible compiler. We will use the SourceryCodeBenchLiteARM GNU/Linux translator available for download at .
To ensure all components are installed correctly, I will leave a few screenshots of the installation process. Essentially, there's nothing complicated about the installation.
To ensure all components are installed correctly, I will leave a few screenshots of the installation process. Essentially, there's nothing complicated about the installation.
- Accept the license agreement

- Specify the installation folder

- Leave the necessary components unchanged

- Leave as is

- A few 'Next', 'Install', and thatâs basically it

Installing Cygwin
Next, for development, you will need a set of libraries and utilities from the provided package Here, it's simple; the latest version of Cygwin can be downloaded for free from the official project site, and at the time of writing, version 3.1.5 was available, which we used in preparing the material.
Thereâs nothing complicated about installing Cygwin, the only thing you will need to choose is a mirror from which the installer will download the necessary files, select any, and install, as well as the set of utilities and librariesâleave all available libraries and utilities selected.
Installing drivers
After the module is connected to the PC, you will need to install the drivers. You can request them from your distributor (recommended). I do not recommend searching the Internet for them yourself, as it may take a long time to find what caused the device conflict.

Among the designated ports, we see the following:
Windows
Linux
Description
SimTech HS-USB Diagnostics
USB Serial
Diagnostic Interface
SimTech HS-USB NMEA
USB Serial
GPS NMEA Interface
SimTech HS-USB AT Port
USB Serial
AT port Interface
SimTech HS-USB Modem
USB Serial
Modem port Interface
SimTech HS-USB Audio
USB Serial
USB Audio Interface
SimTech HS-USB WWAN Adapter
USB Net
NDIS wwan Interface
Android Composite ADB Interface
USB ADB
Android add debug port
As you may have noticed, among the ports in the screenshot, there is no USB ADB, due to the fact that the ADB port in the module is closed by default and needs to be enabled by sending the command 'AT+CUSBADB=1' to the module's AT port and restarting it (this can be done with the command 'AT+CRESET').
In the end, we will have the necessary interface in the device manager:

We've completed the drivers, now let's move on to ADB.
Installing ADB
Go to the official Android Developer website at . We won't be downloading the bulky Android Studio; the command line is sufficient, available for download via the link 'Download SDK Platform-Tools for Windows'.

Download and extract the obtained archive to the root of drive C.
MiljĂžvariabler
Efter installationen af Cygwin skal stien Cygwin/bin/ tilfĂžjes til udviklingsmiljĂžvariablerne (Kontrolpanel â System â Avancerede systemindstillinger â Avanceret â MiljĂžvariabler â Systemvariabler â Path â Rediger), som vist pĂ„ skĂŠrmbilledet nedenfor:

PÄ samme mÄde tilfÞjer vi stien til den downloadede og udpakkede ADB-arkiv i rodmappen pÄ drev C.

Klik flere gange pÄ OK og genstart computeren.
Efter genstart kan vi nemt kontrollere, om ADB fungerer korrekt ved at Ă„bne kommandoprompten (Win+R â cmd) og indtaste kommandoen âadb versionâ. Vi fĂ„r omtrent et sĂ„dant resultat:

Vi tilslutter modulet til PC'en (hvis det er blevet frakoblet) og kontrollerer, om ADB kan se det med kommandoen âadb devicesâ:

FĂŠrdig, nu er konfigurationen af forbindelsen til modulet afsluttet, og vi kan starte shell for at arbejde med modulet.

Udpakning og kompilering af SDK
NÄr vi har fÄet adgang til shell og kan begynde at arbejde med kommandoprompten til modulet, vil vi prÞve at kompilere vores fÞrste applikation til upload til modulet.
Mange kan have problemer med dette! Da modulet kĂžrer pĂ„ operativsystemet Linux, er det bedst at kompilere i et lokalt miljĂž â Linux â for at undgĂ„ kollisioner, nĂ„r koden kompileres under Windows.
Vi vil ikke gÄ i dybden med, hvordan man kan installere Linux pÄ en virtuel maskine, hvis man ikke Þnsker at installere det pÄ sin egen computer. Vi vil bruge VirtualBox, installere Ubuntu version 20.04 (den aktuelle version pÄ tidspunktet for artiklens skrivning) og begynde at arbejde med compilere, SDK osv. der.
Vi gÄr ind i Linux-miljÞet og udpoker arkivet modtaget fra distributÞren.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz Vi bevĂŠger os ind i kataloget sim_open_sdk og tilfĂžjer 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 bliver i denne mappe og udfĂžrer de fĂžlgende kommandoer mens vi er i den.
Installerer biblioteket libncurses5-dev, hvis det ikke er blevet installeret:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -yPython, hvis det heller ikke er blevet installeret:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -yog gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gccCompilation:
Nu skal vi kompilere flere filer, og vi udfĂžrer fĂžlgende kommandoer i rĂŠkkefĂžlge.
Hvis der opstĂ„r et vindue til kerneindstillinger under kompileringen â vĂŠlg blot Exit og vend tilbage til konsollen, vi har ikke brug for at konfigurere kernen lige nu.
Vi udfĂžrer:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ makeVi kompilere bootloader:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make abootVi kompilere kernen:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
Vi kompilere rodfilessystemet:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfsFor Linux-brugere vil det vĂŠre relevant at kompilere drivermodulet:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_moduleLad os kompilere demoen:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demoDerefter vil der dukke flere nye filer op i mappen sim_open_sdk/output:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn boot.img demo_app helloworld system.img
Demo
Lad os prĂžve at indlĂŠse demoen i vores modul og se hvad der sker.
IndlĂŠsning
I mappen sim_open_sdk kan vi se filen demo_app. Vi tager den og flytter den til roden af C-drevet pÄ computeren, som modulet er tilsluttet. Derefter Äbner vi kommandoprompten i Windows (Win+R -> cmd) og indtaster:
C:>adb push C:demo_app /data/Konsollen vil sige:
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 med succes, og vi skal bare starte den. Lad os ikke vente.
Vi udfĂžrer:
C:>adb shellVi udvider rettighederne for den indlĂŠste fil:
/ # cdhmod 777 /data/demo_appOg starter:
/ # /data/demo_appI denne konsol vil modulet fortĂŠlle os fĂžlgende:
SDK_VER : SIM_SDK_VER_20191205
DEMO_VER: SIM_SDK_VER_20191205
VĂŠlg en mulighed for at teste fra de listede punkter nedenfor.
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 IMEI-nummeret pÄ modulet, vi indtaster 7 (skift til kommandotilstand) og sÄ indtaster vi 5:
VĂŠlg venligst en mulighed at teste fra de listede punkter nedenfor.
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
VĂŠlg venligst en mulighed at teste fra de listede punkter nedenfor.
1. get Module Version 2. get CSQ
3. get CREG 4. get ICCID
5. get IMEI 6. get CIMI
99. tilbage
Option > 5
IMEI: 867584030090489
VĂŠlg venligst en mulighed at teste fra de listede punkter nedenfor.
1. get Module Version 2. get CSQ
3. get CREG 4. get ICCID
5. get IMEI 6. get CIMI
99. tilbage
Option >
Dermed vil vi se IMEI for modulet.
Som konklusion
Jeg hÄber, vi har formÄet at give et generelt indtryk af, hvordan man kommer i gang med modulet. I de fÞlgende artikler vil vi se nÊrmere pÄ funktionerne, som platformen SIM7600E-H tilbyder, samt hvordan man kan opdatere ens egen applikation i modulet eksternt.
Jeg inviterer til at stille spÞrgsmÄl i kommentarerne og angive, hvilken aspekt af modulens funktioner der skal afspejles i de kommende artikler.
Kilde: habr.com





