OpenLinux kao dio SIM7600E-H modula

OpenLinux kao dio SIM7600E-H modula

Mehanizam za razvoj prilagođene aplikacije i njezino učitavanje u modul dostupan je pod operativnim sustavima Linux i Windows. U ovom ćemo članku detaljno pogledati kako, koristeći primjere iz priloženog SDK-a SIMCom bežična rješenja prevesti i učitati prilagođenu aplikaciju u modul.

Prije pisanja članka, jedan od mojih poznanika, daleko od razvoja za Linux, zamolio me da pristupim pitanju opisa procesa razvoja vlastite aplikacije za SIM7600E-H modul što je moguće detaljnije. Kriterij za procjenu pristupačnosti prezentacije materijala bio je izraz "tako da razumijem".

Pozivam vas da se upoznate s onim što se dogodilo.

Članak se redovito nadopunjuje i ažurira

uvod

Obično se moduli mobilne komunikacije koriste samo za prijenos podataka, glasovne pozive, prijenos SMS-a i slično. Sve se to radi putem AT naredbi poslanih s vanjskog upravljačkog mikrokontrolera. Ali postoji kategorija modula koji vam omogućuju izvršavanje prilagođenog koda učitanog izvana. U nekim slučajevima to značajno smanjuje ukupni proračun uređaja, omogućujući vam da instalirate jednostavniji (i jednako proračunski) mikrokontroler na ploču ili ga potpuno napustite. S pojavom LTE modula upravljanih Android ili Linux OS-om i njihovim moćnim resursima, moguće je riješiti sve zadatke koji su dostupni popularnim procesorima. Ovaj članak će govoriti o SIM7600E-H, kojim upravlja Linux OS. Pogledat ćemo kako preuzeti i pokrenuti izvršnu aplikaciju.

Na mnogo načina materijal se temelji na dokumentu “SIM7600 Open Linux development quide”, ali bit će korisni neki dodaci i, prije svega, ruska verzija. Članak će pomoći onima koji tek počinju svladavati modul da razumiju kako preuzeti demo aplikaciju i pružiti potrebne vještine za kasniji rad.

Ukratko o tome tko je SIM7600E-H

SIM7600E-H je modul izgrađen na ARM Cortex-A7 1.3GHz procesoru iz Qualcomma, koji ima operativni sustav Linux (kernel 3.18.20) unutra, sposoban za rad s europskim (uključujući ruski) frekvencijskim pojasima 2G/3G/ LTE koji podržava Cat .4, pružajući maksimalne brzine preuzimanja do 150 Mbps i brzine prijenosa do 50 Mbps. Bogata periferija, industrijski temperaturni raspon i prisutnost ugrađene GPS/GLONASS navigacije pokrivaju sve zahtjeve za moderno modularno rješenje u M2M području.

Pregled sistema

Modul SIM7600E-H temelji se na operativnom sustavu Linux (kernel 3.18.20). S druge strane, datotečni sustav izgrađen je na temelju datotečnog sustava koji se vodi u dnevnik UBIFS (Unsorted Block Image File System).

Važne značajke ovog datotečnog sustava uključuju:

  • radi s particijama, omogućuje stvaranje, brisanje ili promjenu njihove veličine;
  • osigurava usklađenost snimanja preko cijelog volumena medija;
  • radi s lošim blokovima;
  • smanjuje vjerojatnost gubitka podataka tijekom nestanka struje ili drugih kvarova;
  • vođenje dnevnika.

Opis preuzet stoga, postoji i detaljniji opis takvog datotečnog sustava.

Oni. Ova vrsta datotečnog sustava idealna je za teške uvjete rada modula i moguće probleme s napajanjem. Ali to ne znači da će nestabilni uvjeti napajanja biti očekivani način rada modula; to samo ukazuje na veću održivost uređaja.

memorija

Distribucija memorijskih područja konstruirana je na sljedeći način:

OpenLinux kao dio SIM7600E-H modula

Tri su glavna područja koja treba istaknuti:

ubi0:rootfs – samo za čitanje i sadrži samu jezgru Linuxa
ubi0:usrfs – prvenstveno se koristi za pohranu korisničkih programa i podataka
ubi0:cahcefs – rezervirano za FOTA ažuriranja. Ako raspoloživi prostor nije dovoljan za preuzimanje ažuriranja, sustav će izbrisati neiskorištene datoteke i tako osloboditi prostor. Ali iz sigurnosnih razloga, ne biste trebali tamo postavljati svoje datoteke.

Sva tri odjeljka raspoređena su na sljedeći način:

Sustav datoteka
Veličina
Polovan
Dostupno
Koristiti%
Montiran na

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

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

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

Dostupna funkcionalnost

Kao što je gore spomenuto, modul je izgrađen na Cortex A7 čipsetu iz Qualcomma. Bilo bi pogrešno ne osigurati jezgru tako visokih performansi za obradu korisničkog programa i rasteretiti glavni procesor uređaja tako što će neki dio programa prebaciti na modul.

Za korisnički program bit će nam dostupni sljedeći periferni načini rada:

Pin br.
Ime i Prezime
Sustav GPIO br.
Zadana radnja
Funk1
Funk2
Vuci
Prekid buđenja

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 kartica
-
-
B-PD
-

22
SD_DATA0
-
SD kartica
-
-
B-PD
-

23
SD_DATA1
-
SD kartica
-
-
B-PD
-

24
SD_DATA2
-
SD kartica
-
-
B-PD
-

25
SD_DATA3
-
SD kartica
-
-
B-PD
-

26
SD_CLK
-
SD kartica
-
-
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_HR
GPIO
MIFI_POWER_HR
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
-

Slažem se, popis je impresivan i imajte na umu: dio periferije koristi se za rad modula kao usmjerivača. Oni. Na temelju takvog modula možete napraviti mali usmjerivač koji će distribuirati Internet putem Wi-Fi-ja. Usput, postoji gotovo rješenje pod nazivom SIM7600E-H-MIFI i to je miniPCIE kartica sa zalemljenim SIM7600E-H modulom i nekoliko pinova za antenu, jedan od njih je Wi-Fi antena. Međutim, ovo je tema za poseban članak.

Srijeda (nije dan u tjednu)

SIMCom bežična rješenja pružaju mogućnost programerima da izaberu najpoznatije razvojno okruženje za Linux ili Windows. Ako govorimo o jednoj izvršnoj aplikaciji na modulu, onda je bolje odabrati Windows, bit će brže i lakše. Ako se očekuje složena arhitektura aplikacije i naknadne nadogradnje, bolje je koristiti Linux. Također nam je potreban Linux za kompajliranje izvršnih datoteka za naknadno učitavanje u modul; virtualni stroj je dovoljan za kompilaciju.

Ono što vam treba nije besplatno dostupno za preuzimanje - SDK, koji možete zatražiti od svog distributera.

Instaliranje uslužnih programa za rad s modulom

U nastavku ćemo raditi pod Windowsima kao većini korisnika najpoznatijim OS-om.

Trebat ćemo instalirati potreban softver u nekoliko jednostavnih koraka kako bismo kasnije svladali rad s modulom:

  1. GNU / Linux
  2. Cygwin
  3. Vozači
  4. ADB

Instaliranje GNU/Linuxa

Za izradu aplikacije možete koristiti bilo koji kompajler koji je kompatibilan s ARM-Linuxom. Koristit ćemo SourceryCodeBenchLiteARM GNU/Linuxtranslater dostupan za preuzimanje na link.

Kako bismo bili sigurni da su sve komponente ispravno instalirane, ostavit ću nekoliko snimaka zaslona procesa instalacije. U principu, nema ništa komplicirano u instalaciji.

Kako bismo bili sigurni da su sve komponente ispravno instalirane, ostavit ću nekoliko snimaka zaslona procesa instalacije. U principu, nema ništa komplicirano u instalaciji.

  1. Prihvaćamo licencni ugovor
    OpenLinux kao dio SIM7600E-H modula
  2. Odredite instalacijsku mapu
    OpenLinux kao dio SIM7600E-H modula
  3. Ostavljamo potrebne komponente nepromijenjene
    OpenLinux kao dio SIM7600E-H modula
  4. Ostavite kako jest
    OpenLinux kao dio SIM7600E-H modula
  5. Nekoliko puta "Dalje", "Instaliraj" i u biti to je to
    OpenLinux kao dio SIM7600E-H modula

Instalacija Cygwina

Nadalje, za razvoj će vam trebati skup biblioteka i uslužnih programa iz priloženog skupa Cygwin. Ovdje je sve jednostavno, trenutna verzija Cygwina može se besplatno preuzeti na službenoj web stranici projekta; u vrijeme pisanja bila je dostupna verzija 3.1.5, što smo koristili prilikom pripreme materijala.

Nema ništa komplicirano u instaliranju Cygwina, jedino što trebate odabrati je ogledalo iz kojeg će instalacijski program preuzeti potrebne datoteke, odabrati bilo koju i instalirati je, kao i skup uslužnih programa i biblioteka, ostavljajući sve dostupne knjižnice i odabrane komunalije.

Instalacija upravljačkog programa

Nakon što se modul spoji na računalo, morat ćete instalirati upravljačke programe. Možete ih zatražiti od svog distributera (preporučeno). Ne preporučam samostalno pretraživanje interneta jer... Možda će trebati dosta vremena da se otkrije što je uzrokovalo sukob uređaja.

OpenLinux kao dio SIM7600E-H modula

Među odabranim priključcima vidimo sljedeće:

Windows
Linux
Opis

SimTech HS-USB dijagnostika
USB serijski
Dijagnostičko sučelje

SimTech HS-USB NMEA
USB serijski
GPS NMEA sučelje

SimTech HS-USB AT priključak
USB serijski
AT port sučelje

SimTech HS-USB modem
USB serijski
Sučelje modemskog priključka

SimTech HS-USB audio
USB serijski
USB audio sučelje

SimTech HS-USB WWAN adapter
USB mreža
NDIS WWAN sučelje

Android kompozitno ADB sučelje
USB ADB
Android dodaj priključak za otklanjanje pogrešaka

Kao što ste vjerojatno primijetili, među priključcima na snimci zaslona nema USB ADB-a, to je zato što je ADB priključak u modulu prema zadanim postavkama zatvoren i trebate ga omogućiti slanjem naredbe 'AT+CUSBADB=1' na AT priključak modula i ponovno ga pokrenite (to se može učiniti naredbom 'AT+CRESET').

Kao rezultat toga, dobivamo željeno sučelje u upravitelju uređaja:

OpenLinux kao dio SIM7600E-H modula

Završili smo s drajverima, idemo dalje na ADB.

Instaliranje ADB -a

Idite na službenu web stranicu za razvojne programere za Android link. Nećemo preuzimati glomazni Android Studio; trebamo samo naredbeni redak, dostupan za preuzimanje putem veze "Preuzmi SDK platformske alate za Windows".

OpenLinux kao dio SIM7600E-H modula

Preuzmite i raspakirajte dobivenu arhivu u korijen pogona C.

Varijable okruženja

Nakon instaliranja Cygwina, morat ćete dodati stazu Cygwin/bin/ u varijable razvojnog okruženja (Klasična upravljačka ploča → Sustav → Napredne postavke sustava → Napredno → Varijable okruženja → Varijable sustava → Put → Uredi) kao što je prikazano na slici ispod:

OpenLinux kao dio SIM7600E-H modula

Slično, dodajte put do preuzete i raspakirane ADB arhive u korijen pogona C.

OpenLinux kao dio SIM7600E-H modula

Kliknite OK nekoliko puta i ponovno pokrenite računalo.

Nakon ponovnog pokretanja, jednostavno možete provjeriti radi li ADB ispravno tako da otvorite naredbeni redak (Win+R → cmd) i upišete naredbu 'adb verzija'. Dobivamo nešto poput ovoga:

OpenLinux kao dio SIM7600E-H modula

Spojimo modul na PC (ako je slučajno bio isključen) i provjerimo vidi li ga ADB naredbom 'adb devices':

OpenLinux kao dio SIM7600E-H modula

Gotovo, ovo dovršava konfiguraciju veze s modulom i možemo pokrenuti ljusku za rad s modulom.

OpenLinux kao dio SIM7600E-H modula

Raspakiranje i kompajliranje SDK-a

Sada kada imamo pristup ljusci i možemo početi raditi s naredbenim redom modula, pokušajmo kompajlirati našu prvu aplikaciju za učitavanje u modul.

Mnogi ljudi mogu imati poteškoća s ovim! Jer Modul radi na operativnom sustavu Linux; kako bi se izbjegle kolizije kod kompajliranja koda pod Windowsima, najbolje je kompilirati u izvornom okruženju - Linux.

Nećemo se detaljno zadržavati na tome kako ga, u nedostatku Linuxa i želje da ga instalirate na svoj stroj, možete instalirati na virtualni stroj. Koristit ćemo VirtualBox, instalirati Ubuntu verziju 20.04 (trenutačnu verziju u vrijeme pisanja) i pod njim ćemo početi raditi s kompajlerima, SDK-ovima itd.

Idemo u okruženje Linuxa i otpakiramo arhivu koju smo dobili od distributera.

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

Idite u direktorij sim_open_sdk i dodajte okruženje:

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 

Ostajemo u istoj mapi i izvršavamo sljedeće naredbe dok smo u njoj.
Instalirajte biblioteku libncurses5-dev ako nije instalirana:

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

Python, ako ni on nije instaliran:

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

Kompilacija:

Sada trebamo prevesti nekoliko datoteka, uzastopce izvodimo sljedeće naredbe.

Ako se prozor za konfiguraciju kernela pojavi tijekom kompilacije, samo odaberite Izlaz i vratite se na konzolu; ne moramo sada konfigurirati kernel.

Radimo:

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

Kompajliranje pokretačkog programa:

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

Kompajliranje kernela:

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

Kompajlirajte korijenski datotečni sustav:

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

Za korisnike Linuxa bit će relevantno kompilirati upravljački program modula:

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

Sastavimo demo:

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

Nakon čega će se pojaviti nekoliko novih datoteka u direktoriju sim_open_sdk/output:

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

demo

Pokušajmo učitati demo u naš modul i vidjeti što će iz toga proizaći.

Preuzimanje

U direktoriju sim_open_sdk možemo vidjeti datoteku demo_app. Uzimamo ga i prenosimo u korijen pogona C na računalu na koje je modul povezan. Zatim pokrenite Windows naredbeni redak (Win+R -> cmd) i unesite:

C:>adb push C:demo_app /data/

Konzola će nam reći:

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

To znači da je datoteka uspješno poslana u modul i sve što trebamo učiniti je pokrenuti je. Nemojmo oklijevati.

Radimo:

C:>adb shell

Proširujemo prava preuzete datoteke:

/ # cdhmod 777 /data/demo_app

I trčimo:

/ # /data/demo_app

U istoj konzoli, modul će nam reći sljedeće:

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 >   

Pogledajmo IMEI modula, unesite 7 (prebacite se u naredbeni način) i zatim unesite 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 >

Na taj način ćemo vidjeti IMEI modula.

Kao zaključak

Nadam se da smo uspjeli dobiti opću ideju o tome kako započeti s modulom. U sljedećim člancima pobliže ćemo pogledati mogućnosti koje pruža platforma SIM7600E-H, kao i kako možete daljinski ažurirati vlastitu aplikaciju u modulu.

Pozivam vas da postavljate pitanja u komentarima, a također naznačite koji aspekt mogućnosti modula treba odražavati u narednim člancima.

Izvor: www.habr.com

Dodajte komentar