Özel bir uygulama geliştirme ve onu modüle yükleme mekanizması hem Linux hem de Windows işletim sistemlerinde mevcuttur. Bu makalede, sağlanan SDK'daki örnekleri kullanarak bunun nasıl yapılacağına ayrıntılı bir şekilde bakacağız.
Makaleyi yazmadan önce, Linux için geliştirme yapmaktan uzak bir tanıdığım, SIM7600E-H modülü için kendi uygulamamı geliştirme sürecini mümkün olduğunca ayrıntılı olarak anlatma konusuna yaklaşmamı istedi. Materyalin sunumunun erişilebilirliğini değerlendirme kriteri "anlayayım diye" ifadesiydi.
Sizi olup biteni öğrenmeye davet ediyorum.
Makale düzenli olarak desteklenmekte ve güncellenmektedir
başlangıç
Tipik olarak hücresel iletişim modülleri yalnızca veri iletimi, sesli aramalar, SMS iletimi ve benzeri amaçlar için kullanılır. Bütün bunlar harici bir kontrol mikrodenetleyicisinden gönderilen AT komutları aracılığıyla yapılır. Ancak dışarıdan yüklenen özel kodu çalıştırmanıza izin veren bir modül kategorisi vardır. Bazı durumlarda bu, cihazın genel bütçesini önemli ölçüde azaltır ve karta daha basit (ve eşit bütçeli) bir mikro denetleyici kurmanıza veya onu tamamen terk etmenize olanak tanır. Android veya Linux işletim sistemi tarafından kontrol edilen LTE modüllerinin ve güçlü kaynaklarının ortaya çıkışıyla, popüler işlemcilerin kullanabileceği her türlü görevi çözmek mümkündür. Bu makale Linux işletim sistemi tarafından kontrol edilen SIM7600E-H'den bahsedecek. Yürütülebilir bir uygulamanın nasıl indirilip çalıştırılacağına bakacağız.
Materyal birçok yönden “SIM7600 Açık Linux geliştirme kılavuzu” belgesine dayanmaktadır, ancak bazı eklemeler ve her şeyden önce Rusça versiyonu faydalı olacaktır. Makale, modülde yeni ustalaşmaya başlayanların demo uygulamasını nasıl indireceklerini anlamalarına ve sonraki çalışmalar için gerekli becerileri sağlamalarına yardımcı olacaktır.
Kısaca SIM7600E-H'nin kim olduğu hakkında
SIM7600E-H, Qualcomm'un ARM Cortex-A7 1.3GHz işlemcisi üzerine kurulmuş, içinde Linux işletim sistemi (çekirdek 3.18.20) bulunan, Cat destekli Avrupa (Rus dahil) frekans bantları 2G/3G/ LTE ile çalışabilen bir modüldür. .4, 150 Mbps'ye kadar maksimum indirme hızları ve 50 Mbps'ye kadar yükleme hızları sağlar. Zengin çevre birimleri, endüstriyel sıcaklık aralığı ve yerleşik GPS/GLONASS navigasyonun varlığı, M2M alanında modern bir modüler çözüm için tüm gereksinimleri karşılar.
Sisteme genel bakış
SIM7600E-H modülü Linux işletim sistemini (çekirdek 3.18.20) temel alır. Buna karşılık, dosya sistemi günlüklü dosya sistemi UBIFS (Sıralanmamış Blok Görüntü Dosya Sistemi) temel alınarak oluşturulmuştur.
Bu dosya sisteminin önemli özellikleri şunlardır:
- bölümlerle çalışır, boyutlarını oluşturmanıza, silmenize veya değiştirmenize olanak tanır;
- tüm medya birimi boyunca kayıt hizalamasını sağlar;
- Kötü bloklarla çalışır;
- elektrik kesintisi veya diğer arızalar sırasında veri kaybı olasılığını en aza indirir;
- günlükleri tutmak.
Açıklama alındı
Onlar. Bu tür dosya sistemi, modülün zorlu çalışma koşulları ve olası güç sorunları için idealdir. Ancak bu, dengesiz güç koşullarının modülün beklenen çalışma modu olacağı anlamına gelmez; yalnızca cihazın daha fazla uygulanabilirliğini gösterir.
Bellek
Bellek alanlarının dağılımı şu şekilde oluşturulmuştur:
Vurgulanması gereken üç ana alan vardır:
ubi0:kökler – salt okunurdur ve Linux çekirdeğinin kendisini içerir
ubi0:usrfs – öncelikle kullanıcı programı ve veri depolama için kullanılır
ubi0:cahcef'ler – FOTA güncellemeleri için ayrılmıştır. Mevcut alan güncellemeyi indirmek için yeterli değilse sistem kullanılmayan dosyaları silerek yer açar. Ancak güvenlik nedeniyle dosyalarınızı oraya yerleştirmemelisiniz.
Üç bölümün de dağılımı şu şekilde:
Dosya sistemi
beden
Kullanılmış
Mevcut
Kullanmak%
Üzerine monte
ubi0:kökler
40.7M
36.2M
4.4M
%89
/
ubi0:usrfs
10.5M
360K
10.1M
3%
/ veri
ubi0:önbellekler
50.3M
20K
47.7M
0%
/ cache
Mevcut işlevsellik
Yukarıda belirtildiği gibi modül, Qualcomm'un Cortex A7 yonga seti üzerine kuruludur. Kullanıcı programını işleyecek ve programın bir kısmını modüle aktararak cihazın ana işlemcisini boşaltacak kadar yüksek performanslı bir çekirdek sağlamamak yanlış olur.
Kullanıcı programı için aşağıdaki çevresel çalışma modları bizim için mevcut olacaktır:
Pin No.
Name
Sistem GPIO Numarası
Varsayılan aksiyon
İşlev1
İşlev2
Çekme
Uyandırma kesintisi
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
-
Hafıza kartı
-
-
B-PD
-
22
SD_DATA0
-
Hafıza kartı
-
-
B-PD
-
23
SD_DATA1
-
Hafıza kartı
-
-
B-PD
-
24
SD_DATA2
-
Hafıza kartı
-
-
B-PD
-
25
SD_DATA3
-
Hafıza kartı
-
-
B-PD
-
26
SD_CLK
-
Hafıza kartı
-
-
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
DURUMU
GPIO_52
Durum
GPIO
Durum
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_ÇIKIŞI
-
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
-
Katılıyorum, liste etkileyici ve not: çevre birimlerinin bir kısmı modülü yönlendirici olarak çalıştırmak için kullanılıyor. Onlar. Böyle bir modüle dayanarak İnternet'i Wi-Fi üzerinden dağıtacak küçük bir yönlendirici yapabilirsiniz. Bu arada, SIM7600E-H-MIFI adı verilen hazır bir çözüm var ve lehimli SIM7600E-H modülüne ve birkaç anten pinine sahip bir miniPCIE kartı, bunlardan biri Wi-Fi anteni. Ancak bu ayrı bir yazının konusu.
Çarşamba (haftanın bir günü değil)
İhtiyacınız olan şey ücretsiz olarak indirilemez; distribütörünüzden talep edebileceğiniz bir SDK.
Modülle çalışmak için yardımcı programları yükleme
Bundan sonra çoğu kullanıcının en aşina olduğu işletim sistemi olan Windows altında çalışacağız.
Daha sonra modülle çalışmaya hakim olmak için gerekli yazılımı birkaç basit adımda kurmamız gerekecek:
- GNU / Linux
- cygwin
- sürücü
- ADB
GNU/Linux'un Kurulumu
Uygulamayı oluşturmak için ARM-Linux uyumlu herhangi bir derleyiciyi kullanabilirsiniz. Şu adresten indirilebilecek SourceryCodeBenchLiteARM GNU/Linuxtranslater'ı kullanacağız:
Tüm bileşenlerin doğru şekilde kurulduğundan emin olmak için kurulum işleminin birkaç ekran görüntüsünü bırakacağım. Prensip olarak kurulumda karmaşık hiçbir şey yoktur.
Tüm bileşenlerin doğru şekilde kurulduğundan emin olmak için kurulum işleminin birkaç ekran görüntüsünü bırakacağım. Prensip olarak kurulumda karmaşık hiçbir şey yoktur.
- Lisans sözleşmesini kabul ediyoruz
- Kurulum klasörünü belirtin
- Gerekli bileşenleri değiştirmeden bırakıyoruz
- Olduğu gibi bırak
- Birkaç kez “Sonraki”, “Yükle” ve temelde bu kadar
Cygwin'i yükleme
Ayrıca, geliştirme için sağlanan setten bir dizi kütüphaneye ve yardımcı programa ihtiyacınız olacak
Cygwin'in kurulumunda karmaşık bir şey yoktur, seçmeniz gereken tek şey, yükleyicinin gerekli dosyaları indireceği, herhangi birini seçip kuracağı bir aynanın yanı sıra bir dizi yardımcı program ve kitaplığın yanı sıra mevcut tüm kitaplıkları bırakacağı ve yardımcı programlar seçildi.
sürücüleri yükleme
Modül PC'ye bağlandıktan sonra sürücüleri yüklemeniz gerekecektir. Bunlar distribütörünüzden talep edilebilir (önerilir). İnternette kendi başınıza arama yapmanızı önermiyorum çünkü... Cihaz çakışmasına neyin sebep olduğunu bulmak çok zaman alabilir.
Seçilen bağlantı noktaları arasında aşağıdakileri görüyoruz:
Windows
Linux
Açıklama
SimTech HS-USB Tanılama
USB Seri
Teşhis Arayüz
SimTech HS-USB NMEA
USB Seri
GPS NMEA Arayüzü
SimTech HS-USB AT Bağlantı Noktası
USB Seri
AT bağlantı noktası Arayüzü
SimTech HS-USB Modem
USB Seri
Modem bağlantı noktası Arayüzü
SimTech HS-USB Ses
USB Seri
USB Ses Arabirimi
SimTech HS-USB WWAN Adaptörü
USB Ağı
NDIS WWAN Arayüzü
Android Kompozit ADB Arabirimi
USB ADB'si
Android hata ayıklama bağlantı noktası ekle
Muhtemelen fark ettiğiniz gibi, ekran görüntüsündeki portlar arasında USB ADB yok, bunun nedeni modüldeki ADB portunun varsayılan olarak kapalı olması ve AT'ye 'AT+CUSBADB=1' komutunu göndererek etkinleştirmeniz gerekmesidir. modülün portunu açın ve yeniden başlatın (bu 'AT+CRESET' komutuyla yapılabilir).
Sonuç olarak, cihaz yöneticisinde istenen arayüzü elde ediyoruz:
Sürücülerle işimiz bitti, hadi ADB'ye geçelim.
ADB'yi yükleme
Resmi Android Geliştirici web sitesine gidin
Ortaya çıkan arşivi C sürücüsünün köküne indirin ve paketinden çıkarın.
Ortam Değişkenleri
Cygwin'i kurduktan sonra, aşağıdaki ekran görüntüsünde gösterildiği gibi geliştirme ortamı değişkenlerine (Klasik Denetim Masası → Sistem → Gelişmiş sistem ayarları → Gelişmiş → Ortam Değişkenleri → Sistem Değişkenleri → Yol → Düzenle) Cygwin/bin/ yolunu eklemeniz gerekecektir:
Benzer şekilde, indirilen ve paketi açılan ADB arşivinin yolunu C sürücüsünün köküne ekleyin.
Birkaç kez Tamam'a tıklayın ve bilgisayarı yeniden başlatın.
Yeniden başlattıktan sonra komut satırını (Win+R → cmd) açıp 'adb version' komutunu yazarak ADB'nin düzgün çalışıp çalışmadığını kolayca kontrol edebilirsiniz. Bunun gibi bir şey elde ediyoruz:
Modülü PC'ye bağlayalım (eğer bağlantı kesildiyse) ve 'adb devices' komutuyla ADB'nin onu görüp görmediğini kontrol edelim:
Bittiğinde, modüle olan bağlantının yapılandırması tamamlanır ve modülle çalışmak üzere kabuğu başlatabiliriz.
SDK'yı paketinden çıkarma ve derleme
Artık kabuğa erişimimiz olduğuna ve modülün komut satırıyla çalışmaya başlayabildiğimize göre, modüle yüklenecek ilk uygulamamızı derlemeye çalışalım.
Birçok kişi bu konuda zorluk yaşayabilir! Çünkü Modül Linux işletim sisteminde çalışır; Windows altında kod derlerken çakışmaları önlemek için, yerel ortamda (Linux) derlemek en iyisidir.
Linux'un yokluğunda ve onu makinenize kurma isteğiniz durumunda, onu sanal bir makineye nasıl kurabileceğinizi ayrıntılı olarak ele almayacağız. VirtualBox'ı kullanacağız, Ubuntu 20.04 sürümünü (yazma sırasındaki mevcut sürüm) kuracağız ve bunun altında derleyiciler, SDK'lar vb. ile çalışmaya başlayacağız.
Linux ortamına gidelim ve distribütörden aldığımız arşivi açalım.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz
sim_open_sdk dizinine gidin ve ortamı ekleyin:
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
Aynı klasörde kalıyoruz ve içindeyken sonraki komutları yürütüyoruz.
Yüklü değilse libncurses5-dev kitaplığını yükleyin:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y
Python, eğer kurulu değilse:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y
ve gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc
Derleme:
Şimdi birkaç dosyayı derlememiz gerekiyor, aşağıdaki komutları sırayla çalıştırıyoruz.
Derleme sırasında çekirdek yapılandırma penceresi açılırsa, Çıkış'ı seçip konsola geri dönmeniz yeterlidir; çekirdeği şimdi yapılandırmamıza gerek yok.
Yaparız:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make
Önyükleyiciyi derleyin:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot
Çekirdeğin derlenmesi:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
Kök dosya sistemini derleyin:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs
Linux kullanıcıları için modül sürücüsünü derlemek faydalı olacaktır:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module
Demoyu derleyelim:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo
Bundan sonra sim_open_sdk/output dizininde birkaç yeni dosya görünecektir:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn boot.img demo_app helloworld system.img
Demo
Demoyu modülümüze yüklemeyi deneyelim ve ne çıkacağını görelim.
İndir
sim_open_sdk dizininde demo_app dosyasını görebiliriz. Onu alıp modülün bağlı olduğu PC'deki C sürücüsünün köküne aktarıyoruz. Ardından Windows komut satırını başlatın (Win+R -> cmd) ve şunu girin:
C:>adb push C:demo_app /data/
Konsol bize şunu söyleyecektir:
C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)
Bu, dosyanın başarıyla modüle gönderildiği ve tek yapmamız gereken onu çalıştırmak olduğu anlamına gelir. Tereddüt etmeyelim.
Yaparız:
C:>adb shell
İndirilen dosyanın haklarını genişletiyoruz:
/ # cdhmod 777 /data/demo_app
Ve koşuyoruz:
/ # /data/demo_app
Aynı konsolda modül bize aşağıdakileri söyleyecektir:
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 >
Modülün IMEI'sine bakalım, 7 girin (komut moduna geçin) ve ardından 5 girin:
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 >
Bu şekilde modülün IMEI'sini göreceğiz.
Sonuç olarak
Umarım modüle nasıl başlayacağımız konusunda genel bir fikir edinebilmişizdir. İlerleyen yazılarımızda SIM7600E-H platformunun sağladığı yeteneklerin yanı sıra modülde kendi uygulamanızı uzaktan nasıl güncelleyebileceğinizi daha yakından inceleyeceğiz.
Sizi yorumlarda soru sormaya ve ayrıca modülün yeteneklerinin hangi yönünün sonraki makalelere yansıtılması gerektiğini belirtmeye davet ediyorum.
Kaynak: habr.com