Ang mekanismo para sa pagbuo ng custom na application at pag-load nito sa module ay available sa ilalim ng parehong Linux at Windows operating system. Sa artikulong ito ay titingnan namin ang isang detalyadong pagtingin sa kung paano, gamit ang mga halimbawa mula sa SDK na ibinigay
Bago isulat ang artikulo, hiniling sa akin ng isa sa aking mga kakilala, malayo sa pagbuo para sa Linux, na lapitan ang isyu ng paglalarawan sa proseso ng pagbuo ng sarili kong aplikasyon para sa SIM7600E-H module sa mas maraming detalye hangga't maaari. Ang criterion para sa pagtatasa ng accessibility ng presentasyon ng materyal ay ang pariralang "upang maunawaan ko."
Inaanyayahan kita na makilala ang nangyari.
Ang artikulo ay regular na pupunan at ina-update
Foreplay
Karaniwan, ang mga cellular communication module ay ginagamit lamang para sa paghahatid ng data, mga voice call, pagpapadala ng SMS at iba pa. Ang lahat ng ito ay ginagawa sa pamamagitan ng mga utos ng AT na ipinadala mula sa isang panlabas na kontrol na microcontroller. Ngunit mayroong isang kategorya ng mga module na nagbibigay-daan sa iyong magsagawa ng custom na code na na-load mula sa labas. Sa ilang mga kaso, makabuluhang binabawasan nito ang pangkalahatang badyet ng device, na nagbibigay-daan sa iyong mag-install ng isang mas simple (at pantay na badyet) na microcontroller sa board o iwanan ito nang buo. Sa pagdating ng mga module ng LTE na kinokontrol ng Android o Linux OS at ang kanilang makapangyarihang mga mapagkukunan, posibleng malutas ang anumang mga gawain na magagamit sa mga sikat na processor. Tatalakayin ng artikulong ito ang tungkol sa SIM7600E-H, na kinokontrol ng Linux OS. Titingnan natin kung paano mag-download at magpatakbo ng isang executable na application.
Sa maraming paraan, ang materyal ay batay sa dokumentong "SIM7600 Open Linux development quide", ngunit ang ilang mga karagdagan at, una sa lahat, ang bersyon ng Ruso ay magiging kapaki-pakinabang. Ang artikulo ay makakatulong sa mga nagsisimula pa lamang na makabisado ang module na maunawaan kung paano i-download ang demo application at magbigay ng mga kinakailangang kasanayan para sa kasunod na gawain.
Maikling tungkol sa kung sino ang SIM7600E-H
Ang SIM7600E-H ay isang module na binuo sa ARM Cortex-A7 1.3GHz processor mula sa Qualcomm, na mayroong Linux operating system (kernel 3.18.20) sa loob, na may kakayahang magtrabaho sa European (kabilang ang Russian) frequency band na 2G/3G/ LTE na sumusuporta sa Cat .4, na nagbibigay ng maximum na bilis ng pag-download na hanggang 150Mbps at mga bilis ng pag-upload ng hanggang 50Mbps. Ang mga rich peripheral, isang pang-industriya na hanay ng temperatura at ang pagkakaroon ng built-in na GPS/GLONASS navigation ay sumasaklaw sa anumang mga kinakailangan para sa isang modernong modular na solusyon sa M2M field.
Pangkalahatang-ideya ng system
Ang SIM7600E-H module ay batay sa Linux operating system (kernel 3.18.20). Sa turn, ang file system ay binuo sa batayan ng journaled file system na UBIFS (Unsorted Block Image File System).
Ang mga mahahalagang tampok ng file system na ito ay kinabibilangan ng:
- gumagana sa mga partisyon, nagpapahintulot sa iyo na lumikha, magtanggal, o baguhin ang kanilang laki;
- tinitiyak ang pagkakahanay ng pag-record sa buong volume ng media;
- gumagana sa Bad blocks;
- pinapaliit ang posibilidad ng pagkawala ng data sa panahon ng pagkawala ng kuryente o iba pang pagkabigo;
- pag-iingat ng mga tala.
Kinuha ang paglalarawan
Yung. Ang ganitong uri ng file system ay perpekto para sa malupit na mga kondisyon ng operating ng module at posibleng mga problema sa kuryente. Ngunit hindi ito nangangahulugan na ang hindi matatag na mga kondisyon ng kuryente ay ang inaasahang mode ng pagpapatakbo ng module; ipinapahiwatig lamang nito ang higit na kakayahang mabuhay ng aparato.
memorya
Ang pamamahagi ng mga lugar ng memorya ay itinayo tulad ng sumusunod:
Mayroong tatlong pangunahing mga lugar upang i-highlight:
ubi0:rootfs β read-only at naglalaman ng Linux kernel mismo
ubi0:usrfs β pangunahing ginagamit para sa programa ng gumagamit at imbakan ng data
ubi0:cahcefs β nakalaan para sa mga update sa FOTA. Kung ang magagamit na espasyo ay hindi sapat upang i-download ang pag-update, tatanggalin ng system ang mga hindi nagamit na file at sa gayon ay maglalaan ng espasyo. Ngunit para sa mga kadahilanang pangseguridad, hindi mo dapat ilagay ang iyong mga file doon.
Ang lahat ng tatlong mga seksyon ay ipinamamahagi tulad ng sumusunod:
Filesystem
laki
Ginamit
Magagamit
Gamitin%
Naka-mount sa
ubi0:rootfs
40.7M
36.2M
4.4M
89%
/
ubi0:usrfs
10.5M
360K
10.1M
3%
/ data
ubi0:mga cache
50.3M
20K
47.7M
0%
/ cache
Magagamit na pag-andar
Tulad ng nabanggit sa itaas, ang module ay binuo sa Cortex A7 chipset mula sa Qualcomm. Mali na hindi magbigay ng ganoong mataas na pagganap na core upang iproseso ang program ng user at i-offload ang pangunahing processor ng device sa pamamagitan ng pag-offload ng ilang bahagi ng program sa module.
Para sa user program, ang mga sumusunod na peripheral operating mode ay magiging available sa amin:
Pin no.
Pangalan
Sys GPIO No.
Default na pagkilos
Func1
Func2
Hilahin
Naputol ang paggising
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 Card
-
-
B-PD
-
22
SD_DATA0
-
SD Card
-
-
B-PD
-
23
SD_DATA1
-
SD Card
-
-
B-PD
-
24
SD_DATA2
-
SD Card
-
-
B-PD
-
25
SD_DATA3
-
SD Card
-
-
B-PD
-
26
SD_CLK
-
SD Card
-
-
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
katayuan
GPIO
katayuan
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
-
Sumang-ayon, ang listahan ay kahanga-hanga at tandaan: bahagi ng mga peripheral ay ginagamit upang patakbuhin ang module bilang isang router. Yung. Batay sa naturang module, maaari kang gumawa ng isang maliit na router na ipamahagi ang Internet sa pamamagitan ng Wi-Fi. Sa pamamagitan ng paraan, mayroong isang handa na solusyon na tinatawag na SIM7600E-H-MIFI at isang miniPCIE card na may soldered SIM7600E-H module at ilang mga antenna pin, isa sa mga ito ay isang Wi-Fi antenna. Gayunpaman, ito ay isang paksa para sa isang hiwalay na artikulo.
Miyerkules (hindi araw ng linggo)
Ang kailangan mo ay hindi malayang magagamit para sa pag-download - isang SDK, na maaari mong hilingin mula sa iyong distributor.
Pag-install ng mga kagamitan para sa pagtatrabaho sa module
Pagkatapos nito, gagana kami sa ilalim ng Windows bilang pinakapamilyar na OS sa karamihan ng mga user.
Kakailanganin naming i-install ang kinakailangang software sa ilang simpleng mga hakbang upang pagkatapos ay makabisado ang pagtatrabaho sa module:
- GNU / Linux
- Cygwin
- Mga driver
- ADB
Pag-install ng GNU/Linux
Upang buuin ang application, maaari mong gamitin ang anumang compiler na katugmang ARM-Linux. Gagamitin namin ang SourceryCodeBenchLiteARM GNU/Linuxtranslater na available para ma-download sa
Upang matiyak na ang lahat ng mga bahagi ay na-install nang tama, mag-iiwan ako ng ilang mga screenshot ng proseso ng pag-install. Sa prinsipyo, walang kumplikado sa pag-install.
Upang matiyak na ang lahat ng mga bahagi ay na-install nang tama, mag-iiwan ako ng ilang mga screenshot ng proseso ng pag-install. Sa prinsipyo, walang kumplikado sa pag-install.
- Tinatanggap namin ang kasunduan sa lisensya
- Tukuyin ang folder ng pag-install
- Iniiwan namin ang mga kinakailangang sangkap na hindi nagbabago
- Iwanan ito bilang ay
- Ilang beses na "Next", "Install" and basically that's it
Pag-install ng Cygwin
Dagdag pa, para sa pagpapaunlad, kakailanganin mo ng isang hanay ng mga aklatan at kagamitan mula sa ibinigay na hanay
Walang kumplikado sa pag-install ng Cygwin, ang tanging bagay na kailangan mong piliin ay isang salamin kung saan ida-download ng installer ang mga kinakailangang file, pumili ng alinman at i-install ito, pati na rin ang isang hanay ng mga utility at library, na iniiwan ang lahat ng magagamit na mga aklatan at mga utility na napili.
Pag-install ng mga driver
Matapos maikonekta ang module sa PC, kakailanganin mong mag-install ng mga driver. Ang mga ito ay maaaring hilingin mula sa iyong distributor (inirerekomenda). Hindi ko inirerekomenda ang paghahanap sa Internet nang mag-isa, dahil... Maaaring tumagal ng maraming oras upang mahanap kung ano ang sanhi ng conflict ng device.
Sa mga napiling port, makikita natin ang sumusunod:
Windows
Linux
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
SimTech HS-USB Diagnostics
Serial ng USB
Diagnostic Interface
SimTech HS-USB NMEA
Serial ng USB
Interface ng GPS NMEA
SimTech HS-USB AT Port
Serial ng USB
AT port Interface
SimTech HS-USB Modem
Serial ng USB
Interface ng modem port
SimTech HS-USB Audio
Serial ng USB
USB Audio Interface
SimTech HS-USB WWAN Adapter
USB Net
Interface ng NDIS WWAN
Android Composite ADB Interface
USB ADB
Android magdagdag ng debug port
Tulad ng malamang na napansin mo, walang USB ADB sa mga port sa screenshot, ito ay dahil ang ADB port sa module ay sarado bilang default at kailangan mong paganahin ito sa pamamagitan ng pagpapadala ng command na 'AT+CUSBADB=1' sa AT port ng module at i-reboot ito (maaari itong gawin gamit ang command na 'AT+CRESET').
Bilang resulta, nakukuha namin ang gustong interface sa device manager:
Tapos na tayo sa mga driver, lipat tayo sa ADB.
Pag-install ng ADB
Pumunta sa opisyal na website ng Android Developer
I-download at i-unpack ang resultang archive sa root ng drive C.
Mga variable ng kapaligiran
Pagkatapos i-install ang Cygwin, kakailanganin mong idagdag ang path na Cygwin/bin/ sa mga variable ng development environment (Classic Control Panel β System β Advanced system settings β Advanced β Environment Variables β System Variables β Path β Edit) tulad ng ipinapakita sa screenshot sa ibaba:
Katulad nito, idagdag ang path sa na-download at na-unpack na ADB archive sa root ng drive C.
I-click ang OK nang maraming beses at i-restart ang computer.
Pagkatapos mag-reboot, madali mong masuri kung gumagana nang tama ang ADB sa pamamagitan ng pagbubukas ng command line (Win+R β cmd) at pag-type ng command na 'adb version'. Nakakakuha kami ng ganito:
Ikonekta natin ang module sa PC (kung nangyari na nadiskonekta ito) at suriin kung nakikita ito ng ADB gamit ang command na 'adb device':
Tapos na, makukumpleto nito ang pagsasaayos ng koneksyon sa module at maaari naming ilunsad ang shell upang gumana sa module.
Pag-unpack at pag-compile ng SDK
Ngayon na mayroon na tayong access sa shell at maaaring magsimulang magtrabaho kasama ang command line ng module, subukan nating i-compile ang ating unang application na i-load sa module.
Maraming tao ang maaaring nahihirapan dito! kasi Ang module ay tumatakbo sa Linux operating system; upang maiwasan ang mga banggaan kapag nag-compile ng code sa ilalim ng Windows, pinakamahusay na mag-compile sa katutubong kapaligiran - Linux.
Hindi namin tatalakayin nang detalyado kung paano, sa kawalan ng Linux at pagnanais na i-install ito sa iyong makina, maaari mo itong mai-install sa isang virtual machine. Gagamitin namin ang VirtualBox, i-install ang bersyon ng Ubuntu 20.04 (ang kasalukuyang bersyon sa oras ng pagsulat) at sa ilalim nito magsisimula kaming magtrabaho kasama ang mga compiler, SDK, atbp.
Pumunta tayo sa kapaligiran ng Linux at i-unpack ang archive na natanggap mula sa distributor.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz
Pumunta sa direktoryo ng sim_open_sdk at idagdag ang kapaligiran:
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
Nanatili kami sa parehong folder at nagsasagawa ng mga kasunod na utos habang nasa loob nito.
I-install ang libncurses5-dev library kung hindi pa ito na-install:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y
Python, kung hindi rin ito na-install:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y
at gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc
Compilation:
Ngayon kailangan naming mag-compile ng ilang mga file, patakbuhin namin ang mga sumusunod na command nang sunud-sunod.
Kung mag-pop up ang kernel configuration window sa panahon ng compilation, piliin lang ang Exit at bumalik sa console; hindi na namin kailangang i-configure ang kernel ngayon.
ginagawa namin:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make
Kino-compile ang bootloader:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot
Pag-compile ng kernel:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
I-compile ang root file system:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs
Para sa mga gumagamit ng Linux, magiging may-katuturan ang pag-compile ng driver ng module:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module
I-compile natin ang demo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo
Pagkatapos nito, maraming mga bagong file ang lilitaw sa direktoryo ng sim_open_sdk/output:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn boot.img demo_app helloworld system.img
Demo
Subukan nating i-load ang demo sa ating module at tingnan kung ano ang lalabas dito.
I-download ang
Sa direktoryo ng sim_open_sdk makikita natin ang file na demo_app. Kinukuha namin ito at inilipat sa ugat ng drive C sa PC kung saan nakakonekta ang module. Pagkatapos ay ilunsad ang Windows command line (Win+R -> cmd) at ipasok ang:
C:>adb push C:demo_app /data/
Sasabihin sa amin ng console:
C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)
Nangangahulugan ito na matagumpay na naipadala ang file sa module at ang kailangan lang nating gawin ay patakbuhin ito. Huwag tayong mag-alinlangan.
ginagawa namin:
C:>adb shell
Pinalawak namin ang mga karapatan ng na-download na file:
/ # cdhmod 777 /data/demo_app
At tumakbo kami:
/ # /data/demo_app
Sa parehong console, sasabihin sa amin ng module ang sumusunod:
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 >
Tingnan natin ang IMEI ng module, ipasok ang 7 (lumipat sa command mode) at pagkatapos ay ipasok ang 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 >
Sa ganitong paraan makikita natin ang IMEI ng module.
Bilang isang konklusyon
Umaasa ako na nakakuha kami ng pangkalahatang ideya kung paano magsimula sa modyul. Sa mga sumusunod na artikulo, susuriin namin nang mas malapitan ang mga kakayahan na ibinibigay ng SIM7600E-H platform, pati na rin kung paano mo malayuang mai-update ang iyong sariling aplikasyon sa module.
Inaanyayahan kita na magtanong sa mga komento, at ipahiwatig din kung aling aspeto ng mga kakayahan ng module ang dapat ipakita sa mga susunod na artikulo.
Pinagmulan: www.habr.com