OpenLinux como parte dos módulos SIM7600E-H

OpenLinux como parte dos módulos SIM7600E-H

O mecanismo para desenvolver um aplicativo customizado e carregá-lo no módulo está disponível nos sistemas operacionais Linux e Windows. Neste artigo veremos detalhadamente como, usando exemplos do SDK fornecido Soluções sem fio SIMCom compilar e carregar um aplicativo personalizado em um módulo.

Antes de escrever o artigo, um conhecido meu, longe de desenvolver para Linux, me pediu para abordar a questão de descrever o processo de desenvolvimento de minha própria aplicação para o módulo SIM7600E-H com o máximo de detalhes possível. O critério para avaliação da acessibilidade da apresentação do material foi a frase “para que eu entenda”.

Convido você a conhecer o que aconteceu.

O artigo é regularmente complementado e atualizado

Prelúdio

Normalmente, os módulos de comunicação celular são usados ​​apenas para transmissão de dados, chamadas de voz, transmissão de SMS e similares. Tudo isso é feito através de comandos AT enviados de um microcontrolador de controle externo. Mas existe uma categoria de módulos que permitem executar código personalizado carregado de fora. Em alguns casos, isso reduz significativamente o orçamento geral do dispositivo, permitindo instalar um microcontrolador mais simples (e igualmente econômico) na placa ou abandoná-lo completamente. Com o advento dos módulos LTE controlados pelo sistema operacional Android ou Linux e seus poderosos recursos, é possível resolver qualquer problema que esteja disponível para processadores populares. Este artigo falará sobre o SIM7600E-H, controlado pelo sistema operacional Linux. Veremos como baixar e executar um aplicativo executável.

Em muitos aspectos, o material é baseado no documento “SIM7600 Open Linux development quide”, mas alguns acréscimos e, em primeiro lugar, a versão russa serão úteis. O artigo ajudará aqueles que estão começando a dominar o módulo a entender como baixar o aplicativo de demonstração e fornecer as habilidades necessárias para o trabalho subsequente.

Resumidamente sobre quem é o SIM7600E-H

SIM7600E-H é um módulo construído no processador ARM Cortex-A7 1.3GHz da Qualcomm, tendo o sistema operacional Linux (kernel 3.18.20) dentro, capaz de trabalhar com bandas de frequência europeias (incluindo russas) 2G/3G/ LTE com suporte Cat. .4, fornecendo velocidades máximas de download de até 150 Mbps e velocidades de upload de até 50 Mbps. Periféricos ricos, uma faixa de temperatura industrial e a presença de navegação GPS/GLONASS integrada cobrem todos os requisitos para uma solução modular moderna no campo M2M.

Visão geral do sistema

O módulo SIM7600E-H é baseado no sistema operacional Linux (kernel 3.18.20). Por sua vez, o sistema de arquivos é construído com base no sistema de arquivos com diário UBIFS (Unsorted Block Image File System).

Recursos importantes deste sistema de arquivos incluem:

  • funciona com partições, permite criar, excluir ou alterar seu tamanho;
  • garante o alinhamento da gravação em todo o volume de mídia;
  • funciona com blocos ruins;
  • minimiza a probabilidade de perda de dados durante uma queda de energia ou outras falhas;
  • mantendo registros.

Descrição obtida por isso, há também uma descrição mais detalhada desse sistema de arquivos.

Aqueles. Este tipo de sistema de arquivos é ideal para condições operacionais adversas do módulo e possíveis problemas de energia. Mas isso não significa que condições de alimentação instáveis ​​serão o modo de operação esperado do módulo; apenas indica a maior viabilidade do dispositivo.

Память

A distribuição das áreas de memória é construída da seguinte forma:

OpenLinux como parte dos módulos SIM7600E-H

Existem três áreas principais a destacar:

ubi0:rootfs – somente leitura e contém o próprio kernel do Linux
ubi0:usrfs – usado principalmente para programa do usuário e armazenamento de dados
ubi0:cahcefs – reservado para atualizações FOTA. Caso o espaço disponível não seja suficiente para baixar a atualização, o sistema excluirá os arquivos não utilizados e assim liberará espaço. Mas por razões de segurança, você não deve colocar seus arquivos lá.

Todas as três seções são distribuídas da seguinte forma:

Sistema de arquivo
Tamanho
Usados
Disponível
Usar%
Montado em

ubi0:rootfs
40.7M
36.2M
4.4M
89%
/

ubi0:usrfs
10.5M
360K
10.1M
3%
/dados

ubi0:cachefs
50.3M
20K
47.7M
0%
/ cache

Funcionalidade disponível

Conforme mencionado acima, o módulo é construído no chipset Cortex A7 da Qualcomm. Seria errado não fornecer um núcleo de alto desempenho para processar o programa do usuário e descarregar o processador principal do dispositivo, descarregando alguma parte do programa para o módulo.

Para o programa do usuário, os seguintes modos de operação periféricos estarão disponíveis para nós:

No. pino
Nome
Sistema GPIO Não.
Ação padrão
Função1
Função2
Puxe
Interrupção de 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
-
Cartão SD
-
-
B-PD
-

22
SD_DATA0
-
Cartão SD
-
-
B-PD
-

23
SD_DATA1
-
Cartão SD
-
-
B-PD
-

24
SD_DATA2
-
Cartão SD
-
-
B-PD
-

25
SD_DATA3
-
Cartão SD
-
-
B-PD
-

26
SD_CLK
-
Cartão 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
STATUS
GPIO_52
Status
GPIO
Status
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
-

Concordo, a lista é impressionante e observe: parte dos periféricos é usada para operar o módulo como roteador. Aqueles. Com base nesse módulo, você pode fazer um pequeno roteador que distribuirá a Internet via Wi-Fi. Aliás, existe uma solução pronta chamada SIM7600E-H-MIFI e é uma placa miniPCIE com módulo SIM7600E-H soldado e vários pinos de antena, um deles é uma antena Wi-Fi. No entanto, este é um tópico para um artigo separado.

Quarta-feira (não é um dia da semana)

Soluções sem fio SIMCom fornece a oportunidade para os desenvolvedores escolherem o ambiente de desenvolvimento mais familiar para Linux ou Windows. Se estamos falando de um aplicativo executável por módulo, então é melhor escolher o Windows, será mais rápido e fácil. Se for esperada uma arquitetura de aplicativo complexa e atualizações subsequentes, é melhor usar o Linux. Também precisamos do Linux para compilar arquivos executáveis ​​para posterior carregamento no módulo; uma máquina virtual é suficiente para compilação.

O que você precisa não está disponível gratuitamente para download - um SDK, que você pode solicitar ao seu distribuidor.

Instalando utilitários para trabalhar com o módulo

Doravante, trabalharemos no Windows como o sistema operacional mais familiar para a maioria dos usuários.

Precisaremos instalar o software necessário em algumas etapas simples para posteriormente dominar o trabalho com o módulo:

  1. GNU / Linux
  2. Cygwin
  3. Drivers
  4. ADB

Instalando GNU/Linux

Para construir o aplicativo, você pode usar qualquer compilador compatível com ARM-Linux. Usaremos SourceryCodeBenchLiteARM GNU/Linuxtranslater disponível para download em link.

Para garantir que todos os componentes estejam instalados corretamente, deixarei algumas capturas de tela do processo de instalação. Em princípio, não há nada complicado na instalação.

Para garantir que todos os componentes estejam instalados corretamente, deixarei algumas capturas de tela do processo de instalação. Em princípio, não há nada complicado na instalação.

  1. Aceitamos o contrato de licença
    OpenLinux como parte dos módulos SIM7600E-H
  2. Especifique a pasta de instalação
    OpenLinux como parte dos módulos SIM7600E-H
  3. Deixamos os componentes necessários inalterados
    OpenLinux como parte dos módulos SIM7600E-H
  4. Deixe como está
    OpenLinux como parte dos módulos SIM7600E-H
  5. Várias vezes “Próximo”, “Instalar” e basicamente é isso
    OpenLinux como parte dos módulos SIM7600E-H

Instalando o Cygwin

Além disso, para desenvolvimento, você precisará de um conjunto de bibliotecas e utilitários do conjunto fornecido Cygwin. Tudo é simples aqui, a versão atual do Cygwin pode ser baixada gratuitamente no site oficial do projeto, no momento da escrita estava disponível a versão 3.1.5, que utilizamos na preparação do material.

Não há nada complicado em instalar o Cygwin, a única coisa que você precisa selecionar é um espelho do qual o instalador irá baixar os arquivos necessários, selecionar qualquer um e instalá-lo, bem como um conjunto de utilitários e bibliotecas, deixando todas as bibliotecas disponíveis e utilitários selecionados.

Instalando drivers

Depois que o módulo estiver conectado ao PC, você precisará instalar os drivers. Estes podem ser solicitados ao seu distribuidor (recomendado). Não recomendo pesquisar na Internet por conta própria, porque... Pode levar muito tempo para descobrir o que causou o conflito do dispositivo.

OpenLinux como parte dos módulos SIM7600E-H

Entre as portas selecionadas vemos as seguintes:

Windows
Linux
descrição

Diagnóstico SimTech HS-USB
Serial USB
Interface de diagnóstico

SimTech HS-USB NMEA
Serial USB
Interface GPS NMEA

Porta SimTech HS-USB AT
Serial USB
Interface da porta AT

Modem SimTech HS-USB
Serial USB
Interface da porta do modem

Áudio SimTech HS-USB
Serial USB
Interface de Áudio USB

Adaptador WWAN SimTech HS-USB
Rede USB
Interface WWAN NDIS

Interface ADB do Android Composite
ADB USB
Android adicionar porta de depuração

Como você provavelmente notou, não há USB ADB entre as portas na captura de tela, isso ocorre porque a porta ADB no módulo está fechada por padrão e você precisa habilitá-la enviando o comando 'AT+CUSBADB=1' para o AT porta do módulo e reiniciá-lo (isso pode ser feito com o comando 'AT+CRESET').

Como resultado, obtemos a interface desejada no gerenciador de dispositivos:

OpenLinux como parte dos módulos SIM7600E-H

Terminamos com os drivers, vamos passar para o ADB.

Instalando ADB

Acesse o site oficial do desenvolvedor Android link. Não vamos baixar o volumoso Android Studio; só precisamos da linha de comando, disponível para download através do link “Download SDK Platform-Tools for Windows”.

OpenLinux como parte dos módulos SIM7600E-H

Baixe e descompacte o arquivo resultante na raiz da unidade C.

variáveis ​​ambientais

Depois de instalar o Cygwin, você precisará adicionar o caminho Cygwin/bin/ às variáveis ​​de ambiente de desenvolvimento (Painel de Controle Clássico → Sistema → Configurações avançadas do sistema → Avançado → Variáveis ​​de ambiente → Variáveis ​​de sistema → Caminho → Editar) conforme mostrado na imagem abaixo:

OpenLinux como parte dos módulos SIM7600E-H

Da mesma forma, adicione o caminho do arquivo ADB baixado e descompactado à raiz da unidade C.

OpenLinux como parte dos módulos SIM7600E-H

Clique em OK várias vezes e reinicie o computador.

Após a reinicialização, você pode verificar facilmente se o ADB está funcionando corretamente abrindo a linha de comando (Win+R → cmd) e digitando o comando ‘adb version’. Obtemos algo assim:

OpenLinux como parte dos módulos SIM7600E-H

Vamos conectar o módulo ao PC (caso tenha sido desconectado) e verificar se o ADB o vê com o comando 'adb devices':

OpenLinux como parte dos módulos SIM7600E-H

Feito isso completa a configuração da conexão com o módulo e podemos lançar o shell para trabalhar com o módulo.

OpenLinux como parte dos módulos SIM7600E-H

Descompactando e compilando o SDK

Agora que temos acesso ao shell e podemos começar a trabalhar com a linha de comando do módulo, vamos tentar compilar nossa primeira aplicação para carregar no módulo.

Muitas pessoas podem ter dificuldade com isso! Porque O módulo roda no sistema operacional Linux; para evitar colisões ao compilar o código no Windows, é melhor compilar no ambiente nativo - Linux.

Não entraremos em detalhes sobre como, na ausência do Linux e no desejo de instalá-lo em sua máquina, você pode instalá-lo em uma máquina virtual. Usaremos o VirtualBox, instalaremos o Ubuntu versão 20.04 (a versão atual no momento em que este artigo foi escrito) e com ele começaremos a trabalhar com compiladores, SDKs, etc.

Vamos ao ambiente Linux e descompacte o arquivo recebido do distribuidor.

simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz 

Acesse o diretório sim_open_sdk e adicione 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 na mesma pasta e executamos os comandos subsequentes enquanto estivermos nela.
Instale a biblioteca libncurses5-dev se ela não tiver sido instalada:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y

Python, se também não foi instalado:

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

Compilação:

Agora precisamos compilar vários arquivos, executamos os seguintes comandos sequencialmente.

Se a janela de configuração do kernel aparecer durante a compilação, basta selecionar Sair e retornar ao console; não precisamos configurar o kernel agora.

Nós fazemos:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make

Compilando o bootloader:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot

Compilando o kernel:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel

Compile o sistema de arquivos raiz:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs

Para usuários Linux será relevante compilar o driver do módulo:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module

Vamos compilar a demonstração:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo

Depois disso, vários novos arquivos aparecerão no diretório sim_open_sdk/output:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn  boot.img  demo_app  helloworld  system.img

Programa demonstrativo

Vamos tentar carregar a demonstração em nosso módulo e ver o que acontece.

Baixar

No diretório sim_open_sdk podemos ver o arquivo demo_app. Pegamos e transferimos para a raiz da unidade C do PC ao qual o módulo está conectado. Em seguida, inicie a linha de comando do Windows (Win+R -> cmd) e digite:

C:>adb push C:demo_app /data/

O console nos dirá:

C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)

Isso significa que o arquivo foi enviado com sucesso ao módulo e basta executá-lo. Não hesitemos.

Nós fazemos:

C:>adb shell

Expandimos os direitos do arquivo baixado:

/ # cdhmod 777 /data/demo_app

E corremos:

/ # /data/demo_app

No mesmo console, o módulo nos dirá 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 >   

Vejamos o IMEI do módulo, digite 7 (mudar para modo de comando) e depois digite 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 >

Assim veremos o IMEI do módulo.

Como conclusão

Espero que tenhamos conseguido ter uma ideia geral de como começar a usar o módulo. Nos artigos a seguir, examinaremos mais de perto os recursos que a plataforma SIM7600E-H oferece, bem como como você pode atualizar remotamente seu próprio aplicativo no módulo.

Convido você a fazer perguntas nos comentários e também indicar qual aspecto das capacidades do módulo deve ser refletido nos artigos subsequentes.

Fonte: habr.com

Adicionar um comentário