Механизм разработки пользовательского приложения и загрузки его в модуль доступен как под операционной системой Linux, так и Windows. В данной статье мы подробно рассмотрим то, как воспользовавшись примерами из SDK предоставляемого
Bevor ich den Artikel schrieb, bat mich einer meiner Bekannten, weit davon entfernt, für Linux zu entwickeln, das Problem anzugehen und den Prozess der Entwicklung meiner eigenen Anwendung für das SIM7600E-H-Modul so detailliert wie möglich zu beschreiben. Das Kriterium für die Beurteilung der Zugänglichkeit der Präsentation des Materials war die Formulierung „damit ich es verstehe.“
Ich lade Sie ein, sich mit dem Geschehen vertraut zu machen.
Der Artikel wird regelmäßig ergänzt und aktualisiert
Vorspiel
Typischerweise werden Mobilfunkmodule nur für die Datenübertragung, Sprachanrufe, SMS-Übertragung und dergleichen verwendet. All dies geschieht über AT-Befehle, die von einem externen Steuermikrocontroller gesendet werden. Es gibt jedoch eine Kategorie von Modulen, mit denen Sie von außen geladenen benutzerdefinierten Code ausführen können. In einigen Fällen wird dadurch das Gesamtbudget des Geräts erheblich reduziert, sodass Sie einen einfacheren (und ebenso preisgünstigen) Mikrocontroller auf der Platine installieren oder ganz darauf verzichten können. Mit dem Aufkommen von LTE-Modulen, die von Android- oder Linux-Betriebssystemen gesteuert werden, und ihren leistungsstarken Ressourcen ist es möglich, alle Aufgaben zu lösen, die gängigen Prozessoren zur Verfügung stehen. In diesem Artikel geht es um SIM7600E-H, gesteuert durch das Linux-Betriebssystem. Wir schauen uns an, wie man eine ausführbare Anwendung herunterlädt und ausführt.
In vielerlei Hinsicht basiert das Material auf dem Dokument „SIM7600 Open Linux Development Quide“, aber einige Ergänzungen und vor allem die russische Version werden nützlich sein. Der Artikel hilft denjenigen, die gerade erst mit der Beherrschung des Moduls beginnen, zu verstehen, wie sie die Demoanwendung herunterladen, und vermittelt die erforderlichen Fähigkeiten für die spätere Arbeit.
Kurz darüber, wer SIM7600E-H ist
SIM7600E-H ist ein Modul, das auf dem ARM Cortex-A7 1.3-GHz-Prozessor von Qualcomm basiert und über das Linux-Betriebssystem (Kernel 3.18.20) verfügt. Es kann mit den europäischen (einschließlich russischen) Frequenzbändern 2G/3G/LTE arbeiten und unterstützt Cat .4 und bietet maximale Download-Geschwindigkeiten von bis zu 150 Mbit/s und Upload-Geschwindigkeiten von bis zu 50 Mbit/s. Umfangreiche Peripherie, ein industrieller Temperaturbereich und das Vorhandensein einer integrierten GPS/GLONASS-Navigation decken alle Anforderungen an eine moderne modulare Lösung im M2M-Bereich ab.
Systemübersicht
Das SIM7600E-H-Modul basiert auf dem Linux-Betriebssystem (Kernel 3.18.20). Das Dateisystem wiederum ist auf Basis des Journaled File Systems UBIFS (Unsorted Block Image File System) aufgebaut.
Zu den wichtigen Merkmalen dieses Dateisystems gehören:
- funktioniert mit Partitionen und ermöglicht das Erstellen, Löschen oder Ändern ihrer Größe;
- stellt die Ausrichtung der Aufzeichnung über das gesamte Medienvolumen sicher;
- funktioniert mit fehlerhaften Blöcken;
- minimiert die Wahrscheinlichkeit eines Datenverlusts bei einem Stromausfall oder anderen Ausfällen;
- Protokolle führen.
Описание взято
Diese. Diese Art von Dateisystem ist ideal für raue Betriebsbedingungen des Moduls und mögliche Probleme mit der Stromversorgung. Dies bedeutet jedoch nicht, dass instabile Stromversorgungsbedingungen der erwartete Betriebsmodus des Moduls sind; es weist lediglich auf die größere Lebensfähigkeit des Geräts hin.
Память
Распределение областей памяти построено следующим образом:
Es sind drei Hauptbereiche hervorzuheben:
ubi0:rootfs – schreibgeschützt und enthält den Linux-Kernel selbst
ubi0:usrfs – Wird hauptsächlich zur Speicherung von Benutzerprogrammen und Daten verwendet
ubi0:cahcefs – reserviert für FOTA-Updates. Reicht der verfügbare Speicherplatz nicht aus, um das Update herunterzuladen, löscht das System nicht verwendete Dateien und gibt so Speicherplatz frei. Aus Sicherheitsgründen sollten Sie Ihre Dateien jedoch nicht dort ablegen.
Alle drei Abschnitte verteilen sich wie folgt:
Dateisystem
Größe
Gebrauchte
Verfügbar
Verwenden%
Befestigt auf
ubi0:rootfs
40.7M
36.2M
4.4M
89%
/
ubi0:usrfs
10.5M
360k
10.1M
3%
/Daten
ubi0:cachefs
50.3M
20k
47.7M
0%
/Zwischenspeicher
Verfügbare Funktionalität
Wie oben erwähnt, basiert das Modul auf dem Cortex A7-Chipsatz von Qualcomm. Es wäre falsch, keinen so leistungsstarken Kern zur Verarbeitung des Benutzerprogramms bereitzustellen und den Hauptprozessor des Geräts zu entlasten, indem ein Teil des Programms auf das Modul verlagert wird.
Für das Anwenderprogramm stehen uns folgende Peripheriebetriebsarten zur Verfügung:
Pin Nr.
Name und Vorname
System-GPIO-Nr.
Standardaktion
Funktion1
Funktion2
Pull
Weckunterbrechung
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
-
Stimmen Sie zu, die Liste ist beeindruckend und beachten Sie: Ein Teil der Peripherie wird verwendet, um das Modul als Router zu betreiben. Diese. Basierend auf einem solchen Modul können Sie einen kleinen Router bauen, der das Internet über WLAN verteilt. Es gibt übrigens eine fertige Lösung namens SIM7600E-H-MIFI und ist eine miniPCIE-Karte mit einem angelöteten SIM7600E-H-Modul und mehreren Antennenpins, einer davon ist eine WLAN-Antenne. Dies ist jedoch ein Thema für einen separaten Artikel.
Среда (не день недели)
Was Sie benötigen, steht nicht kostenlos zum Download zur Verfügung – ein SDK, das Sie bei Ihrem Händler anfordern können.
Installieren von Dienstprogrammen für die Arbeit mit dem Modul
Здесь и далее мы будем работать под Windows как наиболее знакомой ОС большинству пользователей.
Um anschließend den Umgang mit dem Modul zu beherrschen, müssen wir in wenigen Schritten die nötige Software installieren:
- GNU / Linux
- Cygwin
- Treiber
- ADB
GNU/Linux installieren
Для сборки приложения можно воспользоваться любым совместимым с ARM-Linux компилятором. Мы же воспользуемся SourceryCodeBenchLiteARM GNU/Linuxtranslater доступным для скачивания по
Um sicherzustellen, dass alle Komponenten korrekt installiert sind, hinterlasse ich ein paar Screenshots des Installationsprozesses. Grundsätzlich ist die Installation nicht kompliziert.
Um sicherzustellen, dass alle Komponenten korrekt installiert sind, hinterlasse ich ein paar Screenshots des Installationsprozesses. Grundsätzlich ist die Installation nicht kompliziert.
- Wir akzeptieren die Lizenzvereinbarung
- Geben Sie den Installationsordner an
- Die notwendigen Komponenten lassen wir unverändert
- Lass es so wie es ist
- Mehrmals „Weiter“, „Installieren“ und im Grunde wars das
Cygwin installieren
Darüber hinaus benötigen Sie für die Entwicklung eine Reihe von Bibliotheken und Dienstprogrammen aus dem bereitgestellten Set
Die Installation von Cygwin ist nicht kompliziert. Sie müssen lediglich einen Spiegel auswählen, von dem das Installationsprogramm die erforderlichen Dateien herunterlädt, eine beliebige Datei auswählt und installiert, sowie eine Reihe von Dienstprogrammen und Bibliotheken, wobei alle verfügbaren Bibliotheken übrig bleiben Dienstprogramme ausgewählt.
Installieren von Treibern
Nachdem das Modul an den PC angeschlossen ist, müssen Sie die Treiber installieren. Diese können Sie bei Ihrem Händler anfordern (empfohlen). Ich empfehle nicht, das Internet auf eigene Faust zu durchsuchen, denn... Es kann lange dauern, herauszufinden, was den Gerätekonflikt verursacht hat.
Unter den ausgewählten Ports sehen wir Folgendes:
Windows
Linux
Beschreibung
SimTech HS-USB-Diagnose
USB-Seriell
Diagnoseschnittstelle
SimTech HS-USB NMEA
USB-Seriell
GPS-NMEA-Schnittstelle
SimTech HS-USB AT Port
USB-Seriell
AT-Port-Schnittstelle
SimTech HS-USB-Modem
USB-Seriell
Modem-Port-Schnittstelle
SimTech HS-USB Audio
USB-Seriell
USB Audio Schnittstelle
SimTech HS-USB WWAN-Adapter
USB-Netz
NDIS WWAN-Schnittstelle
Android Composite ADB-Schnittstelle
USB ADB
Android fügt Debug-Port hinzu
Wie Sie wahrscheinlich bemerkt haben, befindet sich unter den Ports im Screenshot kein USB-ADB. Dies liegt daran, dass der ADB-Port im Modul standardmäßig geschlossen ist und Sie ihn aktivieren müssen, indem Sie den Befehl „AT+CUSBADB=1“ an den AT senden Port des Moduls und starten Sie es neu (dies kann mit dem Befehl „AT+CRESET“ erfolgen).
Als Ergebnis erhalten wir im Gerätemanager die gewünschte Schnittstelle:
Wir sind mit den Treibern fertig, fahren wir mit ADB fort.
ADB installieren
Заходим на официальный сайт Android Developer по
Laden Sie das resultierende Archiv herunter und entpacken Sie es in das Stammverzeichnis von Laufwerk C.
Umgebungsvariablen
После установки Cygwin потребуется добавить путь Cygwin/bin/ в переменные среды разработки (Классическая Панель управления → Система → Дополнительные параметры системы → Дополнительно → Переменные среды → Системные переменные → Path → Изменить) так как показано на скриншоте ниже:
Fügen Sie auf ähnliche Weise den Pfad zum heruntergeladenen und entpackten ADB-Archiv zum Stammverzeichnis von Laufwerk C hinzu.
Klicken Sie mehrmals auf OK und starten Sie den Computer neu.
После перезагрузки можно легко проверить корректно ли работает ADB, открыв командную строку (Win+R → cmd) и набрав команду ‘adb version’. Получим примерно такой результат:
Подключим модуль к ПК (если так случилось что отключили) и проверим видит ли его ADB командой ‘adb devices’:
Fertig, damit ist die Konfiguration der Verbindung zum Modul abgeschlossen und wir können die Shell starten, um mit dem Modul zu arbeiten.
Распаковка и компиляция SDK
После того как мы получили доступ к shell и можем начать работу с командной строкой модуля, попробуем скомпилировать наше первое приложение для загрузки в модуль.
С этим у многих могут возникнуть сложности! Т.к. модуль работает на операционной системе Linux, во избежание коллизий при компиляции кода под Windows – лучше всего компилировать в родной среде – Linux.
Не будем подробно останавливаться на том, как в отсутствие Linux и желания устанавливать его на свою машину, можно установить его на виртуальную. Мы же воспользуемся VirtualBox, установим Ubuntu версии 20.04 (актуальная версия на момент написания статьи) и уже под ней начнем работу с компиляторами, SDK и т.п.
Gehen wir in die Linux-Umgebung und entpacken wir das vom Distributor erhaltene Archiv.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz
Переходим в каталог sim_open_sdk и добавляем окружение:
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 Ordner und führen darin nachfolgende Befehle aus.
Устанавливаем библиотеку libncurses5-dev, если она не была установлена:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y
Python, falls es auch nicht installiert wurde:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y
und gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc
Zusammenstellung:
Jetzt müssen wir mehrere Dateien kompilieren. Wir führen die folgenden Befehle nacheinander aus.
Если при компиляции выскочит окно настройки ядра – просто выбираем Exit и возвращаемся в консоль, у нас сейчас нет необходимости конфигурировать ядро.
Wir machen:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make
Bootloader kompilieren:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot
Компилируем ядро:
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 rootfs
Für Linux-Benutzer ist es relevant, den Modultreiber zu kompilieren:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module
Lassen Sie uns die Demo kompilieren:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo
Danach 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
Попробуем загрузить демонстрацию в наш модуль и посмотрим, что из этого получится.
Laden Sie
В директории sim_open_sdk мы можем увидеть файл demo_app. Забираем его и переносим в корень диска C на ПК к которому подключен модуль. После чего запускаем командную строку Windows (Win+R -> cmd) и вводим:
C:>adb push C:demo_app /data/
Die Konsole teilt uns Folgendes mit:
C:demo_app: 1 file pushed, 0 skipped. 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 ausführen müssen. Lasst uns nicht zögern.
Wir machen:
C:>adb shell
Расширяем права загруженного файла:
/ # cdhmod 777 /data/demo_app
Und wir laufen:
/ # /data/demo_app
In derselben Konsole teilt uns das Modul Folgendes mit:
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 >
Schauen wir uns die IMEI des Moduls an, geben Sie 7 ein (wechseln Sie in den Befehlsmodus) und geben Sie dann 5 ein:
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 >
Auf diese Weise sehen wir die IMEI des Moduls.
Als eine Schlussfolgerung
Ich hoffe, wir konnten uns einen Überblick über den Einstieg in das Modul verschaffen. In den folgenden Artikeln werfen wir einen genaueren Blick auf die Funktionen, die die SIM7600E-H-Plattform bietet, sowie darauf, wie Sie Ihre eigene Anwendung im Modul aus der Ferne aktualisieren können.
Приглашаю задавать вопросы в комментариях, а также указать какой аспект возможностей модуля следует отразить в последующих статьях.
Source: habr.com