OpenLinux som en del af SIM7600E-H moduler

OpenLinux som en del af SIM7600E-H moduler

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 SIMCom trådløse løsninger kompiler og indlæs en brugerdefineret applikation i et modul.

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 dermed, er der også en mere detaljeret beskrivelse af et sådant filsystem.

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:

OpenLinux som en del af SIM7600E-H moduler

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)

SIMCom trådløse løsninger give udviklere mulighed for at vælge det mest velkendte udviklingsmiljø til Linux eller Windows. Hvis vi taler om en eksekverbar applikation på et modul, så er det bedre at vælge Windows, det vil være hurtigere og nemmere. Hvis der forventes en kompleks applikationsarkitektur og efterfølgende opgraderinger, er det bedre at bruge Linux. Vi har også brug for Linux til at kompilere eksekverbare filer til efterfølgende indlæsning i modulet; en virtuel maskine er tilstrækkelig til kompilering.

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:

  1. GNU / Linux
  2. Cygwin
  3. Chauffør
  4. 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å link.

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.

  1. Vi accepterer licensaftalen
    OpenLinux som en del af SIM7600E-H moduler
  2. Angiv installationsmappen
    OpenLinux som en del af SIM7600E-H moduler
  3. Vi lader de nødvendige komponenter være uændrede
    OpenLinux som en del af SIM7600E-H moduler
  4. Lad det være som det er
    OpenLinux som en del af SIM7600E-H moduler
  5. Flere gange "Næste", "Installer" og i bund og grund er det det
    OpenLinux som en del af SIM7600E-H moduler

Installerer Cygwin

Yderligere, til udvikling, skal du bruge et sæt biblioteker og hjælpeprogrammer fra det medfølgende sæt Cygwin. Alt er enkelt her, den aktuelle version af Cygwin kan downloades gratis på projektets officielle hjemmeside; i skrivende stund var version 3.1.5 tilgængelig, hvilket er det, vi brugte, da vi forberedte materialet.

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.

OpenLinux som en del af SIM7600E-H moduler

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:

OpenLinux som en del af SIM7600E-H moduler

Vi er færdige med chaufførerne, lad os gå videre til ADB.

Installation af ADB

Gå til det officielle Android-udviklerwebsted link. Vi vil ikke downloade det omfangsrige Android Studio; vi skal bare bruge kommandolinjen, der er tilgængelig til download via linket "Download SDK Platform-Tools for Windows".

OpenLinux som en del af SIM7600E-H moduler

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:

OpenLinux som en del af SIM7600E-H moduler

Tilsvarende skal du tilføje stien til det downloadede og udpakkede ADB-arkiv til roden af ​​drev C.

OpenLinux som en del af SIM7600E-H moduler

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:

OpenLinux som en del af SIM7600E-H moduler

Lad os forbinde modulet til pc'en (hvis det skete, at det blev afbrudt) og kontrollere, om ADB ser det med kommandoen 'adb devices':

OpenLinux som en del af SIM7600E-H moduler

Færdig, dette fuldender konfigurationen af ​​forbindelsen til modulet, og vi kan starte skallen for at arbejde med modulet.

OpenLinux som en del af SIM7600E-H moduler

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

Tilføj en kommentar