OpenLinux som en del av SIM7600E-H-moduler

OpenLinux som en del av SIM7600E-H-moduler

Mekanismen för att utveckla en anpassad applikation och ladda den i modulen är tillgänglig under både Linux och Windows operativsystem. I den här artikeln kommer vi att ta en detaljerad titt på hur, med hjälp av exempel från SDK som tillhandahålls SIMCom trådlösa lösningar kompilera och ladda en anpassad applikation till en modul.

Innan jag skrev artikeln bad en av mina bekanta, långt ifrån att utveckla för Linux, mig att närma mig frågan om att beskriva processen för att utveckla min egen applikation för SIM7600E-H-modulen så detaljerat som möjligt. Kriteriet för att bedöma tillgängligheten av presentationen av materialet var frasen "så att jag förstår."

Jag inbjuder dig att bekanta dig med vad som hände.

Artikeln kompletteras och uppdateras regelbundet

upptakt

Vanligtvis används cellulära kommunikationsmoduler endast för dataöverföring, röstsamtal, SMS-överföring och liknande. Allt detta görs genom AT-kommandon som skickas från en extern styrmikrokontroller. Men det finns en kategori av moduler som låter dig köra anpassad kod laddad utifrån. I vissa fall minskar detta avsevärt enhetens totala budget, vilket gör att du kan installera en enklare (och lika budget) mikrokontroller på kortet eller överge den helt. Med tillkomsten av LTE-moduler som styrs av Android eller Linux OS och deras kraftfulla resurser är det möjligt att lösa alla uppgifter som är tillgängliga för populära processorer. Den här artikeln kommer att prata om SIM7600E-H, styrd av Linux OS. Vi ska titta på hur man laddar ner och kör en körbar applikation.

På många sätt är materialet baserat på dokumentet "SIM7600 Open Linux development quide", men några tillägg och först och främst den ryska versionen kommer att vara användbara. Artikeln hjälper dem som precis har börjat bemästra modulen att förstå hur man laddar ner demoapplikationen och ger de nödvändiga färdigheterna för efterföljande arbete.

Kort om vem SIM7600E-H är

SIM7600E-H är en modul byggd på ARM Cortex-A7 1.3 GHz-processorn från Qualcomm, med operativsystemet Linux (kärna 3.18.20) inuti, som kan arbeta med europeiska (inklusive ryska) frekvensband 2G/3G/ LTE som stöder Cat .4, som ger maximala nedladdningshastigheter på upp till 150 Mbps och uppladdningshastigheter på upp till 50 Mbps. Rik kringutrustning, ett industriellt temperaturområde och närvaron av inbyggd GPS/GLONASS-navigering täcker alla krav för en modern modulär lösning inom M2M-området.

System översikt

SIM7600E-H-modulen är baserad på operativsystemet Linux (kärna 3.18.20). Filsystemet är i sin tur uppbyggt på basis av det journaliserade filsystemet UBIFS (Unsorted Block Image File System).

Viktiga funktioner i detta filsystem inkluderar:

  • fungerar med partitioner, låter dig skapa, ta bort eller ändra deras storlek;
  • säkerställer inspelningsjustering över hela mediavolymen;
  • fungerar med dåliga block;
  • minimerar sannolikheten för dataförlust under ett strömavbrott eller andra fel;
  • föra loggar.

Beskrivning tagen hence, det finns också en mer detaljerad beskrivning av ett sådant filsystem.

De där. Denna typ av filsystem är idealisk för tuffa driftsförhållanden för modulen och eventuella strömproblem. Men detta betyder inte att instabila strömförhållanden kommer att vara det förväntade driftsättet för modulen; det indikerar bara enhetens större livskraft.

Память

Fördelningen av minnesområden är konstruerad enligt följande:

OpenLinux som en del av SIM7600E-H-moduler

Det finns tre huvudområden att lyfta fram:

ubi0:rootfs – skrivskyddad och innehåller själva Linux-kärnan
ubi0:usrfs – används främst för användarprogram och datalagring
ubi0:cahcefs – reserverat för FOTA-uppdateringar. Om det tillgängliga utrymmet inte räcker till för att ladda ner uppdateringen kommer systemet att radera oanvända filer och därmed frigöra utrymme. Men av säkerhetsskäl bör du inte placera dina filer där.

Alla tre avsnitten är fördelade enligt följande:

Filsystem
Storlek
Bilar
Tillgängliga
Använda sig av%
Monterad 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

Tillgänglig funktionalitet

Som nämnts ovan är modulen byggd på Cortex A7-kretsuppsättningen från Qualcomm. Det skulle vara fel att inte tillhandahålla en sådan högpresterande kärna för att bearbeta användarprogrammet och avlasta enhetens huvudprocessor genom att ladda ner någon del av programmet till modulen.

För användarprogrammet kommer följande perifera driftlägen att vara tillgängliga för oss:

Pin nr
Namn
Sys GPIO nr.
Standardåtgärd
Func1
Func2
Dra
Väckningsavbrott

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_SV
GPIO
MIFI_POWER_SV
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
-

Håller med, listan är imponerande och notera: en del av kringutrustningen används för att driva modulen som en router. De där. Baserat på en sådan modul kan du göra en liten router som distribuerar internet via Wi-Fi. Det finns förresten en färdig lösning som heter SIM7600E-H-MIFI och är ett miniPCIE-kort med en lödd SIM7600E-H-modul och flera antennstift, en av dem är en Wi-Fi-antenn. Detta är dock ett ämne för en separat artikel.

Onsdag (inte en dag i veckan)

SIMCom trådlösa lösningar ger utvecklare möjlighet att välja den mest välbekanta utvecklingsmiljön för Linux eller Windows. Om vi ​​pratar om en körbar applikation på en modul, är det bättre att välja Windows, det blir snabbare och enklare. Om en komplex applikationsarkitektur och efterföljande uppgraderingar förväntas är det bättre att använda Linux. Vi behöver också Linux för att kompilera körbara filer för att senare ladda in i modulen; en virtuell maskin räcker för kompilering.

Det du behöver är inte fritt tillgängligt för nedladdning - en SDK, som du kan begära från din distributör.

Installera verktyg för att arbeta med modulen

Härefter kommer vi att arbeta under Windows som det mest välbekanta operativsystemet för de flesta användare.

Vi kommer att behöva installera den nödvändiga programvaran i några enkla steg för att senare bemästra arbetet med modulen:

  1. GNU / Linux
  2. Cygwin
  3. Förare
  4. ADB

Installerar GNU/Linux

För att bygga applikationen kan du använda vilken ARM-Linux-kompatibel kompilator som helst. Vi kommer att använda SourceryCodeBenchLiteARM GNU/Linuxtranslater tillgänglig för nedladdning på länk.

För att säkerställa att alla komponenter är korrekt installerade kommer jag att lämna några skärmdumpar av installationsprocessen. I princip är det inget komplicerat i installationen.

För att säkerställa att alla komponenter är korrekt installerade kommer jag att lämna några skärmdumpar av installationsprocessen. I princip är det inget komplicerat i installationen.

  1. Vi accepterar licensavtalet
    OpenLinux som en del av SIM7600E-H-moduler
  2. Ange installationsmappen
    OpenLinux som en del av SIM7600E-H-moduler
  3. Vi lämnar de nödvändiga komponenterna oförändrade
    OpenLinux som en del av SIM7600E-H-moduler
  4. Lämna det som det är
    OpenLinux som en del av SIM7600E-H-moduler
  5. Flera gånger "Nästa", "Installera" och i princip det är det
    OpenLinux som en del av SIM7600E-H-moduler

Installerar Cygwin

Vidare, för utveckling, behöver du en uppsättning bibliotek och verktyg från den medföljande uppsättningen Cygwin. Allt är enkelt här, den nuvarande versionen av Cygwin kan laddas ner gratis på projektets officiella webbplats; i skrivande stund var version 3.1.5 tillgänglig, vilket är vad vi använde när vi förberedde materialet.

Det är inget komplicerat med att installera Cygwin, det enda du behöver välja är en spegel från vilken installationsprogrammet laddar ner de nödvändiga filerna, väljer någon och installerar den, såväl som en uppsättning verktyg och bibliotek, vilket lämnar alla tillgängliga bibliotek och utvalda verktyg.

Installera drivrutiner

När modulen är ansluten till datorn måste du installera drivrutiner. Dessa kan begäras från din distributör (rekommenderas). Jag rekommenderar inte att du söker på Internet på egen hand, eftersom... Det kan ta mycket tid att hitta vad som orsakade enhetskonflikten.

OpenLinux som en del av SIM7600E-H-moduler

Bland de utvalda portarna ser vi följande:

Windows
Linux
beskrivning

SimTech HS-USB Diagnostik
USB-serie
Diagnostiskt gränssnitt

SimTech HS-USB NMEA
USB-serie
GPS NMEA-gränssnitt

SimTech HS-USB AT-port
USB-serie
AT-portgränssnitt

SimTech HS-USB-modem
USB-serie
Modemport Gränssnitt

SimTech HS-USB Audio
USB-serie
USB-ljudgränssnitt

SimTech HS-USB WWAN-adapter
USB-nät
NDIS WWAN-gränssnitt

Android Composite ADB Interface
USB ADB
Android lägger till felsökningsport

Som du säkert har märkt finns det ingen USB ADB bland portarna i skärmdumpen, detta beror på att ADB-porten i modulen är stängd som standard och du måste aktivera den genom att skicka kommandot 'AT+CUSBADB=1' till AT porten på modulen och starta om den (detta kan göras med kommandot 'AT+CRESET').

Som ett resultat får vi det önskade gränssnittet i enhetshanteraren:

OpenLinux som en del av SIM7600E-H-moduler

Vi är klara med förarna, låt oss gå vidare till ADB.

Installerar ADB

Gå till den officiella webbplatsen för Android-utvecklare länk. Vi kommer inte att ladda ner den skrymmande Android Studio; vi behöver bara kommandoraden, tillgänglig för nedladdning via länken "Ladda ner SDK Platform-Tools for Windows".

OpenLinux som en del av SIM7600E-H-moduler

Ladda ner och packa upp det resulterande arkivet till roten av enhet C.

Miljövariabler

Efter installation av Cygwin måste du lägga till sökvägen Cygwin/bin/ till utvecklingsmiljövariablerna (Klassisk kontrollpanel → System → Avancerade systeminställningar → Avancerat → Miljövariabler → Systemvariabler → Sökväg → Redigera) som visas i skärmdumpen nedan:

OpenLinux som en del av SIM7600E-H-moduler

Lägg på samma sätt till sökvägen till det nedladdade och uppackade ADB-arkivet till roten av enhet C.

OpenLinux som en del av SIM7600E-H-moduler

Klicka på OK flera gånger och starta om datorn.

Efter omstart kan du enkelt kontrollera om ADB fungerar korrekt genom att öppna kommandoraden (Win+R → cmd) och skriva kommandot 'adb version'. Vi får något sånt här:

OpenLinux som en del av SIM7600E-H-moduler

Låt oss ansluta modulen till datorn (om det hände att den kopplades bort) och kontrollera om ADB ser den med kommandot 'adb devices':

OpenLinux som en del av SIM7600E-H-moduler

Klart, detta slutför konfigurationen av anslutningen till modulen och vi kan starta skalet för att arbeta med modulen.

OpenLinux som en del av SIM7600E-H-moduler

Uppackning och kompilering av SDK

Nu när vi har tillgång till skalet och kan börja arbeta med modulens kommandorad, låt oss försöka kompilera vår första applikation att ladda in i modulen.

Många kan ha svårt med detta! Därför att Modulen körs på operativsystemet Linux; för att undvika kollisioner vid kompilering av kod under Windows är det bäst att kompilera i den ursprungliga miljön - Linux.

Vi kommer inte att uppehålla oss i detalj om hur du, i avsaknad av Linux och önskan att installera det på din maskin, kan installera det på en virtuell maskin. Vi kommer att använda VirtualBox, installera Ubuntu version 20.04 (den nuvarande versionen i skrivande stund) och under den kommer vi att börja arbeta med kompilatorer, SDK, etc.

Låt oss gå till Linux-miljön och packa upp arkivet från distributören.

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

Gå till katalogen sim_open_sdk och lägg till miljön:

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 förblir i samma mapp och kör efterföljande kommandon medan vi är i den.
Installera libncurses5-dev-biblioteket om det inte har installerats:

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

Python, om den inte heller var installerad:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y

och gcc:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc

Kompilering:

Nu måste vi kompilera flera filer, vi kör följande kommandon sekventiellt.

Om kärnkonfigurationsfönstret dyker upp under kompileringen, välj bara Avsluta och återgå till konsolen; vi behöver inte konfigurera kärnan nu.

Vi gör:

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

Kompilera bootloader:

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

Kompilera kärnan:

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

Kompilera rotfilsystemet:

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

För Linux-användare kommer det att vara relevant att kompilera moduldrivrutinen:

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

Låt oss kompilera demon:

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

Därefter kommer flera nya filer att dyka upp i katalogen sim_open_sdk/output:

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

Демо

Låt oss försöka ladda in demon i vår modul och se vad som kommer ut ur den.

Ladda ner

I katalogen sim_open_sdk kan vi se filen demo_app. Vi tar den och överför den till roten av enhet C på datorn som modulen är ansluten till. Starta sedan Windows-kommandoraden (Win+R -> cmd) och skriv in:

C:>adb push C:demo_app /data/

Konsolen kommer att berätta för oss:

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

Det betyder att filen skickades till modulen och allt vi behöver göra är att köra den. Låt oss inte tveka.

Vi gör:

C:>adb shell

Vi utökar rättigheterna för den nedladdade filen:

/ # cdhmod 777 /data/demo_app

Och vi kör:

/ # /data/demo_app

I samma konsol kommer modulen att berätta för oss följande:

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 >   

Låt oss titta på modulens IMEI, ange 7 (växla till kommandoläge) och skriv sedan in 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å så sätt kommer vi att se modulens IMEI.

Som en slutsats

Jag hoppas att vi kunde få en allmän uppfattning om hur man kommer igång med modulen. I följande artiklar kommer vi att titta närmare på de möjligheter som SIM7600E-H-plattformen ger, samt hur du kan fjärruppdatera din egen applikation i modulen.

Jag inbjuder dig att ställa frågor i kommentarerna och även ange vilken aspekt av modulens kapacitet som bör återspeglas i efterföljande artiklar.

Källa: will.com

Lägg en kommentar