OpenLinux como parte dos módulos SIM7600E-H

OpenLinux como parte dos módulos SIM7600E-H

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 Solucións sen fíos SIMCom compilar e cargar unha aplicación personalizada nun módulo.

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 por iso, tamén hai unha descrición máis detallada deste sistema de ficheiros.

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:

OpenLinux como parte dos módulos SIM7600E-H

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)

Solucións sen fíos SIMCom ofrecer a oportunidade aos desenvolvedores de escoller o ambiente de desenvolvemento máis familiar para Linux ou Windows. Se estamos a falar dunha aplicación executable nun módulo, entón é mellor escoller Windows, será máis rápido e sinxelo. Se se espera unha arquitectura de aplicación complexa e actualizacións posteriores, é mellor usar Linux. Tamén necesitamos Linux para compilar ficheiros executables para a súa posterior carga no módulo; unha máquina virtual é suficiente para a compilación.

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:

  1. GNU / Linux
  2. Cygwin
  3. Controladores
  4. 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 Ligazó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.

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.

  1. Aceptamos o contrato de licenza
    OpenLinux como parte dos módulos SIM7600E-H
  2. Especifique o cartafol de instalación
    OpenLinux como parte dos módulos SIM7600E-H
  3. Deixamos os compoñentes necesarios sen cambios
    OpenLinux como parte dos módulos SIM7600E-H
  4. Déixao como está
    OpenLinux como parte dos módulos SIM7600E-H
  5. Varias veces "Seguinte", "Instalar" e basicamente iso é todo
    OpenLinux como parte dos módulos SIM7600E-H

Instalación de Cygwin

Ademais, para o desenvolvemento, necesitará un conxunto de bibliotecas e utilidades do conxunto proporcionado Cygwin. Aquí todo é sinxelo, a versión actual de Cygwin pódese descargar de balde na páxina web oficial do proxecto; no momento de escribir este artigo estaba dispoñible a versión 3.1.5, que é a que utilizamos á hora de preparar o material.

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.

OpenLinux como parte dos módulos SIM7600E-H

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:

OpenLinux como parte dos módulos SIM7600E-H

Rematamos cos condutores, imos a ADB.

Instalación de ADB

Vaia ao sitio web oficial do programador de Android Ligazón. Non descargaremos o voluminoso Android Studio; só necesitamos a liña de comandos, dispoñible para descargar a través da ligazón "Descargar SDK Platform-Tools para Windows".

OpenLinux como parte dos módulos SIM7600E-H

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:

OpenLinux como parte dos módulos SIM7600E-H

Do mesmo xeito, engade o camiño ao arquivo ADB descargado e desempaquetado á raíz da unidade C.

OpenLinux como parte dos módulos SIM7600E-H

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í:

OpenLinux como parte dos módulos SIM7600E-H

Conectemos o módulo ao PC (se ocorreu que estaba desconectado) e comprobemos se ADB o ve co comando 'adb devices':

OpenLinux como parte dos módulos SIM7600E-H

Feito, completa a configuración da conexión co módulo e podemos lanzar o shell para traballar co módulo.

OpenLinux como parte dos módulos SIM7600E-H

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

Engadir un comentario