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