OpenLinux kao dio SIM7600E-H modula

OpenLinux kao dio SIM7600E-H modula

Mehanizam za razvoj prilagođene aplikacije i njeno učitavanje u modul dostupan je i pod operativnim sistemima Linux i Windows. U ovom članku ćemo detaljno pogledati kako, koristeći primjere iz dostavljenog SDK-a SIMCom bežična rješenja kompajlirajte i učitajte prilagođenu aplikaciju u modul.

Prije pisanja članka, jedan od mojih poznanika, daleko od razvoja za Linux, zamolio me da što detaljnije pristupim pitanju opisivanja procesa razvoja vlastite aplikacije za modul SIM7600E-H. Kriterijum za ocjenu pristupačnosti prezentacije materijala bio je izraz „da razumijem“.

Pozivam vas da se upoznate sa onim što se dogodilo.

Članak se redovno dopunjuje i ažurira

Preludij

Obično se moduli mobilne komunikacije koriste samo za prijenos podataka, glasovne pozive, SMS prijenos i slično. Sve se to radi putem AT naredbi koje šalje vanjski kontrolni mikrokontroler. Ali postoji kategorija modula koji vam omogućavaju da izvršite prilagođeni kod učitan izvana. U nekim slučajevima, ovo značajno smanjuje ukupni budžet uređaja, omogućavajući vam da instalirate jednostavniji (i jednako proračunat) mikrokontroler na ploču ili ga potpuno napustite. Pojavom LTE modula kojima upravlja Android ili Linux OS i njihovim moćnim resursima, moguće je riješiti sve zadatke koji su dostupni popularnim procesorima. Ovaj članak će govoriti o SIM7600E-H, koji kontrolira Linux OS. Pogledat ćemo kako preuzeti i pokrenuti izvršnu aplikaciju.

Na mnogo načina, materijal se zasniva na dokumentu “SIM7600 Open Linux development quide”, ali neki dodaci i, prije svega, ruska verzija će biti korisni. Članak će pomoći onima koji tek počinju savladati modul da shvate kako preuzeti demo aplikaciju i pružiti potrebne vještine za kasniji rad.

Ukratko o tome ko je SIM7600E-H

SIM7600E-H je modul izgrađen na ARM Cortex-A7 1.3GHz procesoru kompanije Qualcomm, koji ima Linux operativni sistem (kernel 3.18.20) unutra, sposoban za rad sa evropskim (uključujući ruski) frekventnim opsezima 2G/3G/ LTE koji podržava Cat .4, pružajući maksimalnu brzinu preuzimanja do 150Mbps i brzinu upload-a do 50Mbps. Bogati periferni uređaji, industrijski temperaturni raspon i prisutnost ugrađene GPS/GLONASS navigacije pokrivaju sve zahtjeve za modernim modularnim rješenjem u M2M polju.

Pregled sistema

SIM7600E-H modul je baziran na Linux operativnom sistemu (kernel 3.18.20). Zauzvrat, sistem datoteka je izgrađen na bazi sistema datoteka u dnevniku UBIFS (Unsorted Block Image File System).

Važne karakteristike ovog sistema datoteka uključuju:

  • radi sa particijama, omogućava kreiranje, brisanje ili promjenu njihove veličine;
  • osigurava poravnanje snimanja po cijelom volumenu medija;
  • radi sa lošim blokovima;
  • minimizira vjerovatnoću gubitka podataka tokom nestanka struje ili drugih kvarova;
  • vođenje dnevnika.

Opis preuzet odavde, postoji i detaljniji opis takvog sistema datoteka.

One. Ovaj tip fajl sistema je idealan za teške uslove rada modula i moguće probleme sa napajanjem. Ali to ne znači da će nestabilni uvjeti napajanja biti očekivani način rada modula, to samo ukazuje na veću održivost uređaja.

memorija

Distribucija memorijskih područja je konstruirana na sljedeći način:

OpenLinux kao dio SIM7600E-H modula

Postoje tri glavna područja koja treba istaknuti:

ubi0:rootfs – samo za čitanje i sadrži sam Linux kernel
ubi0:usrfs – koristi se prvenstveno za skladištenje korisničkih programa i podataka
ubi0:cahcefs – rezervirano za FOTA ažuriranja. Ako raspoloživi prostor nije dovoljan za preuzimanje ažuriranja, sistem će izbrisati neiskorištene datoteke i tako osloboditi prostor. Ali iz sigurnosnih razloga, ne biste trebali stavljati svoje datoteke tamo.

Sve tri sekcije su raspoređene na sljedeći način:

Sistem podataka
veličina
Rabljeni
dostupan
Koristi%
Montiran 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%
/skladiste

Dostupna funkcionalnost

Kao što je već spomenuto, modul je izgrađen na Cortex A7 čipsetu kompanije Qualcomm. Bilo bi pogrešno ne obezbediti jezgro tako visokih performansi za obradu korisničkog programa i rasterećenje glavnog procesora uređaja tako što se neki deo programa učitava u modul.

Za korisnički program bit će nam dostupni sljedeći periferni načini rada:

Pin br.
Ime
Sys GPIO br.
Zadana radnja
Func1
Func2
povući
Prekid buđenja

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
prirodni resursi
-
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
DTRMore
-
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
-

Slažem se, lista je impresivna i imajte na umu: dio periferije se koristi za rad modula kao rutera. One. Na osnovu takvog modula možete napraviti mali ruter koji će distribuirati Internet putem Wi-Fi mreže. Inače, postoji gotovo rješenje pod nazivom SIM7600E-H-MIFI i to je miniPCIE kartica sa zalemljenim SIM7600E-H modulom i nekoliko antenskih pinova, jedan od njih je i Wi-Fi antena. Međutim, ovo je tema za poseban članak.

srijeda (nije dan u sedmici)

SIMCom bežična rješenja pružaju mogućnost programerima da odaberu najpoznatije razvojno okruženje za Linux ili Windows. Ako govorimo o jednoj izvršnoj aplikaciji na modulu, onda je bolje izabrati Windows, to će biti brže i lakše. Ako se očekuje složena arhitektura aplikacije i naknadne nadogradnje, bolje je koristiti Linux. Također nam je potreban Linux za kompajliranje izvršnih datoteka za naknadno učitavanje u modul; virtuelna mašina je dovoljna za kompilaciju.

Ono što vam je potrebno nije besplatno dostupno za preuzimanje - SDK, koji možete zatražiti od svog distributera.

Instaliranje uslužnih programa za rad s modulom

U nastavku ćemo raditi pod Windows-om kao najpoznatiji OS većini korisnika.

Morat ćemo instalirati potreban softver u nekoliko jednostavnih koraka kako bismo naknadno savladali rad s modulom:

  1. GNU / Linux
  2. Cygwin
  3. Vozači
  4. ADB

Instalacija GNU/Linuxa

Da biste napravili aplikaciju, možete koristiti bilo koji ARM-Linux kompatibilan kompajler. Koristit ćemo SourceryCodeBenchLiteARM GNU/Linuxtranslater dostupan za preuzimanje na link.

Kako bih osigurao da su sve komponente ispravno instalirane, ostavit ću nekoliko snimaka ekrana procesa instalacije. U principu, nema ništa komplicirano u instalaciji.

Kako bih osigurao da su sve komponente ispravno instalirane, ostavit ću nekoliko snimaka ekrana procesa instalacije. U principu, nema ništa komplicirano u instalaciji.

  1. Prihvatamo ugovor o licenci
    OpenLinux kao dio SIM7600E-H modula
  2. Odredite instalacioni folder
    OpenLinux kao dio SIM7600E-H modula
  3. Potrebne komponente ostavljamo nepromijenjene
    OpenLinux kao dio SIM7600E-H modula
  4. Ostavite kako jeste
    OpenLinux kao dio SIM7600E-H modula
  5. Nekoliko puta "Dalje", "Instaliraj" i u suštini to je to
    OpenLinux kao dio SIM7600E-H modula

Instaliranje Cygwina

Nadalje, za razvoj će vam trebati skup biblioteka i uslužnih programa iz priloženog skupa Cygwin. Ovdje je sve jednostavno, trenutnu verziju Cygwina možete besplatno preuzeti na službenoj web stranici projekta; u vrijeme pisanja bila je dostupna verzija 3.1.5, što smo koristili prilikom pripreme materijala.

Nema ništa komplicirano u instaliranju Cygwina, jedino što trebate odabrati je ogledalo iz kojeg će instalater preuzeti potrebne datoteke, odabrati bilo koju i instalirati je, kao i skup uslužnih programa i biblioteka, ostavljajući sve dostupne biblioteke i odabrani uslužni programi.

Instaliranje upravljačkih programa

Nakon što se modul poveže sa računarom, moraćete da instalirate drajvere. Ovo možete zatražiti od vašeg distributera (preporučeno). Ne preporučujem da samostalno pretražujete internet, jer... Može potrajati dosta vremena da se pronađe šta je uzrokovalo sukob uređaja.

OpenLinux kao dio SIM7600E-H modula

Među odabranim portovima vidimo sljedeće:

Windows
Linux
Opis

SimTech HS-USB dijagnostika
USB serijski
Dijagnostičko sučelje

SimTech HS-USB NMEA
USB serijski
GPS NMEA interfejs

SimTech HS-USB AT port
USB serijski
Interfejs AT porta

SimTech HS-USB modem
USB serijski
Interfejs modemskog porta

SimTech HS-USB audio
USB serijski
USB audio sučelje

SimTech HS-USB WWAN adapter
USB Net
NDIS WWAN interfejs

Android kompozitni ADB interfejs
USB ADB
Android dodaje port za otklanjanje grešaka

Kao što ste vjerovatno primijetili, među portovima na snimku ekrana nema USB ADB-a, to je zato što je ADB port u modulu po defaultu zatvoren i morate ga omogućiti slanjem naredbe 'AT+CUSBADB=1' na AT port modula i ponovo ga pokrenite (ovo se može uraditi naredbom 'AT+CRESET').

Kao rezultat, dobijamo željeno sučelje u upravitelju uređaja:

OpenLinux kao dio SIM7600E-H modula

Završili smo sa drajverima, idemo na ADB.

ADB instalacija

Idite na službenu web stranicu Android Developer link. Nećemo preuzimati glomazni Android Studio, samo nam je potrebna komandna linija, dostupna za preuzimanje putem linka „Preuzmi SDK Platform-Tools za Windows“.

OpenLinux kao dio SIM7600E-H modula

Preuzmite i raspakujte rezultirajuću arhivu u korijen diska C.

Varijable okruženja

Nakon instalacije Cygwin-a, moraćete da dodate putanju Cygwin/bin/ do varijabli razvojnog okruženja (Klasična kontrolna tabla → Sistem → Napredne sistemske postavke → Napredno → Promenljive okruženja → Sistemske varijable → Putanja → Uredi) kao što je prikazano na slici ispod:

OpenLinux kao dio SIM7600E-H modula

Slično tome, dodajte putanju do preuzete i raspakirane ADB arhive u korijen diska C.

OpenLinux kao dio SIM7600E-H modula

Kliknite OK nekoliko puta i ponovo pokrenite računar.

Nakon ponovnog pokretanja, možete lako provjeriti da li ADB radi ispravno otvaranjem komandne linije (Win+R → cmd) i upisivanjem naredbe ‘adb version’. Dobijamo nešto ovako:

OpenLinux kao dio SIM7600E-H modula

Spojimo modul na PC (ako se desi da se isključi) i provjerimo da li ga ADB vidi pomoću naredbe 'adb devices':

OpenLinux kao dio SIM7600E-H modula

Gotovo, ovim je završena konfiguracija veze s modulom i možemo pokrenuti shell za rad s modulom.

OpenLinux kao dio SIM7600E-H modula

Raspakivanje i kompajliranje SDK-a

Sada kada imamo pristup ljusci i možemo početi raditi sa komandnom linijom modula, pokušajmo sastaviti našu prvu aplikaciju za učitavanje u modul.

Mnogi ljudi mogu imati poteškoća s ovim! Jer Modul radi na Linux operativnom sistemu; kako bi se izbjegle kolizije prilikom kompajliranja koda pod Windowsom, najbolje je kompajlirati u izvornom okruženju - Linux.

Nećemo se detaljno zadržavati na tome kako, u nedostatku Linuxa i želje da ga instalirate na svoj stroj, možete ga instalirati na virtualnu mašinu. Koristićemo VirtualBox, instalirati Ubuntu verziju 20.04 (trenutnu verziju u trenutku pisanja) i pod njim ćemo početi da radimo sa kompajlerima, SDK-ovima itd.

Idemo u Linux okruženje i raspakujemo arhivu primljenu od distributera.

simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz 

Idite u direktorij sim_open_sdk i dodajte okruženje:

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 

Ostajemo u istoj fascikli i izvršavamo sledeće komande dok smo u njoj.
Instalirajte biblioteku libncurses5-dev ako nije instalirana:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y

Python, ako ni on nije instaliran:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y

i gcc:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc

Kompilacija:

Sada moramo kompajlirati nekoliko fajlova, izvršavamo sledeće komande uzastopno.

Ako se prozor za konfiguraciju kernela pojavi tokom kompilacije, samo izaberite Izađi i vratite se na konzolu; ne moramo sada da konfigurišemo kernel.

Vršimo:

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

Kompajliranje bootloadera:

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

Kompajliranje kernela:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel

Kompajlirajte korijenski sistem datoteka:

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

Za korisnike Linuxa bit će relevantno kompajlirati upravljački program modula:

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

Sastavimo demo:

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

Nakon čega će se pojaviti nekoliko novih datoteka u direktoriju sim_open_sdk/output:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn  boot.img  demo_app  helloworld  system.img

Demo

Pokušajmo učitati demo u naš modul i vidjeti šta će iz njega proizaći.

Preuzimanje

U direktoriju sim_open_sdk možemo vidjeti datoteku demo_app. Uzimamo ga i prenosimo u korijen diska C na PC-u na koji je modul spojen. Zatim pokrenite Windows komandnu liniju (Win+R -> cmd) i unesite:

C:>adb push C:demo_app /data/

Konzola će nam reći:

C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)

To znači da je datoteka uspješno poslana u modul i sve što treba da uradimo je da je pokrenemo. Nemojmo oklevati.

Vršimo:

C:>adb shell

Proširujemo prava na preuzetu datoteku:

/ # cdhmod 777 /data/demo_app

I trčimo:

/ # /data/demo_app

U istoj konzoli, modul će nam reći sljedeće:

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 >   

Pogledajmo IMEI modula, unesite 7 (prebacite se u komandni način), a zatim unesite 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 >

Na ovaj način ćemo vidjeti IMEI modula.

Kao zaključak

Nadam se da smo uspeli da dobijemo opštu ideju o tome kako da počnemo sa modulom. U sljedećim člancima ćemo detaljnije pogledati mogućnosti koje nudi platforma SIM7600E-H, kao i kako možete daljinski ažurirati vlastitu aplikaciju u modulu.

Pozivam vas da postavljate pitanja u komentarima, a također naznačite koji aspekt mogućnosti modula treba odraziti u narednim člancima.

izvor: www.habr.com

Dodajte komentar