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
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
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:
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)
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:
- GNU / Linux
- Cygwin
- Förare
- 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å
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.
- Vi accepterar licensavtalet
- Ange installationsmappen
- Vi lämnar de nödvändiga komponenterna oförändrade
- Lämna det som det är
- Flera gånger "Nästa", "Installera" och i princip det är det
Installerar Cygwin
Vidare, för utveckling, behöver du en uppsättning bibliotek och verktyg från den medföljande uppsättningen
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.
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:
Vi är klara med förarna, låt oss gå vidare till ADB.
Installerar ADB
Gå till den officiella webbplatsen för Android-utvecklare
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:
Lägg på samma sätt till sökvägen till det nedladdade och uppackade ADB-arkivet till roten av enhet C.
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:
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':
Klart, detta slutför konfigurationen av anslutningen till modulen och vi kan starta skalet för att arbeta med modulen.
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