Mehanizam za razvoj prilagođene aplikacije i njeno učitavanje u modul dostupan je i pod operativnim sistemima Linux i Windows. U ovom članku ćemo detaljno pogledati kako, koristeći primjere iz dostavljenog SDK-a
Prije pisanja članka, jedan od mojih poznanika, daleko od razvoja za Linux, zamolio me da što detaljnije pristupim pitanju opisivanja procesa razvoja vlastite aplikacije za modul SIM7600E-H. Kriterijum za ocjenu pristupačnosti prezentacije materijala bio je izraz „da razumijem“.
Pozivam vas da se upoznate sa onim što se dogodilo.
Članak se redovno dopunjuje i ažurira
Preludij
Obično se moduli mobilne komunikacije koriste samo za prijenos podataka, glasovne pozive, SMS prijenos i slično. Sve se to radi putem AT naredbi koje šalje vanjski kontrolni mikrokontroler. Ali postoji kategorija modula koji vam omogućavaju da izvršite prilagođeni kod učitan izvana. U nekim slučajevima, ovo značajno smanjuje ukupni budžet uređaja, omogućavajući vam da instalirate jednostavniji (i jednako proračunat) mikrokontroler na ploču ili ga potpuno napustite. Pojavom LTE modula kojima upravlja Android ili Linux OS i njihovim moćnim resursima, moguće je riješiti sve zadatke koji su dostupni popularnim procesorima. Ovaj članak će govoriti o SIM7600E-H, koji kontrolira Linux OS. Pogledat ćemo kako preuzeti i pokrenuti izvršnu aplikaciju.
Na mnogo načina, materijal se zasniva na dokumentu “SIM7600 Open Linux development quide”, ali neki dodaci i, prije svega, ruska verzija će biti korisni. Članak će pomoći onima koji tek počinju savladati modul da shvate kako preuzeti demo aplikaciju i pružiti potrebne vještine za kasniji rad.
Ukratko o tome ko je SIM7600E-H
SIM7600E-H je modul izgrađen na ARM Cortex-A7 1.3GHz procesoru kompanije Qualcomm, koji ima Linux operativni sistem (kernel 3.18.20) unutra, sposoban za rad sa evropskim (uključujući ruski) frekventnim opsezima 2G/3G/ LTE koji podržava Cat .4, pružajući maksimalnu brzinu preuzimanja do 150Mbps i brzinu upload-a do 50Mbps. Bogati periferni uređaji, industrijski temperaturni raspon i prisutnost ugrađene GPS/GLONASS navigacije pokrivaju sve zahtjeve za modernim modularnim rješenjem u M2M polju.
Pregled sistema
SIM7600E-H modul je baziran na Linux operativnom sistemu (kernel 3.18.20). Zauzvrat, sistem datoteka je izgrađen na bazi sistema datoteka u dnevniku UBIFS (Unsorted Block Image File System).
Važne karakteristike ovog sistema datoteka uključuju:
- radi sa particijama, omogućava kreiranje, brisanje ili promjenu njihove veličine;
- osigurava poravnanje snimanja po cijelom volumenu medija;
- radi sa lošim blokovima;
- minimizira vjerovatnoću gubitka podataka tokom nestanka struje ili drugih kvarova;
- vođenje dnevnika.
Opis preuzet
One. Ovaj tip fajl sistema je idealan za teške uslove rada modula i moguće probleme sa 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 je konstruirana na sljedeći način:
Postoje tri glavna područja koja treba istaknuti:
ubi0:rootfs – samo za čitanje i sadrži sam Linux kernel
ubi0:usrfs – koristi se prvenstveno za skladištenje korisničkih programa i podataka
ubi0:cahcefs – rezervirano za FOTA ažuriranja. Ako raspoloživi prostor nije dovoljan za preuzimanje ažuriranja, sistem će izbrisati neiskorištene datoteke i tako osloboditi prostor. Ali iz sigurnosnih razloga, ne biste trebali stavljati svoje datoteke tamo.
Sve tri sekcije su raspoređene na sljedeći način:
Sistem podataka
veličina
Rabljeni
dostupan
Koristi%
Montiran na
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%
/skladiste
Dostupna funkcionalnost
Kao što je već spomenuto, modul je izgrađen na Cortex A7 čipsetu kompanije Qualcomm. Bilo bi pogrešno ne obezbediti jezgro tako visokih performansi za obradu korisničkog programa i rasterećenje glavnog procesora uređaja tako što se neki deo programa učitava u modul.
Za korisnički program bit će nam dostupni sljedeći periferni načini rada:
Pin br.
Ime
Sys GPIO br.
Zadana radnja
Func1
Func2
povući
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_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
prirodni resursi
-
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
DTRMore
-
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, lista je impresivna i imajte na umu: dio periferije se koristi za rad modula kao rutera. One. Na osnovu takvog modula možete napraviti mali ruter koji će distribuirati Internet putem Wi-Fi mreže. Inače, postoji gotovo rješenje pod nazivom SIM7600E-H-MIFI i to je miniPCIE kartica sa zalemljenim SIM7600E-H modulom i nekoliko antenskih pinova, jedan od njih je i Wi-Fi antena. Međutim, ovo je tema za poseban članak.
srijeda (nije dan u sedmici)
Ono što vam je potrebno 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 Windows-om kao najpoznatiji OS većini korisnika.
Morat ćemo instalirati potreban softver u nekoliko jednostavnih koraka kako bismo naknadno savladali rad s modulom:
- GNU / Linux
- Cygwin
- Vozači
- ADB
Instalacija GNU/Linuxa
Da biste napravili aplikaciju, možete koristiti bilo koji ARM-Linux kompatibilan kompajler. Koristit ćemo SourceryCodeBenchLiteARM GNU/Linuxtranslater dostupan za preuzimanje na
Kako bih osigurao da su sve komponente ispravno instalirane, ostavit ću nekoliko snimaka ekrana procesa instalacije. U principu, nema ništa komplicirano u instalaciji.
Kako bih osigurao da su sve komponente ispravno instalirane, ostavit ću nekoliko snimaka ekrana procesa instalacije. U principu, nema ništa komplicirano u instalaciji.
- Prihvatamo ugovor o licenci
- Odredite instalacioni folder
- Potrebne komponente ostavljamo nepromijenjene
- Ostavite kako jeste
- Nekoliko puta "Dalje", "Instaliraj" i u suštini to je to
Instaliranje 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 instalater preuzeti potrebne datoteke, odabrati bilo koju i instalirati je, kao i skup uslužnih programa i biblioteka, ostavljajući sve dostupne biblioteke i odabrani uslužni programi.
Instaliranje upravljačkih programa
Nakon što se modul poveže sa računarom, moraćete da instalirate drajvere. Ovo možete zatražiti od vašeg distributera (preporučeno). Ne preporučujem da samostalno pretražujete internet, jer... Može potrajati dosta vremena da se pronađe šta je uzrokovalo sukob uređaja.
Među odabranim portovima vidimo sljedeće:
Windows
Linux
Opis
SimTech HS-USB dijagnostika
USB serijski
Dijagnostičko sučelje
SimTech HS-USB NMEA
USB serijski
GPS NMEA interfejs
SimTech HS-USB AT port
USB serijski
Interfejs AT porta
SimTech HS-USB modem
USB serijski
Interfejs modemskog porta
SimTech HS-USB audio
USB serijski
USB audio sučelje
SimTech HS-USB WWAN adapter
USB Net
NDIS WWAN interfejs
Android kompozitni ADB interfejs
USB ADB
Android dodaje port za otklanjanje grešaka
Kao što ste vjerovatno primijetili, među portovima na snimku ekrana nema USB ADB-a, to je zato što je ADB port u modulu po defaultu zatvoren i morate ga omogućiti slanjem naredbe 'AT+CUSBADB=1' na AT port modula i ponovo ga pokrenite (ovo se može uraditi naredbom 'AT+CRESET').
Kao rezultat, dobijamo željeno sučelje u upravitelju uređaja:
Završili smo sa drajverima, idemo na ADB.
ADB instalacija
Idite na službenu web stranicu Android Developer
Preuzmite i raspakujte rezultirajuću arhivu u korijen diska C.
Varijable okruženja
Nakon instalacije Cygwin-a, moraćete da dodate putanju Cygwin/bin/ do varijabli razvojnog okruženja (Klasična kontrolna tabla → Sistem → Napredne sistemske postavke → Napredno → Promenljive okruženja → Sistemske varijable → Putanja → Uredi) kao što je prikazano na slici ispod:
Slično tome, dodajte putanju do preuzete i raspakirane ADB arhive u korijen diska C.
Kliknite OK nekoliko puta i ponovo pokrenite računar.
Nakon ponovnog pokretanja, možete lako provjeriti da li ADB radi ispravno otvaranjem komandne linije (Win+R → cmd) i upisivanjem naredbe ‘adb version’. Dobijamo nešto ovako:
Spojimo modul na PC (ako se desi da se isključi) i provjerimo da li ga ADB vidi pomoću naredbe 'adb devices':
Gotovo, ovim je završena konfiguracija veze s modulom i možemo pokrenuti shell za rad s modulom.
Raspakivanje i kompajliranje SDK-a
Sada kada imamo pristup ljusci i možemo početi raditi sa komandnom linijom modula, pokušajmo sastaviti našu prvu aplikaciju za učitavanje u modul.
Mnogi ljudi mogu imati poteškoća s ovim! Jer Modul radi na Linux operativnom sistemu; kako bi se izbjegle kolizije prilikom kompajliranja koda pod Windowsom, najbolje je kompajlirati u izvornom okruženju - Linux.
Nećemo se detaljno zadržavati na tome kako, u nedostatku Linuxa i želje da ga instalirate na svoj stroj, možete ga instalirati na virtualnu mašinu. Koristićemo VirtualBox, instalirati Ubuntu verziju 20.04 (trenutnu verziju u trenutku pisanja) i pod njim ćemo početi da radimo sa kompajlerima, SDK-ovima itd.
Idemo u Linux okruženje i raspakujemo arhivu primljenu 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 fascikli i izvršavamo sledeće komande 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 moramo kompajlirati nekoliko fajlova, izvršavamo sledeće komande uzastopno.
Ako se prozor za konfiguraciju kernela pojavi tokom kompilacije, samo izaberite Izađi i vratite se na konzolu; ne moramo sada da konfigurišemo kernel.
Vršimo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make
Kompajliranje bootloadera:
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 sistem datoteka:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs
Za korisnike Linuxa bit će relevantno kompajlirati 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 šta će iz njega proizaći.
Preuzimanje
U direktoriju sim_open_sdk možemo vidjeti datoteku demo_app. Uzimamo ga i prenosimo u korijen diska C na PC-u na koji je modul spojen. Zatim pokrenite Windows komandnu liniju (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 treba da uradimo je da je pokrenemo. Nemojmo oklevati.
Vršimo:
C:>adb shell
Proširujemo prava na preuzetu datoteku:
/ # 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 komandni način), a 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 ovaj način ćemo vidjeti IMEI modula.
Kao zaključak
Nadam se da smo uspeli da dobijemo opštu ideju o tome kako da počnemo sa modulom. U sljedećim člancima ćemo detaljnije pogledati mogućnosti koje nudi 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 odraziti u narednim člancima.
izvor: www.habr.com