
De mechanismen voor het ontwikkelen van een applicatie en het uploaden ervan naar de module zijn beschikbaar voor zowel Linux- als Windows-besturingssystemen. In dit artikel bespreken we in detail hoe je gebruik kunt maken van voorbeelden uit de SDK die worden aangeboden. en de gebruikersapplicatie in de module kunt compileren en uploaden.
Voordat ik dit artikel schreef, vroeg een vriend van mij, die niet bekend is met Linux-ontwikkeling, me om zo gedetailleerd mogelijk het proces van het ontwikkelen van een eigen applicatie voor de SIM7600E-H module te beschrijven. Het criterium voor de toegankelijkheid van het materiaal was de frase: 'zodat ik het begrijp'.
Ik nodig je uit om te zien wat er is ontstaan.
Het artikel wordt regelmatig aangevuld en bijgewerkt.
Prelude
Over het algemeen worden mobiele communicatiemodules alleen gebruikt voor gegevensoverdracht, spraakoproepen, SMS-verzending en dergelijke. Dit gebeurt via AT-commando's die naar een externe microcontroller worden gestuurd. Maar er zijn categorieën modules die het mogelijk maken om gebruikerscode van buitenaf uit te voeren. In sommige gevallen bespaart dit aanzienlijk op de totale kosten van het apparaat, waardoor een eenvoudigere (en dus goedkopere) microcontroller op het bord kan worden geplaatst, of er zelfs volledig van kan worden afgezien. Met de komst van LTE-modules, beheerd door Android of Linux, en hun krachtige bronnen, kunnen alle taken worden uitgevoerd die beschikbaar zijn voor populaire processoren. In dit artikel zal het gaan over de SIM7600E-H, beheerd door Linux. We bekijken hoe je een uitvoerbare applicatie kunt uploaden en uitvoeren.
Grotendeels is het materiaal gebaseerd op het document “SIM7600 Open Linux development guide”, maar enkele aanvullingen, met name de Nederlandstalige versie, zullen nuttig zijn. Dit artikel zal helpen om inzicht te krijgen in de module en je te begeleiden tot het uploaden van een demonstratieapplicatie en de nodige vaardigheden te bieden voor verder werk.
Kortom, wie is de SIM7600E-H?
De SIM7600E-H is een module gebaseerd op een ARM Cortex-A7 1.3GHz processor van Qualcomm, met een Linux-besturingssysteem (kern 3.18.20) aan boord. Deze module kan werken met Europese (inclusief Russische) frequentiebanden 2G/3G/LTE, ondersteunt Cat.4 en biedt een maximale downloadsnelheid tot 150Mbps en uploadsnelheid tot 50Mbps. De uitgebreide periferie, het industriële temperatuurbereik en de ingebouwde GPS/GLONASS-navigatie voldoen aan alle eisen voor moderne modulaire oplossingen in de M2M-omgeving.
Systeemoverzicht
De SIM7600E-H-module is gebaseerd op het Linux-besturingssysteem (kern 3.18.20). De bestanden zijn opgebouwd op basis van een journaled bestandssysteem, UBIFS (Unsorted Block Image File System).
Belangrijke kenmerken van dit bestandssysteem zijn:
- werkt met partities, maakt het mogelijk om ze aan te maken, te verwijderen of de grootte ervan te wijzigen;
- zorgt voor uitlijning van schrijfacties over het volledige opslagvolume;
- werkt met bad blocks;
- minimaliseert de kans op gegevensverlies bij een plotselinge stroomuitval of andere storingen;
- voert logging uit.
De beschrijving is afkomstig van , daar wordt ook uitgebreider ingegaan op dit bestandssysteem.
Dit type bestandssysteem is dus ideaal voor de zware omstandigheden waaronder de module werkt en mogelijke problemen met de stroomvoorziening. Maar dat betekent niet dat onbetrouwbare stroomvoorziening de verwachte werking van de module is; dit betekent alleen dat het apparaat veerkrachtiger is.
Geheugen
De verdeling van het geheugen is als volgt:

Er moeten drie hoofdzones worden toegewezen:
ubi0:rootfs – alleen-lezen en bevat de Linux-kernel zelf
ubi0:usrfs – wordt voornamelijk gebruikt voor de gebruikersapplicatie en gegevensopslag
ubi0:cachefs – gereserveerd voor FOTA-updates. Als er niet genoeg vrije ruimte is voor het downloaden van een update, verwijdert het systeem ongebruikte bestanden om ruimte vrij te maken. Maar uit veiligheidsoverwegingen is het niet aan te raden om hier je bestanden op te slaan.
Alle drie de delen zijn als volgt verdeeld:
Filesystem
Grootte
Gebruikt
Beschikbaar
Gebruik%
Gemonteerd op
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
Beschikbare functionaliteit
Zoals eerder vermeld, is de module gebouwd op basis van de Cortex A7-chipset van Qualcomm. Het zou niet juist zijn om zo'n hoogwaardig core niet beschikbaar te stellen voor de verwerking van gebruikersprogramma's en de hoofdprocessor van het apparaat te ontlasten, door een deel van het programma naar de module over te hevelen.
Voor het gebruikersprogramma zijn de volgende werkmodi van de randapparatuur beschikbaar:
Pin Nr.
Naam
Sys GPIO Nr.
Standaardactie
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-kaart
—
—
B-PD
—
22
SD_DATA0
—
SD-kaart
—
—
B-PD
—
23
SD_DATA1
—
SD-kaart
—
—
B-PD
—
24
SD_DATA2
—
SD-kaart
—
—
B-PD
—
25
SD_DATA3
—
SD-kaart
—
—
B-PD
—
26
SD_CLK
—
SD-kaart
—
—
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
—
U bent het er vast mee eens dat de lijst indrukwekkend is en let op: een deel van de randapparatuur wordt gebruikt voor het functioneren van de module als router. Dat wil zeggen, op basis van zo'n module kan een kleine router worden gemaakt die internet via Wi-Fi verspreidt. Overigens is er al een oplossing beschikbaar, genaamd SIM7600E-H-MIFI, die een miniPCIE-kaart is met de gesoldeerde module SIM7600E-H en verschillende antenne-aansluitingen, waarvan één een Wi-Fi-antenne is. Dit echter is al een onderwerp voor apart materiaal.
Omgeving (niet de weekdag)
geeft ontwikkelaars de mogelijkheid om zelf de meest vertrouwde ontwikkelomgeving onder Linux of Windows te kiezen. Als het gaat om één uitvoerbare applicatie op de module, is het beter om Windows te kiezen, omdat dit sneller en eenvoudiger gaat. Als er een complexe architectuur van de applicatie en latere upgrades worden verwacht, is het beter om Linux te gebruiken. We hebben ook Linux nodig om uitvoerbare bestanden te compileren voor latere uploads naar de module, en een virtuele machine is voldoende voor compilatie.
Wat u nodig heeft, dat niet beschikbaar is voor vrije download - een SDK, die u bij uw distributeur kunt aanvragen.
Installatie van hulpprogramma's voor de werking van de module
Hierna zullen we onder Windows werken, omdat dit voor de meeste gebruikers de bekendste OS is.
We moeten in enkele eenvoudige stappen de benodigde software installeren om de werking van de module te leren.
- GNU/Linux
- Cygwin
- Drivers
- ADB
Installatie van GNU/Linux
Voor het bouwen van de applicatie kan elke met ARM-Linux compatibele compiler worden gebruikt. Wij zullen SourceryCodeBenchLiteARM GNU/Linux gebruiken, dat beschikbaar is voor download op .
Om ervoor te zorgen dat alle componenten correct zijn geïnstalleerd, laat ik enkele screenshots van het installatieproces zien. In principe is er niets moeilijk aan de installatie.
Om ervoor te zorgen dat alle componenten correct zijn geïnstalleerd, laat ik enkele screenshots van het installatieproces zien. In principe is er niets moeilijk aan de installatie.
- Ik accepteer de licentieovereenkomst

- Geef de installatiefolder op

- Laat de benodigde componenten ongewijzigd

- Laat alles zoals het is

- Een paar keer 'Volgende', 'Installeren' en in principe is alles klaar

Installatie van Cygwin
Vervolgens is er een set bibliotheken en tools nodig voor de ontwikkeling, die wordt geleverd door . Hier is het simpel, de actuele versie van Cygwin kan gratis worden gedownload van de officiële website van het project, op het moment van het schrijven van dit artikel was versie 3.1.5 beschikbaar, deze hebben we gebruikt bij het voorbereiden van het materiaal.
Er is niets moeilijk aan de installatie van Cygwin, het enige dat je moet doen is een mirror kiezen van waaruit de installer de benodigde bestanden downloadt, kies er een en installeer deze, evenals een set tools en bibliotheken, laat alle beschikbare bibliotheken en tools geselecteerd.
Installatie van drivers
Nadat de module is aangesloten op de PC, moeten de drivers worden geïnstalleerd. Deze kunnen worden aangevraagd bij je distributeur (aanbevolen). Zelf op internet zoeken wordt niet aanbevolen, omdat dit veel tijd kan kosten vanwege de conflicten met apparaten.

Onder de toegewezen poorten zien we de volgende:
Windows
Linux
Omschrijving
SimTech HS-USB Diagnostics
USB Serieel
Diagnostische Interface
SimTech HS-USB NMEA
USB Serieel
GPS NMEA Interface
SimTech HS-USB AT Port
USB Serieel
AT poort Interface
SimTech HS-USB Modem
USB Serieel
Modem poort Interface
SimTech HS-USB Audio
USB Serieel
USB Audio Interface
SimTech HS-USB WWAN Adapter
USB Net
NDIS wwan Interface
Android Composite ADB Interface
USB ADB
Android debugpoort toevoegen
Zoals je waarschijnlijk hebt opgemerkt, ontbreekt de USB ADB-poort op de screenshot, dit is omdat de ADB-poort in de module standaard is gesloten en moet worden ingeschakeld door het commando ‘AT+CUSBADB=1’ naar de AT-poort van de module te sturen en deze opnieuw op te starten (dit kan met het commando ‘AT+CRESET’).
Uiteindelijk krijgen we de gewenste interface in het apparaatbeheer:

We zijn klaar met de drivers, laten we verder gaan met ADB.
Installatie van ADB
Ga naar de officiële website van Android Developer op . We zullen niet de omvangrijke Android Studio downloaden, een opdrachtregel is voldoende, deze is beschikbaar voor download via de link 'Download SDK Platform-Tools voor Windows'.

Download en pak het verkregen archief uit in de hoofdmap van schijf C.
Omgevingsvariabelen
Na het installeren van Cygwin moet je het pad Cygwin/bin/ toevoegen aan de omgevingsvariabelen voor ontwikkeling (Classieke Controlepaneel → Systeem → Geavanceerde systeeminstellingen → Geavanceerd → Omgevingsvariabelen → Systeemspecifieke variabelen → Pad → Wijzigen) zoals op de onderstaande schermafbeelding te zien is:

Op dezelfde manier voegen we het pad naar het gedownloade en uitgepakte ADB-archief toe in de hoofdmap van schijf C.

Klik een paar keer op OK en herstart de computer.
Na de herstart kunnen we eenvoudig controleren of ADB correct werkt door de opdrachtprompt te openen (Win+R → cmd) en het commando ‘adb version’ in te voeren. We krijgen ongeveer dit resultaat:

Verbind de module met de pc (als deze per ongeluk is losgekoppeld) en controleer of ADB deze herkent met het commando ‘adb devices’:

Klaar, hiermee is de setup voor het verbinden met de module voltooid en kunnen we de shell starten om met de module te werken.

Uitpakken en compileren van SDK
Nadat we toegang hebben gekregen tot de shell en we kunnen beginnen met werken in de opdrachtprompt van de module, proberen we onze eerste applicatie te compileren voor upload naar de module.
Dit kan voor velen een uitdaging zijn! Aangezien de module draait op een Linux-besturingssysteem, is het het beste om onder native omstandigheden te compileren om conflicten onder Windows te vermijden.
We zullen niet in detail ingaan op hoe je in de afwezigheid van Linux en de wens om het op je machine te installeren, het op een virtuele machine kunt installeren. We maken gebruik van VirtualBox, installeren Ubuntu versie 20.04 (de actuele versie op het moment van schrijven van dit artikel) en beginnen vervolgens onder deze omgeving met compilers, SDK, enz.
We gaan naar de Linux-omgeving en pakken het archief uit dat we van de distributeur hebben ontvangen.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz We gaan naar de map sim_open_sdk en voegen de omgeving toe:
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 We blijven in dezelfde map en voeren de volgende commando's daaruit uit.
Installeer de bibliotheek libncurses5-dev, als deze nog niet is geïnstalleerd:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -yPython, als deze ook nog niet is geïnstalleerd:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -yen gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gccCompilatie:
Nu moeten we een paar bestanden compileren, we voeren de volgende commando's een voor een uit.
Als er tijdens de compilatie een venster voor kernelinstellingen verschijnt, kies dan eenvoudigweg Exit en keer terug naar de console; we hebben momenteel geen behoefte om de kernel te configureren.
Voer uit:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ makeWe compileren de bootloader:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make abootWe compileren de kernel:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make kernel
We compileren het rootbestandssysteem:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make rootfsVoor Linux-gebruikers is het relevant om de stuurprogramma-module te compileren:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make kernel_moduleLaten we de demo compileren:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make demoHierna zullen er verschillende nieuwe bestanden verschijnen in de map sim_open_sdk\/output:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ ls output\/
appsboot.mbn boot.img demo_app helloworld system.img
Demo
Laten we proberen de demo in onze module te laden en kijken wat eruit komt.
Opstarten
In de map sim_open_sdk kunnen we het bestand demo_app zien. We kopiëren het en verplaatsen het naar de hoofdmap van schijf C op de pc waarop de module is aangesloten. Vervolgens starten we de Windows-opdrachtprompt (Win+R -> cmd) en typen we in:
C:>adb push C:demo_app \/data\/De console meldt ons:
C:demo_app: 1 bestand gepusht, 0 overgeslagen. 151.4 MB\/s (838900 bytes in 0.005s)Dat betekent dat het bestand succesvol naar de module is verzonden, en we hoeven het alleen nog maar te starten. Laten we niet vertragen.
Voer uit:
C:>adb shellWe breiden de rechten van het geladen bestand uit:
/ # cdhmod 777 /data/demo_appEn starten:
/ # /data/demo_appIn deze console zal de module ons het volgende melden:
SDK_VER : SIM_SDK_VER_20191205
DEMO_VER: SIM_SDK_VER_20191205
Kies een optie om te testen uit de onderstaande items.
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
Optie >
Laten we het IMEI van de module bekijken, voer 7 in (overschakelen naar de command modus) en voer vervolgens 5 in:
Selecteer een optie om te testen uit de onderstaande items.
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. Versie 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
Optie > 7
Selecteer een optie om te testen uit de onderstaande items.
1. get Module Versie 2. get CSQ
3. get CREG 4. get ICCID
5. get IMEI 6. get CIMI
99. terug
Optie > 5
IMEI: 867584030090489
Selecteer een optie om te testen uit de onderstaande items.
1. get Module Versie 2. get CSQ
3. get CREG 4. get ICCID
5. get IMEI 6. get CIMI
99. terug
Optie >
Zo zullen we de IMEI van de module zien.
Tot slot
Ik hoop dat we een algemeen beeld hebben gegeven van hoe te beginnen met de module. In de volgende artikelen zullen we dieper ingaan op de mogelijkheden die het SIM7600E-H platform biedt, evenals hoe je je eigen applicatie op de module op afstand kunt bijwerken.
Voel je vrij om vragen te stellen in de opmerkingen, en geef ook aan welk aspect van de mogelijkheden van de module in de volgende artikelen moet worden weerspiegeld.
Bron: habr.com





