OpenLinux als onderdeel van SIM7600E-H-modules

OpenLinux als onderdeel van SIM7600E-H-modules

Het mechanisme voor het ontwikkelen van een aangepaste applicatie en het laden ervan in de module is beschikbaar onder zowel de Linux- als Windows-besturingssystemen. In dit artikel zullen we gedetailleerd bekijken hoe, aan de hand van voorbeelden uit de meegeleverde SDK SIMCom draadloze oplossingen compileer en laad een aangepaste applicatie in een module.

Voordat ik het artikel schreef, vroeg een van mijn kennissen, verre van te ontwikkelen voor Linux, mij om de kwestie van het beschrijven van het proces van het ontwikkelen van mijn eigen applicatie voor de SIM7600E-H-module zo gedetailleerd mogelijk te benaderen. Het criterium voor het beoordelen van de toegankelijkheid van de presentatie van materiaal was de zinsnede ‘zodat ik het begrijp’.

Ik nodig je uit om kennis te maken met wat er is gebeurd.

Het artikel wordt regelmatig aangevuld en bijgewerkt

Prelude

Typisch worden cellulaire communicatiemodules alleen gebruikt voor datatransmissie, spraakoproepen, SMS-transmissie en dergelijke. Dit alles gebeurt via AT-opdrachten die worden verzonden vanaf een externe besturingsmicrocontroller. Maar er is een categorie modules waarmee u aangepaste code kunt uitvoeren die van buitenaf is geladen. In sommige gevallen vermindert dit het totale budget van het apparaat aanzienlijk, waardoor u een eenvoudigere (en even goedkope) microcontroller op het bord kunt installeren of deze helemaal kunt laten varen. Met de komst van LTE-modules die worden bestuurd door Android- of Linux-besturingssystemen en hun krachtige bronnen, is het mogelijk om alle taken op te lossen die beschikbaar zijn voor populaire processors. Dit artikel gaat over SIM7600E-H, bestuurd door Linux OS. We zullen bekijken hoe u een uitvoerbare toepassing kunt downloaden en uitvoeren.

In veel opzichten is het materiaal gebaseerd op het document "SIM7600 Open Linux development quide", maar enkele toevoegingen en in de eerste plaats de Russische versie zullen nuttig zijn. Het artikel zal degenen die net beginnen de module onder de knie te krijgen, helpen begrijpen hoe ze de demo-applicatie kunnen downloaden en de nodige vaardigheden aanreiken voor verder werk.

In het kort over wie SIM7600E-H is

SIM7600E-H is een module gebouwd op de ARM Cortex-A7 1.3GHz-processor van Qualcomm, met het Linux-besturingssysteem (kernel 3.18.20) erin, geschikt om te werken met Europese (inclusief Russische) frequentiebanden 2G/3G/LTE die Cat ondersteunen .4, met maximale downloadsnelheden tot 150 Mbps en uploadsnelheden tot 50 Mbps. Rijke randapparatuur, een industrieel temperatuurbereik en de aanwezigheid van ingebouwde GPS/GLONASS-navigatie dekken alle eisen voor een moderne modulaire oplossing op M2M-gebied.

Systeem overzicht

De SIM7600E-H-module is gebaseerd op het Linux-besturingssysteem (kernel 3.18.20). Het bestandssysteem is op zijn beurt opgebouwd op basis van het gejournaliseerde bestandssysteem UBIFS (Unsorted Block Image File System).

Belangrijke kenmerken van dit bestandssysteem zijn onder meer:

  • werkt met partities, stelt u in staat de grootte ervan aan te maken, te verwijderen of te wijzigen;
  • zorgt voor opname-uitlijning over het gehele mediavolume;
  • werkt met slechte blokken;
  • minimaliseert de kans op gegevensverlies tijdens een stroomstoring of andere storingen;
  • logboeken bijhouden.

Beschrijving genomen vandaar, is er ook een meer gedetailleerde beschrijving van een dergelijk bestandssysteem.

Die. Dit type bestandssysteem is ideaal voor zware bedrijfsomstandigheden van de module en mogelijke stroomproblemen. Maar dit betekent niet dat onstabiele stroomomstandigheden de verwachte werking van de module zullen zijn; het geeft alleen de grotere levensvatbaarheid van het apparaat aan.

Память

De verdeling van geheugengebieden is als volgt opgebouwd:

OpenLinux als onderdeel van SIM7600E-H-modules

Er zijn drie belangrijke gebieden die benadrukt moeten worden:

ubi0:rootfs – alleen-lezen en bevat de Linux-kernel zelf
ubi0:usrfs – voornamelijk gebruikt voor gebruikersprogramma's en gegevensopslag
ubi0:cahcefs – gereserveerd voor FOTA-updates. Als de beschikbare ruimte niet voldoende is om de update te downloaden, verwijdert het systeem ongebruikte bestanden en maakt zo ruimte vrij. Maar om veiligheidsredenen mag u uw bestanden daar niet plaatsen.

Alle drie de secties zijn als volgt verdeeld:

Bestandssysteem
Maat
Gebruikt
Beschikbaar
Gebruik maken van%
Gemonteerd op

ubi0:rootfs
40.7M
36.2M
4.4M
89%
/

ubi0:usrfs
10.5M
360K
10.1M
3%
/gegevens

ubi0: cachefs
50.3M
20K
47.7M
0%
/ cache

Beschikbare functionaliteit

Zoals hierboven vermeld is de module gebouwd op de Cortex A7-chipset van Qualcomm. Het zou verkeerd zijn om niet zo'n krachtige kern te bieden om het gebruikersprogramma te verwerken en de hoofdprocessor van het apparaat te ontlasten door een deel van het programma naar de module over te dragen.

Voor het gebruikersprogramma zijn de volgende randbedrijfsmodi voor ons beschikbaar:

Pin nr.
Naam
Sys GPIO-nr.
Standaard actie
Func1
Func2
Trekken
Wekonderbreking

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
-

Mee eens, de lijst is indrukwekkend en let op: een deel van de randapparatuur wordt gebruikt om de module als router te bedienen. Die. Op basis van zo'n module kun je een kleine router maken die internet via Wi-Fi distribueert. Er is trouwens een kant-en-klare oplossing genaamd SIM7600E-H-MIFI en is een miniPCIE-kaart met een gesoldeerde SIM7600E-H-module en verschillende antennepinnen, waarvan er één een Wi-Fi-antenne is. Dit is echter een onderwerp voor een apart artikel.

Woensdag (geen dag van de week)

SIMCom draadloze oplossingen bieden ontwikkelaars de mogelijkheid om de meest bekende ontwikkelomgeving voor Linux of Windows te kiezen. Als we het hebben over één uitvoerbare applicatie op een module, dan is het beter om Windows te kiezen, het zal sneller en gemakkelijker zijn. Als er een complexe applicatiearchitectuur en daaropvolgende upgrades worden verwacht, is het beter om Linux te gebruiken. We hebben Linux ook nodig om uitvoerbare bestanden te compileren en vervolgens in de module te laden; een virtuele machine is voldoende voor compilatie.

Wat u nodig heeft, is niet gratis te downloaden: een SDK, die u bij uw distributeur kunt opvragen.

Hulpprogramma's installeren voor het werken met de module

Hierna zullen we werken onder Windows, het meest bekende besturingssysteem voor de meeste gebruikers.

We zullen in een paar eenvoudige stappen de benodigde software moeten installeren om vervolgens het werken met de module onder de knie te krijgen:

  1. GNU / Linux
  2. Cygwin
  3. Bestuurder
  4. ADB

GNU/Linux installeren

Om de applicatie te bouwen, kunt u elke ARM-Linux-compatibele compiler gebruiken. We zullen SourceryCodeBenchLiteARM GNU/Linuxtranslater gebruiken, beschikbaar om te downloaden op link.

Om ervoor te zorgen dat alle componenten correct worden geïnstalleerd, laat ik een paar schermafbeeldingen achter van het installatieproces. In principe is er niets ingewikkelds aan de installatie.

Om ervoor te zorgen dat alle componenten correct worden geïnstalleerd, laat ik een paar schermafbeeldingen achter van het installatieproces. In principe is er niets ingewikkelds aan de installatie.

  1. Wij accepteren de licentieovereenkomst
    OpenLinux als onderdeel van SIM7600E-H-modules
  2. Geef de installatiemap op
    OpenLinux als onderdeel van SIM7600E-H-modules
  3. We laten de noodzakelijke componenten ongewijzigd
    OpenLinux als onderdeel van SIM7600E-H-modules
  4. Laat het zoals het is
    OpenLinux als onderdeel van SIM7600E-H-modules
  5. Meerdere keren "Volgende", "Installeren" en eigenlijk is dat alles
    OpenLinux als onderdeel van SIM7600E-H-modules

Cygwin installeren

Verder heb je voor ontwikkeling een set bibliotheken en hulpprogramma's nodig uit de meegeleverde set Cygwin. Alles is hier eenvoudig, de huidige versie van Cygwin kan gratis worden gedownload op de officiële website van het project; op het moment van schrijven was versie 3.1.5 beschikbaar, die we hebben gebruikt bij het voorbereiden van het materiaal.

Er is niets ingewikkelds aan het installeren van Cygwin, het enige dat u hoeft te selecteren is een spiegelserver waarvan het installatieprogramma de benodigde bestanden downloadt, er een selecteert en installeert, evenals een reeks hulpprogramma's en bibliotheken, waarbij alle beschikbare bibliotheken en hulpprogramma's geselecteerd.

drivers installeren

Nadat de module op de pc is aangesloten, moet u stuurprogramma's installeren. Deze kunt u opvragen bij uw distributeur (aanbevolen). Ik raad u af om zelf op internet te zoeken, omdat... Het kan veel tijd kosten om te achterhalen wat de oorzaak van het apparaatconflict is.

OpenLinux als onderdeel van SIM7600E-H-modules

Onder de geselecteerde poorten zien we het volgende:

Dakramen en raamkozijnen
Linux
beschrijving

SimTech HS-USB-diagnostiek
USB serieel
Diagnostische interface:

SimTech HS-USB NMEA
USB serieel
GPS NMEA-interface

SimTech HS-USB AT-poort
USB serieel
AT-poortinterface

SimTech HS-USB-modem
USB serieel
Modempoortinterface

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 voegt debug-poort toe

Zoals je waarschijnlijk hebt gemerkt, is er geen USB ADB tussen de poorten in de schermafbeelding. Dit komt omdat de ADB-poort in de module standaard gesloten is en je deze moet inschakelen door het commando 'AT+CUUSBADB=1' naar de AT te sturen poort van de module en start deze opnieuw op (dit kunt u doen met het commando 'AT+CRESET').

Als resultaat krijgen we de gewenste interface in Apparaatbeheer:

OpenLinux als onderdeel van SIM7600E-H-modules

We zijn klaar met de stuurprogramma's, laten we verder gaan met ADB.

ADB installeren

Ga naar de officiële Android-ontwikkelaarswebsite link. We zullen de omvangrijke Android Studio niet downloaden; we hebben alleen de opdrachtregel nodig, die kan worden gedownload via de link "SDK Platform-Tools for Windows downloaden".

OpenLinux als onderdeel van SIM7600E-H-modules

Download het resulterende archief en pak het uit naar de hoofdmap van station C.

Omgevingsvariabelen

Na het installeren van Cygwin moet u het pad Cygwin/bin/ toevoegen aan de variabelen van de ontwikkelomgeving (Klassiek Configuratiescherm → Systeem → Geavanceerde systeeminstellingen → Geavanceerd → Omgevingsvariabelen → Systeemvariabelen → Pad → Bewerken) zoals weergegeven in de onderstaande schermafbeelding:

OpenLinux als onderdeel van SIM7600E-H-modules

Voeg op dezelfde manier het pad naar het gedownloade en uitgepakte ADB-archief toe aan de hoofdmap van station C.

OpenLinux als onderdeel van SIM7600E-H-modules

Klik meerdere keren op OK en start de computer opnieuw op.

Na het opnieuw opstarten kunt u eenvoudig controleren of ADB correct werkt door de opdrachtregel (Win+R → cmd) te openen en het commando ‘adb versie’ te typen. We krijgen zoiets als dit:

OpenLinux als onderdeel van SIM7600E-H-modules

Laten we de module verbinden met de pc (als deze toevallig is losgekoppeld) en controleren of ADB deze ziet met het commando ‘adb devices’:

OpenLinux als onderdeel van SIM7600E-H-modules

Als u klaar bent, is de configuratie van de verbinding met de module voltooid en kunnen we de shell starten om met de module te werken.

OpenLinux als onderdeel van SIM7600E-H-modules

Uitpakken en compileren van de SDK

Nu we toegang hebben tot de shell en kunnen beginnen te werken met de opdrachtregel van de module, gaan we proberen onze eerste applicatie te compileren om in de module te laden.

Veel mensen kunnen hier moeite mee hebben! Omdat De module draait op het Linux-besturingssysteem; om botsingen te voorkomen bij het compileren van code onder Windows, kun je het beste compileren in de native omgeving: Linux.

We zullen niet in detail ingaan op hoe je het, bij afwezigheid van Linux en de wens om het op je machine te installeren, op een virtuele machine kunt installeren. We zullen VirtualBox gebruiken, Ubuntu-versie 20.04 installeren (de huidige versie op het moment van schrijven) en daaronder gaan we werken met compilers, SDK's, enz.

Laten we naar de Linux-omgeving gaan en het archief uitpakken dat we van de distributeur hebben ontvangen.

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

Ga naar de map sim_open_sdk en voeg 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 daaropvolgende opdrachten uit terwijl we ons daarin bevinden.
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 -y

Python, als het ook niet was geïnstalleerd:

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

en gcc:

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

Compilatie:

Nu moeten we verschillende bestanden compileren, we voeren de volgende opdrachten achtereenvolgens uit.

Als het kernelconfiguratievenster verschijnt tijdens het compileren, selecteert u gewoon Afsluiten en keert u terug naar de console; we hoeven de kernel nu niet te configureren.

Wij doen:

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

Bootloader compileren:

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

Het compileren van de kernel:

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

Compileer het rootbestandssysteem:

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

Voor Linux-gebruikers is het relevant om het modulestuurprogramma te compileren:

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

Laten we de demo compileren:

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

Hierna 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

Демо

Laten we proberen de demo in onze module te laden en kijken wat eruit komt.

Download

In de map sim_open_sdk kunnen we het bestand demo_app zien. We nemen het en brengen het over naar de root van station C op de pc waarop de module is aangesloten. Start vervolgens de Windows-opdrachtregel (Win+R -> cmd) en voer het volgende in:

C:>adb push C:demo_app /data/

De console zal ons vertellen:

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

Dit betekent dat het bestand met succes naar de module is verzonden en dat we het alleen maar hoeven uit te voeren. Laten we niet aarzelen.

Wij doen:

C:>adb shell

We breiden de rechten van het gedownloade bestand uit:

/ # cdhmod 777 /data/demo_app

En wij rennen:

/ # /data/demo_app

In dezelfde console vertelt de module ons het volgende:

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 >   

Laten we eens kijken naar de IMEI van de module, voer 7 in (schakel over naar de commandomodus) en voer vervolgens 5 in:

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 >

Op deze manier zullen we de IMEI van de module zien.

Als conclusie

Ik hoop dat we een algemeen idee hebben kunnen krijgen van hoe we met de module aan de slag kunnen. In de volgende artikelen gaan we dieper in op de mogelijkheden die het SIM7600E-H platform biedt, en hoe je op afstand je eigen applicatie in de module kunt updaten.

Ik nodig je uit om vragen te stellen in de reacties, en ook aan te geven welk aspect van de mogelijkheden van de module in volgende artikelen tot uiting moet komen.

Bron: www.habr.com

Voeg een reactie