OpenLinux como parte de los módulos SIM7600E-H

OpenLinux como parte de los módulos SIM7600E-H

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 Soluciones inalámbricas SIMCom compilar y cargar una aplicación personalizada en un módulo.

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 por lo tanto, también hay una descripción más detallada de dicho sistema de archivos.

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:

OpenLinux como parte de los módulos SIM7600E-H

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)

Soluciones inalámbricas SIMCom Brinda a los desarrolladores la oportunidad de elegir el entorno de desarrollo más familiar para Linux o Windows. Si estamos hablando de una aplicación ejecutable en un módulo, entonces es mejor elegir Windows, será más rápido y sencillo. Si se espera una arquitectura de aplicación compleja y actualizaciones posteriores, es mejor utilizar Linux. También necesitamos Linux para compilar archivos ejecutables para su posterior carga en el módulo, una máquina virtual es suficiente para la compilación.

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:

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

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.

  1. Aceptamos el acuerdo de licencia.
    OpenLinux como parte de los módulos SIM7600E-H
  2. Especifique la carpeta de instalación
    OpenLinux como parte de los módulos SIM7600E-H
  3. Dejamos los componentes necesarios sin cambios.
    OpenLinux como parte de los módulos SIM7600E-H
  4. Déjalo como está
    OpenLinux como parte de los módulos SIM7600E-H
  5. Varias veces “Siguiente”, “Instalar” y básicamente eso es todo.
    OpenLinux como parte de los módulos SIM7600E-H

Instalación de Cygwin

Además, para el desarrollo, necesitará un conjunto de bibliotecas y utilidades del conjunto proporcionado. Cygwin. Aquí todo es simple, la versión actual de Cygwin se puede descargar de forma gratuita en el sitio web oficial del proyecto, al momento de escribir este artículo estaba disponible la versión 3.1.5, que es la que utilizamos al preparar el material.

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.

OpenLinux como parte de los módulos SIM7600E-H

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:

OpenLinux como parte de los módulos SIM7600E-H

Terminamos con los controladores, pasemos a ADB.

Instalación del BAD

Vaya al sitio web oficial para desarrolladores de Android enlace. No descargaremos el voluminoso Android Studio; solo necesitamos la línea de comando, disponible para descargar a través del enlace "Descargar herramientas de plataforma SDK para Windows".

OpenLinux como parte de los módulos SIM7600E-H

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:

OpenLinux como parte de los módulos SIM7600E-H

De manera similar, agregue la ruta al archivo ADB descargado y descomprimido a la raíz de la unidad C.

OpenLinux como parte de los módulos SIM7600E-H

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:

OpenLinux como parte de los módulos SIM7600E-H

Conectemos el módulo a la PC (si sucedió que estaba desconectado) y verifiquemos si ADB lo ve con el comando 'adb devices':

OpenLinux como parte de los módulos SIM7600E-H

Listo, esto completa la configuración de la conexión al módulo y podemos iniciar el shell para trabajar con el módulo.

OpenLinux como parte de los módulos SIM7600E-H

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

Añadir un comentario