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
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
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:
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)
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:
- GNU / Linux
- Cygwin
- Vozači
- 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
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.
- Prihvaćamo licencni ugovor
- Odredite instalacijsku mapu
- Ostavljamo potrebne komponente nepromijenjene
- Ostavite kako jest
- Nekoliko puta "Dalje", "Instaliraj" i u biti to je to
Instalacija Cygwina
Nadalje, za razvoj će vam trebati skup biblioteka i uslužnih programa iz priloženog skupa
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.
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:
Završili smo s drajverima, idemo dalje na ADB.
Instaliranje ADB -a
Idite na službenu web stranicu za razvojne programere za Android
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:
Slično, dodajte put do preuzete i raspakirane ADB arhive u korijen pogona C.
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:
Spojimo modul na PC (ako je slučajno bio isključen) i provjerimo vidi li ga ADB naredbom 'adb devices':
Gotovo, ovo dovršava konfiguraciju veze s modulom i možemo pokrenuti ljusku za rad s modulom.
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