
Der Mechanismus zur Entwicklung von Benutzeranwendungen und deren Upload in das Modul ist sowohl unter Linux als auch unter Windows verfĂŒgbar. In diesem Artikel werden wir ausfĂŒhrlich untersuchen, wie Sie anhand von Beispielen aus dem bereitgestellten SDK vorgehen können. eine Benutzeranwendung im Modul kompilieren und hochladen.
Vor dem Schreiben dieses Artikels bat ein Bekannter von mir, der mit der Linux-Entwicklung nicht vertraut ist, um eine detaillierte ErlĂ€uterung des Prozesses zur Entwicklung einer eigenen Anwendung fĂŒr das SIM7600E-H Modul. Das Kriterium fĂŒr die VerstĂ€ndlichkeit des Materials war der Satz "so dass ich es verstehe".
Ich lade Sie ein, das Ergebnis zu betrachten.
Der Artikel wird regelmĂ€Ăig ergĂ€nzt und aktualisiert.
Einleitung
In der Regel werden Mobilfunkmodule nur fĂŒr die Ăbertragung von Daten, Sprachdiensten, SMS und Ăhnlichem verwendet. All dies geschieht durch AT-Befehle, die von einem externen Mikrocontroller gesendet werden. Es gibt jedoch eine Kategorie von Modulen, die es ermöglicht, benutzerdefinierten Code von extern zu laden. In einigen FĂ€llen fĂŒhrt dies zu erheblichen Einsparungen bei den Gesamtkosten des GerĂ€ts, da ein einfacherer (und damit kostengĂŒnstigerer) Mikrocontroller auf die Platine gesetzt oder sogar vollstĂ€ndig darauf verzichtet werden kann. Mit dem Aufkommen von LTE-Modulen, die von einem Betriebssystem wie Android oder Linux gesteuert werden und ĂŒber leistungsstarke Ressourcen verfĂŒgen, können sĂ€mtliche Aufgaben gelöst werden, die auch von gĂ€ngigen Prozessoren durchgefĂŒhrt werden. In diesem Artikel geht es um das SIM7600E-H, das unter Linux lĂ€uft. Wir werden untersuchen, wie man eine ausfĂŒhrbare Anwendung lĂ€dt und startet.
Ein groĂer Teil des Materials basiert auf dem Dokument 'SIM7600 Open Linux Development Guide', doch einige ErgĂ€nzungen, insbesondere die deutschsprachige Version, werden hilfreich sein. Der Artikel wird denen helfen, die gerade erst anfangen, sich mit dem Modul vertraut zu machen, um bis zur DurchfĂŒhrung einer Demonstrationsanwendung zu gelangen, und er bietet die notwendigen FĂ€higkeiten fĂŒr die weitere Arbeit.
Kurz gesagt, wer ist der SIM7600E-H?
Der SIM7600E-H ist ein Modul, das auf dem ARM Cortex-A7 1,3 GHz Prozessor von Qualcomm basiert. Es verfĂŒgt ĂŒber ein Linux-Betriebssystem (Kernel 3.18.20) und kann mit europĂ€ischen (einschlieĂlich russischen) FrequenzbĂ€ndern fĂŒr 2G/3G/LTE arbeiten. Es unterstĂŒtzt Cat.4 und bietet eine maximale Download-Geschwindigkeit von bis zu 150 Mbps und eine Upload-Geschwindigkeit von bis zu 50 Mbps. Die umfangreiche Peripherie, der industrielle Temperaturbereich und die integrierte GPS/GLONASS-Navigation erfĂŒllen alle Anforderungen an moderne modulare Lösungen im M2M-Bereich.
SystemĂŒbersicht
Das SIM7600E-H Modul basiert auf einem Linux-Betriebssystem (Kernel 3.18.20). Das Dateisystem verwendet ein journaling Dateisystem namens UBIFS (Unsorted Block Image File System).
Wichtige Merkmale dieses Dateisystems sind:
- Es arbeitet mit Partitionen und ermöglicht das Erstellen, Löschen oder Ăndern ihrer GröĂe;
- Es sorgt fĂŒr eine gleichmĂ€Ăige Ausrichtung der Daten auf dem gesamten Speicher;
- Es arbeitet mit Bad Blocks;
- Es minimiert die Wahrscheinlichkeit von Datenverlusten bei unerwarteten StromausfÀllen oder anderen Störungen;
- Es fĂŒhrt Protokolle.
Die Beschreibung stammt von , dort wird ebenfalls detaillierter ĂŒber das Dateisystem berichtet.
Das heiĂt, dieser Typ des Dateisystems ist ideal fĂŒr raue Betriebsbedingungen des Moduls und mögliche Probleme mit der Stromversorgung. Das bedeutet jedoch nicht, dass instabile Strombedingungen als erwarteter Betriebsmodus des Moduls angesehen werden sollten; es spricht lediglich fĂŒr eine höhere Lebensdauer des GerĂ€ts.
Speicher
Die Verteilung der Speicherbereiche ist wie folgt eingerichtet:

Es mĂŒssen drei Hauptbereiche ĐČŃĐŽĐ”Đ»Đ”Đœ werden:
ubi0:rootfs â nur schreibgeschĂŒtzt und enthĂ€lt den Linux-Kernel
ubi0:usrfs â wird hauptsĂ€chlich fĂŒr Benutzerprogramme und Datenspeicherung verwendet
ubi0:cachefs â reserviert fĂŒr FOTA-Updates. Wenn nicht genĂŒgend Speicherplatz fĂŒr den Download des Updates verfĂŒgbar ist, entfernt das System ungenutzte Dateien, um Platz freizugeben. Aus SicherheitsgrĂŒnden sollten dort jedoch keine eigenen Dateien gespeichert werden.
Alle drei Partitionen sind wie folgt verteilt:
Dateisystem
Size
Verwendet
VerfĂŒgbar
Nutzungs%
EingehÀngt in
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
VerfĂŒgbare FunktionalitĂ€t
Wie bereits erwĂ€hnt, basiert das Modul auf dem Cortex A7-Chipset von Qualcomm. Es wĂ€re falsch, kein leistungsstarkes Kern fĂŒr die Verarbeitung der Benutzeranwendung bereitzustellen und die Hauptprozessorlast des GerĂ€ts teilweise auf das Modul zu verlagern.
FĂŒr die Benutzeranwendung stehen uns folgende Betriebsmodi der Peripherie zur VerfĂŒgung:
Pin-Nr.
Name
Sys GPIO Nr.
Standardaktion
Funktion1
Funktion2
Herunterladen
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-Karte
â
â
B-PD
â
22
SD_DATA0
â
SD-Karte
â
â
B-PD
â
23
SD_DATA1
â
SD-Karte
â
â
B-PD
â
24
SD_DATA2
â
SD-Karte
â
â
B-PD
â
25
SD_DATA3
â
SD-Karte
â
â
B-PD
â
26
SD_CLK
â
SD-Karte
â
â
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
â
Ziehen Sie in Betracht, dass die Liste beeindruckend ist, und beachten Sie: Ein Teil der Peripherie wird verwendet, um das Modul als Router zu betreiben. Das bedeutet, dass man auf Basis eines solchen Moduls einen kleinen Router erstellen kann, der das Internet ĂŒber Wi-Fi bereitstellt. Ăbrigens gibt es bereits eine fertige Lösung, die SIM7600E-H-MIFI genannt wird. Diese stellt eine miniPCIE-Karte dar, die mit dem Lötdrahtmodul SIM7600E-H und mehreren AntennenanschlĂŒssen ausgestattet ist, von denen einer die Wi-Fi-Antenne ist. Das ist jedoch bereits ein Thema fĂŒr einen separaten Artikel.
Umgebung (nicht Wochentag)
ermöglichen es Entwicklern, die am vertrautesten Entwicklungsumgebung unter Linux oder Windows selbst auszuwĂ€hlen. Wenn es um eine einzelne ausfĂŒhrbare Anwendung auf dem Modul geht, ist es besser, Windows zu wĂ€hlen, da dies schneller und einfacher ist. Wenn jedoch eine komplexe Architektur der Anwendung und spĂ€tere Upgrades vorgesehen sind, sollte Linux verwendet werden. AuĂerdem benötigen wir Linux, um ausfĂŒhrbare Dateien zu kompilieren, die dann auf das Modul hochgeladen werden, und fĂŒr die Kompilierung reicht eine virtuelle Maschine völlig aus.
Von dem, was Sie benötigen und nicht frei heruntergeladen werden kann, ist das SDK, das Sie bei Ihrem Distributor anfordern können.
Installation der Tools fĂŒr die Arbeit mit dem Modul
Hier und im Folgenden arbeiten wir unter Windows, da dies fĂŒr die meisten Benutzer das vertrauteste Betriebssystem ist.
Wir mĂŒssen in wenigen einfachen Schritten die erforderliche Software installieren, um mit dem Modul vertraut zu werden:
- GNU/Linux
- Cygwin
- Treiber
- ADB
Installation von GNU/Linux
FĂŒr die Erstellung der Anwendung kann jeder mit ARM-Linux kompatible Compiler verwendet werden. Wir nutzen SourceryCodeBenchLite ARM GNU/Linux, das zum Download verfĂŒgbar ist unter .
Um sicherzustellen, dass alle Komponenten korrekt installiert werden, lasse ich einige Screenshots des Installationsprozesses. Im Grunde genommen gibt es an der Installation nichts Schwieriges.
Um sicherzustellen, dass alle Komponenten korrekt installiert werden, lasse ich einige Screenshots des Installationsprozesses. Im Grunde genommen gibt es an der Installation nichts Schwieriges.
- Akzeptieren Sie die Lizenzvereinbarung

- Geben Sie den Installationsordner an

- Die notwendigen Komponenten lassen wir unverÀndert

- Lassen wir es wie es ist

- Mehrmals auf "Weiter", "Installieren" und im Grunde war's das

Installation von Cygwin
FĂŒr die Entwicklung benötigen wir auĂerdem ein Set von Bibliotheken und Tools aus dem bereitgestellten Paket . Hier ist alles einfach, die aktuelle Version von Cygwin kann kostenlos von der offiziellen Website des Projekts heruntergeladen werden. Zum Zeitpunkt des Verfassens dieses Artikels war Version 3.1.5 verfĂŒgbar, die wir auch zur Vorbereitung des Materials verwendet haben.
Die Installation von Cygwin ist völlig unkompliziert. Das einzige, was Sie auswĂ€hlen mĂŒssen, ist ein Spiegelserver, von dem das Installationsprogramm die erforderlichen Dateien herunterlĂ€dt. WĂ€hlen Sie jeden beliebigen aus und installieren Sie ihn, lassen Sie auĂerdem das gesamte Set an Dienstprogrammen und Bibliotheken ausgewĂ€hlt, und behalten Sie alle verfĂŒgbaren Bibliotheken und Dienstprogramme im Ankreuzfeld.
Treiberinstallation
Nachdem das Modul mit dem PC verbunden wurde, mĂŒssen Treiber installiert werden. Diese können von Ihrem Distributor angefordert werden (empfohlen). Ich rate davon ab, sie selbst im Internet zu suchen, da dies viel Zeit in Anspruch nehmen könnte, um herauszufinden, welche Konflikte zwischen den GerĂ€ten bestehen.

Unter den zugewiesenen Ports sehen wir folgende:
Windows
Linux
Beschreibung
SimTech HS-USB Diagnostics
USB Serial
Diagnose-Schnittstelle
SimTech HS-USB NMEA
USB Serial
GPS NMEA-Schnittstelle
SimTech HS-USB AT Port
USB Serial
AT-Port-Schnittstelle
SimTech HS-USB Modem
USB Serial
Modem-Port-Schnittstelle
SimTech HS-USB Audio
USB Serial
USB-Audio-Schnittstelle
SimTech HS-USB WWAN Adapter
USB-Netzwerk
NDIS WWAN-Schnittstelle
Android Composite ADB Interface
USB ADB
Android zusĂ€tzlichen Debug-Port hinzufĂŒgen
Wie Sie sicherlich bemerkt haben, fehlt der USB ADB-Port im Screenshot. Das liegt daran, dass der ADB-Port im Modul standardmĂ€Ăig deaktiviert ist und aktiviert werden muss. Senden Sie den Befehl âAT+CUSBADB=1â an den AT-Port des Moduls und starten Sie es neu (das kann mit dem Befehl âAT+CRESETâ erfolgen).
Am Ende erhalten wir die gewĂŒnschte Schnittstelle im GerĂ€te-Manager:

Die Treiber sind erledigt, nun kommen wir zu ADB.
Installation von ADB
Wir gehen auf die offizielle Website der Android-Entwickler unter . Wir laden nicht das umfangreiche Android Studio herunter, die Befehlszeile reicht aus, die unter dem Link âDownload SDK Platform-Tools for Windowsâ verfĂŒgbar ist.

Wir laden die Datei herunter und entpacken das erhaltene Archiv in das Wurzelverzeichnis von Laufwerk C.
Umgebungsvariablen
Nach der Installation von Cygwin mĂŒssen wir den Pfad Cygwin/bin/ zu den Entwicklungsumgebungsvariablen hinzufĂŒgen (Systemsteuerung â System â Erweiterten Systemeinstellungen â Erweitert â Umgebungsvariablen â Systemvariablen â Path â Bearbeiten), wie im Screenshot unten gezeigt:

Auf dieselbe Weise fĂŒgen wir den Pfad zum heruntergeladenen und entpackten ADB-Archiv im Wurzelverzeichnis von Laufwerk C hinzu.

Wir klicken mehrmals auf OK und starten den Computer neu.
Nach dem Neustart kann leicht ĂŒberprĂŒft werden, ob ADB korrekt funktioniert, indem wir die Eingabeaufforderung öffnen (Win+R â cmd) und den Befehl âadb versionâ eingeben. Wir erhalten ein Ă€hnliches Ergebnis:

SchlieĂen Sie das Modul an den PC an (falls es vom PC getrennt wurde) und ĂŒberprĂŒfen Sie, ob ADB es mit dem Befehl âadb devicesâ erkennt:

Fertig, die Verbindung zu dem Modul ist jetzt hergestellt, und wir können die Shell fĂŒr die Arbeit mit dem Modul starten.

Entpacken und Kompilieren des SDK
Nachdem wir Zugang zur Shell erhalten haben und mit der Kommandozeile des Moduls arbeiten können, versuchen wir, unsere erste Anwendung zu kompilieren, die wir in das Modul laden können.
Damit könnten viele Schwierigkeiten auftreten! Da das Modul unter Linux lĂ€uft, ist es am besten, in einer nativen Umgebung â Linux â zu kompilieren, um Konflikte bei der Kompilierung unter Windows zu vermeiden.
Wir werden nicht im Detail darauf eingehen, wie man Linux in einer virtuellen Umgebung installieren kann, wenn man nicht bereit ist, es auf seiner eigenen Maschine zu installieren. Stattdessen nutzen wir VirtualBox, installieren die Ubuntu-Version 20.04 (aktuelle Version zum Zeitpunkt des Schreibens) und beginnen unter dieser Umgebung mit den Compilern, SDKs usw.
Wechseln wir zur Linux-Umgebung und entpacken das Archiv, das wir vom Distributor erhalten haben.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz Wir wechseln in das Verzeichnis sim_open_sdk und fĂŒgen die Umgebung hinzu:
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 Wir bleiben im selben Verzeichnis und fĂŒhren die folgenden Befehle aus.
Installieren Sie die Bibliothek libncurses5-dev, falls diese noch nicht installiert ist:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -yPython, falls auch dies nicht installiert wurde:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -yund gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gccKompilierung:
Jetzt mĂŒssen wir mehrere Dateien kompilieren, indem wir die folgenden Befehle nacheinander ausfĂŒhren.
Wenn beim Kompilieren ein Fenster zur Kernelkonfiguration erscheint, wĂ€hlen Sie einfach Exit und kehren Sie zur Konsole zurĂŒck; wir mĂŒssen den Kernel momentan nicht konfigurieren.
FĂŒhren Sie aus:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ makeKompilieren Sie den Bootloader:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make abootKompilieren Sie den Kernel:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
Kompilieren Sie das Root-Dateisystem:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfsFĂŒr Linux-Nutzer ist es relevant, das Treiber-Modul zu kompilieren:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_moduleKompilieren Sie die Demo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demoNach dem Vorgang erscheinen mehrere neue Dateien im Verzeichnis sim_open_sdk/output:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn boot.img demo_app helloworld system.img
Demo
Lassen Sie uns die Demo in unser Modul laden und sehen, was dabei herauskommt.
Booten
Im Verzeichnis sim_open_sdk sehen wir die Datei demo_app. Wir nehmen sie und verschieben sie ins Wurzelverzeichnis von Laufwerk C auf dem PC, an den das Modul angeschlossen ist. Dann öffnen wir die Eingabeaufforderung von Windows (Win+R -> cmd) und geben ein:
C:>adb push C:demo_app /data/Die Konsole zeigt an:
C:demo_app: 1 Datei ĂŒbertragen, 0 ĂŒbersprungen. 151,4 MB/s (838900 Bytes in 0,005s)Das bedeutet, dass die Datei erfolgreich an das Modul gesendet wurde und wir sie nur noch starten mĂŒssen. Lassen Sie uns keine Zeit verlieren.
FĂŒhren Sie aus:
C:>adb shellErteilen Sie die erweiterten Berechtigungen fĂŒr die hochgeladene Datei:
/ # cdhmod 777 /data/demo_appUnd starten Sie:
/ # /data/demo_appIn dieser Konsole wird uns das Modul Folgendes berichten:
SDK_VER : SIM_SDK_VER_20191205
DEMO_VER: SIM_SDK_VER_20191205
Bitte wÀhlen Sie eine Option zum Testen aus den folgenden Punkten aus.
1. WIFI 2. Sprachanruf
3. Datenanruf 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. BEENDEN
Option >
Schauen wir uns die IMEI des Moduls an, geben Sie 7 ein (wechseln Sie in den Befehlsmodus) und geben Sie dann 5 ein:
Bitte wĂ€hlen Sie eine Option zum Testen aus den unten aufgefĂŒhrten Punkten aus.
1. WIFI 2. Sprachanruf
3. Datenruf 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. BEENDEN
Option > 7
Bitte wĂ€hlen Sie eine Option zum Testen aus den unten aufgefĂŒhrten Punkten aus.
1. Modulversion abrufen 2. CSQ abrufen
3. CREG abrufen 4. ICCID abrufen
5. IMEI abrufen 6. CIMI abrufen
99. zurĂŒck
Option > 5
IMEI: 867584030090489
Bitte wĂ€hlen Sie eine Option zum Testen aus den unten aufgefĂŒhrten Punkten aus.
1. Modulversion abrufen 2. CSQ abrufen
3. CREG abrufen 4. ICCID abrufen
5. IMEI abrufen 6. CIMI abrufen
99. zurĂŒck
Option >
Auf diese Weise sehen wir die IMEI des Moduls.
Zusammenfassend
Ich hoffe, wir konnten Ihnen einen allgemeinen Ăberblick darĂŒber geben, wie Sie mit dem Modul beginnen können. In den kommenden Artikeln werden wir die Möglichkeiten, die die Plattform SIM7600E-H bietet, genauer unter die Lupe nehmen und erklĂ€ren, wie Sie Ihre eigene Anwendung im Modul remote aktualisieren können.
Ich lade Sie ein, Fragen in den Kommentaren zu stellen und anzugeben, welcher Aspekt der Modulmöglichkeiten in zukĂŒnftigen Artikeln behandelt werden sollte.
Quelle: habr.com





