El mecanismo para desarrollar una aplicación personalizada y cargarla en el módulo está disponible en los sistemas operativos Linux y Windows. En este artículo veremos detalladamente cómo, usando ejemplos del SDK proporcionado
Antes de escribir el artículo, uno de mis conocidos, lejos de desarrollar para Linux, me pidió que abordara el tema de describir con el mayor detalle posible el proceso de desarrollo de mi propia aplicación para el módulo SIM7600E-H. El criterio para evaluar la accesibilidad de la presentación del material fue la frase "para que yo entienda".
Los invito a conocer lo sucedido.
El artículo se complementa y actualiza periódicamente.
Preludio
Normalmente, los módulos de comunicación celular se utilizan únicamente para transmisión de datos, llamadas de voz, transmisión de SMS y similares. Todo esto se realiza mediante comandos AT enviados desde un microcontrolador de control externo. Pero existe una categoría de módulos que le permiten ejecutar código personalizado cargado desde fuera. En algunos casos, esto reduce significativamente el presupuesto general del dispositivo, lo que le permite instalar un microcontrolador más simple (e igualmente económico) en la placa o abandonarlo por completo. Con la llegada de los módulos LTE controlados por el sistema operativo Android o Linux y sus potentes recursos, es posible resolver cualquier tarea que esté disponible para los procesadores populares. Este artículo hablará sobre SIM7600E-H, controlado por el sistema operativo Linux. Veremos cómo descargar y ejecutar una aplicación ejecutable.
En muchos sentidos, el material se basa en el documento "Guía de desarrollo de SIM7600 Open Linux", pero algunas adiciones y, en primer lugar, la versión rusa serán útiles. El artículo ayudará a aquellos que recién comienzan a dominar el módulo a comprender cómo descargar la aplicación de demostración y brindará las habilidades necesarias para el trabajo posterior.
Brevemente sobre quién es SIM7600E-H
SIM7600E-H es un módulo construido en el procesador ARM Cortex-A7 de 1.3 GHz de Qualcomm, que tiene en su interior el sistema operativo Linux (kernel 3.18.20), capaz de trabajar con bandas de frecuencia europeas (incluidas las rusas) 2G/3G/ LTE compatibles con Cat. .4, que proporciona velocidades máximas de descarga de hasta 150 Mbps y velocidades de carga de hasta 50 Mbps. Los ricos periféricos, el rango de temperatura industrial y la presencia de navegación GPS/GLONASS integrada cubren cualquier requisito para una solución modular moderna en el campo M2M.
Vista general del sistema
El módulo SIM7600E-H está basado en el sistema operativo Linux (kernel 3.18.20). A su vez, el sistema de archivos se basa en el sistema de archivos registrado UBIFS (Unsorted Block Image File System).
Las características importantes de este sistema de archivos incluyen:
- trabaja con particiones, le permite crear, eliminar o cambiar su tamaño;
- asegura la alineación de la grabación en todo el volumen de medios;
- funciona con bloques defectuosos;
- minimiza la probabilidad de pérdida de datos durante un corte de energía u otras fallas;
- manteniendo registros.
Descripción tomada
Aquellos. Este tipo de sistema de archivos es ideal para condiciones duras de funcionamiento del módulo y posibles problemas de energía. Pero esto no significa que el modo de funcionamiento esperado del módulo sea condiciones de energía inestables; solo indica una mayor viabilidad del dispositivo.
Память
La distribución de áreas de memoria se construye de la siguiente manera:
Hay tres áreas principales a destacar:
ubi0:rootfs – de sólo lectura y contiene el propio kernel de Linux
ubi0:usrfs – utilizado principalmente para programas de usuario y almacenamiento de datos
ubi0:cahcefs – reservado para actualizaciones de FOTA. Si el espacio disponible no es suficiente para descargar la actualización, el sistema eliminará los archivos no utilizados y así liberará espacio. Pero por razones de seguridad, no debes colocar tus archivos allí.
Las tres secciones se distribuyen de la siguiente manera:
Sistema de archivos
Tamaño
Usado
Disponible
Usar%
Montado en
ubi0:rootfs
40.7 m
36.2 m
4.4 m
89%
/
ubi0:usrfs
10.5 m
360K
10.1 m
3%
/datos
ubi0:cachefs
50.3 m
20K
47.7 m
0%
/cache
Funcionalidad disponible
Como se mencionó anteriormente, el módulo está integrado en el chipset Cortex A7 de Qualcomm. Sería un error no proporcionar un núcleo de tan alto rendimiento para procesar el programa de usuario y descargar el procesador principal del dispositivo descargando una parte del programa al módulo.
Para el programa de usuario tendremos a nuestra disposición los siguientes modos de funcionamiento de periféricos:
Pin No.
Nombre
Sistema GPIO No.
Acción por defecto
Func1
Func2
Jale
interrupción del despertar
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
-
Tarjeta SD
-
-
B-PD
-
22
SD_DATOS0
-
Tarjeta SD
-
-
B-PD
-
23
SD_DATOS1
-
Tarjeta SD
-
-
B-PD
-
24
SD_DATOS2
-
Tarjeta SD
-
-
B-PD
-
25
SD_DATOS3
-
Tarjeta SD
-
-
B-PD
-
26
SD_CLK
-
Tarjeta 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_EN
GPIO
MIFI_POWER_EN
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
ESTADO
GPIO_52
Estado
GPIO
Estado
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
Estrategia en tiempo real
-
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_SALIDA
-
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
-
De acuerdo, la lista es impresionante y tenga en cuenta: parte de los periféricos se utiliza para operar el módulo como enrutador. Aquellos. Sobre la base de dicho módulo, puede crear un pequeño enrutador que distribuirá Internet a través de Wi-Fi. Por cierto, existe una solución lista para usar llamada SIM7600E-H-MIFI y es una tarjeta miniPCIE con un módulo SIM7600E-H soldado y varios pines de antena, uno de ellos es una antena Wi-Fi. Sin embargo, este es un tema para un artículo aparte.
Miércoles (no es un día de la semana)
Lo que necesita no está disponible para su descarga gratuita: un SDK, que puede solicitar a su distribuidor.
Instalación de utilidades para trabajar con el módulo.
De ahora en adelante, trabajaremos en Windows como el sistema operativo más familiar para la mayoría de los usuarios.
Necesitaremos instalar el software necesario en unos sencillos pasos para posteriormente dominar el trabajo con el módulo:
- GNU / Linux
- Cygwin
- Conductores
- ADB
Instalación de GNU/Linux
Para crear la aplicación, puede utilizar cualquier compilador compatible con ARM-Linux. Usaremos SourceryCodeBenchLiteARM GNU/Linuxtranslater disponible para descargar en
Para asegurar que todos los componentes estén instalados correctamente, dejaré algunas capturas de pantalla del proceso de instalación. En principio, no hay nada complicado en la instalación.
Para asegurar que todos los componentes estén instalados correctamente, dejaré algunas capturas de pantalla del proceso de instalación. En principio, no hay nada complicado en la instalación.
- Aceptamos el acuerdo de licencia.
- Especifique la carpeta de instalación
- Dejamos los componentes necesarios sin cambios.
- Déjalo como está
- Varias veces “Siguiente”, “Instalar” y básicamente eso es todo.
Instalación de Cygwin
Además, para el desarrollo, necesitará un conjunto de bibliotecas y utilidades del conjunto proporcionado.
No hay nada complicado en instalar Cygwin, lo único que necesitas seleccionar es un mirror desde el cual el instalador descargará los archivos necesarios, seleccionará cualquiera y lo instalará, así como un conjunto de utilidades y bibliotecas, dejando todas las bibliotecas disponibles y utilidades seleccionadas.
Instalación de los controladores
Una vez que el módulo esté conectado a la PC, deberá instalar los controladores. Estos pueden solicitarse a su distribuidor (recomendado). No recomiendo buscar en Internet por tu cuenta, porque... Puede llevar mucho tiempo encontrar la causa del conflicto del dispositivo.
Entre los puertos seleccionados vemos los siguientes:
Windows
Linux
Descripción
Diagnóstico SimTech HS-USB
Serie USB
Interfaz de diagnóstico
SimTech HS-USB NMEA
Serie USB
Interfaz GPS NMEA
Puerto SimTech HS-USB AT
Serie USB
Interfaz de puerto AT
Módem HS-USB SimTech
Serie USB
Interfaz del puerto del módem
Audio SimTech HS-USB
Serie USB
Interfaz de audio USB
Adaptador WWAN SimTech HS-USB
Red USB
Interfaz NDIS WWAN
Interfaz ADB compuesta de Android
Banco de energía USB
Android agrega puerto de depuración
Como probablemente habrás notado, no hay USB ADB entre los puertos en la captura de pantalla, esto se debe a que el puerto ADB en el módulo está cerrado de forma predeterminada y debes habilitarlo enviando el comando 'AT+CUSBADB=1' al AT. puerto del módulo y reinícielo (esto se puede hacer con el comando 'AT+CRESET').
Como resultado, obtenemos la interfaz deseada en el administrador de dispositivos:
Terminamos con los controladores, pasemos a ADB.
Instalación del BAD
Vaya al sitio web oficial para desarrolladores de Android
Descargue y descomprima el archivo resultante en la raíz de la unidad C.
Variables de entorno
Después de instalar Cygwin, deberá agregar la ruta Cygwin/bin/ a las variables de entorno de desarrollo (Panel de control clásico → Sistema → Configuración avanzada del sistema → Avanzado → Variables de entorno → Variables del sistema → Ruta → Editar) como se muestra en la siguiente captura de pantalla:
De manera similar, agregue la ruta al archivo ADB descargado y descomprimido a la raíz de la unidad C.
Haga clic en Aceptar varias veces y reinicie la computadora.
Después de reiniciar, puede comprobar fácilmente si ADB está funcionando correctamente abriendo la línea de comando (Win+R → cmd) y escribiendo el comando 'adb version'. Obtenemos algo como esto:
Conectemos el módulo a la PC (si sucedió que estaba desconectado) y verifiquemos si ADB lo ve con el comando 'adb devices':
Listo, esto completa la configuración de la conexión al módulo y podemos iniciar el shell para trabajar con el módulo.
Descomprimir y compilar el SDK
Ahora que tenemos acceso al shell y podemos comenzar a trabajar con la línea de comando del módulo, intentemos compilar nuestra primera aplicación para cargarla en el módulo.
¡Muchas personas pueden tener dificultades con esto! Porque El módulo se ejecuta en el sistema operativo Linux; para evitar colisiones al compilar código en Windows, es mejor compilar en el entorno nativo: Linux.
No nos detendremos en detalles sobre cómo, en ausencia de Linux y el deseo de instalarlo en su máquina, puede instalarlo en una máquina virtual. Usaremos VirtualBox, instalaremos la versión 20.04 de Ubuntu (la versión actual al momento de escribir este artículo) y bajo ella comenzaremos a trabajar con compiladores, SDK, etc.
Vayamos al entorno Linux y descomprimamos el archivo recibido del distribuidor.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz
Vaya al directorio sim_open_sdk y agregue el entorno:
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 en la misma carpeta y ejecutamos comandos posteriores mientras estamos en ella.
Instale la biblioteca libncurses5-dev si no se ha instalado:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y
Python, si tampoco estaba instalado:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y
y gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc
Compilacion:
Ahora necesitamos compilar varios archivos, ejecutamos los siguientes comandos de forma secuencial.
Si aparece la ventana de configuración del kernel durante la compilación, simplemente seleccione Salir y regrese a la consola; no necesitamos configurar el kernel ahora.
Hacemos:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make
Compilando el gestor de arranque:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot
Compilando el kernel:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
Compile el sistema de archivos raíz:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs
Para los usuarios de Linux será relevante compilar el controlador del módulo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module
Compilemos la demostración:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo
Después de lo cual aparecerán varios archivos nuevos en el directorio sim_open_sdk/output:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn boot.img demo_app helloworld system.img
Manifestación
Intentemos cargar la demostración en nuestro módulo y ver qué sale de ella.
Descargar
En el directorio sim_open_sdk podemos ver el archivo demo_app. Lo cogemos y lo transferimos a la raíz de la unidad C del PC al que está conectado el módulo. Luego inicie la línea de comando de Windows (Win+R -> cmd) e ingrese:
C:>adb push C:demo_app /data/
La consola nos dirá:
C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)
Esto significa que el archivo se envió exitosamente al módulo y todo lo que tenemos que hacer es ejecutarlo. No lo dudemos.
Hacemos:
C:>adb shell
Ampliamos los derechos del archivo descargado:
/ # cdhmod 777 /data/demo_app
Y ejecutamos:
/ # /data/demo_app
En la misma consola el módulo nos dirá lo siguiente:
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 >
Veamos el IMEI del módulo, ingresamos 7 (cambiar a modo comando) y luego ingresamos 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 esta forma veremos el IMEI del módulo.
Como conclusión
Espero que hayamos podido tener una idea general de cómo comenzar con el módulo. En los siguientes artículos, analizaremos más de cerca las capacidades que proporciona la plataforma SIM7600E-H, así como también cómo puede actualizar de forma remota su propia aplicación en el módulo.
Lo invito a hacer preguntas en los comentarios y también a indicar qué aspecto de las capacidades del módulo debe reflejarse en artículos posteriores.
Fuente: habr.com