OpenLinux în cadrul modulelor SIM7600E-H

OpenLinux în cadrul modulelor SIM7600E-H

Mecanismul de dezvoltare a aplicațiilor utilizator și încărcarea acestora în modul este disponibil atât pe sistemul de operare Linux, cât și pe Windows. În acest articol, vom analiza în detaliu cum, folosind exemple din SDK-ul furnizat, SIMCom Wireless Solutions să compilăm și să încărcăm aplicația utilizator în modul.

înainte de a scrie articolul, un cunoscut de-al meu, care nu este familiarizat cu dezvoltarea sub Linux, m-a rugat să abordez cât mai detaliat problema descrierii procesului de dezvoltare a unei aplicații proprii pentru modulul SIM7600E-H. Criteriul de evaluare a accesibilității materialului a fost fraza „astfel încât să înțeleg”.

Te invit să consulți rezultatul final.

Articolul este actualizat și completat în mod regulat

Preludiu

De obicei, modulele de comunicație mobilă sunt utilizate doar pentru transferul de date, apeluri vocale, trimiterea de SMS-uri și similar. Toate acestea se fac prin intermediul comenzilor AT trimise de un microcontroler extern. Totuși, există o categorie de module care permit executarea de cod personal, încărcat din exterior. În unele cazuri, acest lucru reduce semnificativ bugetul total al dispozitivului, permițând utilizarea unui microcontroler mai simplu (și, astfel, mai ieftin) sau renunțarea completă la acesta. Odată cu apariția modulelor LTE, controlate de sisteme de operare precum Android sau Linux și resursele lor puternice, se pot rezolva sarcini de orice fel, disponibile procesorilor populari. În acest articol, va fi vorba despre SIM7600E-H, controlat de Linux. Vom analiza cum să încărcăm și să rulăm o aplicație executabilă.

În mare parte, materialul se bazează pe documentul „Ghid de dezvoltare SIM7600 Open Linux”, dar unele adăugiri și, în special, versiunea în limba română vor fi utile. Articolul va ajuta pe cei care abia încep să învețe modul să ajungă la încărcarea aplicației demonstrative și le va oferi abilitățile necesare pentru activitatea ulterioară.

Pe scurt, cine este SIM7600E-H

SIM7600E-H este un modul construit pe baza procesorului ARM Cortex-A7 de 1,3 GHz de la Qualcomm, având un sistem de operare Linux (nucleu 3.18.20) în interior, capabil să funcționeze cu benzile de frecvență 2G/3G/LTE europene (inclusiv cele rusești), susținând Cat.4, asigurând o viteză maximă de descărcare de până la 150 Mbps și de încărcare de până la 50 Mbps. Oferă o bogată periferie, un interval de temperaturi industriale și navigație încorporată GPS/GLONASS, îndeplinind orice cerințe pentru soluții modulare moderne în domeniul M2M.

Prezentare sistem

Modulul SIM7600E-H se bazează pe sistemul de operare Linux (nucleu 3.18.20). La rândul său, sistemul de fișiere este bazat pe un sistem de fișiere jurnalizat UBIFS (Unsorted Block Image File System).

Printre caracteristicile importante ale acestui sistem de fișiere se numără:

  • funcționează cu partiții, permitând crearea, ștergerea sau redimensionarea acestora;
  • asigură alinierea scrierii pe întreaga capacitate a suportului;
  • funcționează cu blocuri defecte;
  • minimizează probabilitatea pierderii datelor în cazul unei întreruperi bruşte a alimentării sau a altor defecțiuni;
  • gestionarea jurnalelor.

Descrierea este preluată de aici, acolo fiind prezentate mai detaliat caracteristicile acestui sistem de fișiere.

Deci, acest tip de sistem de fișiere este perfect adaptat pentru condiții de lucru dure ale modulului și problemele posibile cu alimentarea. Dar aceasta nu înseamnă că condițiile de alimentare instabilă vor fi un mod de funcționare a modulului, ci doar că dispozitivul are o viabilitate mai mare.

Memorie

Distribuția regiunilor de memorie este construită astfel:

OpenLinux în cadrul modulelor SIM7600E-H

Trebuie să distingem trei regiuni principale:

ubi0:rootfs – disponibilă doar pentru citire și conține nucleul Linux propriu-zis
ubi0:usrfs – folosită în principal pentru programul utilizator și stocarea datelor
ubi0:cachefs – rezervată pentru actualizări FOTA. Dacă spațiul disponibil nu este suficient pentru descărcarea actualizării, sistemul va șterge fișierele neutilizate și astfel va elibera spațiu. Dar, din motive de securitate, nu se recomandă stocarea fișierelor proprii aici.

Toate cele trei partiții sunt distribuite astfel:

Filesystem
Size
Used
Available
Use%
Mounted on

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

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

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

Funcționalitate disponibilă

Așa cum a fost menționat anterior, modulul este construit pe baza chipset-ului Cortex A7 de la Qualcomm. Ar fi greșit să nu furnizăm un nucleu atât de performant pentru procesarea programului utilizatorului și descărcarea procesorului principal al dispozitivului, delegând modulului o parte din program.

Pentru programul utilizatorului, ne vor fi disponibile următoarele moduri de operare a perifericelor:

Pin No.
Name
Sys GPIO No.
Acțiunea implicită
Func1
Func2
Pull
Interrupție de trezire

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
—
SD-Card
—
—
B-PD
—

22
SD_DATA0
—
SD-Card
—
—
B-PD
—

23
SD_DATA1
—
SD-Card
—
—
B-PD
—

24
SD_DATA2
—
SD-Card
—
—
B-PD
—

25
SD_DATA3
—
SD-Card
—
—
B-PD
—

26
SD_CLK
—
SD-Card
—
—
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
Stare
GPIO
Stare
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
—

Sunteți de acord, lista este impresionantă și observați: o parte din periferice este utilizată pentru a face modulul să funcționeze ca un router. Adică, pe baza acestui modul, se poate construi un mic router care va distribui internetul prin Wi-Fi. Apropo, există deja o soluție gata, numită SIM7600E-H-MIFI, care este un card miniPCIE, cu modulul SIM7600E-H lipit și câteva ieșiri de antenă, una dintre ele fiind antena Wi-Fi. Cu toate acestea, aceasta este deja o temă pentru un material separat.

Mediu (nu zi a săptămânii)

SIMCom Wireless Solutions oferă dezvoltatorilor posibilitatea de a alege mediul de dezvoltare pe care îl cunosc cel mai bine, fie că este vorba de Linux sau Windows. Dacă este vorba despre o aplicație executabilă pe modul, cel mai bine este să alegi Windows, deoarece va fi mai rapid și mai simplu. Dacă se preconizează o arhitectură complexă a aplicației și upgrade-uri ulterioare, este mai bine să folosești Linux. De asemenea, vom avea nevoie de Linux pentru a compila fișierele executabile pentru a fi ulterior încărcate în modul, pentru compilare, o mașină virtuală este suficientă.

Din ceea ce vă va fi necesar, care nu este disponibil pentru descărcare liberă, SDK-ul, pe care îl puteți solicita de la distribuitorul dumneavoastră.

Instalarea utilităților pentru a lucra cu modulul

Aici și mai departe vom lucra pe Windows, deoarece este cea mai familiară OS pentru majoritatea utilizatorilor.

Va trebui să instalăm câteva software-uri necesare în câțiva pași simpli pentru a învăța cum să lucrăm cu modulul:

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

Instalarea GNU/Linux

Pentru a construi aplicația, poți folosi orice compilator compatibil cu ARM-Linux. Noi vom utiliza SourceryCodeBenchLiteARM GNU/Linux, disponibil pentru descărcare de la linkul.

Pentru a ne asigura că toate componentele sunt instalate corect, voi lăsa câteva capturi de ecran ale procesului de instalare. În principiu, instalarea nu este complicată.

Pentru a ne asigura că toate componentele sunt instalate corect, voi lăsa câteva capturi de ecran ale procesului de instalare. În principiu, instalarea nu este complicată.

  1. Acceptăm acordul de licență
    OpenLinux în cadrul modulelor SIM7600E-H
  2. Specifcum folderul de instalare
    OpenLinux în cadrul modulelor SIM7600E-H
  3. Lăsăm componentele necesare neschimbate
    OpenLinux în cadrul modulelor SIM7600E-H
  4. Lăsăm așa cum este
    OpenLinux în cadrul modulelor SIM7600E-H
  5. Câteva dăți ‘Next’, ‘Install’ și, în principiu, asta e tot
    OpenLinux în cadrul modulelor SIM7600E-H

Instalarea Cygwin

Apoi, pentru dezvoltare, va fi nevoie de un set de biblioteci și utilitare din pachetul furnizat Cygwin. Aici e simplu, versiunea actuală Cygwin poate fi descărcată gratuit de pe site-ul oficial al proiectului, la momentul scrierii acestui articol, versiunea 3.1.5 era disponibilă, aceasta am folosit-o pentru pregătirea materialului.

Instalarea Cygwin nu este complicată, singurul lucru de care trebuie să ții cont este alegerea unui mirror de la care installerul va descărca fișierele necesare, poți alege oricare și să instalezi, de asemenea, setul de utilitare și biblioteci, lăsând toate bibliotecile și utilitarele disponibile selectate.

Instalarea driverelor

După ce modulul va fi conectat la PC, va fi necesară instalarea driverelor. Poți solicita driverele de la distribuitorul tău (recomandat). Nu recomand căutarea pe internet, deoarece poate necesita mult timp pentru a găsi soluția legată de conflictele dispozitivelor.

OpenLinux în cadrul modulelor SIM7600E-H

Printre porturile dedicate vedem următoarele:

Windows
Linux
Descriere

SimTech HS-USB Diagnostics
USB Serial
Diagnostic Interface

SimTech HS-USB NMEA
USB Serial
GPS NMEA Interface

SimTech HS-USB AT Port
USB Serial
AT port Interface

SimTech HS-USB Modem
USB Serial
Modem port Interface

SimTech HS-USB Audio
USB Serial
USB Audio Interface

SimTech HS-USB WWAN Adapter
USB Net
NDIS wwan Interface

Android Composite ADB Interface
USB ADB
Android adaugă port de debug

După cum ai observat, printre porturile din captura de ecran nu se află USB ADB, acest lucru se datorează faptului că portul ADB din modul este în mod implicit închis și trebuie activat, trimițând comanda ‘AT+CUSBADB=1’ în portul AT al modulului și repornind modulul (acest lucru poate fi realizat cu comanda ‘AT+CRESET’).

Ca rezultat, vom obține interfața dorită în managerul de dispozitive:

OpenLinux în cadrul modulelor SIM7600E-H

Am terminat cu driverele, trecem la ADB.

Instalarea ADB

Accesăm site-ul oficial Android Developer de la linkul. Nu vom descărca Android Studio, este suficient să avem linia de comandă, disponibilă pentru descărcare la linkul ‘Download SDK Platform-Tools for Windows’.

OpenLinux în cadrul modulelor SIM7600E-H

Descărcăm și dezarhivăm arhiva obținută în rădăcina discului C.

Variabile de mediu

După instalarea Cygwin, va trebui să adăugăm calea Cygwin/bin/ în variabilele de mediu ale dezvoltării (Panou de control clasic → Sistem → Setări avansate ale sistemului → Avansat → Variabile de mediu → Variabile de sistem → Path → Modificare) așa cum este arătat în captura de ecran de mai jos:

OpenLinux în cadrul modulelor SIM7600E-H

În mod similar, adăugăm calea arhivei ADB descărcate și dezarhivate în rădăcina unității C.

OpenLinux în cadrul modulelor SIM7600E-H

Apăsăm de câteva ori OK și repornim computerul.

După repornire, putem verifica cu ușurință dacă ADB funcționează corect deschizând linia de comandă (Win+R → cmd) și tastând comanda ‘adb version’. Vom obține un rezultat similar cu acesta:

OpenLinux în cadrul modulelor SIM7600E-H

Conectăm modulul la PC (dacă s-a întâmplat să fie deconectat) și verificăm dacă ADB îl vede cu comanda ‘adb devices’:

OpenLinux în cadrul modulelor SIM7600E-H

Gata, astfel configurarea conexiunii cu modulul este completă și putem lansa shell-ul pentru a lucra cu modulul.

OpenLinux în cadrul modulelor SIM7600E-H

Dezarhivare și compilare SDK

După ce am obținut acces la shell și putem începe să lucrăm cu linia de comandă a modulului, să încercăm să compilăm prima noastră aplicație pentru a fi încărcată în modul.

Aceasta poate cauza dificultăți pentru mulți! Deoarece modulul funcționează pe un sistem de operare Linux, pentru a evita coliziunile la compilarea codului pe Windows – cel mai bine este să compilăm în mediul nativ – Linux.

Nu ne vom opri pe detalii despre cum, în absența Linux și a dorinței de a-l instala pe propria mașină, putem instala această platformă pe o mașină virtuală. Vom folosi VirtualBox, vom instala Ubuntu versiunea 20.04 (versiune actuală în momentul scrierii articolului) și sub aceasta vom începe să lucrăm cu compilatoare, SDK etc.

Trecem în mediul Linux și dezarhivăm arhiva primită de la distribuitor.

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

Trecem în catalogul sim_open_sdk și adăugăm mediu:

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 

Rămânem în acest dosar și executăm comenzile următoare în această locație.
Instalăm biblioteca libncurses5-dev, dacă nu a fost instalată:

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

Python, dacă nu a fost de asemenea instalat:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y

și gcc:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc

Compilare:

Acum va trebui să compilăm câteva fișiere, executând secvențial comenzile următoare.

Dacă la compilare apare fereastra de configurare a nucleului – alegeți doar Exit și reveniți la consolă, acum nu avem nevoie să configurăm nucleul.

Executăm:

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

Compilăm bootloader-ul:

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

Compilăm nucleul:

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

Compilăm sistemul de fișiere rădăcină:

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

Pentru utilizatorii Linux va fi relevant să compilăm driverul modulului:

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

Să compilăm demo-ul:

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

După care, în directorul sim_open_sdk\/output vor apărea mai multe fișiere noi:

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

Demo

Să încercăm să încărcăm demonstrația în modulul nostru și să vedem ce iese.

Încărcare

În directorul sim_open_sdk putem vedea fișierul demo_app. Îl luăm și îl transferăm în rădăcina discului C de pe PC-ul la care este conectat modulul. Apoi vom deschide linia de comandă Windows (Win+R -> cmd) și introducem:

C:>adb push C:demo_app \/data\

Consola ne va informa:

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

Asta înseamnă că fișierul a fost trimis cu succes pe modul și nu ne rămâne decât să-l lansăm. Să nu întârziem.

Executăm:

C:>adb shell

Extindem permisiunile fișierului încărcat:

/ # cdhmod 777 /data/demo_app

Și lansăm:

/ # /data/demo_app

În aceeași consolă, modulul ne va informa următoarele:

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 >   

Haideți să verificăm IMEI-ul modulului, introducem 7 (trecerea în modul de comandă) și apoi introducem 5:

Vă rugăm să selectați o opțiune de testare din articolele listate mai jos.

1. WIFI                       2. APEL VOCE
3. APEL DATE                  4. SMS
5. WDS(APN)                   6. NAS
7. AT                         8. OTA
9. TTS                        10. GPIO
11. GPS                       12. Bluetooth
13. TCP/UDP                   14. Cronometru
15. ADC                       16. I2C
17. UIM(SimCard)              18. DMS(IMEI,MEID)
19. UART                      20. SPI
21. Versiune                  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. IEȘIRE
Opțiune > 7

Vă rugăm să selectați o opțiune de testare din articolele listate mai jos.

1. obțineți Versiunea Modulului         2. obțineți CSQ
3. obțineți CREG                   4. obțineți ICCID
5. obțineți IMEI                   6. obțineți CIMI
99. înapoi
Opțiune > 5
IMEI: 867584030090489

Vă rugăm să selectați o opțiune de testare din articolele listate mai jos.

1. obțineți Versiunea Modulului         2. obțineți CSQ
3. obțineți CREG                   4. obțineți ICCID
5. obțineți IMEI                   6. obțineți CIMI
99. înapoi
Opțiune >

Astfel, vom vedea IMEI-ul modulului.

În concluzie

Sper că am reușit să oferim o imagine de ansamblu despre cum să începem lucrul cu modulul. În articolele următoare, vom explora în detaliu posibilitățile oferite de platforma SIM7600E-H, precum și modalitățile de a actualiza de la distanță aplicația dvs. în modul.

Vă invit să puneți întrebări în comentarii și să indicați ce aspect al posibilităților modulului ar trebui să fie reflectat în articolele viitoare.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster