Kohandatud rakenduse arendamise ja moodulisse laadimise mehhanism on saadaval nii Linuxi kui ka Windowsi operatsioonisüsteemides. Selles artiklis vaatleme üksikasjalikult, kuidas, kasutades esitatud SDK näiteid
Enne artikli kirjutamist palus üks mu tuttav, kes pole kaugeltki Linuxi jaoks arendatud, läheneda küsimusele, kuidas kirjeldada SIM7600E-H mooduli enda rakenduse arendamise protsessi võimalikult üksikasjalikult. Materjali esitluse ligipääsetavuse hindamise kriteeriumiks oli fraas "nii, et ma aru saaksin".
Kutsun teid juhtunuga tutvuma.
Artiklit täiendatakse ja ajakohastatakse regulaarselt
Eelmäng
Tavaliselt kasutatakse mobiilsidemooduleid ainult andmeedastuseks, häälkõnedeks, SMS-ide edastamiseks jms. Kõik see toimub välise juhtmikrokontrolleriga saadetavate AT-käskude kaudu. Kuid on moodulite kategooria, mis võimaldab teil käivitada väljast laaditud kohandatud koodi. Mõnel juhul vähendab see oluliselt seadme üldist eelarvet, võimaldades paigaldada plaadile lihtsama (ja sama eelarvega) mikrokontrolleri või sellest üldse loobuda. Androidi või Linuxi OS-i juhitavate LTE-moodulite ja nende võimsate ressursside tulekuga on võimalik lahendada kõiki populaarsetele protsessoritele kättesaadavaid ülesandeid. See artikkel räägib SIM7600E-H-st, mida juhib Linux OS. Vaatame, kuidas käivitatavat rakendust alla laadida ja käivitada.
Materjal põhineb paljuski dokumendil “SIM7600 Open Linux development quide”, kuid kasuks tulevad mõned täiendused ja ennekõike venekeelne versioon. Artikkel aitab neil, kes alles hakkavad moodulit omandama, mõista, kuidas demorakendust alla laadida ja pakkuda edasiseks tööks vajalikke oskusi.
Lühidalt sellest, kes on SIM7600E-H
SIM7600E-H on Qualcommi ARM Cortex-A7 1.3 GHz protsessorile ehitatud moodul, mille sees on Linuxi operatsioonisüsteem (tuum 3.18.20), mis on võimeline töötama Euroopa (sh Venemaa) sagedusribadega 2G/3G/LTE, toetades Cat. .4, mis pakub maksimaalset allalaadimiskiirust kuni 150 Mbps ja üleslaadimiskiirust kuni 50 Mbps. Rikkalikud välisseadmed, tööstuslik temperatuurivahemik ja sisseehitatud GPS/GLONASS-navigatsiooni olemasolu katavad kõik nõuded M2M-valdkonna kaasaegsele modulaarsele lahendusele.
Süsteemi ülevaade
Moodul SIM7600E-H põhineb Linuxi operatsioonisüsteemil (kernel 3.18.20). Failisüsteem on omakorda üles ehitatud päevikuga failisüsteemi UBIFS (Unsorted Block Image File System) alusel.
Selle failisüsteemi olulised funktsioonid on järgmised:
- töötab partitsioonidega, võimaldab luua, kustutada või muuta nende suurust;
- tagab salvestuse joondamise kogu meediumimahu ulatuses;
- töötab halbade plokkidega;
- minimeerib andmete kadumise tõenäosust elektrikatkestuse või muude rikete ajal;
- palkide pidamine.
Kirjeldus võetud
Need. Seda tüüpi failisüsteem sobib ideaalselt mooduli raskete töötingimuste ja võimalike toiteprobleemide jaoks. Kuid see ei tähenda, et mooduli eeldatav töörežiim on ebastabiilsed toitetingimused; see näitab ainult seadme suuremat elujõulisust.
mälu
Mälualade jaotus on konstrueeritud järgmiselt:
Esile tuleb tõsta kolm peamist valdkonda:
ubi0:rootfs - kirjutuskaitstud ja sisaldab Linuxi tuuma
ubi0:usrfs – kasutatakse peamiselt kasutajaprogrammide ja andmete salvestamiseks
ubi0: cahcefs – reserveeritud FOTA värskenduste jaoks. Kui saadaolevast ruumist ei piisa värskenduse allalaadimiseks, kustutab süsteem kasutamata failid ja vabastab seega ruumi. Kuid turvakaalutlustel ei tohiks te oma faile sinna paigutada.
Kõik kolm jaotist on jaotatud järgmiselt:
Failisüsteem
SUURUS
Kasutatud
Mudelipõhine
Kasuta%
Paigaldatud peale
ubi0:rootfs
40.7M
36.2M
4.4M
89%
/
ubi0:usrfs
10.5M
360K
10.1M
3%
/ andmed
ubi0: vahemälu
50.3M
20K
47.7M
0%
/ vahemälu
Saadaval funktsionaalsus
Nagu eespool mainitud, on moodul üles ehitatud Qualcommi Cortex A7 kiibistikule. Oleks vale jätta kasutajaprogrammi töötlemiseks ja seadme põhiprotsessori mahalaadimiseks kasutamata nii suure jõudlusega tuuma, laadides mõne programmi osa moodulisse.
Kasutajaprogrammi jaoks on meile saadaval järgmised välisseadmete töörežiimid:
PIN-kood
Nimi
Sys GPIO nr.
Vaikimisi toiming
Funktsioon1
Funktsioon2
Tõmmata
Äratuse katkestus
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-kaart
-
-
B-PD
-
22
SD_DATA0
-
SD-kaart
-
-
B-PD
-
23
SD_DATA1
-
SD-kaart
-
-
B-PD
-
24
SD_DATA2
-
SD-kaart
-
-
B-PD
-
25
SD_DATA3
-
SD-kaart
-
-
B-PD
-
26
SD_CLK
-
SD-kaart
-
-
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_ET
GPIO
MIFI_POWER_ET
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
olek
GPIO
olek
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
-
Nõus, nimekiri on muljetavaldav ja pange tähele: osa välisseadmetest kasutatakse mooduli kasutamiseks ruuterina. Need. Sellise mooduli põhjal saate teha väikese ruuteri, mis levitab Internetti Wi-Fi kaudu. Muide, on olemas valmislahendus nimega SIM7600E-H-MIFI ja see on miniPCIE kaart, millel on joodetud SIM7600E-H moodul ja mitu antenni tihvti, üks neist on Wi-Fi antenn. See on aga eraldi artikli teema.
Kolmapäev (mitte nädalapäev)
See, mida vajate, pole tasuta allalaadimiseks saadaval – SDK, mida saate oma edasimüüjalt küsida.
Utiliitide installimine mooduliga töötamiseks
Edaspidi töötame Windowsi all enamiku kasutajate jaoks kõige tuttavama OS-ina.
Peame installima vajaliku tarkvara mõne lihtsa sammuga, et hiljem mooduliga töötada:
- GNU / Linux
- Cygwin
- Juhid
- ADB
GNU/Linuxi installimine
Rakenduse koostamiseks võite kasutada mis tahes ARM-Linuxiga ühilduvat kompilaatorit. Kasutame SourceryCodeBenchLiteARM GNU/Linuxtranslaterit, mis on allalaadimiseks saadaval aadressil
Tagamaks, et kõik komponendid on õigesti installitud, jätan installiprotsessist mõned ekraanipildid. Põhimõtteliselt pole paigalduses midagi keerulist.
Tagamaks, et kõik komponendid on õigesti installitud, jätan installiprotsessist mõned ekraanipildid. Põhimõtteliselt pole paigalduses midagi keerulist.
- Aktsepteerime litsentsilepingut
- Määrake installikaust
- Jätame vajalikud komponendid muutmata
- Jätke see nii nagu on
- Mitu korda "Järgmine", "Install" ja põhimõtteliselt kõik
Cygwini installimine
Lisaks vajate arendamiseks kaasasolevast komplektist raamatukogude ja utiliitide komplekti
Cygwini installimisel pole midagi keerulist, ainus asi, mida peate valima, on peegel, millest installija laadib alla vajalikud failid, valib need ja installib selle, samuti utiliitide ja teekide komplekti, jättes alles kõik saadaolevad teegid ja kommunaalteenused valitud.
draiverite
Kui moodul on arvutiga ühendatud, peate installima draiverid. Neid saab küsida oma edasimüüjalt (soovitatav). Ma ei soovita ise Internetist otsida, sest... Seadme konflikti põhjustanud põhjuse leidmine võib võtta palju aega.
Valitud portide hulgas näeme järgmist:
Windows
Linux
Kirjeldus
SimTechi HS-USB diagnostika
USB-jada
Diagnostiline liides
SimTech HS-USB NMEA
USB-jada
GPS NMEA liides
SimTechi HS-USB AT-port
USB-jada
AT-pordi liides
SimTech HS-USB modem
USB-jada
Modemi pordi liides
SimTech HS-USB heli
USB-jada
USB audio liides
SimTechi HS-USB WWAN-adapter
USB-võrk
NDIS WWAN liides
Android Composite ADB liides
USB ADB
Android lisab silumispordi
Nagu ilmselt märkasite, pole ekraanipildil olevate portide hulgas USB ADB-d, kuna mooduli ADB-port on vaikimisi suletud ja peate selle lubama, saates AT-le käsu 'AT+CUSBADB=1'. mooduli porti ja taaskäivitage see (seda saab teha käsuga 'AT+CRESET').
Selle tulemusel saame seadmehalduris soovitud liidese:
Oleme draiveritega valmis, liigume edasi ADB juurde.
ADB installimine
Minge ametlikule Androidi arendaja veebisaidile
Laadige saadud arhiiv alla ja pakkige lahti draivi C juure.
Keskkonnamuutujad
Pärast Cygwini installimist peate lisama arenduskeskkonna muutujatele tee Cygwin/bin/ (Klassikaline juhtpaneel → Süsteem → Süsteemi täpsemad sätted → Täpsemad → Keskkonnamuutujad → Süsteemimuutujad → Tee → Redigeerimine), nagu on näidatud alloleval ekraanipildil:
Samamoodi lisage allalaaditud ja lahtipakkitud ADB arhiivi tee draivi C juure.
Klõpsake mitu korda OK ja taaskäivitage arvuti.
Pärast taaskäivitamist saate hõlpsalt kontrollida, kas ADB töötab õigesti, avades käsurea (Win+R → cmd) ja kirjutades käsu 'adb version'. Saame midagi sellist:
Ühendame mooduli arvutiga (kui juhtus, et see katkes) ja kontrollime, kas ADB näeb seda käsuga 'adb devices':
Valmis, see lõpetab ühenduse konfigureerimise mooduliga ja saame käivitada kesta, et mooduliga töötada.
SDK lahtipakkimine ja kompileerimine
Nüüd, kui meil on juurdepääs kestale ja saame alustada tööd mooduli käsureaga, proovime kompileerida oma esimese rakenduse, mida moodulisse laadida.
Paljudel inimestel võib sellega raskusi olla! Sest Moodul töötab Linuxi operatsioonisüsteemis, Windowsi all koodi koostamisel kokkupõrgete vältimiseks on kõige parem kompileerida algkeskkonnas - Linuxis.
Me ei peatu üksikasjalikult sellel, kuidas saate Linuxi puudumisel ja soovi korral seda oma arvutisse installida virtuaalsesse masinasse. Kasutame VirtualBoxi, installime Ubuntu versiooni 20.04 (praegune versioon kirjutamise ajal) ja selle all hakkame töötama kompilaatorite, SDK-de jne.
Läheme Linuxi keskkonda ja pakime turustajalt saadud arhiivi lahti.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz
Minge sim_open_sdk kataloogi ja lisage keskkond:
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
Jääme samasse kausta ja täidame selles viibides järgnevaid käske.
Installige libncurses5-dev teek, kui seda pole installitud:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y
Python, kui ka seda pole installitud:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y
ja gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc
Koostamine:
Nüüd peame kompileerima mitu faili, käivitame järjestikku järgmised käsud.
Kui kerneli seadistusaken ilmub kompileerimise ajal, valige lihtsalt Exit ja naaske konsooli; me ei pea tuuma kohe konfigureerima.
Me teeme:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make
Alglaaduri kompileerimine:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot
Kerneli kompileerimine:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
Kompileerige juurfailisüsteem:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs
Linuxi kasutajate jaoks on asjakohane kompileerida mooduli draiver:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module
Koostame demo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo
Pärast seda kuvatakse sim_open_sdk/output kataloogis mitu uut faili:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn boot.img demo_app helloworld system.img
Demo
Proovime demo oma moodulisse laadida ja vaatame, mis sellest välja tuleb.
Alla laadima
Kataloogis sim_open_sdk näeme faili demo_app. Võtame selle ja edastame selle arvuti, millega moodul on ühendatud, draivi C juurele. Seejärel käivitage Windowsi käsurida (Win + R -> cmd) ja sisestage:
C:>adb push C:demo_app /data/
Konsool ütleb meile:
C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)
See tähendab, et fail saadeti edukalt moodulisse ja meil jääb vaid see käivitada. Ärme kõhkle.
Me teeme:
C:>adb shell
Laiendame allalaaditud faili õigusi:
/ # cdhmod 777 /data/demo_app
Ja me jookseme:
/ # /data/demo_app
Samas konsoolis ütleb moodul meile järgmist:
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 >
Vaatame mooduli IMEI-d, sisestage 7 (lülituge käsurežiimi) ja seejärel sisestage 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 >
Nii näeme mooduli IMEI-d.
Kokkuvõtteks
Loodan, et saime üldise ettekujutuse, kuidas mooduliga alustada. Järgmistes artiklites vaatleme lähemalt SIM7600E-H platvormi pakutavaid võimalusi ja ka seda, kuidas saate moodulis oma rakendust eemalt värskendada.
Kutsun teid üles kommentaarides küsimusi esitama ja osutama ka sellele, millist mooduli võimaluste aspekti tuleks järgmistes artiklites kajastada.
Allikas: www.habr.com