OpenLinux u sastavu modula SIM7600E-H

OpenLinux u sastavu modula SIM7600E-H

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 SIMCom Wireless Solutions 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 od tod, 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:

OpenLinux u sastavu modula SIM7600E-H

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)

SIMCom Wireless Solutions 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:

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

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.

  1. Prihvatamo ugovor o licenci
    OpenLinux u sastavu modula SIM7600E-H
  2. Navodimo folder za instalaciju
    OpenLinux u sastavu modula SIM7600E-H
  3. Neophodne komponente ostavljamo nepromenjene
    OpenLinux u sastavu modula SIM7600E-H
  4. Ostavljamo kako jeste
    OpenLinux u sastavu modula SIM7600E-H
  5. Nekoliko puta “Next”, “Install” i u suštini to je sve
    OpenLinux u sastavu modula SIM7600E-H

Instalacija Cygwin-a

Dalje, za razvoj će biti potreban set biblioteka i alata iz paketa koji se pruža Cygwin. 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.

OpenLinux u sastavu modula SIM7600E-H

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:

OpenLinux u sastavu modula SIM7600E-H

Sa drajverima smo završili, prelazimo na ADB.

Instalacija ADB

Povezujemo se na zvaničnu stranicu Android Developer na linku. Nećemo preuzimati glomazni Android Studio, dovoljno nam je komandna linija koja je dostupna za preuzimanje putem linka „Download SDK Platform-Tools for Windows”.

OpenLinux u sastavu modula SIM7600E-H

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:

OpenLinux u sastavu modula SIM7600E-H

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

OpenLinux u sastavu modula SIM7600E-H

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:

OpenLinux u sastavu modula SIM7600E-H

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

OpenLinux u sastavu modula SIM7600E-H

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

OpenLinux u sastavu modula SIM7600E-H

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 -y

Python, če še 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 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$ make

Kompiliramo bootloader:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot

Kompiliramo 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 rootfs

Za uporabnike Linuxa bo pomembno skompilirati modul voznika:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module

Kompiliramo demo:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo

Po 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 shell

Razširjamo pravice naložene datoteke:

/ # cdhmod 777 /data/demo_app

И запускаем:

/ # /data/demo_app

V 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

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster