OpenLinux SIM7600E-H modulnak részeként

OpenLinux SIM7600E-H modulnak részeként

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. SIMCom Wireless Solutions 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, innenitt 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:

OpenLinux SIM7600E-H modulnak részeként

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)

SIMCom Wireless Solutions 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:

  1. GNU/Linux
  2. Cygwin
  3. Illesztőprogramok
  4. 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 linkre kattintva.

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.

  1. Elfogadjuk a licencszerződést
    OpenLinux SIM7600E-H modulnak részeként
  2. Megadjuk a telepítési mappát
    OpenLinux SIM7600E-H modulnak részeként
  3. A szükséges komponenseket változatlanul hagyjuk
    OpenLinux SIM7600E-H modulnak részeként
  4. Hagyjuk változatlanul
    OpenLinux SIM7600E-H modulnak részeként
  5. Többször csak kattintsunk a “Next”, “Install” gombokra, és gyakorlatilag ennyi.
    OpenLinux SIM7600E-H modulnak részeként

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

OpenLinux SIM7600E-H modulnak részeként

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:

OpenLinux SIM7600E-H modulnak részeként

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 linkre kattintva. 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.

OpenLinux SIM7600E-H modulnak részeként

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

OpenLinux SIM7600E-H modulnak részeként

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.

OpenLinux SIM7600E-H modulnak részeként

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:

OpenLinux SIM7600E-H modulnak részeként

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:

OpenLinux SIM7600E-H modulnak részeként

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.

OpenLinux SIM7600E-H modulnak részeként

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

Python-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 gcc

Fordí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$ make

Bootloader fordítása:

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

Kernel 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 rootfs

Linux 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_module

Demó lefordítása:

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

Ezutá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 shell

A feltöltött fájl jogainak kiterjesztése:

/ # cdhmod 777 /data/demo_app

És indítsuk el:

/ # /data/demo_app

Ugyanezen 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

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster