OpenLinux as part of SIM7600E-H modules

OpenLinux as part of SIM7600E-H modules

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 SIMCom Wireless Solutions 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 from here, 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:

OpenLinux as part of SIM7600E-H modules

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)

SIMCom Wireless Solutions 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:

  1. GNU/Linux
  2. Cygwin
  3. Drivere
  4. 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 linket.

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.

  1. Accept the license agreement
    OpenLinux as part of SIM7600E-H modules
  2. Specify the installation folder
    OpenLinux as part of SIM7600E-H modules
  3. Leave the necessary components unchanged
    OpenLinux as part of SIM7600E-H modules
  4. Leave as is
    OpenLinux as part of SIM7600E-H modules
  5. A few 'Next', 'Install', and that’s basically it
    OpenLinux as part of SIM7600E-H modules

Installing Cygwin

Next, for development, you will need a set of libraries and utilities from the provided package CygwinHere, 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.

OpenLinux as part of SIM7600E-H modules

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:

OpenLinux as part of SIM7600E-H modules

We've completed the drivers, now let's move on to ADB.

Installing ADB

Go to the official Android Developer website at linket. 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'.

OpenLinux as part of SIM7600E-H modules

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:

OpenLinux as part of SIM7600E-H modules

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

OpenLinux as part of SIM7600E-H modules

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:

OpenLinux as part of SIM7600E-H modules

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

OpenLinux as part of SIM7600E-H modules

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

OpenLinux as part of SIM7600E-H modules

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 -y

Python, hvis det heller ikke er blevet 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

Compilation:

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$ make

Vi kompilere bootloader:

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

Vi 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 rootfs

For Linux-brugere vil det vĂŠre relevant at kompilere drivermodulet:

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

Lad os kompilere demoen:

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

Derefter 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 shell

Vi udvider rettighederne for den indlĂŠste fil:

/ # cdhmod 777 /data/demo_app

Og starter:

/ # /data/demo_app

I 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

KĂžb pĂ„lidelig webhosting med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KĂžb pĂ„lidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster