Aplikazio pertsonalizatu bat garatzeko eta moduluan kargatzeko mekanismoa eskuragarri dago Linux zein Windows sistema eragileetan. Artikulu honetan nola aztertuko dugu, emandako SDK-ko adibideak erabiliz
Artikulua idatzi aurretik, nire ezagun batek, Linuxerako garatzetik urrun, SIM7600E-H modulurako nire aplikazio propioa garatzeko prozesua ahalik eta xehetasun gehienetan deskribatzeko gaiari heltzeko eskatu zidan. Materialaren aurkezpenaren irisgarritasuna ebaluatzeko irizpidea "uler dezadan" esaldia izan zen.
Gertatutakoa ezagutzera gonbidatzen zaitut.
Artikulua aldizka osatzen eta eguneratzen da
Aurreskua
Normalean, komunikazio zelularreko moduluak datu-transmisiorako, ahots-deietarako, SMS transmisiorako eta antzekoetarako soilik erabiltzen dira. Hori guztia kanpoko kontroleko mikrokontrolagailu batetik bidalitako AT komandoen bidez egiten da. Baina bada kanpotik kargatutako kode pertsonalizatua exekutatzeko aukera ematen duten moduluen kategoria bat. Zenbait kasutan, horrek nabarmen murrizten du gailuaren aurrekontu orokorra, mikrokontrolagailu sinpleago bat (eta aurrekontu berdina) plakan instalatzeko edo guztiz uzteko aukera emanez. Android edo Linux OS-ek kontrolatutako LTE moduluen etorrerarekin eta haien baliabide indartsuekin, posible da prozesadore ezagunen eskura dauden edozein zeregin konpontzea. Artikulu honetan SIM7600E-Hri buruz hitz egingo da, Linux OS-ek kontrolatua. Aplikazio exekutagarri bat nola deskargatu eta exekutatu aztertuko dugu.
Modu askotan, materiala "SIM7600 Open Linux development quide" dokumentuan oinarritzen da, baina gehigarri batzuk eta, lehenik eta behin, errusiar bertsioa erabilgarriak izango dira. Artikuluak modulua menperatzen hasi berri direnei demo aplikazioa nola deskargatu ulertzen lagunduko die eta hurrengo lanerako beharrezko trebetasunak eskaintzen.
SIM7600E-H nor den laburki
SIM7600E-H Qualcomm-en ARM Cortex-A7 1.3GHz prozesadorean eraikitako modulua da, Linux sistema eragilea (kernel 3.18.20) barnean duena, Europako (errusiakoa barne) maiztasun-bandekin lan egiteko gai den Cat onartzen duten 2G/3G/ LTE. .4, 150 Mbps-ko gehienezko deskarga-abiadura eta 50 Mbps-ko igoera-abiadura eskaintzen ditu. Periferiko aberatsek, industria-tenperatura-barruti batek eta GPS/GLONASS nabigazio integratuaren presentziak M2M eremuko soluzio modular moderno baterako edozein eskakizun estaltzen dute.
Sistemaren ikuspegi orokorra
SIM7600E-H modulua Linux sistema eragilean oinarritzen da (kernel 3.18.20). Era berean, fitxategi-sistema UBIFS (Unsorted Block Image File System) aldizkariko fitxategi-sisteman oinarrituta eraikitzen da.
Fitxategi-sistema honen ezaugarri garrantzitsuenak hauek dira:
- partizioekin lan egiten du, haien tamaina sortu, ezabatu edo aldatzeko aukera ematen du;
- grabaketa lerrokatzea bermatzen du multimedia-bolumen osoan zehar;
- Bad blocks-ekin lan egiten du;
- argindar etenaldi batean edo beste hutsegite batzuetan datuak galtzeko probabilitatea murrizten du;
- erregistroak mantentzea.
Hartutako deskribapena
Horiek. Fitxategi-sistema mota hau ezin hobea da moduluaren funtzionamendu-baldintza gogoretarako eta potentzia-arazo posibleetarako. Baina horrek ez du esan nahi potentzia-baldintza ezegonkorrak moduluaren funtzionamendu-modua espero direnik; horrek gailuaren bideragarritasun handiagoa adierazten du soilik.
ΠΠ°ΠΌΡΡΡ
Memoria-eremuen banaketa honela eraikitzen da:
Hiru arlo nagusi nabarmendu behar dira:
ubi0:rootfs β irakurtzeko soilik eta Linux nukleoa bera dauka
ubi0:usrfs β erabiltzailearen programa eta datuak gordetzeko erabiltzen da batez ere
ubi0:cahcefs - FOTA eguneratzeetarako gordeta. Eskuragarri dagoen lekua ez bada nahikoa eguneratzea deskargatzeko, sistemak ezabatu egingo ditu erabiltzen ez diren fitxategiak eta, horrela, lekua askatuko du. Baina segurtasun arrazoiengatik, ez dituzu zure fitxategiak bertan jarri behar.
Hiru atalak honela banatuta daude:
Filesystem
Tamaina
Erabilitako
Available
Erabili %
gainean muntatua
ubi0:rootfs
40.7M
36.2M
4.4M
89%
/
ubi0:usrfs
10.5M
360K
10.1M
3%
/ datuak
ubi0:cachefs
50.3M
20K
47.7M
0%
/ cachea
Eskuragarri dagoen funtzionaltasuna
Goian esan bezala, modulua Qualcomm-en Cortex A7 chipsetean eraikita dago. Okerra litzateke errendimendu handiko nukleo bat ez ematea erabiltzailearen programa prozesatzeko eta gailuaren prozesadore nagusia deskargatzea, programaren zatiren bat modulura deskargatuz.
Erabiltzaile-programarako, hurrengo funtzionamendu-modu periferiko hauek egongo dira eskuragarri:
Pin zenbakia
izena
Sys GPIO zenbakia.
Ekintza lehenetsia
Funtzioa 1
Funtzioa 2
Pull
Esnatzeko etenaldia
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-txartela
-
-
B-PD
-
22
SD_DATA0
-
SD-txartela
-
-
B-PD
-
23
SD_DATA1
-
SD-txartela
-
-
B-PD
-
24
SD_DATA2
-
SD-txartela
-
-
B-PD
-
25
SD_DATA3
-
SD-txartela
-
-
B-PD
-
26
SD_CLK
-
SD-txartela
-
-
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
-
Ados, zerrenda ikusgarria da eta kontutan izan: periferikoen zati bat modulua bideratzaile gisa funtzionatzeko erabiltzen da. Horiek. Horrelako modulu batean oinarrituta, Internet Wi-Fi bidez banatuko duen bideratzaile txiki bat egin dezakezu. Bide batez, SIM7600E-H-MIFI izeneko prest egindako irtenbide bat dago eta SIM7600E-H modulu soldatutako SIMXNUMXE-H modulu bat eta hainbat antena-pin dituen miniPCIE txartela da, horietako bat Wi-Fi antena bat da. Hala ere, hau aparteko artikulu baterako gaia da.
Asteazkena (ez asteko egun bat)
Behar duzuna ez dago doan deskargatzeko: SDK bat, zure banatzaileari eska diezaiokezu.
Moduluarekin lan egiteko utilitateak instalatzea
Aurrerantzean, Windows-en lan egingo dugu erabiltzaile gehienentzat OS ezagunena bezala.
Beharrezko softwarea instalatu beharko dugu urrats erraz batzuetan moduluarekin lanean menperatzeko:
- GNU / Linux
- cygwin
- Gidariak
- ADB
GNU/Linux instalatzen
Aplikazioa eraikitzeko, edozein ARM-Linux konpilatzaile bateragarri erabil dezakezu. Deskargatzeko eskuragarri dagoen SourceryCodeBenchLiteARM GNU/Linuxtranslater erabiliko dugu
Osagai guztiak behar bezala instalatuta daudela ziurtatzeko, instalazio-prozesuaren pantaila-argazki batzuk utziko ditut. Printzipioz, ez dago ezer konplikaturik instalazioan.
Osagai guztiak behar bezala instalatuta daudela ziurtatzeko, instalazio-prozesuaren pantaila-argazki batzuk utziko ditut. Printzipioz, ez dago ezer konplikaturik instalazioan.
- Lizentzia-kontratua onartzen dugu
- Zehaztu instalazioaren karpeta
- Beharrezko osagaiak aldatu gabe uzten ditugu
- Utzi dagoen bezala
- Hainbat aldiz "Hurrengoa", "Instalatu" eta, funtsean, hori da
Cygwin instalatzen
Gainera, garapenerako, liburutegi eta utilitate multzo bat beharko duzu emandako multzotik
Cygwin instalatzean ez dago ezer konplikaturik, hautatu behar duzun gauza bakarra instalatzaileak beharrezko fitxategiak deskargatuko dituen ispilu bat da, edozein hautatu eta instalatuko duen, baita utilitate eta liburutegi multzo bat ere, eskuragarri dauden liburutegi guztiak utziz eta aukeratutako utilitateak.
Gidariak instalatzea
Modulua ordenagailura konektatu ondoren, kontrolatzaileak instalatu beharko dituzu. Hauek zure banatzaileari eska diezazkiokezu (gomendatua). Ez dut gomendatzen zure kabuz Interneten bilaketa egitea, zeren... Baliteke denbora asko behar izatea gailuaren gatazka zerk eragin duen aurkitzeko.
Aukeratutako portuen artean honako hauek ikusten ditugu:
Windows
Linux
Description
SimTech HS-USB Diagnostikoak
USB seriea
Diagnostiko Interfazea
SimTech HS-USB NMEA
USB seriea
GPS NMEA Interfazea
SimTech HS-USB AT ataka
USB seriea
AT ataka Interfazea
SimTech HS-USB modema
USB seriea
Modem ataka Interfazea
SimTech HS-USB Audioa
USB seriea
USB audio interfazea
SimTech HS-USB WWAN egokitzailea
USB sarea
NDIS WWAN Interfazea
Android Composite ADB Interfazea
USB ADB
Android-ek gehitu arazketa-ataka
Seguruenik ohartu zinen bezala, pantaila-argazkiko portuen artean ez dago USB ADBrik, hau da, moduluko ADB ataka lehenespenez itxita dagoelako eta AT-era 'AT+CUSBADB=1' komandoa bidalita gaitu behar duzulako. moduluaren ataka eta berrabiarazi ('AT+CRESET' komandoarekin egin daiteke).
Ondorioz, nahi duzun interfazea lortuko dugu gailu kudeatzailean:
Gidariekin amaitu dugu, pasa gaitezen ADBra.
ADB instalatzen
Joan Android Developer webgune ofizialera
Deskargatu eta deskonprimitu sortutako artxiboa C unitatearen erroan.
Inguruko Aldagaiak
Cygwin instalatu ondoren, Cygwin/bin/ bidea gehitu beharko diezu garapen-inguruneko aldagaiei (Kontrol Panel Klasikoa β Sistema β Sistemaren ezarpen aurreratuak β Aurreratua β Inguruko aldagaiak β Sistemaren aldagaiak β Bidea β Editatu) beheko pantaila-argazkian erakusten den moduan:
Era berean, gehitu deskargatutako eta desontziratutako ADB artxiboaren bidea C diskoaren erroan.
Sakatu Ados hainbat aldiz eta berrabiarazi ordenagailua.
Berrabiarazi ondoren, erraz egiaztatu dezakezu ADB behar bezala funtzionatzen ari den komando-lerroa irekiz (Win+R β cmd) eta 'adb bertsioa' komandoa idatziz. Horrelako zerbait lortzen dugu:
Konektatu dezagun modulua PCra (deskonektatuta zegoela gertatuko balitz) eta egiaztatu ADB-k ikusten duen 'adb devices' komandoarekin:
Eginda, honek modulurako konexioaren konfigurazioa osatzen du eta shell-a abiarazi dezakegu moduluarekin lan egiteko.
SDK deskonpilatu eta konpilatu
Orain shell-era sarbidea dugula eta moduluaren komando-lerroarekin lanean has gaitezen, saia gaitezen gure lehen aplikazioa konpilatzen moduluan kargatzeko.
Jende askok zailtasunak izan ditzake honekin! Zeren Modulua Linux sistema eragilean exekutatzen da; Windows-en kodea konpilatzean talkak ekiditeko, hobe da jatorrizko ingurunean konpilatzea - ββLinux.
Ez gara zehatz-mehatz azalduko nola, Linux ez dagoenean eta zure makinan instalatu nahi baduzu, makina birtualean instalatu dezakezun. VirtualBox erabiliko dugu, Ubuntu 20.04 bertsioa instalatuko dugu (idazteko unean uneko bertsioa) eta horren azpian konpiladoreekin, SDKekin eta abarrekin hasiko gara lanean.
Goazen Linux ingurunera eta deskonpaktatu banatzailetik jasotako artxiboa.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz
Joan sim_open_sdk direktoriora eta gehitu ingurunea:
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
Karpeta berean geratzen gara eta hurrengo komandoak exekutatzen ditugu bertan gauden bitartean.
Instalatu libncurses5-dev liburutegia instalatu ez bada:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y
Python, instalatu ez bazen ere:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y
eta gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc
Konpilazioa:
Orain hainbat fitxategi konpilatu behar ditugu, ondorengo komandoak sekuentzialki exekutatzen ditugu.
Konpilazioan nukleoaren konfigurazio leihoa agertzen bada, hautatu Irten eta itzuli kontsolara; ez dugu nukleoa orain konfiguratu beharrik.
Egiten dugu:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make
Abio-kargatzailea konpilatzen:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot
Nukleoa konpilatuz:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
Konpilatu erro fitxategi-sistema:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs
Linux erabiltzaileentzat garrantzitsua izango da moduluaren kontrolatzailea konpilatzea:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module
Konpilatu dezagun demoa:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo
Horren ostean, hainbat fitxategi berri agertuko dira sim_open_sdk/output direktorioa:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn boot.img demo_app helloworld system.img
demo
Saia gaitezen demoa gure moduluan kargatzen eta ea zer ateratzen den.
Deskargatu
sim_open_sdk direktorioan demo_app fitxategia ikus dezakegu. Hartu eta C diskoaren errora transferitzen dugu modulua konektatuta dagoen ordenagailuan. Ondoren, abiarazi Windows komando-lerroa (Win+R -> cmd) eta sartu:
C:>adb push C:demo_app /data/
Kontsolak esango digu:
C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)
Horrek esan nahi du fitxategia behar bezala bidali dela modulura eta egin behar dugun guztia exekutatu dela. Ez dezagun zalantzarik izan.
Egiten dugu:
C:>adb shell
Deskargatutako fitxategiaren eskubideak zabaltzen ditugu:
/ # cdhmod 777 /data/demo_app
Eta korrika egiten dugu:
/ # /data/demo_app
Kontsola berean, moduluak honako hau esango digu:
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 >
Ikus dezagun moduluaren IMEI, sartu 7 (aldatu komando modura) eta ondoren 5 sartu:
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 >
Horrela moduluaren IMEI ikusiko dugu.
Ondorio gisa
Espero dut moduluarekin nola hasi ideia orokor bat lortu izana. Hurrengo artikuluetan, SIM7600E-H plataformak eskaintzen dituen gaitasunak aztertuko ditugu, baita moduluan zure aplikazioa urrunetik eguneratu dezakezun ere.
Iruzkinetan galderak egitera gonbidatzen zaitut, eta moduluaren gaitasunen zein alderdi islatu behar den hurrengo artikuluetan ere adierazi.
Iturria: www.habr.com