OpenLinux som en del av SIM7600E-H-moduler

OpenLinux som en del av SIM7600E-H-moduler

Mekanismen for å utvikle en tilpasset applikasjon og laste den inn i modulen er tilgjengelig under både Linux- og Windows-operativsystemene. I denne artikkelen vil vi ta en detaljert titt på hvordan, ved å bruke eksempler fra SDK-en som er gitt SIMCom trådløse løsninger kompiler og last inn en tilpasset applikasjon i en modul.

Før jeg skrev artikkelen, ba en av mine bekjente, langt fra å utvikle for Linux, meg om å nærme meg problemet med å beskrive prosessen med å utvikle min egen applikasjon for SIM7600E-H-modulen så detaljert som mulig. Kriteriet for å vurdere tilgjengeligheten til presentasjonen av materialet var uttrykket «slik at jeg forstår».

Jeg inviterer deg til å bli kjent med hva som skjedde.

Artikkelen blir jevnlig supplert og oppdatert

forspill

Vanligvis brukes mobilkommunikasjonsmoduler kun for dataoverføring, taleanrop, SMS-overføring og lignende. Alt dette gjøres gjennom AT-kommandoer sendt fra en ekstern kontrollmikrokontroller. Men det er en kategori med moduler som lar deg utføre tilpasset kode lastet utenfra. I noen tilfeller reduserer dette det totale budsjettet til enheten betydelig, slik at du kan installere en enklere (og like budsjett) mikrokontroller på brettet eller forlate den helt. Med bruken av LTE-moduler kontrollert av Android eller Linux OS og deres kraftige ressurser, er det mulig å løse alle oppgaver som er tilgjengelige for populære prosessorer. Denne artikkelen vil snakke om SIM7600E-H, kontrollert av Linux OS. Vi skal se på hvordan du laster ned og kjører et kjørbart program.

På mange måter er materialet basert på dokumentet "SIM7600 Open Linux development quide", men noen tillegg og først av alt den russiske versjonen vil være nyttige. Artikkelen vil hjelpe de som akkurat har begynt å mestre modulen til å forstå hvordan de laster ned demoapplikasjonen og gir de nødvendige ferdighetene for påfølgende arbeid.

Kort om hvem SIM7600E-H er

SIM7600E-H er en modul bygget på ARM Cortex-A7 1.3 GHz-prosessoren fra Qualcomm, med Linux-operativsystemet (kjerne 3.18.20) inne, som er i stand til å jobbe med europeiske (inkludert russiske) frekvensbånd 2G/3G/ LTE som støtter Cat .4, som gir maksimal nedlastingshastighet på opptil 150 Mbps og opplastingshastighet på opptil 50 Mbps. Rikt periferiutstyr, et industrielt temperaturområde og tilstedeværelsen av innebygd GPS/GLONASS-navigasjon dekker alle krav til en moderne modulær løsning i M2M-feltet.

Systemoversikt

SIM7600E-H-modulen er basert på Linux-operativsystemet (kjerne 3.18.20). På sin side er filsystemet bygget på grunnlag av det journalførte filsystemet UBIFS (Unsorted Block Image File System).

Viktige funksjoner i dette filsystemet inkluderer:

  • fungerer med partisjoner, lar deg opprette, slette eller endre størrelsen deres;
  • sikrer opptaksjustering over hele medievolumet;
  • fungerer med dårlige blokker;
  • minimerer sannsynligheten for tap av data under strømbrudd eller andre feil;
  • føre logger.

Beskrivelse tatt derav, finnes det også en mer detaljert beskrivelse av et slikt filsystem.

De. Denne typen filsystem er ideell for tøffe driftsforhold for modulen og mulige strømproblemer. Men dette betyr ikke at ustabile strømforhold vil være den forventede driftsmodusen til modulen; det indikerer bare enhetens større levedyktighet.

Память

Fordelingen av minneområder er konstruert som følger:

OpenLinux som en del av SIM7600E-H-moduler

Det er tre hovedområder å fremheve:

ubi0:rootfs – skrivebeskyttet og inneholder selve Linux-kjernen
ubi0:usrfs – brukes primært til brukerprogram og datalagring
ubi0:cahcefs – reservert for FOTA-oppdateringer. Hvis den tilgjengelige plassen ikke er nok til å laste ned oppdateringen, vil systemet slette ubrukte filer og dermed frigjøre plass. Men av sikkerhetsgrunner bør du ikke plassere filene dine der.

Alle tre seksjonene er fordelt som følger:

Filsystem
Størrelse
Brukes
Tilgjengelig
Bruk%
Montert 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

Tilgjengelig funksjonalitet

Som nevnt ovenfor er modulen bygget på Cortex A7-brikkesettet fra Qualcomm. Det ville være feil å ikke gi en kjerne med så høy ytelse for å behandle brukerprogrammet og avlaste enhetens hovedprosessor ved å avlaste en del av programmet til modulen.

For brukerprogrammet vil følgende perifere driftsmoduser være tilgjengelige for oss:

Pin nr.
Navn
Sys GPIO-nr.
Standardhandling
Funksjon1
Funksjon2
Trekk
Våkneavbrudd

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
DTRMore
-
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 merk: en del av periferiutstyret brukes til å betjene modulen som en ruter. De. Basert på en slik modul kan du lage en liten ruter som skal distribuere Internett via Wi-Fi. Det finnes forresten en ferdig løsning kalt SIM7600E-H-MIFI og er et miniPCIE-kort med en loddet SIM7600E-H-modul og flere antennepinner, en av dem er en Wi-Fi-antenne. Dette er imidlertid et tema for en egen artikkel.

Onsdag (ikke en ukedag)

SIMCom trådløse løsninger gi utviklere muligheten til å velge det mest kjente utviklingsmiljøet for Linux eller Windows. Hvis vi snakker om en kjørbar applikasjon på en modul, er det bedre å velge Windows, det vil være raskere og enklere. Hvis du forventer en kompleks applikasjonsarkitektur og påfølgende oppgraderinger, er det bedre å bruke Linux. Vi trenger også Linux for å kompilere kjørbare filer for senere lasting i modulen; en virtuell maskin er tilstrekkelig for kompilering.

Det du trenger er ikke fritt tilgjengelig for nedlasting - en SDK, som du kan be om fra din distributør.

Installere verktøy for arbeid med modulen

Heretter vil vi jobbe under Windows som det mest kjente operativsystemet for de fleste brukere.

Vi må installere nødvendig programvare i noen få enkle trinn for å mestre arbeidet med modulen:

  1. GNU / Linux
  2. Cygwin
  3. sjåfør
  4. ADB

Installerer GNU/Linux

For å bygge applikasjonen kan du bruke hvilken som helst ARM-Linux-kompatibel kompilator. Vi vil bruke SourceryCodeBenchLiteARM GNU/Linuxtranslater tilgjengelig for nedlasting på link.

For å sikre at alle komponentene er riktig installert, vil jeg legge igjen noen skjermbilder av installasjonsprosessen. I prinsippet er det ikke noe komplisert i installasjonen.

For å sikre at alle komponentene er riktig installert, vil jeg legge igjen noen skjermbilder av installasjonsprosessen. I prinsippet er det ikke noe komplisert i installasjonen.

  1. Vi godtar lisensavtalen
    OpenLinux som en del av SIM7600E-H-moduler
  2. Spesifiser installasjonsmappen
    OpenLinux som en del av SIM7600E-H-moduler
  3. Vi lar de nødvendige komponentene være uendret
    OpenLinux som en del av SIM7600E-H-moduler
  4. La det være som det er
    OpenLinux som en del av SIM7600E-H-moduler
  5. Flere ganger "Neste", "Installer" og i utgangspunktet er det det
    OpenLinux som en del av SIM7600E-H-moduler

Installerer Cygwin

Videre, for utvikling, trenger du et sett med biblioteker og verktøy fra settet som følger med Cygwin. Alt er enkelt her, den nåværende versjonen av Cygwin kan lastes ned gratis på den offisielle nettsiden til prosjektet; i skrivende stund var versjon 3.1.5 tilgjengelig, som er det vi brukte da vi utarbeidet materialet.

Det er ikke noe komplisert med å installere Cygwin, det eneste du trenger å velge er et speil som installasjonsprogrammet vil laste ned de nødvendige filene fra, velge hvilken som helst og installere den, samt et sett med verktøy og biblioteker, og etterlate alle tilgjengelige biblioteker og verktøy valgt.

installere drivere

Etter at modulen er koblet til PC-en, må du installere drivere. Disse kan bes om fra din distributør (anbefalt). Jeg anbefaler ikke å søke på Internett på egen hånd, fordi... Det kan ta mye tid å finne ut hva som forårsaket enhetskonflikten.

OpenLinux som en del av SIM7600E-H-moduler

Blant de valgte portene ser vi følgende:

Windows
Linux
beskrivelse

SimTech HS-USB Diagnostikk
USB-serie
Diagnostisk grensesnitt

SimTech HS-USB NMEA
USB-serie
GPS NMEA-grensesnitt

SimTech HS-USB AT-port
USB-serie
AT-portgrensesnitt

SimTech HS-USB-modem
USB-serie
Modemport-grensesnitt

SimTech HS-USB-lyd
USB-serie
USB lydgrensesnitt

SimTech HS-USB WWAN-adapter
USB-nett
NDIS WWAN-grensesnitt

Android Composite ADB Interface
USB ADB
Android legger til feilsøkingsport

Som du sikkert har lagt merke til, er det ingen USB ADB blant portene i skjermbildet, dette er fordi ADB-porten i modulen er stengt som standard og du må aktivere den ved å sende kommandoen 'AT+CUSBADB=1' til AT porten til modulen og start den på nytt (dette kan gjøres med kommandoen 'AT+CRESET').

Som et resultat får vi ønsket grensesnitt i enhetsbehandlingen:

OpenLinux som en del av SIM7600E-H-moduler

Vi er ferdige med sjåførene, la oss gå videre til ADB.

Installerer ADB

Gå til det offisielle nettstedet for Android-utviklere link. Vi vil ikke laste ned det klumpete Android Studio; vi trenger bare kommandolinjen, tilgjengelig for nedlasting via koblingen "Last ned SDK Platform-Tools for Windows".

OpenLinux som en del av SIM7600E-H-moduler

Last ned og pakk ut det resulterende arkivet til roten av stasjon C.

Miljøvariabler

Etter å ha installert Cygwin, må du legge til banen Cygwin/bin/ til utviklingsmiljøvariablene (Klassisk kontrollpanel → System → Avanserte systeminnstillinger → Avansert → Miljøvariabler → Systemvariabler → Bane → Rediger) som vist i skjermbildet nedenfor:

OpenLinux som en del av SIM7600E-H-moduler

På samme måte legger du til banen til det nedlastede og utpakkede ADB-arkivet til roten til stasjon C.

OpenLinux som en del av SIM7600E-H-moduler

Klikk OK flere ganger og start datamaskinen på nytt.

Etter omstart kan du enkelt sjekke om ADB fungerer som det skal ved å åpne kommandolinjen (Win+R → cmd) og skrive kommandoen 'adb-versjon'. Vi får noe sånt som dette:

OpenLinux som en del av SIM7600E-H-moduler

La oss koble modulen til PC-en (hvis det skjedde at den ble frakoblet) og sjekke om ADB ser den med kommandoen 'adb devices':

OpenLinux som en del av SIM7600E-H-moduler

Ferdig, dette fullfører konfigurasjonen av tilkoblingen til modulen, og vi kan starte skallet for å jobbe med modulen.

OpenLinux som en del av SIM7600E-H-moduler

Utpakking og kompilering av SDK

Nå som vi har tilgang til skallet og kan begynne å jobbe med modulens kommandolinje, la oss prøve å kompilere vår første applikasjon som lastes inn i modulen.

Mange kan ha problemer med dette! Fordi Modulen kjører på Linux-operativsystemet; for å unngå kollisjoner ved kompilering av kode under Windows, er det best å kompilere i det opprinnelige miljøet - Linux.

Vi vil ikke dvele i detalj på hvordan du, i fravær av Linux og ønsket om å installere det på maskinen din, kan installere det på en virtuell maskin. Vi vil bruke VirtualBox, installere Ubuntu versjon 20.04 (gjeldende versjon i skrivende stund) og under den vil vi begynne å jobbe med kompilatorer, SDK-er, etc.

La oss gå til Linux-miljøet og pakke ut arkivet mottatt fra distributøren.

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

Gå til sim_open_sdk-katalogen og legg til 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 forblir i samme mappe og utfører påfølgende kommandoer mens vi er i den.
Installer libncurses5-dev-biblioteket hvis det ikke er installert:

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

Python, hvis den heller ikke ble installert:

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:

Nå må vi kompilere flere filer, vi kjører følgende kommandoer sekvensielt.

Hvis kjernekonfigurasjonsvinduet dukker opp under kompilering, velg bare Avslutt og gå tilbake til konsollen; vi trenger ikke å konfigurere kjernen nå.

Vi gjør:

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

Kompilere bootloader:

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

Kompilere kjernen:

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

Kompiler rotfilsystemet:

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

For Linux-brukere vil det være relevant å kompilere moduldriveren:

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

La oss kompilere demoen:

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

Deretter vil flere nye filer vises i katalogen sim_open_sdk/output:

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

demo

La oss prøve å laste demoen inn i modulen vår og se hva som kommer ut av den.

Last ned

I sim_open_sdk-katalogen kan vi se filen demo_app. Vi tar den og overfører den til roten til stasjon C på PC-en som modulen er koblet til. Start deretter Windows-kommandolinjen (Win+R -> cmd) og skriv inn:

C:>adb push C:demo_app /data/

Konsollen vil fortelle oss:

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

Dette betyr at filen ble sendt til modulen og alt vi trenger å gjøre er å kjøre den. La oss ikke nøle.

Vi gjør:

C:>adb shell

Vi utvider rettighetene til den nedlastede filen:

/ # cdhmod 777 /data/demo_app

Og vi kjører:

/ # /data/demo_app

I samme konsoll vil modulen fortelle oss 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 >   

La oss se på IMEI-en til modulen, skriv inn 7 (bytt til kommandomodus) og skriv deretter inn 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åten vil vi se IMEI-en til modulen.

Som en konklusjon

Jeg håper vi klarte å få en generell idé om hvordan vi kommer i gang med modulen. I de følgende artiklene skal vi se nærmere på mulighetene som SIM7600E-H-plattformen gir, samt hvordan du kan fjernoppdatere din egen applikasjon i modulen.

Jeg inviterer deg til å stille spørsmål i kommentarene, og også angi hvilket aspekt av modulens evner som skal gjenspeiles i påfølgende artikler.

Kilde: www.habr.com

Legg til en kommentar