Le mécanisme permettant de développer une application personnalisée et de la charger dans le module est disponible sous les systèmes d'exploitation Linux et Windows. Dans cet article, nous examinerons en détail comment, à l'aide d'exemples du SDK fourni
Avant d'écrire l'article, une de mes connaissances, loin de développer pour Linux, m'a demandé d'aborder la question de la description du processus de développement de ma propre application pour le module SIM7600E-H de la manière la plus détaillée possible. Le critère d'évaluation de l'accessibilité de la présentation du matériel était la phrase « pour que je comprenne ».
Je vous invite à vous familiariser avec ce qui s'est passé.
L'article est régulièrement complété et mis à jour
Prélude
En règle générale, les modules de communication cellulaire sont utilisés uniquement pour la transmission de données, les appels vocaux, la transmission de SMS, etc. Tout cela se fait via des commandes AT envoyées depuis un microcontrôleur de contrôle externe. Mais il existe une catégorie de modules qui vous 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, vous permettant d'installer un microcontrôleur plus simple (et tout aussi économique) sur la carte ou de l'abandonner complètement. Avec l'avènement des modules LTE contrôlés par le système d'exploitation Android ou Linux et leurs puissantes ressources, il est possible de résoudre toutes les tâches disponibles pour les processeurs populaires. Cet article parlera du SIM7600E-H, contrôlé par le système d'exploitation Linux. Nous verrons comment télécharger et exécuter une application exécutable.
À bien des égards, le matériel est basé sur le document « Guide de développement SIM7600 Open Linux », mais quelques ajouts et, tout d'abord, la version russe seront utiles. L'article aidera ceux qui commencent tout juste à maîtriser le module à comprendre comment télécharger l'application de démonstration et à fournir les compétences nécessaires pour les travaux ultérieurs.
En bref sur qui est le SIM7600E-H
SIM7600E-H est un module construit sur le processeur ARM Cortex-A7 1.3 GHz de Qualcomm, contenant le système d'exploitation Linux (noyau 3.18.20), capable de fonctionner avec les bandes de fréquences européennes (y compris russes) 2G/3G/ LTE prenant en charge Cat .4, offrant des vitesses de téléchargement maximales allant jusqu'à 150 Mbps et des vitesses de téléchargement allant jusqu'à 50 Mbps. Des périphériques riches, une plage de température industrielle et la présence d'une navigation GPS/GLONASS intégrée couvrent toutes les exigences d'une solution modulaire moderne dans le domaine M2M.
Vue d'ensemble du système
Le module SIM7600E-H est basé sur le système d'exploitation Linux (noyau 3.18.20). À son tour, le système de fichiers est construit sur la base du système de fichiers journalisé UBIFS (Unsorted Block Image File System).
Les fonctionnalités importantes de ce système de fichiers incluent :
- fonctionne avec des partitions, vous permet de créer, supprimer ou modifier leur taille ;
- assure l'alignement de l'enregistrement sur l'ensemble du volume multimédia ;
- fonctionne avec les mauvais blocs ;
- minimise la probabilité de perte de données lors d'une panne de courant ou d'autres pannes ;
- tenir des journaux.
Description prise
Ceux. Ce type de système de fichiers est idéal pour les conditions de fonctionnement difficiles du module et les éventuels problèmes d'alimentation. Mais cela ne signifie pas que des conditions d'alimentation instables seront le mode de fonctionnement attendu du module, cela indique seulement la plus grande viabilité de l'appareil.
Mémoire
La répartition des zones mémoire est construite comme suit :
Il y a trois domaines principaux à souligner :
ubi0:rootfs – en lecture seule et contient le noyau Linux lui-même
ubi0:usrfs – utilisé principalement pour le programme utilisateur et le stockage de données
ubi0:cahcefs – réservé aux mises à jour FOTA. Si l'espace disponible n'est pas suffisant pour télécharger la mise à jour, le système supprimera les fichiers inutilisés et libérera ainsi de l'espace. Mais pour des raisons de sécurité, vous ne devez pas y placer vos fichiers.
Les trois sections sont réparties comme suit :
Système de fichiers
Taille
Occasion
Disponible
Utilisation%
Monté sur
ubi0:rootfs
40.7M
36.2M
4.4M
89%
/
ubi0:usrfs
10.5M
360K
10.1M
3%
/Les données
ubi0:cachefs
50.3M
20K
47.7M
0%
/ cache
Fonctionnalité disponible
Comme mentionné ci-dessus, le module est construit sur le chipset Cortex A7 de Qualcomm. Ce serait une erreur de ne pas fournir un cœur aussi performant pour traiter le programme utilisateur et décharger le processeur principal de l'appareil en déchargeant une partie du programme sur le module.
Pour le programme utilisateur, nous disposerons des modes de fonctionnement périphériques suivants :
Broche
Nom
N° GPIO système
Action par défaut
Func1
Func2
Pull
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_FR
GPIO
MIFI_POWER_FR
B-PU
-
34
GPIO6
GPIO_1023
MIFI_SLEEP_CLK
GPIO
MIFI_SLEEP_CLK
B-PD
-
46
CAN2
-
ADC
-
-
-
-
47
CAN1
-
ADC
-
-
B-PU
-
48
SD_DET
GPIO_26
GPIO
GPIO
SD_DET
B-PD
X
49
STATUT
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
TxJ
-
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
-
D'accord, la liste est impressionnante et attention : une partie des périphériques sert à faire fonctionner le module en routeur. Ceux. Sur la base d'un tel module, vous pouvez créer un petit routeur qui distribuera Internet via Wi-Fi. À propos, il existe une solution prête à l'emploi appelée SIM7600E-H-MIFI et il s'agit d'une carte miniPCIE avec un module SIM7600E-H soudé et plusieurs broches d'antenne, dont une antenne Wi-Fi. Cependant, il s'agit d'un sujet pour un article séparé.
Mercredi (pas un jour de la semaine)
Ce dont vous avez besoin n'est pas disponible gratuitement en téléchargement : un SDK, que vous pouvez demander à votre distributeur.
Installation des utilitaires pour travailler avec le module
Ci-après, nous travaillerons sous Windows comme système d'exploitation le plus familier à la plupart des utilisateurs.
Nous devrons installer le logiciel nécessaire en quelques étapes simples pour maîtriser ensuite le travail avec le module :
- GNU / Linux
- Cygwin
- conducteur
- BAD
Installer GNU/Linux
Pour créer l'application, vous pouvez utiliser n'importe quel compilateur compatible ARM-Linux. Nous utiliserons SourceryCodeBenchLiteARM GNU/Linuxtranslater disponible en téléchargement sur
Pour m'assurer que tous les composants sont installés correctement, je laisserai quelques captures d'écran du processus d'installation. En principe, il n'y a rien de compliqué à installer.
Pour m'assurer que tous les composants sont installés correctement, je laisserai quelques captures d'écran du processus d'installation. En principe, il n'y a rien de compliqué à installer.
- Nous acceptons le contrat de licence
- Spécifiez le dossier d'installation
- Nous laissons les composants nécessaires inchangés
- Laissez-le tel quel
- Plusieurs fois « Suivant », « Installer » et en gros c'est tout
Installation de Cygwin
De plus, pour le développement, vous aurez besoin d'un ensemble de bibliothèques et d'utilitaires parmi l'ensemble fourni.
Il n'y a rien de compliqué dans l'installation de Cygwin, la seule chose que vous devez sélectionner est un miroir à partir duquel le programme d'installation téléchargera les fichiers nécessaires, en sélectionnera un et l'installera, ainsi qu'un ensemble d'utilitaires et de bibliothèques, laissant toutes les bibliothèques disponibles et utilitaires sélectionnés.
Installation des pilotes
Une fois le module connecté au PC, vous devrez installer les pilotes. Ceux-ci peuvent être demandés auprès de votre distributeur (recommandé). Je ne recommande pas de chercher vous-même sur Internet, car... La recherche de la cause du conflit de périphériques peut prendre beaucoup de temps.
Parmi les ports sélectionnés, nous voyons les suivants :
Windows
Linux/Unix
description
Diagnostic SimTech HS-USB
Série USB
Interface de diagnostic
SimTech HS-USB NMEA
Série USB
Interface GPS NMEA
Port SimTech HS-USB AT
Série USB
À l'interface du port
Modem HS-USB SimTech
Série USB
Interface du port modem
SimTech HS-USB Audio
Série USB
Interface audio USB
Adaptateur WWAN SimTech HS-USB
Réseau USB
Interface WWAN NDIS
Interface ADB composite Android
BAD USB
Android ajoute un port de débogage
Comme vous l'avez probablement remarqué, il n'y a pas de ports USB ADB parmi les ports de la capture d'écran, car le port ADB du module est fermé par défaut et vous devez l'activer en envoyant la commande 'AT+CUSBADB=1' à l'AT. port du module et redémarrez-le (cela peut être fait avec la commande 'AT+CRESET').
En conséquence, nous obtenons l'interface souhaitée dans le gestionnaire de périphériques :
Nous en avons fini avec les pilotes, passons à ADB.
Installation de la BAD
Accédez au site Web officiel des développeurs Android
Téléchargez et décompressez l'archive résultante à la racine du lecteur C.
Variables d'environnement
Après avoir installé Cygwin, vous devrez ajouter le chemin Cygwin/bin/ aux 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 → Chemin → Modifier), comme indiqué dans la capture d'écran ci-dessous :
De même, ajoutez le chemin de l'archive ADB téléchargée et décompressée à la racine du lecteur 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 la ligne de commande (Win+R → cmd) et en tapant la commande « version adb ». Nous obtenons quelque chose comme ceci :
Connectons le module au PC (s'il se trouve qu'il a été déconnecté) et vérifions si ADB le voit avec la commande 'adb devices' :
C'est fait, ceci termine la configuration de la connexion au module et nous pouvons lancer le shell pour travailler avec le module.
Déballage et compilation du SDK
Maintenant que nous avons accès au shell et pouvons commencer à travailler avec la ligne de commande du module, essayons de compiler notre première application à charger dans le module.
Beaucoup de gens peuvent avoir des difficultés avec cela ! Parce que Le module fonctionne sur le système d'exploitation Linux ; pour éviter les collisions lors de la compilation du code sous Windows, il est préférable de compiler dans l'environnement natif - Linux.
Nous ne nous attarderons pas en détail sur comment, en l'absence de Linux et de la volonté de l'installer sur votre machine, vous pouvez l'installer sur une machine virtuelle. Nous utiliserons VirtualBox, installerons Ubuntu version 20.04 (la version actuelle au moment de la rédaction) et sous celle-ci nous commencerons à travailler avec des compilateurs, des SDK, etc.
Passons à l'environnement Linux et décompressons l'archive reçue du distributeur.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz
Accédez au répertoire sim_open_sdk et ajoutez 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
Nous restons dans le même dossier et exécutons les commandes suivantes pendant que nous y sommes.
Installez la bibliothèque libncurses5-dev si elle n'a pas été installée :
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y
Python, s'il n'a pas été installé non plus :
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:
Maintenant, nous devons compiler plusieurs fichiers, nous exécutons les commandes suivantes séquentiellement.
Si la fenêtre de configuration du noyau apparaît pendant la compilation, sélectionnez simplement Quitter et revenez à la console ; nous n'avons pas besoin de configurer le noyau maintenant.
Nous faisons:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make
Compilation du chargeur de démarrage :
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot
Compilation du noyau :
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
Compilez le système de fichiers racine :
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs
Pour les utilisateurs Linux il sera pertinent de compiler le driver du module :
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module
Compilons la démo :
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo
Après quoi 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émo dans notre module et voyons ce qui en ressort.
Télécharger
Dans le répertoire sim_open_sdk nous pouvons voir le fichier demo_app. Nous le prenons et le transférons à la racine du lecteur C du PC auquel le module est connecté. Lancez ensuite la ligne de commande Windows (Win+R -> cmd) et saisissez :
C:>adb push C:demo_app /data/
La console nous dira :
C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)
Cela signifie que le fichier a été envoyé avec succès au module et qu'il ne nous reste plus qu'à l'exécuter. N'hésitons pas.
Nous faisons:
C:>adb shell
Nous élargissons les droits du fichier téléchargé :
/ # cdhmod 777 /data/demo_app
Et nous courons :
/ # /data/demo_app
Dans la même console, le module nous dira ce qui suit :
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 >
Regardons l'IMEI du module, saisissons 7 (passage en mode commande) puis saisissons 5 :
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 >
De cette façon, nous verrons l'IMEI du module.
En conclusion
J'espère que nous avons pu avoir une idée générale de la façon de démarrer avec le module. Dans les articles suivants, nous examinerons de plus près les capacités offertes par la plate-forme SIM7600E-H, ainsi que la manière dont vous pouvez mettre à jour à distance votre propre application dans le module.
Je vous invite à poser des questions dans les commentaires, et également à indiquer quel aspect des capacités du module devrait être reflété dans les articles ultérieurs.
Source: habr.com