OpenLinux sebagai bagian dari modul SIM7600E-H

OpenLinux sebagai bagian dari modul SIM7600E-H

Mekanisme untuk mengembangkan aplikasi khusus dan memuatnya ke dalam modul tersedia pada sistem operasi Linux dan Windows. Pada artikel ini kita akan melihat secara mendetail caranya, menggunakan contoh dari SDK yang disediakan Solusi Nirkabel SIMCom kompilasi dan muat aplikasi khusus ke dalam modul.

Sebelum menulis artikel, salah satu kenalan saya, yang jauh dari pengembangan untuk Linux, meminta saya untuk mendekati masalah menjelaskan proses pengembangan aplikasi saya sendiri untuk modul SIM7600E-H sedetail mungkin. Kriteria penilaian aksesibilitas penyajian materi adalah ungkapan “agar saya mengerti”.

Saya mengundang Anda untuk mengetahui apa yang terjadi.

Artikel ini diperbarui dan diperbarui secara berkala

Foreplay

Biasanya modul komunikasi seluler hanya digunakan untuk transmisi data, panggilan suara, transmisi SMS dan sejenisnya. Semua ini dilakukan melalui perintah AT yang dikirim dari mikrokontroler kontrol eksternal. Namun ada kategori modul yang memungkinkan Anda mengeksekusi kode khusus yang dimuat dari luar. Dalam beberapa kasus, hal ini secara signifikan mengurangi anggaran keseluruhan perangkat, memungkinkan Anda memasang mikrokontroler yang lebih sederhana (dan sama anggarannya) di papan atau mengabaikannya sama sekali. Dengan munculnya modul LTE yang dikendalikan oleh OS Android atau Linux dan sumber dayanya yang kuat, tugas apa pun yang tersedia untuk prosesor populer dapat diselesaikan. Artikel ini akan membahas tentang SIM7600E-H yang dikendalikan oleh OS Linux. Kami akan melihat cara mengunduh dan menjalankan aplikasi yang dapat dieksekusi.

Dalam banyak hal, materi ini didasarkan pada dokumen “quide pengembangan SIM7600 Open Linux”, tetapi beberapa tambahan dan, pertama-tama, versi Rusia akan berguna. Artikel ini akan membantu mereka yang baru mulai menguasai modul memahami cara mengunduh aplikasi demo dan memberikan keterampilan yang diperlukan untuk pekerjaan selanjutnya.

Secara singkat tentang siapa SIM7600E-H itu

SIM7600E-H adalah modul yang dibangun pada prosesor ARM Cortex-A7 1.3GHz dari Qualcomm, memiliki sistem operasi Linux (kernel 3.18.20) di dalamnya, mampu bekerja dengan pita frekuensi Eropa (termasuk Rusia) yang mendukung Cat 2G/3G/ LTE .4, memberikan kecepatan unduh maksimum hingga 150Mbps dan kecepatan unggah hingga 50Mbps. Periferal yang kaya, rentang suhu industri, dan kehadiran navigasi GPS/GLONASS internal memenuhi segala persyaratan untuk solusi modular modern di bidang M2M.

Ikhtisar sistem

Modul SIM7600E-H didasarkan pada sistem operasi Linux (kernel 3.18.20). Pada gilirannya, sistem file dibangun berdasarkan sistem file jurnal UBIFS (Unsorted Block Image File System).

Fitur penting dari sistem file ini meliputi:

  • bekerja dengan partisi, memungkinkan Anda membuat, menghapus, atau mengubah ukurannya;
  • memastikan keselarasan rekaman di seluruh volume media;
  • bekerja dengan blok buruk;
  • meminimalkan kemungkinan kehilangan data jika terjadi pemadaman listrik atau kegagalan lainnya;
  • menyimpan log.

Deskripsi diambil karenanya, ada juga penjelasan lebih rinci tentang sistem file tersebut.

Itu. Jenis sistem file ini ideal untuk kondisi pengoperasian modul yang sulit dan kemungkinan masalah daya. Namun hal ini tidak berarti bahwa kondisi daya yang tidak stabil akan menjadi mode pengoperasian modul yang diharapkan; ini hanya menunjukkan kelayakan perangkat yang lebih besar.

ingatan

Distribusi area memori dibangun sebagai berikut:

OpenLinux sebagai bagian dari modul SIM7600E-H

Ada tiga bidang utama yang perlu disoroti:

ubi0:rootf – hanya-baca dan berisi kernel Linux itu sendiri
ubi0:usrfs – digunakan terutama untuk program pengguna dan penyimpanan data
ubi0:cahcefs – disediakan untuk pembaruan FOTA. Jika ruang yang tersedia tidak cukup untuk mengunduh pembaruan, sistem akan menghapus file yang tidak digunakan dan mengosongkan ruang. Namun demi alasan keamanan, sebaiknya Anda tidak meletakkan file Anda di sana.

Ketiga bagian tersebut didistribusikan sebagai berikut:

Berkas sistem
Ukuran
Bekas
Tersedia
Menggunakan%
Dipasang pada

ubi0:rootf
40.7M
36.2M
4.4M
89%
/

ubi0:usrfs
10.5M
360K
10.1M
3%
/data

ubi0:cachef
50.3M
20K
47.7M
0%
/ cache

Fungsionalitas yang tersedia

Seperti disebutkan di atas, modul ini dibangun di atas chipset Cortex A7 dari Qualcomm. Adalah salah jika tidak menyediakan inti berperforma tinggi untuk memproses program pengguna dan membongkar prosesor utama perangkat dengan memindahkan beberapa bagian program ke modul.

Untuk program pengguna, mode pengoperasian periferal berikut akan tersedia bagi kami:

Nomor Pin
Nama
Sis GPIO No.
Tindakan default
Fungsi1
Fungsi2
Tarik
Interupsi bangun tidur

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
-
Kartu SD
-
-
B-PD
-

22
SD_DATA0
-
Kartu SD
-
-
B-PD
-

23
SD_DATA1
-
Kartu SD
-
-
B-PD
-

24
SD_DATA2
-
Kartu SD
-
-
B-PD
-

25
SD_DATA3
-
Kartu SD
-
-
B-PD
-

26
SD_CLK
-
Kartu SD
-
-
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
Status
GPIO
Status
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
-

Setuju, daftarnya mengesankan dan perhatikan: beberapa periferal digunakan untuk mengoperasikan modul sebagai router. Itu. Berdasarkan modul tersebut, Anda dapat membuat router kecil yang akan mendistribusikan Internet melalui Wi-Fi. Omong-omong, ada solusi siap pakai yang disebut SIM7600E-H-MIFI dan merupakan kartu miniPCIE dengan modul SIM7600E-H yang disolder dan beberapa pin antena, salah satunya adalah antena Wi-Fi. Namun, ini adalah topik untuk artikel terpisah.

Rabu (bukan hari dalam seminggu)

Solusi Nirkabel SIMCom memberikan kesempatan bagi pengembang untuk memilih lingkungan pengembangan yang paling familiar untuk Linux atau Windows. Jika kita berbicara tentang satu aplikasi yang dapat dieksekusi dalam satu modul, maka lebih baik memilih Windows, itu akan lebih cepat dan mudah. Jika arsitektur aplikasi yang kompleks dan peningkatan selanjutnya diharapkan, lebih baik menggunakan Linux. Kita juga memerlukan Linux untuk mengkompilasi file yang dapat dieksekusi untuk selanjutnya dimuat ke dalam modul; mesin virtual sudah cukup untuk kompilasi.

Apa yang Anda butuhkan tidak tersedia secara bebas untuk diunduh - sebuah SDK, yang dapat Anda minta dari distributor Anda.

Menginstal utilitas untuk bekerja dengan modul

Selanjutnya, kami akan bekerja di Windows sebagai OS yang paling familiar bagi sebagian besar pengguna.

Kita perlu menginstal perangkat lunak yang diperlukan dalam beberapa langkah sederhana untuk selanjutnya menguasai cara bekerja dengan modul:

  1. GNU / Linux
  2. Cygwin
  3. Driver
  4. ADB

Menginstal GNU/Linux

Untuk membangun aplikasi, Anda dapat menggunakan kompiler apa pun yang kompatibel dengan ARM-Linux. Kami akan menggunakan SourceryCodeBenchLiteARM GNU/Linuxtranslater yang tersedia untuk diunduh di link.

Untuk memastikan semua komponen terpasang dengan benar, saya akan meninggalkan beberapa screenshot proses instalasi. Pada prinsipnya tidak ada yang rumit dalam instalasinya.

Untuk memastikan semua komponen terpasang dengan benar, saya akan meninggalkan beberapa screenshot proses instalasi. Pada prinsipnya tidak ada yang rumit dalam instalasinya.

  1. Kami menerima perjanjian lisensi
    OpenLinux sebagai bagian dari modul SIM7600E-H
  2. Tentukan folder instalasi
    OpenLinux sebagai bagian dari modul SIM7600E-H
  3. Kami membiarkan komponen yang diperlukan tidak berubah
    OpenLinux sebagai bagian dari modul SIM7600E-H
  4. Biarkan apa adanya
    OpenLinux sebagai bagian dari modul SIM7600E-H
  5. Beberapa kali “Berikutnya”, “Instal” dan pada dasarnya hanya itu
    OpenLinux sebagai bagian dari modul SIM7600E-H

Menginstal Cygwin

Selanjutnya, untuk pengembangan, Anda memerlukan satu set perpustakaan dan utilitas dari set yang disediakan Cygwin. Semuanya sederhana di sini, versi Cygwin saat ini dapat diunduh secara gratis di situs resmi proyek, pada saat penulisan, versi 3.1.5 tersedia, yang kami gunakan saat menyiapkan materi.

Tidak ada yang rumit dalam menginstal Cygwin, satu-satunya hal yang perlu Anda pilih adalah cermin dari mana penginstal akan mengunduh file yang diperlukan, pilih salah satu dan instal, serta seperangkat utilitas dan perpustakaan, meninggalkan semua perpustakaan yang tersedia dan utilitas yang dipilih.

menginstal driver

Setelah modul terhubung ke PC, Anda perlu menginstal driver. Ini dapat diminta dari distributor Anda (disarankan). Saya tidak menyarankan mencari di Internet sendiri, karena... Mungkin diperlukan banyak waktu untuk menemukan penyebab konflik perangkat.

OpenLinux sebagai bagian dari modul SIM7600E-H

Di antara port yang dipilih kita melihat yang berikut:

Windows
Linux
Описание

Diagnostik SimTech HS-USB
Serial USB
Antarmuka Diagnostik

SimTech HS-USB NMEA
Serial USB
Antarmuka GPS NMEA

Port SimTech HS-USB AT
Serial USB
Antarmuka port AT

Modem SimTech HS-USB
Serial USB
Antarmuka port modem

Audio SimTech HS-USB
Serial USB
Antarmuka Audio USB

Adaptor WWAN SimTech HS-USB
Jaringan USB
Antarmuka NDIS WWAN

Antarmuka ADB Komposit Android
USB ADB
Android menambahkan port debug

Seperti yang mungkin Anda perhatikan, tidak ada USB ADB di antara port-port di tangkapan layar, ini karena port ADB di modul ditutup secara default dan Anda perlu mengaktifkannya dengan mengirimkan perintah 'AT+CUSBADB=1' ke AT port modul dan reboot (ini dapat dilakukan dengan perintah 'AT+CRESET').

Hasilnya, kami mendapatkan antarmuka yang diinginkan di pengelola perangkat:

OpenLinux sebagai bagian dari modul SIM7600E-H

Kita sudah selesai dengan drivernya, mari beralih ke ADB.

Menginstal ADB

Kunjungi situs web resmi Pengembang Android link. Kami tidak akan mengunduh Android Studio yang besar; kami hanya memerlukan baris perintah, tersedia untuk diunduh melalui tautan “Unduh SDK Platform-Tools untuk Windows”.

OpenLinux sebagai bagian dari modul SIM7600E-H

Unduh dan ekstrak arsip yang dihasilkan ke root drive C.

Variabel Lingkungan

Setelah menginstal Cygwin, Anda perlu menambahkan jalur Cygwin/bin/ ke variabel lingkungan pengembangan (Panel Kontrol Klasik → Sistem → Pengaturan sistem lanjutan → Lanjutan → Variabel Lingkungan → Variabel Sistem → Jalur → Edit) seperti yang ditunjukkan pada gambar di bawah:

OpenLinux sebagai bagian dari modul SIM7600E-H

Demikian pula, tambahkan jalur ke arsip ADB yang diunduh dan dibongkar ke root drive C.

OpenLinux sebagai bagian dari modul SIM7600E-H

Klik OK beberapa kali dan restart komputer.

Setelah reboot, Anda dapat dengan mudah memeriksa apakah ADB berfungsi dengan benar dengan membuka baris perintah (Win+R → cmd) dan mengetik perintah 'adb version'. Kami mendapatkan sesuatu seperti ini:

OpenLinux sebagai bagian dari modul SIM7600E-H

Mari sambungkan modul ke PC (jika kebetulan terputus) dan periksa apakah ADB melihatnya dengan perintah 'adb devices':

OpenLinux sebagai bagian dari modul SIM7600E-H

Selesai, ini menyelesaikan konfigurasi koneksi ke modul dan kita dapat meluncurkan shell untuk bekerja dengan modul.

OpenLinux sebagai bagian dari modul SIM7600E-H

Membongkar dan mengkompilasi SDK

Sekarang kita mempunyai akses ke shell dan dapat mulai bekerja dengan baris perintah modul, mari kita coba mengkompilasi aplikasi pertama kita untuk dimuat ke dalam modul.

Banyak orang mungkin mengalami kesulitan dengan hal ini! Karena Modul ini berjalan pada sistem operasi Linux, untuk menghindari tabrakan saat mengkompilasi kode di Windows, yang terbaik adalah mengkompilasi di lingkungan asli - Linux.

Kami tidak akan membahas secara rinci bagaimana, dengan tidak adanya Linux dan keinginan untuk menginstalnya di mesin Anda, Anda dapat menginstalnya di mesin virtual. Kami akan menggunakan VirtualBox, menginstal Ubuntu versi 20.04 (versi saat ini pada saat penulisan) dan di bawahnya kami akan mulai bekerja dengan kompiler, SDK, dll.

Mari masuk ke lingkungan Linux dan membongkar arsip yang diterima dari distributor.

simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz 

Buka direktori sim_open_sdk dan tambahkan lingkungan:

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 

Kami tetap berada di folder yang sama dan menjalankan perintah selanjutnya saat berada di dalamnya.
Instal perpustakaan libncurses5-dev jika belum diinstal:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y

Python, jika belum diinstal juga:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y

dan gcc:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc

Kompilasi:

Sekarang kita perlu mengkompilasi beberapa file, kita menjalankan perintah berikut secara berurutan.

Jika jendela konfigurasi kernel muncul saat kompilasi, cukup pilih Keluar dan kembali ke konsol; kita tidak perlu mengkonfigurasi kernel sekarang.

Kami melakukan:

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

Mengkompilasi bootloader:

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

Mengompilasi kernel:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel

Kompilasi sistem file root:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs

Untuk pengguna Linux, mengkompilasi driver modul akan relevan:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module

Mari kompilasi demonya:

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

Setelah itu akan muncul beberapa file baru di direktori sim_open_sdk/output:

simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn  boot.img  demo_app  helloworld  system.img

Demonstrasi

Mari kita coba memuat demo ke dalam modul kita dan lihat apa hasilnya.

Unduh

Di direktori sim_open_sdk kita bisa melihat file demo_app. Kami mengambilnya dan mentransfernya ke root drive C pada PC yang terhubung dengan modul. Kemudian luncurkan baris perintah Windows (Win+R -> cmd) dan masukkan:

C:>adb push C:demo_app /data/

Konsol akan memberi tahu kita:

C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)

Artinya file sudah berhasil terkirim ke modul dan kita tinggal menjalankannya saja. Jangan ragu.

Kami melakukan:

C:>adb shell

Kami memperluas hak file yang diunduh:

/ # cdhmod 777 /data/demo_app

Dan kami menjalankan:

/ # /data/demo_app

Di konsol yang sama, modul akan memberi tahu kita hal berikut:

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 >   

Mari kita lihat IMEI modul, masukkan 7 (beralih ke mode perintah) lalu masukkan 5:

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 >

Dengan cara ini kita akan melihat IMEI modul.

Sebagai kesimpulan

Saya harap kami dapat memperoleh gambaran umum tentang bagaimana memulai modul ini. Pada artikel berikut, kita akan melihat lebih dekat kemampuan yang disediakan platform SIM7600E-H, serta bagaimana Anda dapat memperbarui aplikasi Anda sendiri dalam modul dari jarak jauh.

Saya mengundang Anda untuk mengajukan pertanyaan di komentar, dan juga menunjukkan aspek kemampuan modul mana yang harus tercermin dalam artikel berikutnya.

Sumber: www.habr.com

Tambah komentar