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
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
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:
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)
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:
- GNU / Linux
- Cygwin
- Drivers
- 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
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.
- Aceitamos o contrato de licença
- Especifique a pasta de instalação
- Deixamos os componentes necessários inalterados
- Deixe como está
- Várias vezes “Próximo”, “Instalar” e basicamente é isso
Instalando o Cygwin
Além disso, para desenvolvimento, você precisará de um conjunto de bibliotecas e utilitários do conjunto fornecido
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.
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:
Terminamos com os drivers, vamos passar para o ADB.
Instalando ADB
Acesse o site oficial do desenvolvedor Android
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:
Da mesma forma, adicione o caminho do arquivo ADB baixado e descompactado à raiz da unidade C.
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:
Vamos conectar o módulo ao PC (caso tenha sido desconectado) e verificar se o ADB o vê com o comando 'adb devices':
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.
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