O mecanismo para desenvolver unha aplicación personalizada e cargala no módulo está dispoñible nos sistemas operativos Linux e Windows. Neste artigo imos dar unha ollada detallada a como, utilizando exemplos do SDK proporcionado
Antes de escribir o artigo, un dos meus coñecidos, lonxe de desenvolver para Linux, pediume que abordase o tema de describir o proceso de desenvolvemento da miña propia aplicación para o módulo SIM7600E-H co maior detalle posible. O criterio para avaliar a accesibilidade da presentación do material foi a frase “para que entenda”.
Convídovos a que coñezades o acontecido.
O artigo complétase e actualízase regularmente
Preludio
Normalmente, os módulos de comunicación móbil úsanse só para a transmisión de datos, chamadas de voz, transmisión de SMS e similares. Todo isto faise a través de comandos AT enviados desde un microcontrolador de control externo. Pero hai unha categoría de módulos que che permiten executar código personalizado cargado desde fóra. Nalgúns casos, isto reduce significativamente o orzamento global do dispositivo, o que lle permite instalar un microcontrolador máis sinxelo (e igualmente presuposto) na placa ou abandonalo por completo. Coa chegada dos módulos LTE controlados por Android ou Linux OS e os seus poderosos recursos, é posible resolver calquera tarefa que estea dispoñible para os procesadores populares. Neste artigo falarase de SIM7600E-H, controlado polo sistema operativo Linux. Veremos como descargar e executar unha aplicación executable.
En moitos sentidos, o material baséase no documento "SIM7600 Open Linux development quide", pero algúns engadidos e, en primeiro lugar, a versión rusa serán útiles. O artigo axudaralle aos que comezan a dominar o módulo a comprender como descargar a aplicación de demostración e proporcionar as habilidades necesarias para o traballo posterior.
Brevemente sobre quen é SIM7600E-H
SIM7600E-H é un módulo construído no procesador ARM Cortex-A7 a 1.3 GHz de Qualcomm, que ten o sistema operativo Linux (núcleo 3.18.20) no seu interior, capaz de traballar con bandas de frecuencia europeas (incluída a rusa) 2G/3G/LTE compatibles con Cat. .4, que ofrece velocidades de descarga máximas de ata 150 Mbps e velocidades de carga de ata 50 Mbps. Os ricos periféricos, un rango de temperatura industrial e a presenza de navegación GPS/GLONASS incorporada cobren todos os requisitos para unha solución modular moderna no campo M2M.
Visión xeral do sistema
O módulo SIM7600E-H está baseado no sistema operativo Linux (núcleo 3.18.20). Pola súa banda, o sistema de ficheiros constrúese sobre a base do sistema de ficheiros diarios UBIFS (Unsorted Block Image File System).
As características importantes deste sistema de ficheiros inclúen:
- funciona con particións, permítelle crear, eliminar ou cambiar o seu tamaño;
- garante o aliñamento da gravación en todo o volume multimedia;
- traballa con bloques malos;
- minimiza a probabilidade de perda de datos durante un corte de enerxía ou outros fallos;
- mantendo rexistros.
Descrición tomada
Eses. Este tipo de sistema de ficheiros é ideal para as duras condicións de funcionamento do módulo e posibles problemas de alimentación. Pero isto non significa que as condicións de enerxía inestables sexan o modo de funcionamento esperado do módulo; só indica a maior viabilidade do dispositivo.
memoria
A distribución das áreas de memoria constrúese do seguinte xeito:
Hai tres áreas principais a destacar:
ubi0:rootfs – só de lectura e contén o propio núcleo de Linux
ubi0:usrfs – utilízase principalmente para almacenamento de datos e programas de usuario
ubi0:cahcefs - reservado para actualizacións de FOTA. Se o espazo dispoñible non é suficiente para descargar a actualización, o sistema eliminará os ficheiros non utilizados e, polo tanto, liberará espazo. Pero por razóns de seguridade, non debes colocar alí os teus ficheiros.
Os tres apartados distribúense do seguinte xeito:
Sistema de ficheiros
tamaño
Usado
Dispoñíbel
% de uso
Montado sobre
ubi0:rootfs
40.7M
36.2M
4.4M
89%
/
ubi0:usrfs
10.5M
360K
10.1M
3%
/ datos
ubi0:cachefs
50.3M
20K
47.7M
0%
/ caché
Funcionalidade dispoñible
Como se mencionou anteriormente, o módulo está construído no chipset Cortex A7 de Qualcomm. Sería incorrecto non proporcionar un núcleo de tan alto rendemento para procesar o programa de usuario e descargar o procesador principal do dispositivo descargando algunha parte do programa ao módulo.
Para o programa de usuario, estarán dispoñibles os seguintes modos de funcionamento de periféricos:
Pin No.
nome
Sys GPIO No.
Acción predeterminada
Función 1
Función 2
Puxe
Interrupción do espertador
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
-
Tarxeta SD
-
-
B-PD
-
22
SD_DATA0
-
Tarxeta SD
-
-
B-PD
-
23
SD_DATA1
-
Tarxeta SD
-
-
B-PD
-
24
SD_DATA2
-
Tarxeta SD
-
-
B-PD
-
25
SD_DATA3
-
Tarxeta SD
-
-
B-PD
-
26
SD_CLK
-
Tarxeta 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
GPIO 3
GPIO_1020
MIFI_POWER_EN
GPIO
MIFI_POWER_EN
B-PU
-
34
GPIO 6
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
ESTADO
GPIO_52
Estado
GPIO
Estado
B-PD
X
50
GPIO 43
GPIO_36
MIFI_COEX
GPIO
MIFI_COEX
B-PD
-
52
GPIO 41
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
GPIO 77
GPIO 77
BT
GPIO
BT
B-PD
-
De acordo, a lista é impresionante e ten en conta: parte dos periféricos úsase para operar o módulo como enrutador. Eses. En base a tal módulo, podes facer un pequeno enrutador que distribúa Internet a través de Wi-Fi. Por certo, hai unha solución preparada chamada SIM7600E-H-MIFI e é unha tarxeta miniPCIE cun módulo SIM7600E-H soldado e varios pinos de antena, un deles é unha antena Wi-Fi. Non obstante, este é un tema para un artigo separado.
Mércores (non un día da semana)
O que necesitas non está dispoñible gratuitamente para descargar: un SDK, que podes solicitar ao teu distribuidor.
Instalación de utilidades para traballar co módulo
A continuación, traballaremos en Windows como o sistema operativo máis familiar para a maioría dos usuarios.
Teremos que instalar o software necesario nuns sinxelos pasos para dominar posteriormente o traballo co módulo:
- GNU / Linux
- Cygwin
- Controladores
- ADB
Instalación de GNU/Linux
Para crear a aplicación, pode usar calquera compilador compatible con ARM-Linux. Usaremos SourceryCodeBenchLiteARM GNU/Linuxtranslater dispoñible para descargar en
Para garantir que todos os compoñentes están instalados correctamente, deixarei algunhas capturas de pantalla do proceso de instalación. En principio, non hai nada complicado na instalación.
Para garantir que todos os compoñentes están instalados correctamente, deixarei algunhas capturas de pantalla do proceso de instalación. En principio, non hai nada complicado na instalación.
- Aceptamos o contrato de licenza
- Especifique o cartafol de instalación
- Deixamos os compoñentes necesarios sen cambios
- Déixao como está
- Varias veces "Seguinte", "Instalar" e basicamente iso é todo
Instalación de Cygwin
Ademais, para o desenvolvemento, necesitará un conxunto de bibliotecas e utilidades do conxunto proporcionado
Non hai nada complicado na instalación de Cygwin, o único que cómpre seleccionar é un espello do que o instalador descargará os ficheiros necesarios, seleccionará calquera e instalalo, así como un conxunto de utilidades e bibliotecas, deixando todas as bibliotecas dispoñibles e utilidades seleccionadas.
instalación de controladores
Despois de conectar o módulo ao PC, terás que instalar controladores. Estes pódense solicitar ao seu distribuidor (recomendado). Non recomendo buscar en Internet por conta propia, porque... Pode levar moito tempo atopar o que provocou o conflito do dispositivo.
Entre os portos seleccionados vemos os seguintes:
Windows
Linux
Descrición
Diagnóstico SimTech HS-USB
Serie USB
Interface de diagnóstico
SimTech HS-USB NMEA
Serie USB
Interfaz GPS NMEA
Porto SimTech HS-USB AT
Serie USB
Interface de porto AT
Módem SimTech HS-USB
Serie USB
Interface de porto de módem
Audio SimTech HS-USB
Serie USB
Interface de audio USB
Adaptador SimTech HS-USB WWAN
Rede USB
Interfaz NDIS WWAN
Interfaz ADB composta de Android
USB ADB
Android engadir porto de depuración
Como probablemente notaches, non hai ningún ADB USB entre os portos da captura de pantalla, porque o porto ADB do módulo está pechado por defecto e cómpre activalo enviando o comando 'AT+CUSBADB=1' ao AT. porto do módulo e reinicialo (pode facerse co comando 'AT+CRESET').
Como resultado, obtemos a interface desexada no xestor de dispositivos:
Rematamos cos condutores, imos a ADB.
Instalación de ADB
Vaia ao sitio web oficial do programador de Android
Descarga e descomprime o arquivo resultante na raíz da unidade C.
Variables de ambiente
Despois de instalar Cygwin, terás que engadir a ruta Cygwin/bin/ ás variables do entorno de desenvolvemento (Panel de control clásico → Sistema → Configuración avanzada do sistema → Avanzado → Variables de ambiente → Variables do sistema → Ruta → Editar) como se mostra na seguinte captura de pantalla:
Do mesmo xeito, engade o camiño ao arquivo ADB descargado e desempaquetado á raíz da unidade C.
Fai clic en Aceptar varias veces e reinicia o ordenador.
Despois de reiniciar, pode comprobar facilmente se ADB funciona correctamente abrindo a liña de comandos (Win+R → cmd) e escribindo o comando "versión adb". Temos algo así:
Conectemos o módulo ao PC (se ocorreu que estaba desconectado) e comprobemos se ADB o ve co comando 'adb devices':
Feito, completa a configuración da conexión co módulo e podemos lanzar o shell para traballar co módulo.
Descomprimir e compilar o SDK
Agora que temos acceso ao shell e podemos comezar a traballar coa liña de comandos do módulo, intentemos compilar a nosa primeira aplicación para cargala no módulo.
Moita xente pode ter dificultades con isto! Porque O módulo execútase no sistema operativo Linux; para evitar colisións ao compilar código en Windows, é mellor compilalo no entorno nativo - Linux.
Non nos deteremos en detalle sobre como, ante a ausencia de Linux e o desexo de instalalo na túa máquina, podes instalalo nunha máquina virtual. Usaremos VirtualBox, instalaremos a versión de Ubuntu 20.04 (a versión actual no momento de escribir este artigo) e baixo ela comezaremos a traballar con compiladores, SDK, etc.
Imos ao entorno Linux e desempaquetemos o arquivo recibido do distribuidor.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz
Vaia ao directorio sim_open_sdk e engade o 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
Permanecemos no mesmo cartafol e executamos comandos posteriores mentres esteamos nel.
Instala a biblioteca libncurses5-dev se non se instalou:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y
Python, se tampouco se instalou:
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
Compilación:
Agora necesitamos compilar varios ficheiros, executamos os seguintes comandos secuencialmente.
Se a xanela de configuración do núcleo aparece durante a compilación, só tes que seleccionar Saír e volver á consola; non necesitamos configurar o núcleo agora.
Facemos:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make
Compilar o cargador de arranque:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot
Compilación do núcleo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
Compile o sistema de ficheiros raíz:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs
Para os usuarios de Linux será relevante compilar o controlador do módulo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module
Imos compilar a demo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo
Despois diso, aparecerán varios ficheiros novos no directorio sim_open_sdk/output:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn boot.img demo_app helloworld system.img
Demostración
Tentemos cargar a demostración no noso módulo e vexamos o que sae del.
Descargar
No directorio sim_open_sdk podemos ver o ficheiro demo_app. Tomámolo e trasladámolo á raíz da unidade C do PC ao que está conectado o módulo. A continuación, inicie a liña de comandos de Windows (Win+R -> cmd) e introduza:
C:>adb push C:demo_app /data/
A consola indicaranos:
C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)
Isto significa que o ficheiro foi enviado correctamente ao módulo e todo o que temos que facer é executalo. Non o dubidemos.
Facemos:
C:>adb shell
Ampliamos os dereitos do ficheiro descargado:
/ # cdhmod 777 /data/demo_app
E corremos:
/ # /data/demo_app
Na mesma consola, o módulo indicaranos o seguinte:
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 >
Vexamos o IMEI do módulo, introduza 7 (cambiar ao modo de comando) e despois introduza 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 >
Deste xeito veremos o IMEI do módulo.
Como conclusión
Espero que puidemos facernos unha idea xeral de como comezar co módulo. Nos seguintes artigos, analizaremos con máis detalle as capacidades que ofrece a plataforma SIM7600E-H, así como como pode actualizar de forma remota a súa propia aplicación no módulo.
Invítoche a facer preguntas nos comentarios, e tamén indicar que aspecto das capacidades do módulo se debe reflectir en artigos posteriores.
Fonte: www.habr.com