
Mekanismen för att utveckla en anvÀndarapplikation och ladda upp den till modulen Àr tillgÀnglig bÄde under operativsystemen Linux och Windows. I denna artikel gÄr vi noggrant igenom hur du kan anvÀnda exempel frÄn det medföljande SDK:et. kompilera och ladda upp en anvÀndarapplikation till modulen.
Innan jag skrev artikeln bad en bekant, som inte Àr insatt i utveckling under Linux, mig att beskriva processen för att utveckla en egen applikation för SIM7600E-H-modulen sÄ detaljerat som möjligt. Kriteriet för hur lÀtt materialet skulle förstÄs var frasen "sÄ att jag förstÄr".
Jag bjuder in dig att ta del av vad som har kommit fram.
Artikeln kompletteras och uppdateras regelbundet.
Inledningen
Vanligtvis anvÀnds mobilmoduler endast för dataöverföring, röstsamtal, SMS och liknande. Allt detta görs genom AT-kommandon som skickas frÄn en extern kontroller. Men det finns en kategori av moduler som tillÄter att köra anvÀndarkod som laddas ner utifrÄn. I vissa fall kan detta vÀsentligt minska den totala kostnaden för enheten, vilket möjliggör anvÀndning av en enklare (och dÀrmed billigare) mikrokontroller eller att helt avstÄ frÄn en sÄdan. Med införandet av LTE-moduler som styrs av operativsystemen Android eller Linux och deras kraftfulla resurser, kan man lösa alla uppgifter som Àr tillgÀngliga för populÀra processorer. I denna artikel kommer vi att titta pÄ SIM7600E-H, som drivs av Linux. Vi kommer att gÄ igenom hur man laddar upp och kör en exekverbar applikation.
Mycket av materialet baseras pÄ dokumentet "SIM7600 Open Linux development guide", men vissa tillÀgg och framför allt den svensksprÄkiga versionen kommer att vara till nytta. Artikeln hjÀlper dem som just har börjat lÀra sig programmet att ladda ner en demonstrationsapplikation och ger nödvÀndiga fÀrdigheter för fortsatt arbete.
Kort om vad SIM7600E-H Àr.
SIM7600E-H Àr en modul byggd pÄ ARM Cortex-A7 1.3GHz-processorn frÄn Qualcomm, som har ett Linux-operativsystem (kÀrna 3.18.20) inuti, och som kan arbeta med europeiska (inklusive ryska) frekvensband för 2G/3G/LTE, vilket stöder Cat.4 och ger maximal nedladdningshastighet upp till 150Mbps och uppladdning upp till 50Mbps. Ett rikt utbud av perifera enheter, industriell temperaturomrÄde och inbyggd GPS/GLONASS-navigering uppfyller alla krav pÄ moderna modulÀra lösningar inom M2M-temat.
Systemöversikt
Modulen SIM7600E-H baseras pÄ Linux-operativsystemet (kÀrna 3.18.20). I sin tur Àr filsystemet baserat pÄ den journalförda filsystemet UBIFS (Unsorted Block Image File System).
Viktiga egenskaper hos detta filsystem inkluderar:
- det arbetar med partitioner, tillÄter att skapa, ta bort eller Àndra storlek pÄ dem;
- det sÀkerstÀller skrivjustering över hela lagringsmediet;
- det arbetar med dÄliga block;
- det minimerar risken för dataförlust vid plötsliga strömavbrott eller andra fel;
- det för loggar.
Beskrivningen Àr hÀmtad , dÀr det ocksÄ berÀttas mer detaljerat om detta filsystem.
Det vill sÀga, denna typ av filsystem Àr perfekt för tuffa driftsförhÄllanden för modulen och potentiella problem med strömförsörjningen. Men detta betyder inte att förhÄllandena för instabil strömförsörjning kommer att vara det förvÀntade driftslÀget för modulen, det sÀger bara nÄgot om en större livskraft för enheten.
Minne
MinnesomrÄdena Àr fördelade pÄ följande sÀtt:

Det Àr nödvÀndigt att avsÀtta tre huvudsakliga omrÄden:
ubi0:rootfs â tillgĂ€nglig endast för lĂ€sning och innehĂ„ller sjĂ€lva Linux-kĂ€rnan
ubi0:usrfs â anvĂ€nds huvudsakligen för anvĂ€ndarprogrammet och lagring av data
ubi0:cachefs â reserverat för FOTA-uppdateringar. Om det tillgĂ€ngliga utrymmet inte rĂ€cker för att ladda ner uppdateringen â kommer systemet att ta bort oanvĂ€nda filer och pĂ„ sĂ„ sĂ€tt frigöra utrymme. Men av sĂ€kerhetsskĂ€l bör man inte placera sina filer dĂ€r.
Alla tre partitionerna Àr fördelade pÄ följande sÀtt:
Filsystem
Size
AnvÀnda
TillgÀnglig
AnvÀndning%
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 tidigare Àr modulen byggd pÄ Qualcomm Cortex A7-chipsetet. Det skulle vara felaktigt att inte tillhandahÄlla en sÄ högpresterande kÀrna för att hantera anvÀndarprogram och avlasta enhetens huvudprocessor genom att överlÀmna en del av programmet till modulen.
För anvÀndarprogrammet kommer följande driftslÀgen för periferin att vara tillgÀngliga:
Pin No.
Namn
Sys GPIO No.
StandardÄtgÀrd
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
â
Det Àr en imponerande lista, och observera att en del av periferin anvÀnds för att modulens funktion som router. AlltsÄ, baserat pÄ en sÄdan modul kan man skapa en liten router som delar ut internet via Wi-Fi. För övrigt finns det redan en fÀrdig lösning, kallad SIM7600E-H-MIFI, som Àr ett miniPCIe-kort med den inbyggda SIM7600E-H-modulen och flera antennutgÄngar, varav en Àr Wi-Fi-antennan. Men det hÀr Àr ett Àmne för en separat artikel.
Miljö (inte veckodag)
ger utvecklare möjlighet att sjÀlva vÀlja den mest bekanta utvecklingsmiljön under Linux eller Windows. Om det handlar om en enda körbar applikation pÄ modulen rekommenderas Windows, dÄ gÄr det snabbare och enklare. Om en komplex arkitektur för applikationen och efterföljande uppgraderingar förvÀntas Àr det bÀttre att anvÀnda Linux. Vi kommer Àven att behöva Linux för att kompilera körbara filer för att senare ladda upp dem till modulen, för kompilering Àr en virtuell maskin helt tillrÀcklig.
Det som du behöver och som inte Ă€r fritt tillgĂ€ngligt för nedladdning â SDK:n, som kan begĂ€ras av din distributör.
Installation av verktyg för att arbeta med modulen
HÀr och framÄt kommer vi att arbeta under Windows som Àr det mest bekanta operativsystemet för de flesta anvÀndare.
Vi behöver installera nödvÀndig programvara i nÄgra enkla steg för att sedan lÀra oss att arbeta med modulen:
- GNU/Linux
- Cygwin
- Drivrutiner
- ADB
Installation av 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/Linux översÀttaren som Àr tillgÀnglig för nedladdning via .
För att sÀkerstÀlla att alla komponenter installeras korrekt kommer jag att lÀmna nÄgra skÀrmdumpar frÄn installationsprocessen. I princip Àr det inget komplicerat med installationen.
För att sÀkerstÀlla att alla komponenter installeras korrekt kommer jag att lÀmna nÄgra skÀrmdumpar frÄn installationsprocessen. I princip Àr det inget komplicerat med installationen.
- Acceptera licensavtalet

- Ange installationsmappen

- LÀmna nödvÀndiga komponenter oförÀndrade

- LÀmna som det Àr

- NĂ„gra gĂ„nger pĂ„ âNextâ, âInstallâ och i princip Ă€r det klart

Installation av Cygwin
För att kunna utveckla krÀvs ett bibliotek och verktyg frÄn det som tillhandahÄlls av . HÀr Àr det enkelt, den aktuella versionen av Cygwin kan laddas ner kostnadsfritt frÄn projektets officiella webbplats, vid tidpunkten för skrivandet var version 3.1.5 tillgÀnglig, och den anvÀnde vi vid förberedandet av materialet.
Det finns inget komplicerat med installationen av Cygwin, det enda som behöver vÀljas Àr ett spegel som installationsprogrammet laddar ner de nödvÀndiga filerna frÄn, vÀlj valfri och installera, samt uppsÀttningen av verktyg och bibliotek, dÀr vi lÀmnar alla tillgÀngliga bibliotek och verktyg valda.
Installation av drivrutiner
Efter att modulen har kopplats till datorn krÀvs drivrutinsinstallation. Du kan begÀra dem frÄn din distributör (rekommenderas). Jag rekommenderar inte att söka pÄ internet sjÀlv, eftersom det kan ta mycket tid att hitta det som orsakade enhetskonflikten.

Bland de markerade portarna ser vi följande:
Windows
Linux
Beskrivning
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 lÀgg till debug-port
Som du sĂ€kert har lagt mĂ€rke till, finns det ingen USB ADB-port bland portarna pĂ„ skĂ€rmdumpen, vilket beror pĂ„ att ADB-porten i modulen Ă€r stĂ€ngd som standard och den mĂ„ste aktiveras genom att skicka kommandot âAT+CUSBADB=1â till AT-porten i modulen och starta om den (det kan göras med kommandot âAT+CRESETâ).
Som resultat fÄr vi den nödvÀndiga grÀnssnittet i Enhetshanteraren:

Nu nÀr vi har avslutat med drivrutinerna gÄr vi vidare till ADB.
Installation av ADB
Besök den officiella webbplatsen för Android Developer pĂ„ . Vi kommer inte att ladda ner den skrymmande Android Studio, vi behöver endast kommandoraden, som Ă€r tillgĂ€nglig för nedladdning via lĂ€nken âDownload SDK Platform-Tools for Windowsâ.

Ladda ner och packa upp den mottagna arkivet i roten av enheten C.
Miljövariabler
Efter installationen av Cygwin behöver du lĂ€gga till sökvĂ€gen Cygwin/bin/ i utvecklingsmiljövariablerna (Kontrollpanel â System â Avancerade systeminstĂ€llningar â Avancerat â Miljövariabler â Systemvariabler â Path â Ăndra) som visat pĂ„ skĂ€rmdumpen nedan:

PÄ samma sÀtt lÀgger vi till sökvÀgen till det nedladdade och extraherade ADB-arkivet i roten av enhet C.

Tryck flera gÄnger pÄ OK och starta om datorn.
Efter omstart kan vi enkelt kontrollera om ADB fungerar korrekt genom att öppna kommandoprompten (Win+R â cmd) och skriva kommandot âadb versionâ. Vi fĂ„r ungefĂ€r följande resultat:

Anslut modulen till datorn (om det hĂ€nde att du kopplade bort den) och kontrollera om ADB ser den med kommandot âadb devicesâ:

Klar, nu har vi avslutat instÀllningen för att ansluta till modulen och vi kan starta en shell för att arbeta med modulen.

Uppackning och kompilering av SDK
Efter att vi har fÄtt tillgÄng till shell och kan börja arbeta med kommandoraden för modulen, lÄt oss försöka kompilera vÄr första applikation för att ladda upp till modulen.
MÄnga kan stöta pÄ problem med detta! Eftersom modulen kör pÄ operativsystemet Linux, för att undvika kollisioner nÀr man kompilerar kod under Windows - Àr det bÀst att kompilera i ursprungs miljön - Linux.
Vi kommer inte gÄ in pÄ detaljer om hur man i avsaknad av Linux och utan att vilja installera det pÄ sin egen maskin kan installera det pÄ en virtuell. Vi ska anvÀnda VirtualBox, installera Ubuntu version 20.04 (den aktuella versionen vid tidpunkten för skrivandet) och börja arbeta med kompilatorer, SDK, etc. under den.
Vi gÄr in i Linux-miljön och packar upp arkivet, som vi fick frÄn distributören.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz Vi gÄr till katalogen sim_open_sdk och lÀgger 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 stannar kvar i samma mapp och utför nÀsta kommandon dÀrifrÄn.
Installera biblioteken libncurses5-dev, om de inte redan Àr installerade:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -yPython, om det inte heller redan har installerats:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -yoch gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gccKompilering:
Nu mÄste vi kompilera flera filer, utför följande kommandon sekventiellt.
Om en konfigurationsruta för kÀrnan dyker upp under kompileringen vÀljer vi bara Exit och gÄr tillbaka till konsolen, vi behöver inte konfigurera kÀrnan just nu.
Vi utför:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ makeKompilerar bootloader:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make abootKompilerar kÀrnan:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make kernel
Kompilerar rotfilsystemet:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make rootfsFör Linux-anvÀndare Àr det relevant att kompilera modulens drivrutin:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make kernel_moduleVi kompilerar demo:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make demoEfter detta kommer flera nya filer att dyka upp i mappen sim_open_sdk\/output:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ ls output\/\nappsboot.mbn boot.img demo_app helloworld system.img
Demo
LÄt oss försöka ladda upp demon i vÄr modul och se vad som hÀnder.
Nedladdning
I mappen sim_open_sdk kan vi se filen demo_app. Vi tar den och flyttar den till rotkatalogen C pÄ PC:n som modulen Àr ansluten till. DÀrefter startar vi kommandotolken i Windows (Win+R -> cmd) och skriver in:
C:>adb push C:demo_app \/data\/Konsolen meddelar oss:
C:demo_app: 1 file pushed, 0 skipped. 151.4 MB\/s (838900 bytes in 0.005s)Det betyder att filen har skickats till modulen framgÄngsrikt och vi behöver bara starta den. LÄt oss inte dröja.
Vi utför:
C:>adb shellUtökar rÀttigheterna för den uppladdade filen:
/ # cdhmod 777 /data/demo_appOch starta:
/ # /data/demo_appI samma konsol kommer modulen att meddela följande:
SDK_VER : SIM_SDK_VER_20191205
DEMO_VER: SIM_SDK_VER_20191205
VÀnligen vÀlj ett alternativ att testa frÄn alternativen nedan.
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, skriv in 7 (övergÄng till kommandolÀge) och efter det skriver vi in 5:
VÀnligen vÀlj ett alternativ att testa frÄn de angivna alternativen nedan.
1. WIFI 2. RĂSTSAMTAL
3. DATA SAMTAL 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. LJUDE
31. JSON 32. LBS
99. AVSLUTA
Alternativ > 7
VÀnligen vÀlj ett alternativ att testa frÄn de angivna alternativen nedan.
1. hÀmta modulversion 2. hÀmta CSQ
3. hÀmta CREG 4. hÀmta ICCID
5. hÀmta IMEI 6. hÀmta CIMI
99. tillbaka
Alternativ > 5
IMEI: 867584030090489
VÀnligen vÀlj ett alternativ att testa frÄn de angivna alternativen nedan.
1. hÀmta modulversion 2. hÀmta CSQ
3. hÀmta CREG 4. hÀmta ICCID
5. hÀmta IMEI 6. hÀmta CIMI
99. tillbaka
Alternativ >
SÄledes kommer vi att se IMEI för modulen.
Som en avslutning
Jag hoppas att vi har lyckats skapa en allmÀn översikt över hur man börjar anvÀnda modulen. I kommande artiklar kommer vi att gÄ mer i detalj pÄ de möjligheter som plattformen SIM7600E-H erbjuder, samt hur man kan uppdatera sitt eget program pÄ modulen pÄ distans.
Jag bjuder in er att stÀlla frÄgor i kommentarerna, samt att ange vilken aspekt av moduls möjligheter som bör tas upp i kommande artiklar.
KĂ€lla: habr.com





