OpenLinux dans le cadre des modules SIM7600E-H

OpenLinux dans le cadre des modules SIM7600E-H

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 Solutions sans fil SIMCom compiler et charger une application personnalisée dans un module.

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 par conséquent,, il existe également une description plus détaillée d'un tel système de fichiers.

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 :

OpenLinux dans le cadre des modules SIM7600E-H

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)

Solutions sans fil SIMCom offrent aux développeurs la possibilité de choisir l'environnement de développement le plus familier pour Linux ou Windows. Si nous parlons d'une application exécutable sur un module, alors il vaut mieux choisir Windows, ce sera plus rapide et plus simple. Si une architecture d'application complexe et des mises à niveau ultérieures sont attendues, il est préférable d'utiliser Linux. Nous avons également besoin de Linux pour compiler les fichiers exécutables pour un chargement ultérieur dans le module ; une machine virtuelle suffit pour la compilation.

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 :

  1. GNU / Linux
  2. Cygwin
  3. conducteur
  4. 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 lien.

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.

  1. Nous acceptons le contrat de licence
    OpenLinux dans le cadre des modules SIM7600E-H
  2. Spécifiez le dossier d'installation
    OpenLinux dans le cadre des modules SIM7600E-H
  3. Nous laissons les composants nécessaires inchangés
    OpenLinux dans le cadre des modules SIM7600E-H
  4. Laissez-le tel quel
    OpenLinux dans le cadre des modules SIM7600E-H
  5. Plusieurs fois « Suivant », « Installer » et en gros c'est tout
    OpenLinux dans le cadre des modules SIM7600E-H

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. Cygwin. Tout est simple ici, 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 ce que nous avons utilisé lors de la préparation du matériel.

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.

OpenLinux dans le cadre des modules SIM7600E-H

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 :

OpenLinux dans le cadre des modules SIM7600E-H

Nous en avons fini avec les pilotes, passons à ADB.

Installation de la BAD

Accédez au site Web officiel des développeurs Android lien. Nous ne téléchargerons pas le volumineux Android Studio ; nous avons juste besoin de la ligne de commande, disponible en téléchargement via le lien « Télécharger SDK Platform-Tools for Windows ».

OpenLinux dans le cadre des modules SIM7600E-H

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 :

OpenLinux dans le cadre des modules SIM7600E-H

De même, ajoutez le chemin de l'archive ADB téléchargée et décompressée à la racine du lecteur 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 la ligne de commande (Win+R → cmd) et en tapant la commande « version adb ». Nous obtenons quelque chose comme ceci :

OpenLinux dans le cadre des modules SIM7600E-H

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' :

OpenLinux dans le cadre des modules SIM7600E-H

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

OpenLinux dans le cadre des modules SIM7600E-H

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

Ajouter un commentaire