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
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
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:
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)
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:
- GNU / Linux
- Cygwin
- Driver
- 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
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.
- Kami menerima perjanjian lisensi
- Tentukan folder instalasi
- Kami membiarkan komponen yang diperlukan tidak berubah
- Biarkan apa adanya
- Beberapa kali “Berikutnya”, “Instal” dan pada dasarnya hanya itu
Menginstal Cygwin
Selanjutnya, untuk pengembangan, Anda memerlukan satu set perpustakaan dan utilitas dari set yang disediakan
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.
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:
Kita sudah selesai dengan drivernya, mari beralih ke ADB.
Menginstal ADB
Kunjungi situs web resmi Pengembang Android
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:
Demikian pula, tambahkan jalur ke arsip ADB yang diunduh dan dibongkar ke root drive C.
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:
Mari sambungkan modul ke PC (jika kebetulan terputus) dan periksa apakah ADB melihatnya dengan perintah 'adb devices':
Selesai, ini menyelesaikan konfigurasi koneksi ke modul dan kita dapat meluncurkan shell untuk bekerja dengan modul.
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