OpenLinux come parte dei moduli SIM7600E-H

OpenLinux come parte dei moduli SIM7600E-H

Il meccanismo per sviluppare un'applicazione personalizzata e caricarla nel modulo è disponibile sia con il sistema operativo Linux che con quello Windows. In questo articolo esamineremo in dettaglio come, utilizzando gli esempi dell'SDK fornito Soluzioni wireless SIMCom compilare e caricare un'applicazione personalizzata in un modulo.

Prima di scrivere l'articolo, uno dei miei conoscenti, lungi dallo sviluppo per Linux, mi ha chiesto di affrontare la questione descrivendo il processo di sviluppo della mia applicazione per il modulo SIM7600E-H nel modo più dettagliato possibile. Il criterio per valutare l'accessibilità della presentazione del materiale era la frase "in modo che io capisca".

Ti invito a fare conoscenza con quello che è successo.

L'articolo viene regolarmente integrato e aggiornato

preludio

Tipicamente, i moduli di comunicazione cellulare vengono utilizzati solo per la trasmissione di dati, chiamate vocali, trasmissione di SMS e simili. Tutto ciò avviene tramite comandi AT inviati da un microcontrollore di controllo esterno. Ma esiste una categoria di moduli che consentono di eseguire codice personalizzato caricato dall'esterno. In alcuni casi, ciò riduce significativamente il budget complessivo del dispositivo, consentendo di installare sulla scheda un microcontrollore più semplice (e altrettanto economico) o di abbandonarlo del tutto. Con l'avvento dei moduli LTE controllati dal sistema operativo Android o Linux e delle loro potenti risorse, è possibile risolvere qualsiasi compito disponibile per i processori più diffusi. Questo articolo parlerà del SIM7600E-H, controllato dal sistema operativo Linux. Vedremo come scaricare ed eseguire un'applicazione eseguibile.

In molti modi, il materiale si basa sul documento "SIM7600 Open Linux Development Quide", ma alcune aggiunte e, prima di tutto, la versione russa saranno utili. L'articolo aiuterà coloro che stanno appena iniziando a padroneggiare il modulo a capire come scaricare l'applicazione demo e fornire le competenze necessarie per il lavoro successivo.

Brevemente su chi è SIM7600E-H

SIM7600E-H è un modulo costruito sul processore ARM Cortex-A7 1.3GHz di Qualcomm, con al suo interno il sistema operativo Linux (kernel 3.18.20), in grado di funzionare con le bande di frequenza europee (inclusa quella russa) 2G/3G/ LTE che supportano Cat .4, fornendo velocità massime di download fino a 150 Mbps e velocità di upload fino a 50 Mbps. Le ricche periferiche, un intervallo di temperatura industriale e la presenza della navigazione GPS/GLONASS integrata coprono tutti i requisiti per una moderna soluzione modulare nel campo M2M.

Panoramica del sistema

Il modulo SIM7600E-H è basato sul sistema operativo Linux (kernel 3.18.20). A sua volta, il file system è costruito sulla base del file system journaled UBIFS (Unsorted Block Image File System).

Le caratteristiche importanti di questo file system includono:

  • funziona con le partizioni, ti consente di creare, eliminare o modificarne le dimensioni;
  • garantisce l'allineamento della registrazione sull'intero volume multimediale;
  • funziona con blocchi danneggiati;
  • riduce al minimo la probabilità di perdita di dati durante un'interruzione di corrente o altri guasti;
  • tenere i registri.

Descrizione presa quindi, c'è anche una descrizione più dettagliata di tale file system.

Quelli. Questo tipo di file system è ideale per condizioni operative difficili del modulo e possibili problemi di alimentazione. Ma ciò non significa che condizioni di alimentazione instabili saranno la modalità di funzionamento prevista del modulo; indica solo la maggiore vitalità del dispositivo.

Память

La distribuzione delle aree di memoria è strutturata come segue:

OpenLinux come parte dei moduli SIM7600E-H

Ci sono tre aree principali da evidenziare:

ubi0:rootfs – di sola lettura e contiene il kernel Linux stesso
ubi0:usrfs – utilizzato principalmente per il programma utente e la memorizzazione dei dati
ubi0:cahcefs – riservato agli aggiornamenti FOTA. Se lo spazio disponibile non è sufficiente per scaricare l'aggiornamento, il sistema eliminerà i file non utilizzati liberando così spazio. Ma per motivi di sicurezza, non dovresti posizionare i tuoi file lì.

Tutte e tre le sezioni sono distribuite come segue:

filesystem
Taglia
Usato
Disponibile
Utilizzo%
Montato su

ubi0:rootfs
40.7M
36.2M
4.4M
89%
/

ubi0:usrfs
10.5M
360K
10.1M
3%
/dati

ubi0:cachef
50.3M
20K
47.7M
0%
/ cache

Funzionalità disponibili

Come accennato in precedenza, il modulo è costruito sul chipset Cortex A7 di Qualcomm. Sarebbe sbagliato non fornire un core così performante per elaborare il programma utente e scaricare il processore principale del dispositivo scaricando parte del programma sul modulo.

Per il programma utente avremo a disposizione le seguenti modalità operative delle periferiche:

Pin No.
Nome
Sistema GPIO n.
Azione predefinita
Funz1
Funz2
Tirare
Interruzione della sveglia

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
-
Scheda SD
-
-
B-PD
-

22
SD_DATA0
-
Scheda SD
-
-
B-PD
-

23
SD_DATA1
-
Scheda SD
-
-
B-PD
-

24
SD_DATA2
-
Scheda SD
-
-
B-PD
-

25
SD_DATA3
-
Scheda SD
-
-
B-PD
-

26
SD_CLK
-
Scheda 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_IT
GPIO
MIFI_POWER_IT
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
Stato dei servizi
GPIO
Stato dei servizi
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
-

D'accordo, l'elenco è impressionante e nota: parte delle periferiche viene utilizzata per far funzionare il modulo come router. Quelli. Sulla base di tale modulo, puoi creare un piccolo router che distribuirà Internet tramite Wi-Fi. A proposito, esiste una soluzione già pronta chiamata SIM7600E-H-MIFI ed è una scheda miniPCIE con un modulo SIM7600E-H saldato e diversi pin dell'antenna, uno dei quali è un'antenna Wi-Fi. Tuttavia, questo è un argomento per un articolo separato.

Mercoledì (non un giorno della settimana)

Soluzioni wireless SIMCom offrire l'opportunità agli sviluppatori di scegliere l'ambiente di sviluppo più familiare per Linux o Windows. Se stiamo parlando di un'applicazione eseguibile su un modulo, è meglio scegliere Windows, sarà più veloce e più semplice. Se si prevede un'architettura applicativa complessa e successivi aggiornamenti è meglio utilizzare Linux. Abbiamo bisogno anche di Linux per compilare i file eseguibili da caricare successivamente nel modulo; per la compilazione è sufficiente una macchina virtuale.

Ciò di cui hai bisogno non è disponibile gratuitamente per il download: un SDK, che puoi richiedere al tuo distributore.

Installazione di utilità per lavorare con il modulo

D'ora in poi lavoreremo con Windows, il sistema operativo più familiare alla maggior parte degli utenti.

Dovremo installare il software necessario in pochi semplici passaggi per padroneggiare successivamente il funzionamento del modulo:

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

Installazione di GNU/Linux

Per creare l'applicazione, puoi utilizzare qualsiasi compilatore compatibile ARM-Linux. Utilizzeremo SourceryCodeBenchLiteARM GNU/Linuxtranslater disponibile per il download all'indirizzo collegamento.

Per garantire che tutti i componenti siano installati correttamente, lascerò alcuni screenshot del processo di installazione. In linea di principio, non c'è nulla di complicato nell'installazione.

Per garantire che tutti i componenti siano installati correttamente, lascerò alcuni screenshot del processo di installazione. In linea di principio, non c'è nulla di complicato nell'installazione.

  1. Accettiamo il contratto di licenza
    OpenLinux come parte dei moduli SIM7600E-H
  2. Specificare la cartella di installazione
    OpenLinux come parte dei moduli SIM7600E-H
  3. Lasciamo invariati i componenti necessari
    OpenLinux come parte dei moduli SIM7600E-H
  4. Lascialo così com'è
    OpenLinux come parte dei moduli SIM7600E-H
  5. Più volte “Avanti”, “Installa” e praticamente è tutto
    OpenLinux come parte dei moduli SIM7600E-H

Installazione di Cygwin

Inoltre, per lo sviluppo, avrai bisogno di una serie di librerie e utilità dal set fornito Cygwin. Qui tutto è semplice, l'attuale versione di Cygwin può essere scaricata gratuitamente dal sito ufficiale del progetto, al momento in cui scriviamo era disponibile la versione 3.1.5, che è quella che abbiamo utilizzato durante la preparazione del materiale.

Non c'è niente di complicato nell'installazione di Cygwin, l'unica cosa che devi selezionare è un mirror da cui il programma di installazione scaricherà i file necessari, ne selezionerà uno qualsiasi e lo installerà, così come una serie di utilità e librerie, lasciando tutte le librerie disponibili e utenze selezionate.

Installazione dei driver

Dopo aver collegato il modulo al PC, sarà necessario installare i driver. Questi possono essere richiesti al proprio distributore (consigliato). Non consiglio di cercare in Internet da solo, perché... Potrebbe essere necessario molto tempo per individuare la causa del conflitto del dispositivo.

OpenLinux come parte dei moduli SIM7600E-H

Tra le porte selezionate vediamo quanto segue:

Windows
Linux
descrizione

Diagnostica SimTech HS-USB
Seriale USB
Interfaccia diagnostica

SimTech HS-USB NMEA
Seriale USB
Interfaccia NMEA GPS

Porta AT SimTech HS-USB
Seriale USB
Interfaccia porta AT

Modem SimTech HS-USB
Seriale USB
Interfaccia porta modem

Audio SimTech HS-USB
Seriale USB
Interfaccia audio USB

Adattatore WWAN SimTech HS-USB
Rete USB
Interfaccia WWAN NDIS

Interfaccia ADB Composite Android
USB-ADB
Android aggiunge la porta di debug

Come probabilmente avrai notato, non c'è USB ADB tra le porte nello screenshot, questo perché la porta ADB nel modulo è chiusa per impostazione predefinita ed è necessario abilitarla inviando il comando 'AT+CUSBADB=1' all'AT porta del modulo e riavviarlo (questo può essere fatto con il comando 'AT+CRESET').

Di conseguenza, otteniamo l'interfaccia desiderata in Gestione dispositivi:

OpenLinux come parte dei moduli SIM7600E-H

Abbiamo finito con i driver, passiamo ad ADB.

Installazione di ADB

Vai al sito web ufficiale degli sviluppatori Android collegamento. Non scaricheremo l'ingombrante Android Studio; ci servirà solo la riga di comando, disponibile per il download tramite il link "Scarica SDK Platform-Tools per Windows".

OpenLinux come parte dei moduli SIM7600E-H

Scarica e decomprimi l'archivio risultante nella radice dell'unità C.

variabili ambientali

Dopo aver installato Cygwin, dovrai aggiungere il percorso Cygwin/bin/ alle variabili dell'ambiente di sviluppo (Pannello di controllo classico → Sistema → Impostazioni di sistema avanzate → Avanzate → Variabili d'ambiente → Variabili di sistema → Percorso → Modifica) come mostrato nello screenshot qui sotto:

OpenLinux come parte dei moduli SIM7600E-H

Allo stesso modo, aggiungi il percorso dell'archivio ADB scaricato e decompresso alla radice dell'unità C.

OpenLinux come parte dei moduli SIM7600E-H

Fare clic più volte su OK e riavviare il computer.

Dopo il riavvio, puoi facilmente verificare se ADB funziona correttamente aprendo la riga di comando (Win+R → cmd) e digitando il comando 'adb version'. Otteniamo qualcosa del genere:

OpenLinux come parte dei moduli SIM7600E-H

Colleghiamo il modulo al PC (se per caso era disconnesso) e controlliamo se ADB lo vede con il comando 'adb devices':

OpenLinux come parte dei moduli SIM7600E-H

Fatto, questo completa la configurazione della connessione al modulo e possiamo lanciare la shell per lavorare con il modulo.

OpenLinux come parte dei moduli SIM7600E-H

Disimballaggio e compilazione dell'SDK

Ora che abbiamo accesso alla shell e possiamo iniziare a lavorare con la riga di comando del modulo, proviamo a compilare la nostra prima applicazione da caricare nel modulo.

Molte persone potrebbero avere difficoltà con questo! Perché Il modulo funziona sul sistema operativo Linux; per evitare collisioni durante la compilazione del codice sotto Windows, è meglio compilare nell'ambiente nativo: Linux.

Non ci soffermeremo nel dettaglio su come, in assenza di Linux e della voglia di installarlo sulla propria macchina, sia possibile installarlo su una macchina virtuale. Utilizzeremo VirtualBox, installeremo Ubuntu versione 20.04 (la versione attuale al momento in cui scriviamo) e con essa inizieremo a lavorare con compilatori, SDK, ecc.

Andiamo nell'ambiente Linux e decomprimiamo l'archivio ricevuto dal distributore.

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

Vai alla directory sim_open_sdk e aggiungi l'ambiente:

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 

Rimaniamo nella stessa cartella ed eseguiamo i comandi successivi mentre ci troviamo.
Installa la libreria libncurses5-dev se non è stata installata:

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

Python, se non è stato installato neanche questo:

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

e gcc:

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

Compilazione:

Ora dobbiamo compilare diversi file, eseguiamo i seguenti comandi in sequenza.

Se durante la compilazione viene visualizzata la finestra di configurazione del kernel, basta selezionare Esci e tornare alla console; non è necessario configurare il kernel ora.

Noi facciamo:

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

Compilazione del bootloader:

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

Compilazione del kernel:

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

Compila il file system root:

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

Per gli utenti Linux sarà rilevante compilare il driver del modulo:

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

Compiliamo la demo:

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

Dopodiché appariranno diversi nuovi file nella directory sim_open_sdk/output:

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

Demo

Proviamo a caricare la demo nel nostro modulo e vediamo cosa ne viene fuori.

Scarica

Nella directory sim_open_sdk possiamo vedere il file demo_app. Lo prendiamo e lo trasferiamo nella root dell'unità C del PC a cui è collegato il modulo. Quindi avvia la riga di comando di Windows (Win+R -> cmd) e inserisci:

C:>adb push C:demo_app /data/

La console ci dirà:

C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)

Ciò significa che il file è stato inviato con successo al modulo e tutto ciò che dobbiamo fare è eseguirlo. Non esitiamo.

Noi facciamo:

C:>adb shell

Espandiamo i diritti del file scaricato:

/ # cdhmod 777 /data/demo_app

E corriamo:

/ # /data/demo_app

Nella stessa console, il modulo ci dirà quanto segue:

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 >   

Diamo un'occhiata all'IMEI del modulo, inseriamo 7 (passa alla modalità comando) e poi inseriamo 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 >

In questo modo vedremo l'IMEI del modulo.

In conclusione

Spero che siamo riusciti a farci un'idea generale di come iniziare con il modulo. Nei seguenti articoli, daremo uno sguardo più da vicino alle funzionalità fornite dalla piattaforma SIM7600E-H, nonché al modo in cui è possibile aggiornare in remoto la propria applicazione nel modulo.

Ti invito a porre domande nei commenti e a indicare anche quale aspetto delle capacità del modulo dovrebbe riflettersi negli articoli successivi.

Fonte: habr.com

Aggiungi un commento