
Mehanizem razvoja uporabniške aplikacije in nalaganja vanjo modul je na voljo tako za operacijski sistem Linux kot Windows. V tem članku bomo podrobno preučili, kako izkoristiti primere iz SDK, ki ga zagotavlja skompajlirati in naložiti uporabniško aplikacijo v modul.
Pred pisanjem članka me je znanec, ki se ne ukvarja z razvojem za Linux, prosil, da se podrobno posvetim vprašanju opisovanja procesa razvoja lastne aplikacije za modul SIM7600E-H. Kriterij dostopnosti predstavitve materiala je bila fraza „tako da razumem“.
Vabim vas, da si ogledate, kaj je nastalo.
Članek se redno dopolnjuje in osvežuje.
Predigra
Običajno se mobilni moduli uporabljajo samo za prenos podatkov, glasovne klice, pošiljanje SMS-ov in podobno. Vse to se izvaja s pomočjo AT ukazov, ki jih pošilja zunanji mikrokrmilnik. Obstaja pa kategorija modulov, ki omogočajo izvajanje uporabniškega kode, naloženega od zunaj. V nekaterih primerih to znatno zniža skupni proračun naprave, kar omogoča namestitev enostavnejšega (in posledično cenejšega) mikrokrmilnika ali pa se od njega povsem odpove. S prihodom LTE modulov, ki jih upravlja operacijski sistem Android ali Linux in njihovimi močnimi viri, lahko rešujemo vse naloge, ki so dostopne priljubljenim procesorjem. V tem članku se bomo osredotočili na SIM7600E-H, ki ga upravlja operacijski sistem Linux. Obravnavali bomo, kako naložiti in zagnati izvajalno aplikacijo.
V veliki meri je material osnovan na dokumentu "SIM7600 Open Linux development guide", vendar bodo nekatere dopolnitve, še posebej različica v ruščini, koristne. Članek bo pomagal tistim, ki šele začenjajo z obvladovanjem modula, da dosežejo nalaganje predstavitvene aplikacije in pridobijo potrebne veščine za nadaljnje delo.
Na kratko o tem, kdo je SIM7600E-H
SIM7600E-H je modul zgrajen na osnovi procesorja ARM Cortex-A7 1.3GHz od Qualcomm, ki ima operacijski sistem Linux (jedro 3.18.20) in je sposoben delati z evropskimi (vključno z ruskimi) frekvenčnimi pasovi 2G/3G/LTE, ter podpira Cat.4, kar zagotavlja maksimalno hitrost prenosa do 150Mbps in nalaganja do 50Mbps. Bogata perifernost, industrijski temperaturni razpon in vgrajena navigacija GPS/GLONASS izpolnjujejo vse zahteve sodobne modularne rešitve v M2M tematiki.
Pregled sistema
Modul SIM7600E-H deluje na operacijskem sistemu Linux (jedro 3.18.20). Datotečni sistem je zgrajen na osnovi zapisne datotečne strukture UBIFS (Unsorted Block Image File System).
Pomembne značilnosti te datotečne strukture vključujejo:
- deluje s particijami, omogoča ustvarjanje, brisanje ali spreminjanje njihove velikosti;
- zagotavlja poravnavo zapisa po celotni kapaciteti nosilca;
- deluje z Bad-bloki;
- minimizira možnost izgube podatkov ob nenadnem prekinitvi napajanja ali drugih motnjah;
- vodenje dnevnikov.
Opis prevzet , tam pa je še podrobneje opisano o tem datotečnem sistemu.
T.j. ta vrsta datotečnega sistema je idealna za težke delovne razmere modula in morebitne težave z napajanjem. Vendar to ne pomeni, da bodo pogoji nestabilnega napajanja pričakovani način delovanja modula, to le pomeni večjo življenjsko dobo naprave.
Pomnilnik
Razdelitev spomina je zasnovana na naslednji način:

Treba je выделить tri glavne področja:
ubi0:rootfs – dostopno samo za branje in vsebuje samo jedro Linuxa
ubi0:usrfs – se večinoma uporablja za uporabniški program in shranjevanje podatkov
ubi0:cahcefs – rezervirano za FOTA posodobitve. Če ne bo dovolj prostora za prenos posodobitve – sistem bo izbrisal neuporabljene datoteke in na ta način osvobodil prostor. Vendar iz varnostnih razlogov – ne shranjujte tam svojih datotek.
Vsa tri področja so razdeljena na naslednji način:
Datotečni sistem
Velikost
Korišćeno
Dostupno
Use%
Pripravljen 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%
/cache
Na voljo funkcionalnost
Kot je bilo že omenjeno, je modul zasnovan na čipovju Cortex A7 podjetja Qualcomm. Bilo bi narobe, če ne bi zagotovili tako zmogljivega jedra za obdelavo uporabniškega programa in razbremenitev glavnega procesorja naprave, tako da bi del programa prenesli na modul.
Za uporabniški program bomo imeli na voljo naslednje načine delovanja periferije:
Pin No.
Ime
Sys GPIO No.
Privzeta akcija
Func1
Func2
Vlečni
Prebudi prekinitev
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
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
—
Strinjate se, seznam je impresiven in opozorite: del periferije se uporablja za delovanje modula kot usmerjevalnika. To pomeni, da je mogoče na podlagi takega modula ustvariti majhen usmerjevalnik, ki bo delil internet po Wi-Fi. Mimogrede, že obstaja rešitev, imenovana SIM7600E-H-MIFI, ki predstavlja miniPCIE kartico z vgrajenim modulom SIM7600E-H in več antennimi izhodi, ena od njih je antena Wi-Fi. Vendar pa je to že tema za ločen material.
Sredina (ni dan v tednu)
ponujajo razvijalcem možnost izbire najbolj znanega razvojnega okolja pod Linuxom ali Windowsom. Če gre za eno izvršno aplikacijo na modulu, je bolje izbrati Windows, da bo hitreje in enostavneje. Če pa predvidevamo zapleteno arhitekturo aplikacije in poznejše nadgradnje, je bolje uporabiti Linux. Potrebovali bomo tudi Linux za kompilacijo izvršnih datotek za kasnejše nalaganje v modul; za kompilacijo bo dovolj virtualno okolje.
Od tistega, kar boste potrebovali, kar ni na voljo za prenos v prostem dostopu – SDK, ki ga lahko zahtevate pri svojem distributerju.
Namestitev orodij za delo z modulom
Tukaj in naprej bomo delali pod Windows, kot najbolj znanim operacijskim sistemom večini uporabnikov.
Z več preprostimi koraki bomo morali namestiti potrebno programsko opremo za kasnejše obvladovanje dela z modulom:
- GNU/Linux
- Cygwin
- Drajverji
- ADB
Namestitev GNU/Linux
Za izgradnju aplikacije možete koristiti bilo koji kompilator koji je kompatibilan sa ARM-Linux. Mi ćemo koristiti SourceryCodeBenchLiteARM GNU/Linux prevodilac dostupan za preuzimanje na .
Da bi svi komponente bile ispravno instalirane, ostavljam nekoliko snimaka ekrana procesa instalacije. U suštini, u instalaciji nema ništa komplikovano.
Da bi svi komponente bile ispravno instalirane, ostavljam nekoliko snimaka ekrana procesa instalacije. U suštini, u instalaciji nema ništa komplikovano.
- Prihvatamo ugovor o licenci

- Navodimo folder za instalaciju

- Neophodne komponente ostavljamo nepromenjene

- Ostavljamo kako jeste

- Nekoliko puta “Next”, “Install” i u suštini to je sve

Instalacija Cygwin-a
Dalje, za razvoj će biti potreban set biblioteka i alata iz paketa koji se pruža . Ovde je jednostavno, aktuelnu verziju Cygwin-a možete besplatno preuzeti sa zvaničnog sajta projekta, u trenutku pisanja ovog teksta bila je dostupna verzija 3.1.5, koju smo koristili prilikom pripreme materijala.
U instalaciji Cygwin-a nema ništa komplikovano, jedino što je potrebno odabrati – ogledalo s kojeg će instalator preuzeti potrebne datoteke, izaberite bilo koje i instalirajte, a takođe set alata i biblioteka, ostavljamo odabranim sve dostupne biblioteke i alate.
Instalacija drajvera
Nakon što modül bude povezan sa računarom, biće potrebno instalirati drajvere. Mogu se zatražiti od svog distributera (preporučuje se). Ne preporučujem samostalno pretraživanje interneta, jer može potrajati puno vremena da se pronađe uzrok konflikta uređaja.

Među navedenim portovima vidimo sledeće:
Windows
Linux
Opis
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 dodaj debug port
Kao što ste verovatno primetili, među portovima na snimku nema USB ADB, to je zbog toga što je ADB port u modulu po defaultu zatvoren i treba ga uključiti slanjem komande ‘AT+CUSBADB=1’ u AT-port modula i restartovati ga (to se može učiniti komandom ‘AT+CRESET’).
Na kraju ćemo dobiti potrebni interfejs u upravniku uređaja:

Sa drajverima smo završili, prelazimo na ADB.
Instalacija ADB
Povezujemo se na zvaničnu stranicu Android Developer na . Nećemo preuzimati glomazni Android Studio, dovoljno nam je komandna linija koja je dostupna za preuzimanje putem linka „Download SDK Platform-Tools for Windows”.

Preuzimamo i raspakujemo dobijeni arhiv u koren diska C.
Spremenljivke okolja
Po namestitvi Cygwin je potrebno dodati pot Cygwin/bin v spremenljivke okolja (Klasična nadzorna plošča → Sistem → Dodatne sistemske možnosti → Dodatno → Spremenljivke okolja → Sistemske spremenljivke → Path → Spremeni), kot je prikazano na spodnjem posnetku zaslona:

Na enak način dodamo pot do prenesene in razpakirane arhive ADB v koren diska C.

Večkrat kliknemo na V redu in ponovno zaženemo računalnik.
Po ponovnem zagonu lahko enostavno preverimo, ali ADB deluje pravilno, tako da odprete ukazno vrstico (Win+R → cmd) in vnesete ukaz ‘adb version’. Približno tak rezultat bomo dobili:

Povežemo modul s PC-jem (če smo ga slučajno odklopili) in preverimo, ali ga ADB vidi z ukazom ‘adb devices’:

To je to, nastavitev povezave z modulom je zaključena in lahko zaženemo shell za delo z modulom.

Razpakiranje in kompilacija SDK
Ko smo pridobili dostop do shelle in lahko začnemo delati z ukazno vrstico modula, poskusimo skompilirati svojo prvo aplikacijo za nalaganje v modul.
S tem se mnogi lahko srečujejo s težavami! Ker modul deluje na operacijskem sistemu Linux, je najbolje, da se izognemo težavam pri kompilaciji kode pod Windows – raje kompiliramo v naravnem okolju – Linux.
Ne bomo podrobno razpravljali o tem, kako v odsotnosti Linuxa in želje po namestitvi le-tega na svojo napravo, lahko namestimo Linux na virtualno. Uporabili bomo VirtualBox, namestili različico Ubuntu 20.04 (aktualna različica ob pisanju tega članka) in pod njim začeli delo s kompilatorji, SDK-ji itd.
Preklopimo v okolje Linux in razpakiramo arhiv, prejet od distributerja.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz Preklopimo v imenik sim_open_sdk in dodamo 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 tem imeniku in naslednje ukaze izvajamo, medtem ko smo v njem.
Namestimo 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 -yPython, če še ni bil nameščen:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -yin gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gccKompilacija:
Zdaj bomo morali skompilirati več datotek, zaporedno izvajamo naslednje ukaze.
Če ob kompilaciji izstopi okno za nastavitev jedra, preprosto izberemo Izhod in se vrnemo v konzolo, trenutno ni potrebno konfigurirati jedra.
Izvršimo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ makeKompiliramo bootloader:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make abootKompiliramo jedro:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
Kompiliramo osnovni datotečni sistem:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfsZa uporabnike Linuxa bo pomembno skompilirati modul voznika:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_moduleKompiliramo demo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demoPo tem se v imeniku sim_open_sdk/output pojavi 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 demonstracijo v naš modul in videli, kaj se bo zgodilo.
Zaganjanje
V imeniku sim_open_sdk lahko vidimo datoteko demo_app. Vzeli jo bomo in prenesli v koren datotečnega sistema C na računalniku, povezanem z modulom. Nato odpiramo ukazno vrstico Windows (Win+R -> cmd) in vnesemo:
C:>adb push C:demo_app /data/Konzola nam sporoči:
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 na modul in ostane nam le še, da jo zaženemo. Ne odlašajmo.
Izvršimo:
C:>adb shellRazširjamo pravice naložene datoteke:
/ # cdhmod 777 /data/demo_appИ запускаем:
/ # /data/demo_appV tej isti konzoli nam modul sporoči 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, vnesimo 7 (prehod v ukazni način) in nato 5:
Izberite možnost za testiranje iz spodaj navedenih možnosti.
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
Možnost > 7
Izberite možnost za testiranje iz spodaj navedenih možnosti.
1. pridobi različico modula 2. pridobi CSQ
3. pridobi CREG 4. pridobi ICCID
5. pridobi IMEI 6. pridobi CIMI
99. nazaj
Možnost > 5
IMEI: 867584030090489
Izberite možnost za testiranje iz spodaj navedenih možnosti.
1. pridobi različico modula 2. pridobi CSQ
3. pridobi CREG 4. pridobi ICCID
5. pridobi IMEI 6. pridobi CIMI
99. nazaj
Možnost >
Tako bomo videli IMEI modula.
В качестве заключения
Upam, da smo uspeli oblikovati splošno predstavo o tem, kako začeti z delom z modulom. V naslednjih člankih bomo podrobneje obravnavali možnosti, ki jih nudi platforma SIM7600E-H, ter kako lahko na daljavo posodobite svojo aplikacijo v modulu.
Vabim, da zastavite vprašanja v komentarjih in navedete, kateri vidik možnosti modula naj bi se odražal v prihodnjih člankih.
Izvor: habr.com





