OpenLinux dans le cadre des modules SIM7600E-H

OpenLinux dans le cadre des modules SIM7600E-H

Le mécanisme de développement d'applications personnalisées et de téléchargement sur le module est disponible à la fois sous Linux et Windows. Dans cet article, nous examinerons en détail comment utiliser les exemples du SDK fourni. Solutions sans fil SIMCom compiler et télécharger une application personnalisée sur le module.

Avant de rédiger l'article, un de mes amis, qui n'est pas familier avec le développement sous Linux, m'a demandé d'aborder le sujet de la manière la plus détaillée possible pour décrire le processus de développement de sa propre application pour le module SIM7600E-H. Le critère d'évaluation de la clarté du matériel était la phrase « afin que je comprenne ».

Je vous invite à découvrir le résultat.

L'article est régulièrement mis à jour et complété.

Prélude

Généralement, les modules de communication cellulaire sont utilisés uniquement pour la transmission de données, les appels vocaux, l'envoi de SMS, etc. Tout cela se fait via des commandes AT envoyées depuis un microcontrôleur de gestion externe. Cependant, il existe une catégorie de modules qui permettent d'exécuter du code personnalisé chargé de l'extérieur. Dans certains cas, cela réduit considérablement le budget global de l'appareil en permettant d'utiliser un microcontrôleur plus simple (et donc moins coûteux) ou même de s'en passer entièrement. Avec l'arrivée des modules LTE, gérés par un système d'exploitation Android ou Linux et leurs puissantes ressources, il est possible de résoudre n'importe quel problème auquel font face les processeurs populaires. Cet article portera sur le SIM7600E-H, géré par un système d'exploitation Linux. Nous verrons comment charger et exécuter une application exécutable.

En grande partie, ce matériel est basé sur le document “SIM7600 Open Linux development guide”, mais certaines ajouts, en particulier la version en russe, seront utiles. Cet article aidera ceux qui commencent à se familiariser avec le module à charger l'application de démonstration et fournira les compétences nécessaires pour un travail ultérieur.

En bref, qui est le SIM7600E-H

Le SIM7600E-H est un module basé sur un processeur ARM Cortex-A7 à 1,3 GHz de Qualcomm, doté d'un système d'exploitation Linux (noyau 3.18.20), capable de fonctionner avec les bandes de fréquences 2G/3G/LTE en Europe (y compris en Russie), prenant en charge Cat.4 et offrant une vitesse de téléchargement maximale de 150 Mbps et un débit de 50 Mbps. Sa riche connectivité, sa plage de température industrielle et la présence d'un GPS/GLONASS intégré répondent à toutes les exigences d'une solution modulaire moderne dans le domaine M2M.

Aperçu du système

Le module SIM7600E-H est basé sur un système d'exploitation Linux (noyau 3.18.20). À son tour, le système de fichiers est construit sur une base de système de fichiers journalisé UBIFS (Unsorted Block Image File System).

Les principales caractéristiques de ce système de fichiers incluent :

  • travail avec des partitions, permettant de créer, supprimer ou redimensionner celles-ci ;
  • assure l'alignement des écritures sur l'ensemble du support ;
  • gère les blocs défectueux ;
  • minimise le risque de perte de données lors d'une coupure de courant ou d'autres pannes ;
  • tenue de journaux.

La description provient d'ici, où il est mentionné plus en détail à propos de ce système de fichiers.

C'est-à-dire que ce type de système de fichiers est idéal pour des conditions de travail difficiles du module et les éventuels problèmes d'alimentation. Mais cela ne signifie pas que les conditions d'alimentation instables seront considérées comme le mode de fonctionnement prévu du module, cela indique seulement une plus grande durabilité de l'appareil.

Mémoire

La répartition des zones de mémoire est faite comme suit :

OpenLinux dans le cadre des modules SIM7600E-H

Il faut выделить три основных области:

ubi0:rootfs – accessible en lecture seule et contient le noyau Linux lui-même
ubi0:usrfs – principalement utilisé pour les programmes utilisateurs et le stockage de données
ubi0:cachefs – réservé aux mises à jour FOTA. Si l'espace disponible est insuffisant pour télécharger une mise à jour, le système supprimera les fichiers non utilisés pour libérer de l'espace. Mais pour des raisons de sécurité, il est déconseillé d'y placer vos fichiers.

Les trois partitions sont réparties comme suit :

Système de fichiers
Taille
Utilisé
Disponible
Utilisation%
Monté sur

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

Fonctionnalités disponibles

Comme mentionné précédemment, le module est construit sur la base du chipset Cortex A7 de Qualcomm. Il serait regrettable de ne pas fournir un cœur aussi performant pour le traitement des programmes utilisateurs et soulager le processeur principal de l'appareil en délégant une partie du programme au module.

Pour le programme utilisateur, les modes d'exploitation suivants des périphériques seront disponibles :

Pin No.
Nom
Sys GPIO No.
Action par défaut
Func1
Func2
Tirer
Interruption de réveil

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
—
Carte SD
—
—
B-PD
—

22
SD_DATA0
—
Carte SD
—
—
B-PD
—

23
SD_DATA1
—
Carte SD
—
—
B-PD
—

24
SD_DATA2
—
Carte SD
—
—
B-PD
—

25
SD_DATA3
—
Carte SD
—
—
B-PD
—

26
SD_CLK
—
Carte SD
—
—
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
Statut
GPIO
Statut
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
—

Reconnaissez qu'il s'agit d'une liste impressionnante et notez que certains périphériques sont utilisés pour faire fonctionner le module en tant que routeur. Autrement dit, un petit routeur peut être créé sur la base de ce module, qui distribuera Internet via Wi-Fi. D'ailleurs, une solution prête à l'emploi existe déjà, elle s'appelle SIM7600E-H-MIFI et consiste en une carte miniPCIe, avec le module SIM7600E-H soudé et plusieurs sorties d'antenne, l'une d'elles étant l'antenne Wi-Fi. Cela dit, c'est un sujet pour un autre document.

Environnement (pas un jour de la semaine)

Solutions sans fil SIMCom offrent la possibilité aux développeurs de choisir l'environnement de développement le plus familier sous Linux ou Windows. S'il s'agit d'une seule application exécutable sur le module, il est préférable de choisir Windows, cela sera plus rapide et plus simple. Si une architecture d'application complexe et de futures mises à jour sont prévues, il vaut mieux utiliser Linux. Nous aurons également besoin de Linux pour compiler les fichiers exécutables à charger ultérieurement dans le module, la compilation pourra se faire via une machine virtuelle.

En ce qui vous concerne, la seule chose qui sera nécessaire et non disponible en téléchargement libre est le SDK, que vous pouvez demander à votre distributeur.

Installation des utilitaires pour travailler avec le module

Ici et par la suite, nous travaillerons sous Windows comme le système d'exploitation le plus familier pour la plupart des utilisateurs.

Nous devrons installer en quelques étapes simples le logiciel nécessaire pour maîtriser le travail avec le module :

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

Installation de GNU/Linux

Pour assembler l'application, vous pouvez utiliser n'importe quel compilateur compatible avec ARM-Linux. Nous allons utiliser le SourceryCodeBenchLiteARM GNU/Linux disponible en téléchargement sur le lien.

Pour que tous les composants soient installés correctement, je vais laisser quelques captures d'écran du processus d'installation. En principe, il n'y a rien de compliqué dans l'installation.

Pour que tous les composants soient installés correctement, je vais laisser quelques captures d'écran du processus d'installation. En principe, il n'y a rien de compliqué dans l'installation.

  1. Accepter le contrat de licence
    OpenLinux dans le cadre des modules SIM7600E-H
  2. Indiquer le dossier d'installation
    OpenLinux dans le cadre des modules SIM7600E-H
  3. Laisser les composants nécessaires inchangés
    OpenLinux dans le cadre des modules SIM7600E-H
  4. Laisser tel quel
    OpenLinux dans le cadre des modules SIM7600E-H
  5. Quelques fois «Suivant», «Installer» et c'est tout
    OpenLinux dans le cadre des modules SIM7600E-H

Installation de Cygwin

Ensuite, pour le développement, vous aurez besoin d'un ensemble de bibliothèques et d'outils fournis par Cygwin. C'est simple, la version actuelle de Cygwin peut être téléchargée gratuitement sur le site officiel du projet, au moment de la rédaction de cet article, la version 3.1.5 était disponible, c'est celle que nous avons utilisée pour la préparation du matériel.

L'installation de Cygwin n'est pas compliquée, la seule chose que vous devrez choisir est le miroir à partir duquel l'installateur téléchargera les fichiers nécessaires, choisissez-en un et installez, ainsi que l'ensemble des outils et bibliothèques, laissez toutes les bibliothèques et outils disponibles sélectionnés.

Installation des pilotes

Après que le module soit connecté au PC, il sera nécessaire d'installer les pilotes. Vous pouvez les demander à votre distributeur (recommandé). Je ne recommande pas de chercher sur Internet par vous-même, car cela peut prendre beaucoup de temps pour trouver ce qui a causé un conflit d'appareils.

OpenLinux dans le cadre des modules SIM7600E-H

Parmi les ports dédiés, nous voyons les suivants :

Windows
Linux
Description

SimTech HS-USB Diagnostics
USB Serial
Diagnostic Interface

SimTech HS-USB NMEA
USB Serial
Interface GPS NMEA

SimTech HS-USB AT Port
USB Serial
Interface port AT

SimTech HS-USB Modem
USB Serial
Interface port Modem

SimTech HS-USB Audio
USB Serial
Interface audio USB

SimTech HS-USB WWAN Adapter
Net USB
Interface NDIS wwan

Interface ADB composite Android
USB ADB
Ajouter un port de débogage Android

Comme vous l'avez sûrement remarqué, parmi les ports dans la capture d'écran, il n'y a pas d'USB ADB, c'est parce que le port ADB dans le module est fermé par défaut et doit être activé en envoyant la commande ‘AT+CUSBADB=1’ dans le port AT du module et le redémarrer (cela peut être fait avec la commande ‘AT+CRESET’).

Nous obtiendrons ainsi l'interface requise dans le gestionnaire de périphériques :

OpenLinux dans le cadre des modules SIM7600E-H

Nous avons terminé avec les pilotes, passons à ADB.

Installation de l'ADB

Accédez au site officiel des développeurs Android sur le lien. Ne téléchargeons pas le volumineux Android Studio, une simple ligne de commande disponible pour téléchargement via le lien «Télécharger les outils de plate-forme SDK pour Windows» suffira.

OpenLinux dans le cadre des modules SIM7600E-H

Téléchargez et extrayez l'archive obtenue à la racine du disque C.

Variables d'environnement

Après l'installation de Cygwin, il sera nécessaire d'ajouter le chemin Cygwin/bin/ dans les variables d'environnement de développement (Panneau de configuration classique → Système → Paramètres système avancés → Avancé → Variables d'environnement → Variables système → Path → Modifier) comme indiqué sur la capture d'écran ci-dessous :

OpenLinux dans le cadre des modules SIM7600E-H

De la même manière, ajoutons le chemin de l'archive ADB téléchargée et décompressée à la racine du disque C.

OpenLinux dans le cadre des modules SIM7600E-H

Cliquez plusieurs fois sur OK et redémarrez l'ordinateur.

Après le redémarrage, vous pouvez facilement vérifier si ADB fonctionne correctement en ouvrant l'invite de commandes (Win+R → cmd) et en tapant la commande 'adb version'. Vous obtiendrez un résultat semblable à celui-ci :

OpenLinux dans le cadre des modules SIM7600E-H

Connectez le module au PC (s'il a été déconnecté) et vérifiez si ADB le détecte avec la commande 'adb devices' :

OpenLinux dans le cadre des modules SIM7600E-H

C'est fait, la configuration de la connexion au module est terminée et nous pouvons lancer le shell pour travailler avec le module.

OpenLinux dans le cadre des modules SIM7600E-H

Décompression et compilation du SDK

Après avoir accédé au shell et pu commencer à travailler avec l'invite de commandes du module, essayons de compiler notre première application pour l'envoyer au module.

Cela peut poser des problèmes à beaucoup ! Étant donné que le module fonctionne sous un système d'exploitation Linux, pour éviter les conflits lors de la compilation du code sous Windows, il est préférable de compiler dans un environnement natif - Linux.

Nous ne nous attarderons pas sur la façon d'installer Linux dans un environnement virtuel si vous ne souhaitez pas l'installer sur votre machine. Nous allons utiliser VirtualBox, installer Ubuntu version 20.04 (la version actuelle au moment de la rédaction de l'article) et c'est sous cette version que nous commencerons à travailler avec les compilateurs, le SDK, etc.

Passons à l'environnement Linux et décompressons l'archive obtenue du distributeur.

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

Allons dans le répertoire sim_open_sdk et ajoutons l'environnement :

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 

Restez dans ce même dossier et exécutez les commandes suivantes en étant dans celui-ci.
Installez la bibliothèque libncurses5-dev si elle n'est pas déjà installée :

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y

Python, s'il n'est pas également installé :

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

et gcc :

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

Compilation :

Nous devrons maintenant compiler plusieurs fichiers, exécutons successivement les commandes suivantes.

Si une fenêtre de configuration du noyau apparaît lors de la compilation, il suffit de choisir Sortir et de revenir à la console, nous n'avons pas besoin de configurer le noyau pour l'instant.

Exécutons :

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

Nous compilons le bootloader :

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

Nous compilons le noyau :

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

Nous compilons le système de fichiers racine :

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

Pour les utilisateurs Linux, il sera essentiel de compiler le module du pilote :

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

Nous allons compiler une démo :

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

Après cela, plusieurs nouveaux fichiers apparaîtront dans le répertoire sim_open_sdk/output :

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn  boot.img  demo_app  helloworld  system.img

Démo

Essayons de charger la démonstration dans notre module et voyons ce que cela donne.

Chargement

Dans le répertoire sim_open_sdk, nous pouvons voir le fichier demo_app. Prenons-le et déplaçons-le à la racine du disque C sur le PC auquel le module est connecté. Ensuite, nous lançons l'invite de commandes Windows (Win+R -> cmd) et entrons :

C:>adb push C:demo_app /data/

La console nous informe :

C:demo_app: 1 fichier envoyé, 0 ignorés. 151,4 Mo/s (838900 octets en 0,005s)

Cela signifie que le fichier a été envoyé avec succès au module et il ne nous reste plus qu'à le lancer. Ne perdons pas de temps.

Exécutons :

C:>adb shell

Élargissons les droits du fichier téléchargé :

/ # cdhmod 777 /data/demo_app

Et lançons-le :

/ # /data/demo_app

Dans cette même console, le module nous informera de ce qui suit :

SDK_VER : SIM_SDK_VER_20191205
DEMO_VER: SIM_SDK_VER_20191205

Veuillez sélectionner une option à tester parmi les éléments listés ci-dessous.

1. WIFI                       2. APPEL VOCALE
3. APPEL DE DONNÉES          4. SMS
5. WDS(APN)                  6. NAS
7. AT                        8. OTA
9. TTS                       10. GPIO
11. GPS                      12. Bluetooth
13. TCP/UDP                  14. Minuteur
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. SORTIR
Option >   

Voyons l'IMEI du module, entrons 7 (passage en mode commande) et ensuite entrons 5 :

Veuillez sélectionner une option à tester parmi les éléments listés ci-dessous.

1. WIFI                       2. APPEL VOCALE
3. APPEL DE DONNÉES          4. SMS
5. WDS(APN)                  6. NAS
7. AT                         8. OTA
9. TTS                        10. GPIO
11. GPS                       12. Bluetooth
13. TCP/UDP                   14. Minuteur
15. ADC                       16. I2C
17. UIM(Carte SIM)           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. QUITTER
Option > 7

Veuillez sélectionner une option à tester parmi les éléments listés ci-dessous.

1. obtenir la Version du Module  2. obtenir CSQ
3. obtenir CREG                  4. obtenir ICCID
5. obtenir IMEI                  6. obtenir CIMI
99. retour
Option > 5
IMEI : 867584030090489

Veuillez sélectionner une option à tester parmi les éléments listés ci-dessous.

1. obtenir la Version du Module  2. obtenir CSQ
3. obtenir CREG                  4. obtenir ICCID
5. obtenir IMEI                  6. obtenir CIMI
99. retour
Option >

Nous verrons ainsi l'IMEI du module.

En conclusion

J'espère que nous avons réussi à dresser un aperçu général de la façon de commencer à travailler avec le module. Dans les prochains articles, nous examinerons plus en détail les fonctionnalités offertes par la plateforme SIM7600E-H, ainsi que la manière de mettre à jour à distance sa propre application dans le module.

Je vous invite à poser des questions dans les commentaires et à indiquer quel aspect des fonctionnalités du module devrait être abordé dans les prochains articles.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster