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

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)
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:
- GNU/Linux
- Cygwin
- Ovládače
- 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 .
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é.
- Prijímame licenčnú dohodu

- Určíme zložku inštalácie

- Potrebné komponenty nechávame bez zmien

- Necháme ako je

- Niekoľkokrát „Ďalej“, „Inštalovať“ a v podstate všetko

Inštalácia Cygwin
Ďalej pre vývoj bude potrebné súborové knižnice a nástroje zo súboru poskytnutého . 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í.

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

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 . 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“.

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:

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

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:

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

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

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 -yPython, ak nebol takisto nainštalovaný:
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 gccKompilá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$ makeKompilujeme bootloader:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make abootKompilujeme 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 rootfsPre používateľov Linuxu bude relevantné skompilovať ovládač modulu:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_moduleSkompilujme demo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demoPotom 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 shellRozšírime práva odoslaného súboru:
/ # cdhmod 777 /data/demo_appA spustíme:
/ # /data/demo_appV 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





