Mehanizem za razvoj aplikacije po meri in njeno nalaganje v modul je na voljo v operacijskih sistemih Linux in Windows. V tem članku si bomo podrobno ogledali, kako, z uporabo primerov iz priloženega SDK
Pred pisanjem članka me je eden od mojih znancev, daleč od razvoja za Linux, prosil, naj čim bolj podrobno pristopim k vprašanju opisa procesa razvoja lastne aplikacije za modul SIM7600E-H. Merilo za ocenjevanje dostopnosti podajanja gradiva je bila besedna zveza »tako da razumem«.
Vabim vas, da se seznanite z dogajanjem.
Članek se redno dopolnjuje in posodablja
Predigra
Običajno se mobilni komunikacijski moduli uporabljajo samo za prenos podatkov, glasovne klice, prenos SMS-ov in podobno. Vse to poteka prek ukazov AT, poslanih iz zunanjega krmilnega mikrokrmilnika. Obstaja pa kategorija modulov, ki vam omogočajo izvajanje kode po meri, naložene od zunaj. V nekaterih primerih to znatno zmanjša celoten proračun naprave, kar vam omogoča, da na ploščo namestite enostavnejši (in enako proračunski) mikrokrmilnik ali ga v celoti opustite. S pojavom modulov LTE, ki jih krmili operacijski sistem Android ali Linux, in njihovimi močnimi viri je mogoče rešiti vse naloge, ki so na voljo priljubljenim procesorjem. Ta članek bo govoril o SIM7600E-H, ki ga nadzira OS Linux. Ogledali si bomo, kako prenesti in zagnati izvršljivo aplikacijo.
V mnogih pogledih gradivo temelji na dokumentu »SIM7600 Open Linux development quide«, vendar bodo koristni nekateri dodatki in predvsem ruska različica. Članek bo pomagal tistim, ki šele začenjajo obvladovati modul, razumeti, kako prenesti demo aplikacijo in zagotoviti potrebna znanja za nadaljnje delo.
Na kratko o tem, kdo je SIM7600E-H
SIM7600E-H je modul, zgrajen na procesorju ARM Cortex-A7 1.3 GHz podjetja Qualcomm, ki ima znotraj operacijski sistem Linux (jedro 3.18.20), ki lahko deluje z evropskimi (vključno z ruskimi) frekvenčnimi pasovi 2G/3G/LTE, ki podpira Cat .4, ki zagotavlja največje hitrosti prenosa do 150 Mbps in hitrosti nalaganja do 50 Mbps. Bogata periferija, industrijsko temperaturno območje in prisotnost vgrajene navigacije GPS/GLONASS pokrivajo vse zahteve za sodobno modularno rešitev na področju M2M.
Pregled sistema
Modul SIM7600E-H temelji na operacijskem sistemu Linux (jedro 3.18.20). Po drugi strani pa je datotečni sistem zgrajen na podlagi dnevnika datotečnega sistema UBIFS (Unsorted Block Image File System).
Pomembne lastnosti tega datotečnega sistema vključujejo:
- deluje s particijami, omogoča ustvarjanje, brisanje ali spreminjanje njihove velikosti;
- zagotavlja poravnavo snemanja po celotnem obsegu medija;
- deluje s slabimi bloki;
- zmanjša verjetnost izgube podatkov med izpadom električne energije ali drugimi okvarami;
- vodenje dnevnikov.
Opis posnet
Tisti. Ta vrsta datotečnega sistema je idealna za težke pogoje delovanja modula in morebitne težave z napajanjem. Vendar to ne pomeni, da bodo nestabilni pogoji napajanja pričakovani način delovanja modula, to le kaže na večjo sposobnost preživetja naprave.
spomin
Porazdelitev pomnilniških območij je zgrajena na naslednji način:
Poudariti je treba tri glavna področja:
ubi0:rootfs – samo za branje in vsebuje samo jedro Linuxa
ubi0:usrfs – uporablja se predvsem za shranjevanje uporabniških programov in podatkov
ubi0:cahcefs – rezervirano za posodobitve FOTA. Če razpoložljivega prostora ni dovolj za prenos posodobitve, bo sistem izbrisal neuporabljene datoteke in tako sprostil prostor. Toda iz varnostnih razlogov ne bi smeli shranjevati svojih datotek tja.
Vsi trije razdelki so razdeljeni na naslednji način:
Datotečni sistem
Velikosti
Rabljeno
Na voljo
Uporaba%
Nameščen na
ubi0:rootfs
40.7M
36.2M
4.4M
89%
/
ubi0:usrfs
10.5M
360K
10.1M
3%
/ podatki
ubi0:cachefs
50.3M
20K
47.7M
0%
/predpomnilnik
Razpoložljiva funkcionalnost
Kot je navedeno zgoraj, je modul zgrajen na naboru čipov Cortex A7 podjetja Qualcomm. Napačno bi bilo, če ne bi zagotovili tako visoko zmogljivega jedra za obdelavo uporabniškega programa in razbremenitve glavnega procesorja naprave tako, da del programa razbremenimo v modul.
Za uporabniški program nam bodo na voljo naslednji načini delovanja periferije:
Pin št.
Ime
Sistem GPIO št.
Privzeto dejanje
Funk1
Funk2
Potegnite
Prekinitev bujenja
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 kartice
-
-
B-PD
-
22
SD_DATA0
-
SD kartice
-
-
B-PD
-
23
SD_DATA1
-
SD kartice
-
-
B-PD
-
24
SD_DATA2
-
SD kartice
-
-
B-PD
-
25
SD_DATA3
-
SD kartice
-
-
B-PD
-
26
SD_CLK
-
SD kartice
-
-
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
STANJE
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
-
Strinjam se, seznam je impresiven in upoštevajte: del perifernih naprav se uporablja za delovanje modula kot usmerjevalnika. Tisti. Na podlagi takšnega modula lahko naredite majhen usmerjevalnik, ki bo distribuiral internet prek Wi-Fi. Mimogrede, obstaja že pripravljena rešitev, imenovana SIM7600E-H-MIFI, in je kartica miniPCIE s spajkanim modulom SIM7600E-H in več antenskimi zatiči, eden od njih je antena Wi-Fi. Vendar je to tema za ločen članek.
Sreda (ni dan v tednu)
Kar potrebujete, ni prosto dostopno za prenos - SDK, ki ga lahko zahtevate od svojega distributerja.
Namestitev pripomočkov za delo z modulom
V nadaljevanju bomo delali pod operacijskim sistemom Windows kot najbolj poznanim OS večini uporabnikov.
Potrebno programsko opremo bomo morali namestiti v nekaj preprostih korakih, da bomo kasneje obvladali delo z modulom:
- GNU / Linux
- Cygwin
- Vozniki
- ADB
Namestitev GNU/Linux
Za izdelavo aplikacije lahko uporabite kateri koli prevajalnik, združljiv z ARM-Linux. Uporabili bomo SourceryCodeBenchLiteARM GNU/Linuxtranslater, ki je na voljo za prenos na
Za zagotovitev, da so vse komponente pravilno nameščene, bom pustil nekaj posnetkov zaslona postopka namestitve. Načeloma pri namestitvi ni nič zapletenega.
Za zagotovitev, da so vse komponente pravilno nameščene, bom pustil nekaj posnetkov zaslona postopka namestitve. Načeloma pri namestitvi ni nič zapletenega.
- Sprejemamo licenčno pogodbo
- Določite namestitveno mapo
- Potrebne komponente pustimo nespremenjene
- Pusti tako kot je
- Večkrat "Naprej", "Namesti" in v bistvu je to to
Namestitev Cygwin
Poleg tega boste za razvoj potrebovali nabor knjižnic in pripomočkov iz priloženega nabora
Pri namestitvi Cygwina ni nič zapletenega, edina stvar, ki jo morate izbrati, je ogledalo, iz katerega bo namestitveni program prenesel potrebne datoteke, izbral katero koli in jo namestil, pa tudi nabor pripomočkov in knjižnic, pri čemer bo pustil vse razpoložljive knjižnice in izbrani pripomočki.
Nameščanje gonilnikov
Ko je modul povezan z osebnim računalnikom, boste morali namestiti gonilnike. Zahtevate jih lahko pri vašem distributerju (priporočeno). Ne priporočam samostojnega iskanja po internetu, ker... Morda bo trajalo veliko časa, da ugotovimo, kaj je povzročilo spor med napravami.
Med izbranimi vrati vidimo naslednje:
Windows
Linux
Opis
Diagnostika SimTech HS-USB
Serijski vmesnik USB
Diagnostični vmesnik
SimTech HS-USB NMEA
Serijski vmesnik USB
Vmesnik GPS NMEA
Vrata SimTech HS-USB AT
Serijski vmesnik USB
Vmesnik AT port
Modem SimTech HS-USB
Serijski vmesnik USB
Vmesnik modemskih vrat
SimTech HS-USB Audio
Serijski vmesnik USB
Vmesnik USB Audio
SimTech HS-USB WWAN adapter
USB omrežje
Vmesnik NDIS WWAN
Kompozitni vmesnik ADB za Android
USB ADB
Android doda vrata za odpravljanje napak
Kot ste verjetno opazili, med vrati na posnetku zaslona ni USB ADB, to je zato, ker so vrata ADB v modulu privzeto zaprta in jih morate omogočiti tako, da pošljete ukaz 'AT+CUSBADB=1' na AT vrata modula in ga znova zaženite (to lahko storite z ukazom 'AT+CRESET').
Kot rezultat dobimo želeni vmesnik v upravitelju naprav:
Končali smo z gonilniki, pojdimo na ADB.
Namestitev ADB
Pojdite na uradno spletno mesto za razvijalce za Android
Prenesite in razpakirajte nastali arhiv v koren pogona C.
Spremenljivke okolja
Po namestitvi Cygwin boste morali spremenljivkam razvojnega okolja dodati pot Cygwin/bin/ (Klasična nadzorna plošča → Sistem → Napredne sistemske nastavitve → Napredno → Spremenljivke okolja → Sistemske spremenljivke → Pot → Uredi), kot je prikazano na spodnjem posnetku zaslona:
Podobno dodajte pot do prenesenega in razpakiranega arhiva ADB v koren pogona C.
Večkrat kliknite V redu in znova zaženite računalnik.
Po ponovnem zagonu lahko enostavno preverite, ali ADB deluje pravilno, tako da odprete ukazno vrstico (Win+R → cmd) in vnesete ukaz 'adb version'. Dobimo nekaj takega:
Povežimo modul z računalnikom (če je slučajno odklopljen) in preverimo, ali ga ADB vidi z ukazom 'adb devices':
Končano, s tem je konfiguracija povezave z modulom končana in lahko zaženemo lupino za delo z modulom.
Razpakiranje in prevajanje SDK
Zdaj, ko imamo dostop do lupine in lahko začnemo delati z ukazno vrstico modula, poskusimo prevesti našo prvo aplikacijo za nalaganje v modul.
Marsikdo ima lahko s tem težave! Ker Modul deluje v operacijskem sistemu Linux, zato je v izogib kolizijam pri prevajanju kode pod Windows najbolje, da prevedete v domačem okolju - Linux.
Ne bomo se podrobneje ukvarjali s tem, kako ga lahko v odsotnosti Linuxa in želje po namestitvi na svoj stroj namestite na virtualni stroj. Uporabili bomo VirtualBox, namestili Ubuntu različico 20.04 (trenutna različica v času pisanja) in pod njim začeli delati s prevajalniki, SDK-ji itd.
Pojdimo v okolje Linux in razpakirajmo arhiv, prejet od distributerja.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz
Pojdite v imenik sim_open_sdk in dodajte okolje:
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
Ostajamo v isti mapi in v njej izvajamo naslednje ukaze.
Namestite knjižnico libncurses5-dev, če še ni bila nameščena:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y
Python, če tudi ni bil nameščen:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y
in gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc
Kompilacija:
Zdaj moramo prevesti več datotek, zaporedoma izvajamo naslednje ukaze.
Če se okno za konfiguracijo jedra pojavi med prevajanjem, samo izberite Izhod in se vrnite na konzolo; zdaj nam ni treba konfigurirati jedra.
Delamo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make
Prevajanje zagonskega nalagalnika:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot
Prevajanje jedra:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
Prevedite korenski datotečni sistem:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs
Za uporabnike Linuxa bo pomembno prevesti gonilnik modula:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module
Sestavimo demo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo
Po tem se bo v imeniku sim_open_sdk/output pojavilo več novih datotek:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn boot.img demo_app helloworld system.img
Demo
Poskusimo naložiti predstavitev v naš modul in poglejmo, kaj bo iz tega nastalo.
Prenos
V imeniku sim_open_sdk lahko vidimo datoteko demo_app. Vzamemo ga in prenesemo v koren pogona C na osebnem računalniku, na katerega je modul povezan. Nato zaženite ukazno vrstico Windows (Win+R -> cmd) in vnesite:
C:>adb push C:demo_app /data/
Konzola nam bo povedala:
C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)
To pomeni, da je bila datoteka uspešno poslana v modul in vse, kar moramo storiti, je, da jo zaženemo. Ne oklevajmo.
Delamo:
C:>adb shell
Razširimo pravice prenesene datoteke:
/ # cdhmod 777 /data/demo_app
In tečemo:
/ # /data/demo_app
V isti konzoli nam bo modul povedal naslednje:
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 >
Poglejmo IMEI modula, vnesite 7 (preklopite v ukazni način) in nato vnesite 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 >
Tako bomo videli IMEI modula.
Kot zaključek
Upam, da smo lahko dobili splošno predstavo o tem, kako začeti z modulom. V naslednjih člankih si bomo podrobneje ogledali zmogljivosti, ki jih ponuja platforma SIM7600E-H, ter kako lahko na daljavo posodobite lastno aplikacijo v modulu.
Vabim vas, da v komentarjih postavite vprašanja in tudi navedete, kateri vidik zmogljivosti modula naj se odraža v naslednjih člankih.
Vir: www.habr.com