OpenLinux kot del modulov SIM7600E-H

OpenLinux kot del modulov SIM7600E-H

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 Brezžične rešitve SIMCom prevede in naloži aplikacijo po meri v modul.

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 zato, obstaja tudi podrobnejši opis takega datotečnega sistema.

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:

OpenLinux kot del modulov SIM7600E-H

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)

Brezžične rešitve SIMCom ponujajo razvijalcem možnost, da izberejo najbolj znano razvojno okolje za Linux ali Windows. Če govorimo o eni izvedljivi aplikaciji na modulu, potem je bolje izbrati Windows, tako bo hitreje in lažje. Če se pričakuje zapletena arhitektura aplikacije in kasnejše nadgradnje, je bolje uporabiti Linux. Linux potrebujemo tudi za prevajanje izvršljivih datotek za kasnejše nalaganje v modul, za prevajanje zadostuje virtualni stroj.

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:

  1. GNU / Linux
  2. Cygwin
  3. Vozniki
  4. 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 povezava.

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.

  1. Sprejemamo licenčno pogodbo
    OpenLinux kot del modulov SIM7600E-H
  2. Določite namestitveno mapo
    OpenLinux kot del modulov SIM7600E-H
  3. Potrebne komponente pustimo nespremenjene
    OpenLinux kot del modulov SIM7600E-H
  4. Pusti tako kot je
    OpenLinux kot del modulov SIM7600E-H
  5. Večkrat "Naprej", "Namesti" in v bistvu je to to
    OpenLinux kot del modulov SIM7600E-H

Namestitev Cygwin

Poleg tega boste za razvoj potrebovali nabor knjižnic in pripomočkov iz priloženega nabora Cygwin. Tukaj je vse preprosto, trenutno različico Cygwina lahko brezplačno prenesete na uradni spletni strani projekta, v času pisanja je bila na voljo različica 3.1.5, ki smo jo uporabili pri pripravi gradiva.

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.

OpenLinux kot del modulov SIM7600E-H

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:

OpenLinux kot del modulov SIM7600E-H

Končali smo z gonilniki, pojdimo na ADB.

Namestitev ADB

Pojdite na uradno spletno mesto za razvijalce za Android povezava. Ne bomo prenesli obsežnega Android Studia, potrebujemo samo ukazno vrstico, ki je na voljo za prenos prek povezave »Prenos SDK Platform-Orodja za Windows«.

OpenLinux kot del modulov SIM7600E-H

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:

OpenLinux kot del modulov SIM7600E-H

Podobno dodajte pot do prenesenega in razpakiranega arhiva ADB v koren pogona C.

OpenLinux kot del modulov SIM7600E-H

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:

OpenLinux kot del modulov SIM7600E-H

Povežimo modul z računalnikom (če je slučajno odklopljen) in preverimo, ali ga ADB vidi z ukazom 'adb devices':

OpenLinux kot del modulov SIM7600E-H

Končano, s tem je konfiguracija povezave z modulom končana in lahko zaženemo lupino za delo z modulom.

OpenLinux kot del modulov SIM7600E-H

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

Dodaj komentar