OpenLinux jako součást modulů SIM7600E-H

OpenLinux jako součást modulů SIM7600E-H

Mechanismus vývoje uživatelské aplikace a její nahrání do modulu je dostupný jak na operačním systému Linux, tak Windows. V tomto článku se podrobně podíváme na to, jak využít příklady ze SDK, které je poskytováno SIMCom Wireless Solutions zkombinovat a nahrát uživatelskou aplikaci do modulu.

Před napsáním článku mě jeden známý, který je daleko od vývoje pod Linuxem, požádal, abych co nejpodrobněji přistoupil k popisu procesu vývoje vlastní aplikace pro modul SIM7600E-H. Kritériem hodnocení dostupnosti materiálu byla fráze „abych to pochopil“.

Zveme vás k seznámení s tím, co jsme vytvořili.

Článek je pravidelně doplňován a aktualizován.

Prelude

Obvykle jsou mobilní moduly používány pouze pro přenos dat, hlasové hovory, odesílání SMS a podobně. To vše se provádí pomocí AT-příkazů, které jsou odesílány z externího řídícího mikrokontroléru. Avšak existuje kategorie modulů, které umožňuje provádět uživatelský kód, nahrávaný z vnějších zdrojů. V některých případech to výrazně snižuje celkový rozpočet zařízení, což umožňuje použít na desce jednodušší (a tím i levnější) mikrokontrolér nebo se úplně obejít bez něj. S příchodem LTE modulů řízených operačním systémem Android nebo Linux a jejich silnými zdroji je možné řešit jakékoliv úkoly, které jsou dostupné populárním procesorům. Tento článek se bude věnovat SIM7600E-H, řízenému operačním systémem Linux. Prozkoumáme, jak nahrát a spustit spustitelnou aplikaci.

Materiál do značné míry vychází z dokumentu "SIM7600 Open Linux Development Guide", avšak některá doplnění, zejména rusky psaná verze, budou užitečná. Článek pomůže porozumět těm, kteří teprve začínají s modulem, až po nahrání demonstrační aplikace a poskytne nezbytné dovednosti pro následnou práci.

Krátce o tom, kdo je SIM7600E-H

SIM7600E-H je modul postavený na základě procesoru ARM Cortex-A7 1,3 GHz od Qualcomm, který má uvnitř operační systém Linux (jádro 3.18.20), schopný pracovat s evropskými (včetně ruských) frekvenčními pásmy 2G/3G/LTE, podporující Cat.4, zajišťující maximální rychlost stahování až 150 Mbps a nahrávání až 50 Mbps. Bohatá periferie, průmyslový teplotní rozsah a přítomnost integrované navigace GPS/GLONASS pokrývá veškeré požadavky moderního modulárního řešení v oblasti M2M.

Přehled systému

Modul SIM7600E-H je založen na operačním systému Linux (jádro 3.18.20). Souborový systém je postaven na bázi journalované souborové systému UBIFS (Unsorted Block Image File System).

Mezi důležité rysy tohoto souborového systému patří:

  • práce s oddíly, umožňuje jejich vytváření, mazání nebo změnu velikosti;
  • zajišťuje vyrovnání zápisu po celém objemu nosiče;
  • pracuje s vadnými bloky;
  • minimalizuje pravděpodobnost ztráty dat při náhlém vypnutí napájení nebo jiných poruchách;
  • vedení žurnálů.

Popis převzat odsud, tam je také podrobněji popsán tento souborový systém.

Tedy tento typ souborového systému je ideální pro tvrdé pracovní podmínky modulu a možné problémy s napájením. Ale to neznamená, že podmínky nestabilního napájení budou očekávaným pracovním režimem modulu, to pouze naznačuje větší životaschopnost zařízení.

Paměť

Rozdělení oblastí paměti je postaveno následujícím způsobem:

OpenLinux jako součást modulů SIM7600E-H

Je třeba vyčlenit tři hlavní oblasti:

ubi0:rootfs – dostupné pouze pro čtení a obsahuje samotné jádro Linuxu
ubi0:usrfs – používá se převážně pro uživatelský program a ukládání dat
ubi0:cahcefs – rezervováno pro FOTA aktualizace. Pokud nebude dostatek dostupného místa pro stažení aktualizace – systém odstraní nepoužívané soubory a tím uvolní místo. Ale z bezpečnostních důvodů – není vhodné tam umisťovat své soubory.

Všechny tři oddíly jsou rozděleny následujícím způsobem:

Filesystem
Velikost
Použito
Dostupné
Využití%
Připojeno 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čnost

Jak již bylo zmíněno výše, modul je postaven na základě čipsetu Cortex A7 od Qualcommu. Bylo by nesprávné neposkytnout tak vysoce výkonné jádro pro zpracování uživatelského programu a uvolnění hlavního procesoru zařízení, přenesením části programu na modul.

Pro uživatelský program budou k dispozici následující režimy práce periférie:

Pin č.
Název
Sys GPIO č.
Výchozí akce
Func1
Func2
Pull
Wakeup interrupt

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

Souhlasíte, že seznam je impozantní a věnujte pozornost: část periférie se používá pro provoz modulu jako routeru. Tedy na základě takového modulu lze vytvořit malý router, který bude sdílet internet přes Wi-Fi. Mimochodem, již existuje hotové řešení s názvem SIM7600E-H-MIFI, které představuje miniPCIE kartu se zapájeným modulem SIM7600E-H a několika vývody antén, přičemž jedna z nich je anténa Wi-Fi. Nicméně, to už je téma na samostatný materiál.

Prostředí (ne den v týdnu)

SIMCom Wireless Solutions poskytují vývojářům možnost vybrat si nejznámější vývojové prostředí pod Linuxem nebo Windows. Pokud se jedná o jediné spustitelné aplikace na modulu, je lepší zvolit Windows, to bude rychlejší a jednodušší. Pokud se předpokládá složitá architektura aplikace a následné upgrady – je lepší použít Linux. Také nám bude potřeba Linux pro kompilaci spustitelných souborů pro další nahrání do modulu, pro kompilaci je plně dostatečný virtuální stroj.

Z toho, co budete potřebovat, nedostupného ke stažení ve veřejném přístupu – SDK, které si můžete vyžádat od svého distributora.

Instalace utilit pro práci s modulem

Zde a dále budeme pracovat pod Windows jako nejznámějším OS pro většinu uživatelů.

Budeme potřebovat ve několika jednoduchých krocích nainstalovat potřebný software pro následné osvojení práce s modulem:

  1. GNU/Linux
  2. Cygwin.
  3. Ovladače
  4. ADB

Instalace GNU/Linux

K sestavení aplikace můžete použít jakýkoli kompatibilní s ARM-Linux kompilátor. My využijeme SourceryCodeBenchLiteARM GNU/Linux translator, který je dostupný ke stažení na odkazu.

Aby byly všechny komponenty nainstalovány správně, nechám několik screenshotů procesu instalace. V zásadě na instalaci není nic složitého.

Aby byly všechny komponenty nainstalovány správně, nechám několik screenshotů procesu instalace. V zásadě na instalaci není nic složitého.

  1. Akceptujeme licenční smlouvu
    OpenLinux jako součást modulů SIM7600E-H
  2. Uvedeme instalační složku
    OpenLinux jako součást modulů SIM7600E-H
  3. Potřebné komponenty necháme beze změn
    OpenLinux jako součást modulů SIM7600E-H
  4. Necháme jak jsou
    OpenLinux jako součást modulů SIM7600E-H
  5. Několikrát 'Další', 'Instalovat' a v zásadě vše
    OpenLinux jako součást modulů SIM7600E-H

Instalace Cygwinu

Dále pro vývoj na bude potřeba soubor knihoven a utilit z balíčku poskytovaného Cygwin.. Tady je to jednoduché, aktuální verzi Cygwinu lze stáhnout zdarma na oficiálních stránkách projektu, v době psaní článku byla dostupná verze 3.1.5, kterou jsme použili při přípravě materiálu.

V instalaci Cygwinu není nic složitého, jediné co je potřeba vybrat – zrcadlo, ze kterého instalátor stáhne potřebné soubory, vybíráme libovolné a instalujeme, a také soubor utilit a knihoven, necháme vybrané všechny dostupné knihovny a utility.

Instalace ovladačů

Po připojení modulu k PC bude potřeba nainstalovat ovladače. Ty lze požádat od svého distributora (doporučujeme). Hledání samostatně na internetu nedoporučuji, protože může trvat dlouho, než najdete, s čím byl konflikt zařízení.

OpenLinux jako součást modulů SIM7600E-H

Mezi vyhrazenými porty vidíme následující:

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 přidat debug port

Jak jste si jistě všimli, mezi porty na screenshotu není USB ADB, to je důvod, že ADB port v modulu je ve výchozím nastavení uzavřen a je třeba ho aktivovat zasláním příkazu 'AT+CUSBADB=1' do AT portu modulu a restartovat ho (to lze provést příkazem 'AT+CRESET').

V důsledku toho získáme požadovaný rozhraní v zařízení správce:

OpenLinux jako součást modulů SIM7600E-H

S ovladači jsme skončili, přecházíme k ADB.

Instalace ADB

Navštívíme oficiální web Android Developer na odkazu. Nebudeme stahovat objemný Android Studio, nám stačí příkazový řádek, který je dostupný ke stažení na odkazu 'Download SDK Platform-Tools for Windows'.

OpenLinux jako součást modulů SIM7600E-H

Stáhneme a rozbalíme získaný archiv do kořenového adresáře disku C.

Proměnné prostředí

Po instalaci Cygwinu bude nutné přidat cestu Cygwin/bin/ do vývojových proměnných prostředí (Ovládací panely → Systém → Další nastavení systému → Upřesnit → Proměnné prostředí → Systémové proměnné → Path → Upravit), jak je znázorněno na níže uvedeném snímku obrazovky:

OpenLinux jako součást modulů SIM7600E-H

Podobným způsobem přidáme cestu k staženému a rozbalenému archivu ADB do kořenového adresáře disku C.

OpenLinux jako součást modulů SIM7600E-H

Několikrát klikneme na OK a restartujeme počítač.

Po restartu můžeme snadno zkontrolovat, zda ADB funguje správně, otevřením příkazového řádku (Win+R → cmd) a zadáním příkazu 'adb version'. Měli bychom dostat přibližně tento výsledek:

OpenLinux jako součást modulů SIM7600E-H

Připojíme modul k počítači (pokud byl odpojen) a zkontrolujeme, zda ADB modul vidí pomocí příkazu 'adb devices':

OpenLinux jako součást modulů SIM7600E-H

Hotovo, tím je nastavení připojení k modulu dokončeno a můžeme spustit shell pro práci s modulem.

OpenLinux jako součást modulů SIM7600E-H

Rozbalení a kompilace SDK

Jakmile získáme přístup k shellu a můžeme začít pracovat s příkazovým řádkem modulu, zkusíme zkompilovat naši první aplikaci k nahrání do modulu.

S tímto mohou mít mnozí potíže! Protože modul pracuje na operačním systému Linux, aby se předešlo kolizím při kompilaci kódu pod Windows – je nejlepší kompilovat v nativním prostředí – Linuxu.

Nebudeme podrobně rozebírat to, jak v případě absence Linuxu a nemotivovanosti jej instalovat na vlastní stroj, se dá nainstalovat na virtuální. My využijeme VirtualBox, nainstalujeme Ubuntu verze 20.04 (aktuální verze v době psaní článku) a pod ní začneme práci s kompilátory, SDK atp.

Přejdeme do prostředí Linuxu a rozbalíme archiv, který jsme obdrželi od distributora.

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

Přejdeme do adresáře sim_open_sdk a přidáme prostředí:

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 

Zůstáváme v této složce a následující příkazy provádíme z ní.
Nainstalujeme knihovnu libncurses5-dev, pokud nebyla nainstalována:

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

Python, pokud také nebyl nainstalován:

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

Kompilace:

Nyní budeme potřebovat zkompilovat několik souborů, postupně provedeme následující příkazy.

Pokud při kompilaci vyskočí okno nastavení jádra – jednoduše vybereme Exit a vrátíme se do konzole, nyní není třeba jádro konfigurovat.

Provádíme:

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

Kompilujeme bootloader:

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

Kompilujeme jádro:

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

Kompilujeme kořenový souborový systém:

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

Pro uživatele Linuxu bude relevantní zkompilovat ovladač modulu:

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

Zkompilujeme demo:

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

Po čemž se v adresáři sim_open_sdk/output objeví několik nových souborů:

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

Demo

Zkusíme nahrát demonstraci do našeho modulu a podíváme se, co z toho vzejde.

Nahrávání

V adresáři sim_open_sdk můžeme vidět soubor demo_app. Vezmeme ho a přeneseme na kořen disku C na PC, ke kterému je modul připojen. Poté spustíme příkazový řádek Windows (Win+R -> cmd) a zadáme:

C:>adb push C:demo_app /data/

Konzole nám oznámí:

C:demo_app: 1 soubor poslán, 0 přeskočeno. 151.4 MB/s (838900 bytů za 0.005s)

To znamená, že soubor byl úspěšně odeslán do modulu a nám zbývá ho pouze spustit. Nezdržujme se.

Provádíme:

C:>adb shell

Rozšiřujeme práva nahraného souboru:

/ # cdhmod 777 /data/demo_app

A spouštíme:

/ # /data/demo_app

Ve stejné konzole nám modul oznámí následující:

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 >   

Podívejme se na IMEI modulu, zadáme 7 (přechod do příkazového režimu) a potom zadáme 5:

Vyberte možnost pro testování z níže uvedených položek.

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
Možnost > 7

Vyberte možnost pro testování 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 možnost pro testování 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ávěr

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

Vítám vás, abyste kladli otázky v komentářích, a také abyste uvedli, jaký aspekt schopností modulu by měl být reflektován v následujících článcích.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster