
A felhasználói alkalmazás fejlesztésének és beállításának mechanizmusa elérhető Linux és Windows operációs rendszerek alatt egyaránt. Ebben a cikkben részletesen megvizsgáljuk, hogyan lehet kihasználni a biztosított SDK példáit. a felhasználói alkalmazás modulba való lefordítása és betöltése.
A cikk megírása előtt egy ismerősöm, aki távol áll a Linux fejlesztésétől, megkért, hogy a lehető legrészletesebben közelítsem meg a SIM7600E-H modulhoz készült saját alkalmazás fejlesztésének folyamatát. Az anyag érthetőségének értékelési szempontja az volt, hogy 'úgy, hogy Én is megértsem'.
Meghívom, hogy ismerkedjen meg a végeredménnyel.
A cikket rendszeresen frissítjük és bővítjük.
Előszó
Általában a mobilmodulokat csak adatátvitelre, hanghívásokra, SMS-ek küldésére és hasonlókra használják. Mindezt AT-parancsokkal végzik, amelyeket külső vezérlő mikrokontroller küld. De van egy modulcsoport, amely lehetővé teszi a felhasználói kód végrehajtását, amelyet kívülről töltenek be. Egyes esetekben ez jelentősen csökkenti a berendezés összköltségét, lehetővé téve egy egyszerűbb (azonal olcsóbb) mikrokontroller használatát, vagy akár teljesen elhagyását. Az LTE modulok megjelenésével, amelyek Android vagy Linux operációs rendszer alatt működnek, és erőforrásaiknak köszönhetően bármilyen feladatot megoldhatunk, amelyek a népszerű processzorok által elérhetők. Ebben a cikkben a Linux operációs rendszert kezelő SIM7600E-H-ról lesz szó. Megvizsgáljuk, hogyan lehet betölteni és futtatni egy futtatható alkalmazást.
Az anyag nagymértékben alapul a „SIM7600 Open Linux development guide” dokumentumon, de néhány kiegészítés, különösen a magyar nyelvű változat hasznosnak bizonyul. A cikk segít megérteni azoknak, akik most kezdik el a modul használatát, hogy eljussanak a demóalkalmazás betöltéséig, és megtanítja a szükséges készségeket a további munkához.
Röviden, ki is az a SIM7600E-H
A SIM7600E-H egy ARM Cortex-A7 1.3GHz processzorral rendelkező modul, amely Linux operációs rendszert (3.18.20 kernel) futtat, képes működni az európai (beleértve az orosz) 2G/3G/LTE frekvenciasávokkal, támogatja a Cat.4-et, maximális letöltési sebességet biztosít 150Mbps-ig és feltöltési sebességet 50Mbps-ig. Gazdag periféria, ipari hőmérsékleti tartomány és beépített GPS/GLONASS navigáció elérhető, amely kielégíti a modern moduláris megoldásokkal szemben támasztott igényeket az M2M területen.
A rendszer áttekintése
A SIM7600E-H modul Linux operációs rendszeren (3.18.20 kernel) alapul. A fájlrendszer egy naplózott fájlrendszer, az UBIFS (Unsorted Block Image File System) alapján épül fel.
A fájlrendszer fontos jellemzői a következők:
- működik a partíciókkal, lehetővé teszi azok létrehozását, törlését vagy méretük megváltoztatását;
- biztosítja a felírási igazítást az egész tárolókapacitás során;
- kezel a hibás blokkokkal;
- minimalizálja az adatvesztés esélyét áramszünet vagy más hibák esetén;
- naplózást végez.
A leírás innen származik, itt részletesebben beszélnek erről a fájlrendszerről.
Ez a fájlrendszer-típus tökéletesen alkalmas a modul kemény üzemi körülményeire és a potenciális tápegység problémákra. De ez nem jelenti azt, hogy az instabil tápellátás a modul várt működési módja lenne, csupán a készülék nagyobb életképességére utal.
Memória
A memória területek eloszlása a következőképpen alakul:

Három fő területet kell létrehozni:
ubi0:rootfs – csak olvasható, és tartalmazza a Linux magot
ubi0:usrfs – főként a felhasználói programok és adatok tárolására szolgál
ubi0:cahcefs – FOTA frissítésekhez van fenntartva. Ha nem áll rendelkezésre elegendő hely a frissítés letöltéséhez, a rendszer eltávolítja a használaton kívüli fájlokat, ezzel felszabadítva a helyet. Biztonsági okokból azonban nem ajánlatos ott saját fájlokat tárolni.
Mindhárom rész eloszlása a következő:
Fájlrendszer
Méret
Használatban
Elérhető
Használat %
Rá van csatlakoztatva
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
Elérhető funkciók
Ahogy már említve lett, a modul a Qualcomm Cortex A7 chipkészletére épül. Hiba lenne, ha nem biztosítanánk egy ilyen nagy teljesítményű magot a felhasználói programok feldolgozásához, valamint a készülék főprocesszorának tehermentesítéséhez, áthárítva a modulra a program egy részét.
A felhasználói program számára az alábbi perifériamódok állnak rendelkezésre:
Pin No.
Név
Sys GPIO No.
Alapértelmezett művelet
Func1
Func2
Húzás
Ébresztési megszakítás
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-Kártya
—
—
B-PD
—
22
SD_DATA0
—
SD-Kártya
—
—
B-PD
—
23
SD_DATA1
—
SD-Kártya
—
—
B-PD
—
24
SD_DATA2
—
SD-Kártya
—
—
B-PD
—
25
SD_DATA3
—
SD-Kártya
—
—
B-PD
—
26
SD_CLK
—
SD-Kártya
—
—
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
Állapot
GPIO
Állapot
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
—
Ön is egyetérthet, a lista lenyűgöző, és figyeljen arra, hogy a perifériák egy része a modul routerként való működéséhez szükséges. Vagyis egy ilyen modulra kisméretű routert készíthetünk, amely Wi-Fi-n keresztül biztosít internetkapcsolatot. Egyébként létezik már egy kész megoldás, a SIM7600E-H-MIFI néven, amely egy miniPCIe kártya, amelyen egy beforrasztott SIM7600E-H modul és több antenna kivezetés található, az egyik Wi-Fi antenna. Egyébként, ez már egy másik anyag témája.
Környezet (nem hét napja)
lehetővé teszik a fejlesztők számára, hogy saját maguk válasszák ki a legjobban ismert fejlesztési környezetet Linux vagy Windows alatt. Ha egy végrehajtható alkalmazásról van szó a modulon, akkor jobb, ha a Windows-t választjuk, így gyorsabb és egyszerűbb lesz. Ha bonyolultabb alkalmazásarchitektúrára és a későbbi frissítésekre számítunk – jobb a Linux használata. Linuxra is szükségünk lesz a végrehajtható fájlok modulba történő feltöltéséhez, a fordításhoz elegendő egy virtuális gép.
Ami a szükséges, szabad hozzáférésben nem elérhető – SDK, amelyet kérhet a forgalmazójától.
A modulhoz szükséges eszközök telepítése
Itt és a továbbiakban Windows alatt dolgozunk, mint a legtöbb felhasználó számára legjobban ismert operációs rendszer.
Néhány egyszerű lépésben telepítenünk kell a szükséges szoftvert a modul kezelésének elsajátításához:
- GNU/Linux
- Cygwin
- Illesztőprogramok
- ADB
GNU/Linux telepítése
Az alkalmazás összeállításához bármilyen ARM-Linux kompatibilis fordítót használhatunk. Mi a SourceryCodeBenchLiteARM GNU/Linux fordítót fogjuk használni, amely letölthető a következő címen .
Annak érdekében, hogy minden komponens helyesen legyen telepítve, néhány képernyőfelvételt fogok hagyni a telepítési folyamat során. Alapvetően a telepítés nem bonyolult.
Annak érdekében, hogy minden komponens helyesen legyen telepítve, néhány képernyőfelvételt fogok hagyni a telepítési folyamat során. Alapvetően a telepítés nem bonyolult.
- Elfogadjuk a licencszerződést

- Megadjuk a telepítési mappát

- A szükséges komponenseket változatlanul hagyjuk

- Hagyjuk változatlanul

- Többször csak kattintsunk a “Next”, “Install” gombokra, és gyakorlatilag ennyi.

Cygwin telepítése
Később a fejlesztéshez szükség lesz egy könyvtár- és eszközkészletre, amely a következő helyről származik . Itt minden egyszerű, a legfrissebb Cygwin verzió ingyenesen letölthető a projekt hivatalos weboldaláról, a cikk írásának időpontjában elérhető volt a 3.1.5 verzió, ezt használtuk a tartalom elkészítésekor.
A Cygwin telepítése nem bonyolult, az egyetlen dolog, amit ki kell választani – a tükör, ahonnan a telepítő letölti a szükséges fájlokat, válasszunk bármelyiket és telepítsük, valamint a szükséges eszközök és könyvtárak készletét, hagyjuk kiválasztva az összes elérhető könyvtárat és eszközt.
Illesztőprogramok telepítése
Miután a modult csatlakoztattuk a számítógéphez, telepítenünk kell az illesztőprogramokat. Kérheti őket a disztribútorától (ajánlott). Az interneten való keresgélést nem javaslom, mivel sok időt vehet igénybe a kompatibilitási problémák okainak keresése.

A kiemelt portok között a következőket látjuk:
Windows
Linux
Leírás
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
Ahogy valószínűleg észrevette, a képernyőn a portok között nincs USB ADB, ennek oka, hogy az ADB port alapértelmezetten zárva van a modulban, és aktiválni kell az ‘AT+CUSBADB=1’ parancs küldésével az AT-porton, majd újra kell indítani (ez megtehető az ‘AT+CRESET’ paranccsal).
Ennek eredményeként a szükséges interfészt a készülékkezelőben fogjuk látni:

A driverekkel végeztünk, áttérünk az ADB-re.
ADB telepítése
Lépjünk be az Android Developer hivatalos weboldalára . Nem akarjuk letölteni a terjedelmes Android Studio-t, nekünk elegendő a parancssor, amely elérhető a "SDK Platform-Tools for Windows" letöltési link alatt.

Letöltjük és kicsomagoljuk a letöltött archívumot a C meghajtó gyökerébe.
Környezeti változók
A Cygwin telepítése után hozzá kell adni a Cygwin/bin/ könyvtárat a fejlesztési környezet környezeti változóihoz (Vezérlőpult → Rendszer → Kiterjesztett rendszerbeállítások → Haladó → Környezeti változók → Rendszerváltozók → Path → Módosítás), ahogyan az alábbi képernyőn is látható:

Hasonló módon adjuk hozzá az ADB letöltött és kicsomagolt archívumának elérési útját a C meghajtó gyökeréhez.

Többször is rákattintunk az OK gombra, majd újraindítjuk a számítógépet.
Újraindítás után könnyen ellenőrizhetjük, hogy az ADB megfelelően működik-e, ha megnyitjuk a parancssort (Win+R → cmd) és beírjuk az ‘adb version’ parancsot. Körülbelül ilyen eredményt kapunk:

Csatlakoztatjuk a modult a számítógéphez (ha esetleg le lett választva), és ellenőrizzük, hogy az ADB észleli-e a ‘adb devices’ paranccsal:

Kész, ezzel befejeződött a modulhoz való csatlakozás beállítása, és elindíthatjuk a shellt a modul kezelésére.

SDK kicsomagolása és fordítása
Miután hozzáférést kaptunk a shellhez és elindíthatjuk a modul parancssorát, próbáljuk meg fordítani az első alkalmazásunkat a modulba való betöltéshez.
Ezzel sokan nehézségekkel szembesülhetnek! Mivel a modul Linux operációs rendszeren működik, a Windows alatti kódfordítási ütközések elkerülése érdekében a legjobb, ha natív környezetben – Linuxon – fordítunk.
Nem állunk meg részletesen azon, hogy miként lehet Linux nélkül és a telepítés iránti hajlandóság nélkül virtualizálni, mi a VirtualBoxot használjuk, és telepítjük az Ubuntu 20.04 verzióját (a cikk írásának pillanatában aktuális verzió), és e környezet alatt kezdjük el a munkát fordítókkal, SDK-val stb.
Átlépünk a Linux környezetbe, és kicsomagoljuk a forgalmazótól kapott archívumot.
simcom@VirtualBox:~\/Desktop\/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz Lépjünk a sim_open_sdk könyvtárba, és adjuk hozzá a környezetet:
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 Maradjunk ugyanabban a mappában, és az alábbi parancsokat ebben hajtsuk végre.
Telepítsük a libncurses5-dev könyvtárat, ha még nem lett telepítve:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -yPython-t, ha szintén nem volt telepítve:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ sudo apt-get install python -yés a gcc-t:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ sudo apt-get install gccFordítás:
Most szükségünk van néhány fájl fordítására, lépésről lépésre végezzük el az alábbi parancsokat.
Ha a lefordítás során beugrik a kernel beállító ablaka, egyszerűen válasszuk az Exit-et, és térjünk vissza a konzolhoz, jelenleg nincs szükségünk a kernel konfigurálására.
Futtassuk:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ makeBootloader fordítása:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make abootKernel fordítása:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make kernel
A gyökér fájlrendszer fordítása:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make rootfsLinux felhasználók számára releváns lehet a modul driverének lefordítása:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make kernel_moduleDemó lefordítása:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ make demoEzután a sim_open_sdk\/output könyvtárban néhány új fájl jelenik meg:
simcom@VirtualBox:~\/Desktop\/OpenLinux\/sim_open_sdk$ ls output\/\nappsboot.mbn boot.img demo_app helloworld system.img
Demos
Próbáljuk meg betölteni a demót a modulunkba, és nézzük meg, mi sül ki belőle.
Betöltés
A sim_open_sdk könyvtárban láthatjuk a demo_app fájlt. Fogjuk el, és mozgassuk át a C meghajtó gyökérébe azon a PC-n, amelyhez a modul csatlakozik. Ezután indítsuk el a Windows parancssort (Win+R -> cmd), és írjuk be:
C:>adb push C:demo_app \/data\/A konzol értesít minket:
C:demo_app: 1 fájl átküldve, 0 kihagyva. 151.4 MB\/s (838900 bájt 0.005s alatt)Ez azt jelenti, hogy a fájl sikeresen el lett küldve a modulra, és csak annyit kell tennünk, hogy elindítjuk. Ne habozzunk.
Futtassuk:
C:>adb shellA feltöltött fájl jogainak kiterjesztése:
/ # cdhmod 777 /data/demo_appÉs indítsuk el:
/ # /data/demo_appUgyanezen a konzolon a modul a következőket közli:
SDK_VER : SIM_SDK_VER_20191205
DEMO_VER: SIM_SDK_VER_20191205
Kérjük, válasszon egy lehetőséget a teszteléshez az alábbi tételek közül.
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. 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. EXIT
Válasszon >
Nézzük meg a modul IMEI-jét, írjuk be a 7-est (átjárás parancs üzemmódba), majd írjuk be az 5-öst:
Kérjük, válasszon egy tesztelendő lehetőséget az alább felsorolt elemek közül.
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
Kérjük, válasszon egy tesztelendő lehetőséget az alább felsorolt elemek közül.
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
Kérjük, válasszon egy tesztelendő lehetőséget az alább felsorolt elemek közül.
1. get Module Version 2. get CSQ
3. get CREG 4. get ICCID
5. get IMEI 6. get CIMI
99. back
Option >
Így láthatjuk a modul IMEI számát.
Összegzésül
Remélem, sikerült általános képet kapnunk arról, hogyan kezdjük el a munkát a modulnal. A következő cikkekben részletesebben megvizsgáljuk a SIM7600E-H platform által kínált lehetőségeket, valamint azt, hogyan frissíthetjük távolról a saját alkalmazásunkat a modulban.
Kérem, tegyenek fel kérdéseket a megjegyzésekben, valamint adják meg, hogy a modul lehetőségeinek mely aspektusait szeretnék, hogy a következő cikkekben bemutassuk.
Forrás: habr.com





