OpenLinux bilang bahagi ng SIM7600E-H modules

OpenLinux bilang bahagi ng SIM7600E-H modules

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 SIMCom Wireless Solutions mag-compile at mag-load ng custom na application sa isang module.

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 kaya, mayroon ding mas detalyadong paglalarawan ng naturang file system.

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:

OpenLinux bilang bahagi ng SIM7600E-H modules

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)

SIMCom Wireless Solutions magbigay ng pagkakataon para sa mga developer na pumili ng pinakapamilyar na development environment para sa Linux o Windows. Kung pinag-uusapan natin ang tungkol sa isang maipapatupad na application sa isang module, mas mahusay na pumili ng Windows, ito ay magiging mas mabilis at mas madali. Kung ang isang kumplikadong arkitektura ng application at mga kasunod na pag-upgrade ay inaasahan, mas mahusay na gumamit ng Linux. Kailangan din namin ng Linux na mag-compile ng mga executable na file para sa kasunod na paglo-load sa module; sapat na ang virtual machine para sa compilation.

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:

  1. GNU / Linux
  2. Cygwin
  3. Mga driver
  4. 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 link.

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.

  1. Tinatanggap namin ang kasunduan sa lisensya
    OpenLinux bilang bahagi ng SIM7600E-H modules
  2. Tukuyin ang folder ng pag-install
    OpenLinux bilang bahagi ng SIM7600E-H modules
  3. Iniiwan namin ang mga kinakailangang sangkap na hindi nagbabago
    OpenLinux bilang bahagi ng SIM7600E-H modules
  4. Iwanan ito bilang ay
    OpenLinux bilang bahagi ng SIM7600E-H modules
  5. Ilang beses na "Next", "Install" and basically that's it
    OpenLinux bilang bahagi ng SIM7600E-H modules

Pag-install ng Cygwin

Dagdag pa, para sa pagpapaunlad, kakailanganin mo ng isang hanay ng mga aklatan at kagamitan mula sa ibinigay na hanay Cygwin. Ang lahat ay simple dito, ang kasalukuyang bersyon ng Cygwin ay maaaring ma-download nang libre sa opisyal na website ng proyekto; sa oras ng pagsulat, ang bersyon 3.1.5 ay magagamit, na kung ano ang ginamit namin sa paghahanda ng materyal.

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.

OpenLinux bilang bahagi ng SIM7600E-H modules

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:

OpenLinux bilang bahagi ng SIM7600E-H modules

Tapos na tayo sa mga driver, lipat tayo sa ADB.

Pag-install ng ADB

Pumunta sa opisyal na website ng Android Developer link. Hindi namin ida-download ang napakalaking Android Studio; kailangan lang namin ng command line, na magagamit para sa pag-download sa pamamagitan ng link na "I-download ang SDK Platform-Tools para sa Windows".

OpenLinux bilang bahagi ng SIM7600E-H modules

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:

OpenLinux bilang bahagi ng SIM7600E-H modules

Katulad nito, idagdag ang path sa na-download at na-unpack na ADB archive sa root ng drive C.

OpenLinux bilang bahagi ng SIM7600E-H modules

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:

OpenLinux bilang bahagi ng SIM7600E-H modules

Ikonekta natin ang module sa PC (kung nangyari na nadiskonekta ito) at suriin kung nakikita ito ng ADB gamit ang command na 'adb device':

OpenLinux bilang bahagi ng SIM7600E-H modules

Tapos na, makukumpleto nito ang pagsasaayos ng koneksyon sa module at maaari naming ilunsad ang shell upang gumana sa module.

OpenLinux bilang bahagi ng SIM7600E-H modules

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

Magdagdag ng komento