Maxsus dasturni ishlab chiqish va uni modulga yuklash mexanizmi Linux va Windows operatsion tizimlarida mavjud. Ushbu maqolada biz taqdim etilgan SDK misollaridan foydalanib, qanday qilishni batafsil ko'rib chiqamiz
Maqolani yozishdan oldin, mening tanishlarimdan biri, Linux uchun rivojlanishdan uzoqda, SIM7600E-H moduli uchun o'z arizamni ishlab chiqish jarayonini iloji boricha batafsilroq tavsiflash masalasiga yondashishimni so'radi. Materialni taqdim etishning mavjudligini baholash mezoni "men tushunaman" iborasi edi.
Men sizni nima bo'lganligi bilan tanishishga taklif qilaman.
Maqola muntazam ravishda to'ldiriladi va yangilanadi
Prelude
Odatda, uyali aloqa modullari faqat ma'lumotlarni uzatish, ovozli qo'ng'iroqlar, SMS uzatish va boshqalar uchun ishlatiladi. Bularning barchasi tashqi boshqaruv mikrokontrolleridan yuborilgan AT buyruqlari orqali amalga oshiriladi. Ammo tashqaridan yuklangan maxsus kodni bajarishga imkon beruvchi modullar toifasi mavjud. Ba'zi hollarda, bu qurilmaning umumiy byudjetini sezilarli darajada kamaytiradi, bu sizga oddiyroq (va teng darajada byudjetli) mikrokontrollerni plataga o'rnatish yoki undan butunlay voz kechish imkonini beradi. Android yoki Linux OS tomonidan boshqariladigan LTE modullari va ularning kuchli resurslari paydo bo'lishi bilan mashhur protsessorlar uchun mavjud bo'lgan har qanday vazifalarni hal qilish mumkin. Ushbu maqolada Linux OS tomonidan boshqariladigan SIM7600E-H haqida gap boradi. Biz bajariladigan dasturni qanday yuklab olish va ishga tushirishni ko'rib chiqamiz.
Ko'p jihatdan, material "SIM7600 Open Linux Development quide" hujjatiga asoslangan, ammo ba'zi qo'shimchalar va birinchi navbatda rus tilidagi versiyasi foydali bo'ladi. Maqola modulni endigina o'zlashtirishni boshlayotganlarga demo-ilovani qanday yuklab olishni tushunishga yordam beradi va keyingi ish uchun zarur ko'nikmalarni beradi.
SIM7600E-H kimligi haqida qisqacha
SIM7600E-H moduli Qualcomm kompaniyasining 7 gigagertsli ARM Cortex-A1.3 protsessoriga qurilgan, ichida Linux operatsion tizimiga (yadro 3.18.20) ega, Cat-ni qo'llab-quvvatlaydigan Yevropa (shu jumladan rus) chastota diapazonlari 2G/3G/ LTE bilan ishlashga qodir. .4, maksimal yuklash tezligini 150 Mbit / s gacha va yuklash tezligini 50 Mbit / s gacha ta'minlaydi. Boy tashqi qurilmalar, sanoat harorat diapazoni va o'rnatilgan GPS/GLONASS navigatsiyasi mavjudligi M2M sohasida zamonaviy modulli yechim uchun har qanday talablarni qoplaydi.
Tizimga umumiy nuqtai
SIM7600E-H moduli Linux operatsion tizimiga asoslangan (yadro 3.18.20). O'z navbatida, fayl tizimi jurnallangan fayl tizimi UBIFS (Unsorted Block Image File System) asosida qurilgan.
Ushbu fayl tizimining muhim xususiyatlariga quyidagilar kiradi:
- bo'limlar bilan ishlaydi, ularning hajmini yaratish, o'chirish yoki o'zgartirish imkonini beradi;
- butun media hajmi bo'ylab yozishni moslashtirishni ta'minlaydi;
- Bad bloklari bilan ishlaydi;
- elektr uzilishi yoki boshqa nosozliklar paytida ma'lumotlarning yo'qolishi ehtimolini kamaytiradi;
- jurnallarni saqlash.
Tavsif olingan
Bular. Ushbu turdagi fayl tizimi modulning og'ir ish sharoitlari va mumkin bo'lgan quvvat muammolari uchun idealdir. Ammo bu barqaror bo'lmagan quvvat sharoitlari modulning kutilgan ish rejimi bo'ladi degani emas, bu faqat qurilmaning hayotiyligini ko'rsatadi.
xotira
Xotira maydonlarini taqsimlash quyidagicha tuzilgan:
Ta'kidlash kerak bo'lgan uchta asosiy yo'nalish mavjud:
ubi0: rootfs - faqat o'qish uchun va Linux yadrosining o'zini o'z ichiga oladi
ubi0:usrfs - asosan foydalanuvchi dasturi va ma'lumotlarni saqlash uchun ishlatiladi
ubi0: cahcefs β FOTA yangilanishlari uchun ajratilgan. Mavjud bo'sh joy yangilanishni yuklab olish uchun etarli bo'lmasa, tizim foydalanilmagan fayllarni o'chirib tashlaydi va shu bilan joy bo'shatadi. Ammo xavfsizlik nuqtai nazaridan fayllaringizni u erga joylashtirmaslik kerak.
Barcha uchta bo'lim quyidagicha taqsimlanadi:
Fayl tizimi
O'lcham
Ishlatilgan
mavjud
Foydalanish%
O'rnatilgan
ubi0: rootfs
40.7M
36.2M
4.4M
89%
/
ubi0:usrfs
10.5M
360K
10.1M
3%
/ ma'lumotlar
ubi0: keshlar
50.3M
20K
47.7M
0%
/ kesh
Mavjud funksionallik
Yuqorida aytib o'tilganidek, modul Qualcomm kompaniyasining Cortex A7 chipsetida qurilgan. Foydalanuvchi dasturini qayta ishlash va dasturning bir qismini modulga tushirish orqali qurilmaning asosiy protsessorini tushirish uchun bunday yuqori samarali yadroni ta'minlamaslik noto'g'ri bo'ladi.
Foydalanuvchi dasturi uchun quyidagi periferik ish rejimlari biz uchun mavjud bo'ladi:
PIN-kod raqami
Ism
Sys GPIO raqami.
Standart amal
Func1
Func2
Torting
Uyg'otishning uzilishi
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
holat
GPIO
holat
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
-
Qabul qiling, ro'yxat ta'sirli va e'tibor bering: tashqi qurilmalarning bir qismi modulni router sifatida ishlatish uchun ishlatiladi. Bular. Bunday modulga asoslanib, siz Wi-Fi orqali Internetni tarqatadigan kichik router qilishingiz mumkin. Aytgancha, SIM7600E-H-MIFI deb nomlangan tayyor yechim mavjud va u lehimli SIM7600E-H moduli va bir nechta antenna pinlari bo'lgan miniPCIE kartasi bo'lib, ulardan biri Wi-Fi antennasi. Biroq, bu alohida maqola uchun mavzu.
Chorshanba (haftaning bir kuni emas)
Sizga kerak bo'lgan narsani bepul yuklab olish mumkin emas - SDK, uni distribyutoringizdan so'rashingiz mumkin.
Modul bilan ishlash uchun yordamchi dasturlarni o'rnatish
Keyinchalik, biz ko'pchilik foydalanuvchilar uchun eng tanish OS sifatida Windows ostida ishlaymiz.
Keyinchalik modul bilan ishlashni o'zlashtirish uchun kerakli dasturiy ta'minotni bir necha oddiy qadamda o'rnatishimiz kerak bo'ladi:
- GNU / Linux
- cygwin
- Haydovchilar
- OTB
GNU/Linux o'rnatilmoqda
Ilovani yaratish uchun har qanday ARM-Linux-ga mos kompilyatordan foydalanishingiz mumkin. Yuklab olish uchun SourceryCodeBenchLiteARM GNU/Linuxtranslater dasturidan foydalanamiz.
Barcha komponentlar to'g'ri o'rnatilganligiga ishonch hosil qilish uchun men o'rnatish jarayonining bir nechta skrinshotlarini qoldiraman. Asos sifatida, o'rnatishda murakkab narsa yo'q.
Barcha komponentlar to'g'ri o'rnatilganligiga ishonch hosil qilish uchun men o'rnatish jarayonining bir nechta skrinshotlarini qoldiraman. Asos sifatida, o'rnatishda murakkab narsa yo'q.
- Biz litsenziya shartnomasini qabul qilamiz
- O'rnatish papkasini belgilang
- Biz kerakli komponentlarni o'zgarishsiz qoldiramiz
- Xuddi shunday qoldiring
- Bir necha marta "Keyingi", "O'rnatish" va asosan shunday
Cygwin o'rnatilmoqda
Bundan tashqari, ishlab chiqish uchun sizga taqdim etilgan to'plamdan kutubxonalar va yordamchi dasturlar to'plami kerak bo'ladi
Cygwin-ni o'rnatishda hech qanday murakkab narsa yo'q, siz tanlashingiz kerak bo'lgan yagona narsa - o'rnatuvchi kerakli fayllarni yuklab oladigan, istalgan birini tanlab, uni o'rnatadigan oynani, shuningdek, barcha mavjud kutubxonalarni qoldirib, yordamchi dasturlar va kutubxonalar to'plamini tanlashdir. utilitalar tanlangan.
drayverlarga o'rnatish
Modul kompyuterga ulangandan so'ng siz drayverlarni o'rnatishingiz kerak bo'ladi. Bularni distribyutoringizdan so'rashingiz mumkin (tavsiya etiladi). Men Internetda o'zingiz qidirishni tavsiya etmayman, chunki ... Qurilma ziddiyatiga nima sabab bo'lganini topish uchun ko'p vaqt kerak bo'lishi mumkin.
Tanlangan portlar orasida biz quyidagilarni ko'ramiz:
Windows
Linux
tavsifi
SimTech HS-USB diagnostikasi
USB ketma-ket
Diagnostika interfeysi
SimTech HS-USB NMEA
USB ketma-ket
GPS NMEA interfeysi
SimTech HS-USB AT porti
USB ketma-ket
AT port interfeysi
SimTech HS-USB modem
USB ketma-ket
Modem port interfeysi
SimTech HS-USB audio
USB ketma-ket
USB audio interfeysi
SimTech HS-USB WWAN adapteri
USB Net
NDIS WWAN interfeysi
Android kompozit ADB interfeysi
USB ADB
Android disk raskadrovka portini qo'shish
Siz sezganingizdek, skrinshotdagi portlar orasida USB ADB yo'q, chunki moduldagi ADB porti sukut bo'yicha yopilgan va siz AT ga "AT+CUSBADB=1" buyrug'ini yuborish orqali uni yoqishingiz kerak. modul portiga o'ting va uni qayta ishga tushiring (buni "AT+CRESET" buyrug'i bilan bajarish mumkin).
Natijada biz qurilma menejerida kerakli interfeysni olamiz:
Drayvlar bilan ishlash tugadi, keling, OTBga o'tamiz.
ADB o'rnatilmoqda
Android Developer rasmiy veb-saytiga o'ting
Olingan arxivni C diskining ildiziga yuklab oling va oching.
Atrof-muhit o'zgaruvchilari
Cygwin-ni o'rnatganingizdan so'ng, quyidagi skrinshotda ko'rsatilganidek, ishlab chiqish muhiti o'zgaruvchilariga Cygwin/bin/ yo'lini qo'shishingiz kerak bo'ladi (Klassik boshqaruv paneli β Tizim β Kengaytirilgan tizim sozlamalari β Kengaytirilgan β Atrof-muhit o'zgaruvchilari β Tizim o'zgaruvchilari β Yo'l β Tahrirlash):
Xuddi shunday, yuklab olingan va ochilgan ADB arxiviga yo'lni C diskining ildiziga qo'shing.
OK tugmasini bir necha marta bosing va kompyuterni qayta ishga tushiring.
Qayta ishga tushirgandan so'ng, buyruq qatorini (Win+R β cmd) ochib, βadb versionβ buyrug'ini kiritib, ADB to'g'ri ishlayotganligini osongina tekshirishingiz mumkin. Biz shunga o'xshash narsani olamiz:
Keling, modulni shaxsiy kompyuterga ulaymiz (agar u uzilib qolsa) va ADB uni "adb devices" buyrug'i bilan ko'rishini tekshirib ko'raylik:
Bajarildi, bu modulga ulanish konfiguratsiyasini yakunlaydi va biz modul bilan ishlash uchun qobiqni ishga tushirishimiz mumkin.
SDK ni ochish va kompilyatsiya qilish
Endi biz qobiqqa kirish imkoniga egamiz va modulning buyruq qatori bilan ishlashni boshlay olamiz, keling, modulga yuklash uchun birinchi dasturimizni kompilyatsiya qilishga harakat qilaylik.
Ko'pchilik bu bilan qiyinchiliklarga duch kelishi mumkin! Chunki Modul Linux operatsion tizimida ishlaydi; Windows ostida kodni kompilyatsiya qilishda to'qnashuvlarni oldini olish uchun mahalliy muhitda - Linuxda kompilyatsiya qilish yaxshidir.
Linux yo'qligi va uni kompyuteringizga o'rnatish istagi bo'lsa, uni virtual mashinaga qanday o'rnatishingiz mumkinligi haqida batafsil to'xtalmaymiz. Biz VirtualBox-dan foydalanamiz, Ubuntu 20.04 versiyasini (yozish paytidagi joriy versiya) o'rnatamiz va uning ostida biz kompilyatorlar, SDKlar va boshqalar bilan ishlashni boshlaymiz.
Keling, Linux muhitiga o'tamiz va distribyutordan olingan arxivni ochamiz.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz
sim_open_sdk katalogiga o'ting va muhitni qo'shing:
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
Biz bir xil papkada qolamiz va unda keyingi buyruqlarni bajaramiz.
Agar o'rnatilmagan bo'lsa, libncurses5-dev kutubxonasini o'rnating:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y
Python, agar u ham o'rnatilmagan bo'lsa:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y
va gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc
Jamlama:
Endi biz bir nechta fayllarni kompilyatsiya qilishimiz kerak, biz quyidagi buyruqlarni ketma-ket bajaramiz.
Agar kompilyatsiya paytida yadro konfiguratsiyasi oynasi paydo bo'lsa, shunchaki Chiqish-ni tanlang va konsolga qayting; yadroni hozir sozlashimiz shart emas.
Biz bajaramiz:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make
Yuklovchini kompilyatsiya qilish:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot
Yadroni kompilyatsiya qilish:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
Ildiz fayl tizimini kompilyatsiya qiling:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs
Linux foydalanuvchilari uchun modul drayverini kompilyatsiya qilish muhim bo'ladi:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module
Keling, demoni kompilyatsiya qilaylik:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo
Shundan so'ng sim_open_sdk/output katalogida bir nechta yangi fayllar paydo bo'ladi:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn boot.img demo_app helloworld system.img
Namoyish
Keling, demoni modulimizga yuklashga harakat qilaylik va undan nima chiqishini ko'ramiz.
Loading
Sim_open_sdk katalogida biz demo_app faylini ko'rishimiz mumkin. Biz uni olib, modul ulangan kompyuterdagi C diskining ildiziga o'tkazamiz. Keyin Windows buyruq qatorini ishga tushiring (Win + R -> cmd) va kiriting:
C:>adb push C:demo_app /data/
Konsol bizga aytadi:
C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)
Bu fayl modulga muvaffaqiyatli yuborilganligini anglatadi va biz qilishimiz kerak bo'lgan narsa uni ishga tushirishdir. Keling, ikkilanmaylik.
Biz bajaramiz:
C:>adb shell
Yuklab olingan fayl huquqlarini kengaytiramiz:
/ # cdhmod 777 /data/demo_app
Va biz yuguramiz:
/ # /data/demo_app
Xuddi shu konsolda modul bizga quyidagilarni aytib beradi:
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 >
Keling, modulning IMEI-ni ko'rib chiqaylik, 7 ni kiriting (buyruqlar rejimiga o'ting) va keyin 5 ni kiriting:
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 >
Shunday qilib, biz modulning IMEI-ni ko'ramiz.
Natijada
Umid qilamanki, biz modulni qanday boshlash haqida umumiy tasavvurga ega bo'ldik. Keyingi maqolalarda biz SIM7600E-H platformasi taqdim etadigan imkoniyatlarni, shuningdek, modulda o'z ilovangizni masofadan turib qanday yangilashingiz mumkinligini batafsil ko'rib chiqamiz.
Men sizni sharhlarda savollar berishga taklif qilaman, shuningdek, modul imkoniyatlarining qaysi tomoni keyingi maqolalarda aks ettirilishi kerakligini ko'rsataman.
Manba: www.habr.com