
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 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 , 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:

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)
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:
- GNU/Linux
- Cygwin.
- Ovladače
- 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 .
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.
- Akceptujeme licenční smlouvu

- Uvedeme instalační složku

- Potřebné komponenty necháme beze změn

- Necháme jak jsou

- Několikrát 'Další', 'Instalovat' a v zásadě vše

Instalace Cygwinu
Dále pro vývoj na bude potřeba soubor knihoven a utilit z balíčku poskytovaného . 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í.

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:

S ovladači jsme skončili, přecházíme k ADB.
Instalace ADB
Navštívíme oficiální web Android Developer na . 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'.

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:

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.

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:

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

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

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 -yPython, pokud také nebyl nainstalován:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -ya gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gccKompilace:
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$ makeKompilujeme bootloader:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make abootKompilujeme 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 rootfsPro uživatele Linuxu bude relevantní zkompilovat ovladač modulu:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_moduleZkompilujeme demo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demoPo č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 shellRozšiřujeme práva nahraného souboru:
/ # cdhmod 777 /data/demo_appA spouštíme:
/ # /data/demo_appVe 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





