
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. 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 , 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 :

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)
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 :
- GNU/Linux
- Cygwin
- Pilotes
- 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 .
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.
- Accepter le contrat de licence

- Indiquer le dossier d'installation

- Laisser les composants nécessaires inchangés

- Laisser tel quel

- Quelques fois «Suivant», «Installer» et c'est tout

Installation de Cygwin
Ensuite, pour le développement, vous aurez besoin d'un ensemble de bibliothèques et d'outils fournis par . 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.

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 :

Nous avons terminé avec les pilotes, passons à ADB.
Installation de l'ADB
Accédez au site officiel des développeurs Android sur . 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.

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 :

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.

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 :

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

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

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 -yPython, s'il n'est pas également installé :
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -yet gcc :
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gccCompilation :
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$ makeNous compilons le bootloader :
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make abootNous 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 rootfsPour les utilisateurs Linux, il sera essentiel de compiler le module du pilote :
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_moduleNous allons compiler une démo :
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demoAprè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_appEt lançons-le :
/ # /data/demo_appDans 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





