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
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
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:
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)
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:
- GNU / Linux
- Cygwin
- autista
- 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
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.
- Accettiamo il contratto di licenza
- Specificare la cartella di installazione
- Lasciamo invariati i componenti necessari
- Lascialo così com'è
- Più volte “Avanti”, “Installa” e praticamente è tutto
Installazione di Cygwin
Inoltre, per lo sviluppo, avrai bisogno di una serie di librerie e utilità dal set fornito
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.
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:
Abbiamo finito con i driver, passiamo ad ADB.
Installazione di ADB
Vai al sito web ufficiale degli sviluppatori Android
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:
Allo stesso modo, aggiungi il percorso dell'archivio ADB scaricato e decompresso alla radice dell'unità C.
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:
Colleghiamo il modulo al PC (se per caso era disconnesso) e controlliamo se ADB lo vede con il comando 'adb devices':
Fatto, questo completa la configurazione della connessione al modulo e possiamo lanciare la shell per lavorare con il modulo.
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