OpenLinux v module SIM7600E-H

OpenLinux v module SIM7600E-H

Mechanizmus vývoja používateľskej aplikácie a jej nahrávania do modulu je dostupný ako pre operačný systém Linux, tak aj pre Windows. V tomto článku podrobne preskúmame, ako využiť príklady zo SDK poskytnutého. SIMCom Wireless Solutions skompilovať a nahrať používateľskú aplikáciu do modulu.

Pred napísaním článku ma jeden priateľ, ktorý je vzdialený od vývoja pod Linuxom, požiadal, aby som sa maximálne podrobne venoval popisu procesu vývoja vlastnej aplikácie pre modul SIM7600E-H. Kritériom hodnotenia dostupnosti podania materiálu bola veta „tak, aby som to pochopil.“

Pozývam vás na oboznámenie sa s tým, čo vzniklo.

Článok sa pravidelne dopĺňa a aktualizuje.

Prelude

Zvyčajne sa mobilné moduly používajú len na prenos dát, hlasových hovorov, prenos SMS a podobne. To sa deje prostredníctvom AT príkazov, ktoré sú posielané z externého ovládacieho mikroregulátora. Existuje však kategória modulov, ktoré umožňujú vykonávať používateľský kód nahrávaný zvonku. V niektorých prípadoch to významne znižuje celkový rozpočet zariadenia, umožňuje nasadiť na dosku jednoduchší (a teda aj rozpočtový) mikroregulátor alebo úplne od neho upustiť. S príchodom LTE modulov riadených OS Android alebo Linux a ich výkonnými zdrojmi je možné riešiť akékoľvek úlohy, ktoré sú dostupné populárnym procesorom. V tomto článku sa budeme venovať SIM7600E-H, riadenému OS Linux. Preskúmame, ako nahrať a spustiť spustiteľnú aplikáciu.

Materiál sa do značnej miery zakladá na dokumente „SIM7600 Open Linux development guide“, ale niektoré doplnenia, a predovšetkým ruská verzia, budú užitočné. Článok pomôže tým, ktorí len začínajú osvozovať modul, dostať sa k nahraniu ukážkovej aplikácie a poskytne potrebné zručnosti pre ďalšiu prácu.

Stručne o tom, kto je SIM7600E-H

SIM7600E-H je modul založený na procesore ARM Cortex-A7 1.3GHz od Qualcomm, ktorý má vnútorný operačný systém Linux (jadro 3.18.20) a dokáže pracovať s európskymi (vrátane ruských) frekvenčnými pásmami 2G/3G/LTE, podporujúci Cat.4, poskytujúci maximálnu rýchlosť sťahovania až 150Mbps a nahrávania až 50Mbps. Bohaté periférie, priemyselný rozsah teplôt a prítomnosť vstavaného GPS/GLONASS navigačného systému spĺňajú akékoľvek moderné požiadavky na modulárne riešenia v oblasti M2M.

Prehľad systému

Modul SIM7600E-H je založený na operačnom systéme Linux (jadro 3.18.20). Systém súborov je postavený na základnej žurnálovej súborovej sústave UBIFS (Unsorted Block Image File System).

K dôležitým vlastnostiam tejto súborovej sústavy patrí:

  • pracuje s oddielmi, umožňuje ich vytváranie, odstránenie alebo zmenu veľkosti;
  • zabezpečuje vyrovnanie zápisu na celom úložisku;
  • pracuje s vadnými blokmi;
  • minimalizuje pravdepodobnosť straty údajov pri náhlej stratě napájania alebo iných poruchách;
  • vedenie záznamov.

Popis prevzatý odtiaľto, tam sa podrobnejšie hovorí o tejto súborovej sústave.

T.j. tento typ súborovej sústavy je ideálny pre tvrdé prevádzkové podmienky modulu a možné problémy s napájaním. Neznamená to však, že podmienky nestabilného napájania budú očakávaným režimom prevádzky modulu, to len hovorí o väčšej životnosti zariadenia.

Pamäť

Rozdelenie oblastí pamäte je postavené nasledovne:

OpenLinux v module SIM7600E-H

Potrebné je vyčleniť tri hlavné oblasti:

ubi0:rootfs – prístupné len na čítanie a obsahuje samotné jadro Linuxu
ubi0:usrfs – používa sa prevažne pre používateľský program a uloženie údajov
ubi0:cachefs – je rezervované pre FOTA aktualizácie. Ak bude dostupného priestoru nedostatok pre stiahnutie aktualizácie – systém odstráni nepoužívané súbory a takto uvoľní miesto. Z bezpečnostných dôvodov – nemali by ste tam ukladať svoje súbory.

Všetky tri oddiely sú rozdelené nasledovne:

Súborový systém
Veľkosť
Použité
Dostupné
Využitie%
Pripojené 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%
/cache

Dostupná funkčnosť

Ako už bolo spomenuté vyššie, modul je postavený na čipsete Cortex A7 od Qualcomm. Bolo by nesprávne neposkytnúť také vysoko výkonné jadro na spracovanie používateľského programu a uvoľnenie hlavného procesora zariadenia, pričom niektoré časti programu preberie modul.

Pre používateľský program budú k dispozícii nasledujúce režimy práce periférie:

Pin č.
Názov
Sys GPIO č.
Predvolená akcia
Func1
Func2
Pull
Prebudenie interrupcie

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

22
SD_DATA0
—
SD-Karta
—
—
B-PD
—

23
SD_DATA1
—
SD-Karta
—
—
B-PD
—

24
SD_DATA2
—
SD-Karta
—
—
B-PD
—

25
SD_DATA3
—
SD-Karta
—
—
B-PD
—

26
SD_CLK
—
SD-Karta
—
—
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
Stav
GPIO
Stav
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
—

Súhlasíte, že zoznam je pôsobivý a venujte pozornosť: časť periférie sa používa na fungovanie modulu ako smerovača. T. j. na báze takého modulu sa dá vytvoriť malý smerovač, ktorý bude poskytovať internet cez Wi-Fi. Mimochodom, už existuje hotové riešenie, nazýva sa SIM7600E-H-MIFI a predstavuje miniPCIE kartu so zabudovaným modulom SIM7600E-H a niekoľkými anténnymi vývodmi, z ktorých jeden je anténa na Wi-Fi. Napokon, to je už téma na samostatný materiál.

Prostredie (nie deň v týždni)

SIMCom Wireless Solutions poskytujú možnosť výberu prostredia pre vývojárov, ktoré je pre nich najznámejšie, pod Linux alebo Windows. Ak ide o jednu spustiteľnú aplikáciu na module, je lepšie zvoliť Windows, nakoľko to bude rýchlejšie a jednoduchšie. Ak sa predpokladá zložitá architektúra aplikácie a následné upgrady – je lepšie použiť Linux. Taktiež budeme potrebovať Linux na kompiláciu spustiteľných súborov pre následné nahrávanie do modulu, na kompiláciu úplne stačí virtuálny stroj.

Z toho, čo budete potrebovať, ale nie je dostupné na voľné stiahnutie – SDK, ktorú si môžete vyžiadať od svojho distribútora.

Inštalácia utilít pre prácu s modulom

Tu a ďalej budeme pracovať pod Windows ako najznámejším operačným systémom pre väčšinu používateľov.

Potrebujeme v niekoľkých jednoduchých krokoch nainštalovať potrebný softvér pre následnú prácu s modulom:

  1. GNU/Linux
  2. Cygwin
  3. Ovládače
  4. ADB

Inštalácia GNU/Linux

Na zostavenie aplikácie môžeme využiť akýkoľvek kompilátor kompatibilný s ARM-Linux. My využijeme SourceryCodeBenchLiteARM GNU/Linux, ktorý je dostupný na stiahnutie na odkaze.

Aby boli všetky komponenty nainštalované správne, ponechám niekoľko snímok obrazovky z procesu inštalácie. V podstate na inštalácii nie je nič zložité.

Aby boli všetky komponenty nainštalované správne, ponechám niekoľko snímok obrazovky z procesu inštalácie. V podstate na inštalácii nie je nič zložité.

  1. Prijímame licenčnú dohodu
    OpenLinux v module SIM7600E-H
  2. Určíme zložku inštalácie
    OpenLinux v module SIM7600E-H
  3. Potrebné komponenty nechávame bez zmien
    OpenLinux v module SIM7600E-H
  4. Necháme ako je
    OpenLinux v module SIM7600E-H
  5. Niekoľkokrát „Ďalej“, „Inštalovať“ a v podstate všetko
    OpenLinux v module SIM7600E-H

Inštalácia Cygwin

Ďalej pre vývoj bude potrebné súborové knižnice a nástroje zo súboru poskytnutého Cygwin. Tu je všetko jednoduché, aktuálnu verziu Cygwin si môžete stiahnuť zadarmo na oficiálnej stránke projektu, v čase písania článku bola dostupná verzia 3.1.5, ktorú sme použili pri príprave materiálu.

Na inštalácii Cygwin nie je nič zložité, jediné, čo budete musieť vybrať – zrkadlo, z ktorého inštalátor stiahne potrebné súbory, vyberte si akékoľvek a nainštalujte, ako aj súbor nástrojov a knižníc, ponechávame všetky dostupné knižnice a nástroje.

Inštalácia ovládačov

Po pripojení modulu k PC bude potrebné nainštalovať ovládače. Môžete ich získať od svojho distribútora (odporúča sa). Hľadanie na internete neodporúčam, pretože môže trvať veľa času na nájdenie, s čím bol spojený konflikt zariadení.

OpenLinux v module SIM7600E-H

Medzi vyhradenými portami vidíme nasledujúce:

Windows
Linux
Popis

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 add debug port

Ako ste si určite všimli, medzi portami na snímke nie je USB ADB, je to preto, že ADB port v module je predvolene uzavretý a musí sa zapnúť zaslaním príkazu ‘AT+CUSBADB=1’ do AT-portu modulu a reštartovaním (to možno urobiť príkazom ‘AT+CRESET’).

Nakoniec získame požadované rozhranie v Správcovi zariadení:

OpenLinux v module SIM7600E-H

S ovládačmi sme skončili, prechádzame k ADB.

Inštalácia ADB

Prejdeme na oficiálnu stránku vývojára Android na odkaze. Nebudeme sťahovať objemný Android Studio, stačí nám príkazový riadok, ktorý je dostupný na stiahnutie na odkaze „Stiahnuť SDK Platform-Tools pre Windows“.

OpenLinux v module SIM7600E-H

Stiahneme a rozbalíme získaný archív do koreňa disku C.

Premenné prostredia

Po inštalácii Cygwin bude potrebné pridať cestu Cygwin/bin/ do premenných prostredia (Klasická ovládacia panela → Systém → Rozšírené nastavenia systému → Rozšírené → Premenné prostredia → Systémové premenné → Path → Upraviť) tak, ako je znázornené na obrázku nižšie:

OpenLinux v module SIM7600E-H

Podobne pridáme cestu k stiahnutému a rozbalenému archívu ADB do koreňa disku C.

OpenLinux v module SIM7600E-H

Niekoľkokrát klikneme na OK a reštartujeme počítač.

Po reštartovaní môžeme jednoducho skontrolovať, či ADB funguje správne, otvorením príkazového riadku (Win+R → cmd) a zadaním príkazu ‘adb version’. Získame približne takýto výsledok:

OpenLinux v module SIM7600E-H

Pripojíme modul k PC (ak sa náhodou odpojil) a skontrolujeme, či ho ADB vidí príkazom ‘adb devices’:

OpenLinux v module SIM7600E-H

Hotovo, nastavenie pripojenia k modulu je dokončené a môžeme spustiť shell na prácu s modulom.

OpenLinux v module SIM7600E-H

Rozbalenie a kompilácia SDK

Akonáhle máme prístup k shellu a môžeme začať pracovať s príkazovým riadkom modulu, pokúsime sa skompilovať našu prvú aplikáciu na načítanie do modulu.

S týmto môžu mať mnohí problémy! Pretože modul funguje na operačnom systéme Linux, aby sme predišli konfliktom pri kompilácii kódu pod Windows, je najlepšie kompilovať v natívnom prostredí – Linuxe.

Nebudeme podrobne rozoberať, ako v prípade absencie Linuxu a túžby ho inštalovať na svoj stroj, môžeme ho nainštalovať na virtuálny. Využijeme VirtualBox, nainštalujeme Ubuntu verzie 20.04 (aktuálna verzia v čase písania článku) a pod ňou začneme pracovať s kompilátormi, SDK a pod.

Prejdeme do prostredia Linux a rozbalíme archív, ktorý sme dostali od distribútora.

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

Prejdeme do adresára sim_open_sdk a pridáme prostredie:

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 

Zostávame v tejto istej zložke a nasledujúce príkazy vykonávame tam.
Nainštalujeme knižnicu libncurses5-dev, ak nebola nainštalovaná:

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

Python, ak nebol takisto nainštalovaný:

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

a gcc:

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

Kompilácia:

Teraz potrebujeme skompilovať niekoľko súborov, postupne vykonávame nasledujúce príkazy.

Ak sa pri kompilácii objaví okno nastavenia jadra – jednoducho vyberieme Exit a vrátime sa do konzoly, momentálne nepotrebujeme konfigurovať jadro.

Vykonávame:

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

Kompilujeme bootloader:

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

Kompilujeme jadro:

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

Kompilujeme základný súborový systém:

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

Pre používateľov Linuxu bude relevantné skompilovať ovládač modulu:

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

Skompilujme demo:

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

Potom sa v adresári sim_open_sdk/output objaví niekoľko nových súborov:

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

Demo

Skúsime nahrať demonštráciu do nášho modulu a uvidíme, čo z toho vznikne.

Nahrávanie

V adresári sim_open_sdk môžeme vidieť súbor demo_app. Zoberieme ho a prenesieme do koreňa disku C na PC, ku ktorému je pripojený modul. Následne spustíme príkazový riadok systému Windows (Win+R -> cmd) a zadáme:

C:>adb push C:demo_app /data/

Konzola nám oznámi:

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

To znamená, že súbor bol úspešne odoslaný do modulu a zostáva nám ho len spustiť. Nezdržujme sa.

Vykonávame:

C:>adb shell

Rozšírime práva odoslaného súboru:

/ # cdhmod 777 /data/demo_app

A spustíme:

/ # /data/demo_app

V tej istej konzole nám modul oznámi nasledovné:

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 >   

Pozrime sa na IMEI modulu, zadajme 7 (prechod do príkazového režimu) a potom zadajme 5:

Vyberte prosím možnost, kterou chcete otestovat, z níže uvedených položek.

1. WIFI                       2. HLASOVÝ HOVOR
3. DATOVÝ HOVOR              4. SMS
5. WDS(APN)                 6. NAS
7. AT                        8. OTA
9. TTS                       10. GPIO
11. GPS                      12. Bluetooth
13. TCP/UDP                 14. Časovač
15. ADC                      16. I2C
17. UIM(SimCard)            18. DMS(IMEI,MEID)
19. UART                     20. SPI
21. Verze                    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. KONEC
Možnost > 7

Vyberte prosím možnost, kterou chcete otestovat, z níže uvedených položek.

1. získejte verzi modulu      2. získejte CSQ
3. získejte CREG             4. získejte ICCID
5. získejte IMEI             6. získejte CIMI
99. zpět
Možnost > 5
IMEI: 867584030090489

Vyberte prosím možnost, kterou chcete otestovat, z níže uvedených položek.

1. získejte verzi modulu      2. získejte CSQ
3. získejte CREG             4. získejte ICCID
5. získejte IMEI             6. získejte CIMI
99. zpět
Možnost >

Takto uvidíme IMEI modulu.

Na záver

Doufám, že se nám podařilo vytvořit celkovou představu o tom, jak začít pracovat s modulem. V následujících článcích podrobněji prozkoumáme možnosti, které platforma SIM7600E-H nabízí, a také jak lze vzdáleně aktualizovat vlastní aplikaci v modulu.

Zveme vás, abyste pokládali otázky v komentářích, a také sdělili, který aspekt možností modulu by měl být reflektován v následujících článcích.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster