OpenLinux jako součást modulů SIM7600E-H

OpenLinux jako součást modulů SIM7600E-H

Mechanismus pro vývoj vlastní aplikace a její nahrání do modulu je dostupný pod operačními systémy Linux i Windows. V tomto článku se podrobně podíváme na to, jak na to, na příkladech z poskytnuté sady SDK Bezdrátová řešení SIMCom zkompilovat a načíst vlastní aplikaci do modulu.

Před napsáním článku mě jeden můj známý, zdaleka nevyvíjející pro Linux, požádal, abych co nejpodrobněji přiblížil problematiku popisu procesu vývoje vlastní aplikace pro modul SIM7600E-H. Kritériem pro posouzení přístupnosti prezentace materiálu byla fráze „abych rozuměl“.

Zvu vás, abyste se seznámili s tím, co se stalo.

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

Předehra

Typicky se moduly mobilní komunikace používají pouze pro přenos dat, hlasové hovory, přenos SMS a podobně. To vše se děje prostřednictvím AT příkazů odeslaných z externího řídicího mikrokontroléru. Existuje však kategorie modulů, které vám umožňují spouštět vlastní kód načtený zvenčí. V některých případech to výrazně snižuje celkový rozpočet zařízení, což vám umožňuje nainstalovat jednodušší (a stejně levný) mikrokontrolér na desku nebo jej úplně opustit. S příchodem LTE modulů řízených OS Android nebo Linux a jejich výkonnými prostředky je možné řešit jakékoliv úlohy, které jsou dostupné populárním procesorům. Tento článek bude hovořit o SIM7600E-H, řízené OS Linux. Podíváme se na to, jak stáhnout a spustit spustitelnou aplikaci.

V mnoha ohledech je materiál založen na dokumentu „SIM7600 Open Linux development quide“, ale budou užitečné některé doplňky a především ruská verze. Článek pomůže těm, kteří právě začínají ovládat modul, pochopit, jak stáhnout demo aplikaci a poskytnout potřebné dovednosti pro následnou práci.

Stručně o tom, kdo je SIM7600E-H

SIM7600E-H je modul postavený na procesoru ARM Cortex-A7 1.3 GHz od Qualcommu s operačním systémem Linux (kernel 3.18.20) uvnitř, schopným pracovat s evropskými (včetně ruských) frekvenčních pásem 2G/3G/LTE s podporou Cat .4 poskytující maximální rychlost stahování až 150 Mbps a rychlost odesílání až 50 Mbps. Bohaté periferie, průmyslový teplotní rozsah a přítomnost vestavěné navigace GPS/GLONASS pokrývají jakékoli požadavky na moderní modulární řešení v oblasti M2M.

Přehled systému

Modul SIM7600E-H je založen na operačním systému Linux (kernel 3.18.20). Souborový systém je zase postaven na základě žurnálovaného souborového systému UBIFS (Unsorted Block Image File System).

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

  • pracuje s oddíly, umožňuje vytvářet, mazat nebo měnit jejich velikost;
  • zajišťuje zarovnání záznamu přes celý objem média;
  • pracuje se špatnými bloky;
  • minimalizuje pravděpodobnost ztráty dat při výpadku proudu nebo jiných poruchách;
  • vedení protokolů.

Popis převzat proto, je zde i podrobnější popis takového souborového systému.

Tito. Tento typ souborového systému je ideální pro náročné provozní podmínky modulu a možné problémy s napájením. To však neznamená, že nestabilní podmínky napájení budou očekávaným režimem provozu modulu, pouze to ukazuje na větší životaschopnost zařízení.

Vzpomínka

Distribuce paměťových oblastí je konstruována následovně:

OpenLinux jako součást modulů SIM7600E-H

Je třeba zdůraznit tři hlavní oblasti:

ubi0:rootfs – pouze pro čtení a obsahuje samotné jádro Linuxu
ubi0:usrfs – slouží především pro ukládání uživatelských programů a dat
ubi0:cahcefs – vyhrazeno pro aktualizace FOTA. Pokud dostupné místo nestačí ke stažení aktualizace, systém smaže nepoužívané soubory a uvolní tak místo. Ale z bezpečnostních důvodů byste tam neměli umísťovat své soubory.

Všechny tři sekce jsou rozděleny takto:

Souborový systém
Velikost
Použitý
Dostupný
Použití%
Namontována na

ubi0:rootfs
40.7M
36.2M
4.4M
89%
/

ubi0:usrfs
10.5M
360
10.1M
3%
/data

ubi0:cachefs
50.3M
20
47.7M
0%
/mezipaměti

Dostupné funkce

Jak již bylo zmíněno výše, modul je postaven na čipsetu Cortex A7 od Qualcommu. Bylo by chybou neposkytnout tak vysoce výkonné jádro pro zpracování uživatelského programu a vytížení hlavního procesoru zařízení tím, že by se nějaká část programu vyložila do modulu.

Pro uživatelský program nám budou k dispozici následující provozní režimy periferií:

Pin č.
Příjmení
sys GPIO č.
Výchozí akce
Func1
Func2
Táhnout
Přerušení probuzení

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
ADC 2
-
Pobočník
-
-
-
-

47
ADC 1
-
Pobočník
-
-
B-PU
-

48
SD_DET
GPIO_26
GPIO
GPIO
SD_DET
B-PD
X

49
POSTAVENÍ
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, seznam je působivý a všimněte si: část periferií se používá k provozu modulu jako routeru. Tito. Na základě takového modulu můžete vytvořit malý router, který bude distribuovat internet přes Wi-Fi. Mimochodem, existuje hotové řešení s názvem SIM7600E-H-MIFI a jedná se o kartu miniPCIE s připájeným modulem SIM7600E-H a několika piny antény, jedním z nich je anténa Wi-Fi. To je však téma na samostatný článek.

středa (ne den v týdnu)

Bezdrátová řešení SIMCom poskytnout vývojářům příležitost vybrat si nejznámější vývojové prostředí pro Linux nebo Windows. Pokud se bavíme o jedné spustitelné aplikaci na modulu, pak je lepší zvolit Windows, bude to rychlejší a jednodušší. Pokud se očekává složitá architektura aplikace a následné upgrady, je lepší použít Linux. Pro kompilaci spustitelných souborů pro následné načtení do modulu potřebujeme také Linux, ke kompilaci stačí virtuální stroj.

To, co potřebujete, není volně ke stažení – SDK, které si můžete vyžádat u svého distributora.

Instalace utilit pro práci s modulem

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

Pro následné zvládnutí práce s modulem budeme muset nainstalovat potřebný software v několika jednoduchých krocích:

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

Instalace GNU/Linuxu

K sestavení aplikace můžete použít jakýkoli kompilátor kompatibilní s ARM-Linux. Použijeme SourceryCodeBenchLiteARM GNU/Linuxtranslater dostupný ke stažení na adrese odkaz.

Aby bylo zajištěno, že jsou všechny součásti nainstalovány správně, zanechám několik snímků obrazovky procesu instalace. V instalaci není v zásadě nic složitého.

Aby bylo zajištěno, že jsou všechny součásti nainstalovány správně, zanechám několik snímků obrazovky procesu instalace. V instalaci není v zásadě nic složitého.

  1. Přijímáme licenční smlouvu
    OpenLinux jako součást modulů SIM7600E-H
  2. Určete instalační složku
    OpenLinux jako součást modulů SIM7600E-H
  3. Potřebné komponenty necháme beze změny
    OpenLinux jako součást modulů SIM7600E-H
  4. Nechte to tak, jak je
    OpenLinux jako součást modulů SIM7600E-H
  5. Několikrát „Další“, „Instalovat“ a v podstatě je to
    OpenLinux jako součást modulů SIM7600E-H

Instalace Cygwin

Dále budete pro vývoj potřebovat sadu knihoven a utilit z dodané sady Cygwin. Zde je vše jednoduché, aktuální verzi Cygwinu si můžete zdarma stáhnout na oficiálních stránkách projektu, v době psaní tohoto článku byla k dispozici verze 3.1.5, kterou jsme při přípravě materiálu použili.

Instalace Cygwinu není nic složitého, jediné, co je potřeba vybrat, je zrcadlo, ze kterého si instalátor stáhne potřebné soubory, vybere libovolný a nainstaluje jej, stejně jako sadu utilit a knihoven, přičemž všechny dostupné knihovny a vybrané služby.

Instalace ovladačů

Po připojení modulu k PC budete muset nainstalovat ovladače. Můžete si je vyžádat u svého distributora (doporučeno). Nedoporučuji hledat na internetu sami, protože... Zjištění příčiny konfliktu zařízení může trvat dlouho.

OpenLinux jako součást modulů SIM7600E-H

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

Windows
Linux
popis

Diagnostika SimTech HS-USB
USB sériové
Diagnostické rozhraní

SimTech HS-USB NMEA
USB sériové
Rozhraní GPS NMEA

Port SimTech HS-USB AT
USB sériové
Rozhraní portu AT

SimTech HS-USB modem
USB sériové
Rozhraní portu modemu

Zvuk SimTech HS-USB
USB sériové
Rozhraní USB Audio

SimTech HS-USB WWAN adaptér
Síť USB
Rozhraní NDIS WWAN

Rozhraní Android Composite ADB
USB ADB
Android přidat ladicí port

Jak jste si pravděpodobně všimli, mezi porty na snímku není žádný USB ADB, je to proto, že port ADB v modulu je ve výchozím nastavení uzavřen a musíte jej povolit odesláním příkazu 'AT+CUSBADB=1' do AT. portu modulu a restartujte jej (to lze provést příkazem 'AT+CRESET').

Výsledkem je, že ve správci zařízení získáme požadované rozhraní:

OpenLinux jako součást modulů SIM7600E-H

S ovladači jsme skončili, přejděme k ADB.

Instalace ADB

Přejděte na oficiální web Android Developer odkaz. Nebudeme stahovat objemné Android Studio; potřebujeme pouze příkazový řádek, který je k dispozici ke stažení prostřednictvím odkazu „Stáhnout SDK Platform-Tools for Windows“.

OpenLinux jako součást modulů SIM7600E-H

Stáhněte a rozbalte výsledný archiv do kořenového adresáře jednotky C.

Proměnné prostředí

Po instalaci Cygwinu budete muset přidat cestu Cygwin/bin/ k proměnným vývojového prostředí (Klasický ovládací panel → Systém → Pokročilá nastavení systému → Upřesnit → Proměnné prostředí → Systémové proměnné → Cesta → Upravit), jak je znázorněno na obrázku níže:

OpenLinux jako součást modulů SIM7600E-H

Podobně přidejte cestu ke staženému a rozbalenému archivu ADB do kořenového adresáře jednotky C.

OpenLinux jako součást modulů SIM7600E-H

Klepněte několikrát na tlačítko OK a restartujte počítač.

Po restartu můžete 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'. Dostáváme něco takového:

OpenLinux jako součást modulů SIM7600E-H

Připojte modul k PC (pokud se tak stalo, že byl odpojen) a zkontrolujte, zda jej ADB vidí pomocí příkazu 'adb devices':

OpenLinux jako součást modulů SIM7600E-H

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

OpenLinux jako součást modulů SIM7600E-H

Rozbalení a kompilace SDK

Nyní, když máme přístup k shellu a můžeme začít pracovat s příkazovým řádkem modulu, zkusme zkompilovat naši první aplikaci, která se nahraje do modulu.

Mnoho lidí s tím může mít potíže! Protože Modul běží na operačním systému Linux, aby nedocházelo ke kolizím při kompilaci kódu pod Windows, je nejlepší kompilovat v nativním prostředí – Linuxu.

Nebudeme se podrobně zabývat tím, jak si jej při absenci Linuxu a touze nainstalovat na svůj stroj můžete nainstalovat na virtuální stroj. Použijeme VirtualBox, nainstalujeme Ubuntu verze 20.04 (aktuální verze v době psaní článku) a pod ním začneme pracovat s kompilátory, SDK atd.

Pojďme do prostředí Linuxu a rozbalíme archiv obdržený od distributora.

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

Přejděte do adresáře sim_open_sdk a přidejte 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 ve stejné složce a v ní provádíme následující příkazy.
Nainstalujte 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 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

Sestavení:

Nyní potřebujeme zkompilovat několik souborů, spustíme následující příkazy postupně.

Pokud se během kompilace objeví okno konfigurace jádra, stačí vybrat Exit a vrátit se do konzole; nyní nemusíme konfigurovat jádro.

Provádíme:

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

Kompilace bootloaderu:

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

Kompilace jádra:

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

Zkompilujte kořenový souborový systém:

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

Pro uživatele Linuxu bude důležité zkompilovat ovladač modulu:

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

Pojďme sestavit demo:

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

Poté 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

Demonstrace

Zkusme nahrát demo do našeho modulu a uvidíme, co z toho vzejde.

Stáhnout

V adresáři sim_open_sdk můžeme vidět soubor demo_app. Vezmeme jej a přeneseme do kořenového adresáře jednotky C na PC, ke kterému je modul připojen. Poté spusťte příkazový řádek Windows (Win+R -> cmd) a zadejte:

C:>adb push C:demo_app /data/

Konzole nám řekne:

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

To znamená, že soubor byl úspěšně odeslán do modulu a stačí jej pouze spustit. Neváháme.

Provádíme:

C:>adb shell

Rozšiřujeme práva ke staženému souboru:

/ # cdhmod 777 /data/demo_app

A běžíme:

/ # /data/demo_app

Ve stejné konzoli nám modul řekne 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, zadejte 7 (přepněte do příkazového režimu) a poté zadejte 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 >

Tímto způsobem uvidíme IMEI modulu.

Jako závěr

Doufám, že jsme byli schopni získat obecnou představu o tom, jak začít s modulem. V následujících článcích se blíže podíváme na možnosti, které platforma SIM7600E-H poskytuje, a také na to, jak můžete na dálku aktualizovat vlastní aplikaci v modulu.

Vyzývám vás, abyste v komentářích položili otázky a také uvedli, který aspekt schopností modulu by se měl odrazit v následujících článcích.

Zdroj: www.habr.com

Přidat komentář