OpenLinux als Teil der SIM7600E-H-Module

OpenLinux als Teil der SIM7600E-H-Module

Механизм разработки пользовательского приложения и загрузки его в модуль доступен как под операционной системой Linux, так и Windows. В данной статье мы подробно рассмотрим то, как воспользовавшись примерами из SDK предоставляемого SIMCom Wireless-Lösungen Kompilieren und laden Sie eine benutzerdefinierte Anwendung in ein Modul.

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.

Описание взято dahergibt es auch eine detailliertere Beschreibung eines solchen Dateisystems.

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.

Память

Распределение областей памяти построено следующим образом:

OpenLinux als Teil der SIM7600E-H-Module

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.

Среда (не день недели)

SIMCom Wireless-Lösungen bieten Entwicklern die Möglichkeit, die bekannteste Entwicklungsumgebung für Linux oder Windows auszuwählen. Wenn es sich um eine ausführbare Anwendung auf einem Modul handelt, ist es besser, Windows zu wählen, da es schneller und einfacher ist. Wenn Sie eine komplexe Anwendungsarchitektur und anschließende Upgrades erwarten, ist es besser, Linux zu verwenden. Außerdem benötigen wir Linux, um ausführbare Dateien für das spätere Laden in das Modul zu kompilieren; für die Kompilierung reicht eine virtuelle Maschine aus.

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:

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

GNU/Linux installieren

Для сборки приложения можно воспользоваться любым совместимым с ARM-Linux компилятором. Мы же воспользуемся SourceryCodeBenchLiteARM GNU/Linuxtranslater доступным для скачивания по Link.

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.

  1. Wir akzeptieren die Lizenzvereinbarung
    OpenLinux als Teil der SIM7600E-H-Module
  2. Geben Sie den Installationsordner an
    OpenLinux als Teil der SIM7600E-H-Module
  3. Die notwendigen Komponenten lassen wir unverändert
    OpenLinux als Teil der SIM7600E-H-Module
  4. Lass es so wie es ist
    OpenLinux als Teil der SIM7600E-H-Module
  5. Mehrmals „Weiter“, „Installieren“ und im Grunde wars das
    OpenLinux als Teil der SIM7600E-H-Module

Cygwin installieren

Darüber hinaus benötigen Sie für die Entwicklung eine Reihe von Bibliotheken und Dienstprogrammen aus dem bereitgestellten Set Cygwin. Hier ist alles einfach, die aktuelle Version von Cygwin kann kostenlos auf der offiziellen Website des Projekts heruntergeladen werden; zum Zeitpunkt des Schreibens war Version 3.1.5 verfügbar, die wir bei der Vorbereitung des Materials verwendet haben.

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.

OpenLinux als Teil der SIM7600E-H-Module

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:

OpenLinux als Teil der SIM7600E-H-Module

Wir sind mit den Treibern fertig, fahren wir mit ADB fort.

ADB installieren

Заходим на официальный сайт Android Developer по Link. Wir werden nicht das umfangreiche Android Studio herunterladen; wir benötigen lediglich die Befehlszeile, die über den Link „SDK Platform-Tools für Windows herunterladen“ heruntergeladen werden kann.

OpenLinux als Teil der SIM7600E-H-Module

Laden Sie das resultierende Archiv herunter und entpacken Sie es in das Stammverzeichnis von Laufwerk C.

Umgebungsvariablen

После установки Cygwin потребуется добавить путь Cygwin/bin/ в переменные среды разработки (Классическая Панель управления → Система → Дополнительные параметры системы → Дополнительно → Переменные среды → Системные переменные → Path → Изменить) так как показано на скриншоте ниже:

OpenLinux als Teil der SIM7600E-H-Module

Fügen Sie auf ähnliche Weise den Pfad zum heruntergeladenen und entpackten ADB-Archiv zum Stammverzeichnis von Laufwerk C hinzu.

OpenLinux als Teil der SIM7600E-H-Module

Klicken Sie mehrmals auf OK und starten Sie den Computer neu.

После перезагрузки можно легко проверить корректно ли работает ADB, открыв командную строку (Win+R → cmd) и набрав команду ‘adb version’. Получим примерно такой результат:

OpenLinux als Teil der SIM7600E-H-Module

Подключим модуль к ПК (если так случилось что отключили) и проверим видит ли его ADB командой ‘adb devices’:

OpenLinux als Teil der SIM7600E-H-Module

Fertig, damit ist die Konfiguration der Verbindung zum Modul abgeschlossen und wir können die Shell starten, um mit dem Modul zu arbeiten.

OpenLinux als Teil der SIM7600E-H-Module

Распаковка и компиляция 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

Kommentar hinzufügen