OpenLinux SIM7600E-H moduļu sastāvā

OpenLinux SIM7600E-H moduļu sastāvā

Lietotāja pielāgotās lietojumprogrammas izstrādes un tās augšupielādes mehānisms moduli ir pieejams gan Linux, gan Windows operētājsistēmām. Šajā rakstā mēs detalizēti aplūkosim, kā izmantot piemērus no piegādātā SDK. SIMCom Wireless Solutions kompilēt un augšupielādēt pielāgotu lietojumprogrammu moduli.

Pirms raksta uzrakstīšanas viens mans paziņa, kurš ir tālu no izstrādes zem Linux, lūdza maksimāli detalizēti aprakstīt procesu, kā izstrādāt savu lietojumprogrammu SIM7600E-H modulim. Kritērijs, kā novērtēt materiāla pieejamību, bija frāze „lai es saprastu”.

Aicinu iepazīties ar rezultātu.

Raksts regulāri tiek papildināts un atjaunināts.

Priekšvārds

Parasti mobilie sakaru moduļi tiek izmantoti tikai datu pārsūtīšanai, balss zvaniem, SMS nosūtīšanai un tamlīdzīgām darbībām. To visu veic, izmantojot AT komandas, kas tiek sūtītas no ārēja vadības mikrokontrolleris. Taču ir kategorija moduļu, kas ļauj izpildīt lietotāja kodu, kas tiek augšupielādēts no ārpuses. Dažos gadījumos tas ievērojami samazina ierīces kopējās izmaksas, ļaujot izmantot vienkāršāku (un līdz ar to budžeta) mikrokontrolleri vai no tā pilnībā atteikties. Ar LTE moduļu parādīšanos, kas tiek pārvaldīti ar Android vai Linux operētājsistēmām un to jaudīgajiem resursiem, var atrisināt jebkuras uzdevumus, kas ir pieejamas populāriem procesoriem. Šajā rakstā tiks runāts par SIM7600E-H, ko pārvalda Linux OS. Apskatīsim, kā augšupielādēt un palaist izpildāmo lietojumprogrammu.

Daudzējādā ziņā materiāls balstās uz dokumentu “SIM7600 Open Linux development guide”, taču daži papildinājumi, un pirmkārt, krievu valodas versija būs noderīgi. Raksts palīdzēs saprast tiem, kas tikai sāk apgūt moduli, sasniegt demonstrācijas lietojumprogrammas augšupielādi un dos nepieciešamās prasmes turpmākai darbībai.

Īsi par to, kas ir SIM7600E-H

SIM7600E-H ir modulis, kas balstīts uz Qualcomm ARM Cortex-A7 1.3GHz procesoru, ietver Linux operētājsistēmu (kernelis 3.18.20) un spēj darboties ar Eiropas (t.sk. arī Krievijas) frekvenču diapazoniem 2G/3G/LTE, atbalsta Cat.4, nodrošinot maksimālo lejupielādes ātrumu līdz 150Mbps un augšupielādes ātrumu līdz 50Mbps. Bagātīga perifērija, industriālais temperatūras diapazons un iebūvēta GPS/GLONASS navigācija nodrošina visus mūsdienu moduļu risinājuma prasības M2M tematikā.

Sistēmas apskats

SIM7600E-H modulis balstās uz Linux operētājsistēmu (kernelis 3.18.20). Savukārt, failu sistēma ir balstīta uz žurnālu failu sistēmu UBIFS (Unsorted Block Image File System).

Svarīgas šīs failu sistēmas īpašības ir:

  • darbojas ar nodalījumiem, ļauj izveidot, dzēst vai mainīt to izmēru;
  • nodrošina ierakstu izlīdzināšanu visā nesēja apjomā;
  • darbojas ar sliktiem blokiem;
  • minimizē datu zuduma varbūtību avārijas gadījumā vai citos traucējumos;
  • žurnālu veidošana.

Informācija ņemta no šejienes, turpmāk detalizētāk aprakstīts šīs failu sistēmas tips.

T.i., šis failu sistēmas tips ir ideāli piemērots moduļa smagajiem darba apstākļiem un iespējamām problēmām ar barošanu. Bet tas nenozīmē, ka nestabilas barošanas apstākļi būs sagaidāms moduļa darba režīms, tas vienkārši norāda uz lielāku ierīces dzīvotspēju.

Atmiņa

Atmiņas apgabalu sadalījums ir šāds:

OpenLinux SIM7600E-H moduļu sastāvā

Jāizdala trīs galvenie apgabali:

ubi0:rootfs – pieejams tikai lasīšanai un satur pašu Linux kodolu
ubi0:usrfs – galvenokārt tiek izmantots lietotāja programmas un datu glabāšanai
ubi0:cachefs – rezervēts FOTA atjauninājumiem. Ja pieejamā vieta būs nepietiekama atjauninājuma lejupielādei, sistēma izdzēsīs neizmantotos failus, tādējādi atbrīvojot vietu. Bet, ņemot vērā drošību, tur nevajadzētu glabāt savus failus.

Visi trīs nodalījumi ir sadalīti šādi:

Filesystem
Izmērs
Izmantots
Pieejams
Izmanto%
Montēts uz

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

Pieejamā funkcionalitāte

Kā jau minēts iepriekš, modulis ir balstīts uz Qualcomm Cortex A7 čipseta. Būtu nepareizi nesniegt tik augstas veiktspējas kodolu, lai apstrādātu lietotāja programmu un atbrīvotu galveno ierīces procesoru, pārceļot uz moduli daļu programmas.

Lietotāja programmai būs pieejami šādi perifērijas darbības režīmi:

Pin Nr.
Nosaukums
Sys GPIO Nr.
Pamata darbība
Func1
Func2
Pull
Pamošanās traucējums

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-Karte
—
—
B-PD
—

22
SD_DATA0
—
SD-Karte
—
—
B-PD
—

23
SD_DATA1
—
SD-Karte
—
—
B-PD
—

24
SD_DATA2
—
SD-Karte
—
—
B-PD
—

25
SD_DATA3
—
SD-Karte
—
—
B-PD
—

26
SD_CLK
—
SD-Karte
—
—
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
—

Piekrītu, saraksts ir iespaidīgs, un ņemiet vērā: daļa perifērijas tiek izmantota moduļa darbībai kā maršrutētājam. T.i., uz šāda moduļa var izveidot mazu maršrutētāju, kas nodrošina interneta pieslēgumu caur Wi-Fi. Jāpiebilst, ka jau pastāv gatavs risinājums ar nosaukumu SIM7600E-H-MIFI, kas ir miniPCIE karte ar pielodētu SIM7600E-H moduļu un vairākiem antenu izvadiem, no kuriem viens ir Wi-Fi antena. Tomēr tas jau ir temats atsevišķam materiālam.

Vide (ne nedēļas diena)

SIMCom Wireless Solutions sniedz iespēju izstrādātājiem izvēlēties sev vispazīstamāko izstrādes vidi Linux vai Windows. Ja runājam par vienu izpildprogrammu modulī, tad labāk izvēlēties Windows, jo tas būs ātrāk un vienkāršāk. Ja tiek plānota sarežģīta programmas arhitektūra un turpmākie jauninājumi – labāk izmantot Linux. Mums arī būs nepieciešams Linux, lai kompilētu izpildfailus, kurus vēlāk ielādēsim modulī, un kompilācijai pietiek ar virtuālo mašīnu.

No tā, kas jums būs nepieciešams un nav pieejams lejupielādēšanai brīvā piekļuvē – SDK, ko var pieprasīt no sava izplatītāja.

Rīku uzstādīšana darbam ar moduli

Šeit un turpmāk mēs strādāsim ar Windows, jo tā ir vispazīstamākā operētājsistēma lielākajai daļai lietotāju.

Mums būs nepieciešams dažos vienkāršos soļos uzstādīt nepieciešamo programmatūru turpmākai darba apgūšanai ar moduli:

  1. GNU/Linux
  2. Cygwin
  3. Draiveri
  4. ADB

GNU/Linux uzstādīšana

Lietojot jebkuru ARM-Linux saderīgu kompilatoru, var izveidot lietojumprogrammu. Mēs izmantosim SourceryCodeBenchLiteARM GNU/Linux tulkotāju, kas ir pieejams lejupielādei pie saišu.

Lai visi komponenti tiktu pareizi uzstādīti, atstāšu dažas ekrānuzņēmumu procesa instalācijā. Principā, instalācijā nav nekā sarežģīta.

Lai visi komponenti tiktu pareizi uzstādīti, atstāšu dažas ekrānuzņēmumu procesa instalācijā. Principā, instalācijā nav nekā sarežģīta.

  1. Pieņemam licences līgumu
    OpenLinux SIM7600E-H moduļu sastāvā
  2. Norādām uzstādīšanas mapi
    OpenLinux SIM7600E-H moduļu sastāvā
  3. Nepieciešamās sastāvdaļas atstājam nemainīgas
    OpenLinux SIM7600E-H moduļu sastāvā
  4. Atstājam kā ir
    OpenLinux SIM7600E-H moduļu sastāvā
  5. Vairākas reizes “Next”, “Install” un principā viss
    OpenLinux SIM7600E-H moduļu sastāvā

Cygwin instalēšana

Tālāk izstrādei būs nepieciešams bibliotēku un rīku komplekts, ko piedāvā Cygwin. Šeit viss ir vienkārši, aktuālo Cygwin versiju var bez maksas lejupielādēt no projekta oficiālās vietnes, rakstīšanas brīdī bija pieejama versija 3.1.5, kuru mēs arī izmantojām materiāla sagatavošanā.

Cygwin instalēšanā nav nekā sarežģīta, vienīgais, kas jāizvēlas – spogulis, no kura instalētājs lejupielādēs nepieciešamās failus, izvēlamies jebkuru un uzstādam, kā arī lietojamā bibliotēku un rīku komplektu, atstājam izvēlētas visas pieejamās bibliotēkas un rīkus.

Draiveru uzstādīšana

Pēc tam, kad modulis tiks pievienots PC, būs nepieciešams uzstādīt draiverus. Tos var pieprasīt savam izplatītājam (ieteicams). Meklēt internetā pašam neiesaku, jo var aizņemt daudz laika, lai atrastu, ar ko bija saistīts ierīču konflikts.

OpenLinux SIM7600E-H moduļu sastāvā

Starptautiskajos portos mēs redzam šādus:

Windows
Linux
Apraksts

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 klātbūtnes normatīvu port

Kā noteikti pamanījāt, ekrānuzņēmumā starp portiem nav USB ADB, jo ADB ports modulī pēc noklusējuma ir slēgts, un to jāieslēdz, nosūtot komandu ‘AT+CUSBADB=1’ uz moduļa AT portu un restartējot to (to var izdarīt ar komandu ‘AT+CRESET’).

Galu galā iegūsim nepieciešamo interfeisu ierīču pārvaldniekā:

OpenLinux SIM7600E-H moduļu sastāvā

Ar draiveriem esam pabeiguši, pārejām pie ADB.

ADB uzstādīšana

Ieejam oficiālajā Android Developer vietnē pie saišu. Neveiksim smagnēju Android Studio lejupielādi, mums pietiek ar komandrindas, ko var lejupielādēt, sekojot saitei «Download SDK Platform-Tools for Windows».

OpenLinux SIM7600E-H moduļu sastāvā

Lejupielādējam un izpakojam iegūto arhīvu diska C saknē.

Vides mainīgie

Pēc Cygwin instalēšanas nepieciešams pievienot Cygwin/bin/ ceļu izstrādes vides mainīgajiem (Klasiskā panelis → Sistēma → Papildu sistēmas iestatījumi → Papildu → Vides mainīgie → Sistēmas mainīgie → Path → Rediģēt), kā parādīts zemāk esošajā ekrānuzņēmumā:

OpenLinux SIM7600E-H moduļu sastāvā

Līdzīgi pievienojam ceļu uz lejupielādēto un izsaiņoto ADB arhīvu diskā C.

OpenLinux SIM7600E-H moduļu sastāvā

Dažreiz nospiežam Labi un restartējam datoru.

Pēc restartēšanas varam viegli pārbaudīt, vai ADB darbojas pareizi, atverot komandu uzvedni (Win+R → cmd) un ierakstot komandu 'adb version'. Iegūsim apmēram šādu rezultātu:

OpenLinux SIM7600E-H moduļu sastāvā

Pievienojam moduli datoram (ja tas ir izslēgts) un pārbaudām, vai ADB to redz, izmantojot komandu 'adb devices':

OpenLinux SIM7600E-H moduļu sastāvā

Gatavs, šeit beidzas moduļa pieslēgšanas konfigurācija, un mēs varam palaist shell, lai strādātu ar moduli.

OpenLinux SIM7600E-H moduļu sastāvā

SDK izsaiņošana un kompilācija

Pēc tam, kad esam ieguvuši piekļuvi shell un varam sākt strādāt ar moduļa komandu uzvedni, mēģināsim sakompilēt savu pirmo lietojumprogrammu, ko var ielādēt modulī.

Daudziem var rasties grūtības! Tā kā modulis darbojas uz Linux operētājsistēmas, lai novērstu konfliktus, kompilējot kodu Windows vidē, vislabāk ir kompilēt dzimtajā vidē – Linux.

Nepārtraukšu uzsāktās tēmas par to, kā bez Linux un vēlmes to instalēt savā datorā, to var uzstādīt uz virtuāla. Mēs izmantosim VirtualBox, uzstādīsim Ubuntu versiju 20.04 (aktualizētā versija rakstīšanas brīdī) un jau zem tās uzsāksim darbu ar kompilatoriem, SDK utt.

Pārejām uz Linux vidi un izsaiņojam arhīvu, ko saņēmām no izplatītāja.

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

Pārejām uz sim_open_sdk katalogu un pievienojam vidi:

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 

Paliekam šajā pašā mapē un izpildām sekojošās komandas, atrodoties tajā.
Uzstājam bibliotēku libncurses5-dev, ja tā nav bijusi uzstādīta:

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

Python, ja tas arī nav bijis uzstādīts:

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

un gcc:

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

Kompilācija:

Tagad mums būs jākompīlē vairāki faili; secīgi izpildām sekojošās komandas.

Ja, ja sapulceņu logu par kodola iestatīšanu, vienkārši izvēlamies Iziet un atgriežamies konsolē, šobrīd mums nav nepieciešams konfigurēt kodolu.

Izpildām:

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

Kompilējam bootloader:

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

Kompilējam kodolu:

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

Kompilējam saknes failu sistēmu:

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

Lietotājiem Linux būs aktuāli kompilet moduļa draiveri:

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

Kompilēsim demonstrāciju:

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

Pēc tam direktorijā sim_open_sdk\/output parādīsies vairāki jauni faili:

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

Demonstrācija

Mēģināsim ielādēt demonstrāciju mūsu modulī un redzēsim, kas no tā iznāks.

Ielāde

Direktorijā sim_open_sdk mēs varam redzēt failu demo_app. Izņemam to un pārvietojam uz diska C sakni datorā, kuram ir pieslēgts modulis. Pēc tam atveram Windows komandu uzvedni (Win+R -> cmd) un ievadam:

C:>adb push C:demo_app \/data\/

Konsoles ziņojums būs:

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

Tas nozīmē, ka fails tika veiksmīgi nosūtīts uz moduli, un mums atliek tikai to palaist. Nevilcināsimies.

Izpildām:

C:>adb shell

Paplašinām augšupielādētā faila tiesības:

/ # cdhmod 777 /data/demo_app

Un palaižam:

/ # /data/demo_app

Šajā pašā konsolē modulis mums paziņos sekojošo:

SDK_VER : SIM_SDK_VER_20191205
DEMO_VER: SIM_SDK_VER_20191205

Lūdzu, izvēlieties opciju testēšanai no zemāk uzskaitītajiem elementiem.

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

Ielūkosimies moduļa IMEI, ievadām 7 (pāreja uz komandu režīmu) un pēc tam ievadām 5:

Lūdzu, izvēlieties testa opciju no zemāk uzskaitītajām precēm.

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

Lūdzu, izvēlieties testa opciju no zemāk uzskaitītajām precēm.

1. iegūt Moduļa Versiju         2. iegūt CSQ
3. iegūt CREG                   4. iegūt ICCID
5. iegūt IMEI                   6. iegūt CIMI
99. atpakaļ
Opcija > 5
IMEI: 867584030090489

Lūdzu, izvēlieties testa opciju no zemāk uzskaitītajām precēm.

1. iegūt Moduļa Versiju         2. iegūt CSQ
3. iegūt CREG                   4. iegūt ICCID
5. iegūt IMEI                   6. iegūt CIMI
99. atpakaļ
Opcija >

Tādējādi mēs redzēsim moduļa IMEI.

Noslēgumā

Ceru, ka mums izdevās izveidot vispārēju priekšstatu par to, kā uzsākt darbu ar moduli. Nākamajos rakstos mēs sīkāk apskatīsim SIM7600E-H platformas piedāvātās iespējas un to, kā var attālināti atjaunināt savu lietojumprogrammu modulī.

Aicinu uzdot jautājumus komentāros un norādīt, kuru moduļa iespēju aspektu vajadzētu atspoguļot nākamajos rakstos.

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster