SIM7600E-H modüllerinin parçası olarak OpenLinux

SIM7600E-H modüllerinin parçası olarak OpenLinux

Ö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. SIMCom Kablosuz Çözümler özel bir uygulamayı derleyin ve bir modüle yükleyin.

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ı bundan dolayıböyle bir dosya sisteminin daha ayrıntılı bir açıklaması da vardır.

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:

SIM7600E-H modüllerinin parçası olarak OpenLinux

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)

SIMCom Kablosuz Çözümler geliştiricilere Linux veya Windows için en tanıdık geliştirme ortamını seçme fırsatı sağlar. Bir modülde çalıştırılabilir bir uygulamadan bahsediyorsak, Windows'u seçmek daha iyidir, daha hızlı ve daha kolay olacaktır. Karmaşık bir uygulama mimarisi ve sonraki yükseltmeleri bekliyorsanız Linux kullanmak daha iyidir. Ayrıca modüle daha sonra yüklemek üzere yürütülebilir dosyaları derlemek için Linux'a ihtiyacımız var; derleme için bir sanal makine yeterlidir.

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

  1. GNU / Linux
  2. cygwin
  3. sürücü
  4. 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: bağlantı.

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.

  1. Lisans sözleşmesini kabul ediyoruz
    SIM7600E-H modüllerinin parçası olarak OpenLinux
  2. Kurulum klasörünü belirtin
    SIM7600E-H modüllerinin parçası olarak OpenLinux
  3. Gerekli bileşenleri değiştirmeden bırakıyoruz
    SIM7600E-H modüllerinin parçası olarak OpenLinux
  4. Olduğu gibi bırak
    SIM7600E-H modüllerinin parçası olarak OpenLinux
  5. Birkaç kez “Sonraki”, “Yükle” ve temelde bu kadar
    SIM7600E-H modüllerinin parçası olarak OpenLinux

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. Burada her şey basit, Cygwin'in güncel sürümü projenin resmi web sitesinden ücretsiz olarak indirilebilir, yazının yazıldığı sırada materyali hazırlarken kullandığımız 3.1.5 sürümü mevcuttu.

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.

SIM7600E-H modüllerinin parçası olarak OpenLinux

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:

SIM7600E-H modüllerinin parçası olarak OpenLinux

Sürücülerle işimiz bitti, hadi ADB'ye geçelim.

ADB'yi yükleme

Resmi Android Geliştirici web sitesine gidin bağlantı. Hacimli Android Studio'yu indirmeyeceğiz; sadece "Windows için SDK Platform Araçlarını İndirin" bağlantısı aracılığıyla indirilebilecek komut satırına ihtiyacımız var.

SIM7600E-H modüllerinin parçası olarak OpenLinux

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:

SIM7600E-H modüllerinin parçası olarak OpenLinux

Benzer şekilde, indirilen ve paketi açılan ADB arşivinin yolunu C sürücüsünün köküne ekleyin.

SIM7600E-H modüllerinin parçası olarak OpenLinux

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:

SIM7600E-H modüllerinin parçası olarak OpenLinux

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:

SIM7600E-H modüllerinin parçası olarak OpenLinux

Bittiğinde, modüle olan bağlantının yapılandırması tamamlanır ve modülle çalışmak üzere kabuğu başlatabiliriz.

SIM7600E-H modüllerinin parçası olarak OpenLinux

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

Yorum ekle