OpenLinux i modulerna SIM7600E-H

OpenLinux i modulerna SIM7600E-H

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. SIMCom Wireless Solutions 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 hÀrifrÄn, 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:

OpenLinux i modulerna SIM7600E-H

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)

SIMCom Wireless Solutions 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:

  1. GNU/Linux
  2. Cygwin
  3. Drivrutiner
  4. 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 lÀnken.

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.

  1. Acceptera licensavtalet
    OpenLinux i modulerna SIM7600E-H
  2. Ange installationsmappen
    OpenLinux i modulerna SIM7600E-H
  3. LÀmna nödvÀndiga komponenter oförÀndrade
    OpenLinux i modulerna SIM7600E-H
  4. LÀmna som det Àr
    OpenLinux i modulerna SIM7600E-H
  5. NĂ„gra gĂ„nger pĂ„ “Next”, “Install” och i princip Ă€r det klart
    OpenLinux i modulerna SIM7600E-H

Installation av Cygwin

För att kunna utveckla krÀvs ett bibliotek och verktyg frÄn det som tillhandahÄlls av Cygwin. 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.

OpenLinux i modulerna SIM7600E-H

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:

OpenLinux i modulerna SIM7600E-H

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Ă„ lĂ€nken. 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”.

OpenLinux i modulerna SIM7600E-H

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:

OpenLinux i modulerna SIM7600E-H

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

OpenLinux i modulerna SIM7600E-H

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:

OpenLinux i modulerna SIM7600E-H

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

OpenLinux i modulerna SIM7600E-H

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.

OpenLinux i modulerna SIM7600E-H

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 -y

Python, om det inte heller redan har installerats:

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, 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$ make

Kompilerar bootloader:

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

Kompilerar 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 rootfs

För Linux-anvÀndare Àr det relevant att kompilera modulens drivrutin:

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

Vi kompilerar demo:

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

Efter 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 shell

Utökar rÀttigheterna för den uppladdade filen:

/ # cdhmod 777 /data/demo_app

Och starta:

/ # /data/demo_app

I 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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster