
Mechanizm tworzenia własnej aplikacji i ładowania jej do modułu jest dostępny zarówno w systemie operacyjnym LinuxI WindowsW tym artykule szczegółowo omówimy, jak korzystać z przykładów z dostarczonego zestawu SDK skompiluj i załaduj niestandardową aplikację do modułu.
Zanim napisałem artykuł, jeden z moich znajomych, który jest daleko od rozwoju Linux, poprosił o szczegółowy opis procesu tworzenia aplikacji dedykowanej dla modułu SIM7600E-H. Kryterium oceny dostępności prezentacji było sformułowanie „żebym zrozumiał”.
Zapraszam do zapoznania się z tym co się wydarzyło.
Artykuł jest na bieżąco uzupełniany i aktualizowany
Gra wstępna
Zazwyczaj moduły komórkowe służą wyłącznie do przesyłania danych, połączeń głosowych, wysyłania wiadomości SMS itp. Wszystko to odbywa się za pomocą komend AT wysyłanych z zewnętrznego mikrokontrolera sterującego. Istnieje jednak kategoria modułów, które umożliwiają wykonywanie kodu użytkownika załadowanego zewnętrznie. W niektórych przypadkach znacznie obniża to całkowity koszt urządzenia, umożliwiając instalację prostszego (i równie ekonomicznego) mikrokontrolera na płytce lub całkowitą jego eliminację. Wraz z pojawieniem się modułów LTE sterowanych przez system operacyjny, Android lub Linux Dzięki ich potężnym zasobom możesz wykonać każde zadanie dostępne dla popularnych procesorów. W tym artykule omówimy model SIM7600E-H, który jest zarządzany przez system operacyjny. LinuxPrzyjrzymy się, jak pobrać i uruchomić aplikację wykonywalną.
Materiał w dużej mierze opiera się na dokumencie „SIM7600 Open Linux „Przewodnik programistyczny”, ale niektóre dodatki, zwłaszcza wersja rosyjskojęzyczna, będą przydatne. Ten artykuł pomoże tym, którzy dopiero zaczynają korzystać z modułu, w nawigacji po aplikacji demonstracyjnej i zapewni niezbędne umiejętności do dalszej pracy.
Krótko o tym, kim jest SIM7600E-H
SIM7600E-H to moduł zbudowany na bazie procesora ARM Cortex-A7 1.3 GHz firmy Qualcomm, który posiada system operacyjny Linux (jądro 3.18.20) w środku, zdolny do pracy w europejskich (w tym rosyjskich) pasmach częstotliwości 2G/3G/LTE, obsługujący Cat.4 i zapewniający maksymalną prędkość pobierania do 150 Mb/s oraz wysyłania do 50 Mb/s. Bogate wyposażenie peryferyjne, przemysłowy zakres temperatur pracy oraz wbudowana nawigacja GPS/GLONASS spełniają wszystkie wymagania nowoczesnego, modułowego rozwiązania M2M.
Przegląd systemu
Moduł SIM7600E-H bazuje na systemie operacyjnym Linux (jądro 3.18.20). System plików z kolei zbudowany jest na dziennikowym systemie plików UBIFS (Unsorted Block Image File System).
Do ważnych cech tego systemu plików należą:
- współpracuje z partycjami, umożliwia tworzenie, usuwanie lub zmianę ich rozmiaru;
- zapewnia wyrównanie nagrywania na całej objętości nośnika;
- współpracuje ze złymi blokami;
- minimalizuje prawdopodobieństwo utraty danych podczas przerwy w dostawie prądu lub innych awarii;
- prowadzenie logów.
Opis zabrany , istnieje również bardziej szczegółowy opis takiego systemu plików.
Te. Ten typ systemu plików idealnie sprawdza się w trudnych warunkach pracy modułu i ewentualnych problemach z zasilaniem. Nie oznacza to jednak, że oczekiwanym trybem pracy modułu będą niestabilne warunki zasilania, a jedynie wskazuje na większą żywotność urządzenia.
Память
Rozkład obszarów pamięci jest skonstruowany w następujący sposób:

Należy podkreślić trzy główne obszary:
ubi0:rootfs – jest tylko do odczytu i zawiera samo jądro Linux
ubi0:usrfs – używane głównie do przechowywania programów użytkownika i danych
ubi0:cahcefs – zarezerwowane dla aktualizacji FOTA. Jeśli dostępna przestrzeń nie wystarczy do pobrania aktualizacji, system usunie nieużywane pliki, zwalniając w ten sposób miejsce. Jednak ze względów bezpieczeństwa nie powinieneś umieszczać tam swoich plików.
Wszystkie trzy sekcje są dystrybuowane w następujący sposób:
System plików
Rozmiar
Używany
Dostępny
Używać%
Zamontowane na
ubi0:rootfs
40.7M
36.2M
4.4M
89%
/
ubi0:usrfs
10.5M
360 tysięcy
10.1M
3%
/dane
ubi0:cachefy
50.3M
20 tysięcy
47.7M
0%
/Pamięć podręczna
Dostępna funkcjonalność
Jak wspomniano powyżej, moduł zbudowany jest na chipsecie Cortex A7 firmy Qualcomm. Błędem byłoby nie zapewnienie tak wysokowydajnego rdzenia do przetwarzania programu użytkownika i odciążenia głównego procesora urządzenia poprzez przerzucenie części programu do modułu.
Dla programu użytkownika dostępne będą dla nas następujące tryby pracy peryferii:
Numer pina
Imię i nazwisko
Sys GPIO nr.
Akcja domyślna
Funk1
Funk2
Ciągnąć
Przerwanie budzenia
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
-
karta SD
-
-
B-PD
-
22
SD_DATA0
-
karta SD
-
-
B-PD
-
23
SD_DATA1
-
karta SD
-
-
B-PD
-
24
SD_DATA2
-
karta SD
-
-
B-PD
-
25
SD_DATA3
-
karta SD
-
-
B-PD
-
26
SD_CLK
-
karta SD
-
-
B-PN
-
27
SDIO_DANE1
-
WLAN
-
-
B-PD
-
28
SDIO_DANE2
-
WLAN
-
-
B-PD
-
29
SDIO_CMD
-
WLAN
-
-
B-PD
-
30
SDIO_DANE0
-
WLAN
-
-
B-PD
-
31
SDIO_DANE3
-
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
-
Zgadzam się, lista jest imponująca i uwaga: część peryferii służy do obsługi modułu jako routera. Te. W oparciu o taki moduł można zbudować mały router, który będzie dystrybuował Internet poprzez Wi-Fi. Swoją drogą istnieje gotowe rozwiązanie o nazwie SIM7600E-H-MIFI i jest to karta miniPCIE z wlutowanym modułem SIM7600E-H i kilkoma pinami antenowymi, jednym z nich jest antena Wi-Fi. Jest to jednak temat na osobny artykuł.
Środa (nie jest dniem tygodnia)
zapewnić programistom możliwość wyboru środowiska programistycznego, które jest im najbardziej znane Linux lub WindowsJeżeli mówimy o jednej aplikacji wykonywalnej w module, to lepiej wybrać Windows, będzie szybciej i łatwiej. Jeśli oczekujesz złożonej architektury aplikacji i kolejnych aktualizacji, lepiej skorzystać z LinuxBędziemy również potrzebować Linux Do kompilowania plików wykonywalnych w celu późniejszego załadowania ich do modułu w zupełności wystarczy maszyna wirtualna.
To, czego potrzebujesz, nie jest łatwo dostępne do pobrania — pakiet SDK, który możesz zamówić u swojego dystrybutora.
Instalacja narzędzi do pracy z modułem
Od tego momentu będziemy pracować pod Windows jako najbardziej znany system operacyjny dla większości użytkowników.
Będziemy musieli w kilku prostych krokach zainstalować niezbędne oprogramowanie, aby później opanować pracę z modułem:
- GNU ANTYLOPA/Linux
- Cygwin
- Kierowcy
- ADB
Instalowanie GNU/Linux
Do zbudowania aplikacji możesz wykorzystać dowolną platformę zgodną ze standardem ARM.Linux Kompilator. Użyjemy SourceryCodeBenchLiteARM GNU/Linuxtłumacz dostępny do pobrania na .
Aby mieć pewność, że wszystkie komponenty zostały poprawnie zainstalowane, zostawię kilka zrzutów ekranu z procesu instalacji. W zasadzie w instalacji nie ma nic skomplikowanego.
Aby mieć pewność, że wszystkie komponenty zostały poprawnie zainstalowane, zostawię kilka zrzutów ekranu z procesu instalacji. W zasadzie w instalacji nie ma nic skomplikowanego.
- Akceptujemy umowę licencyjną

- Określ folder instalacyjny

- Niezbędne komponenty pozostawiamy bez zmian

- Zostaw to tak jak jest

- Kilka razy „Dalej”, „Zainstaluj” i w zasadzie to wszystko

Instalowanie Cygwina
Ponadto do programowania będziesz potrzebować zestawu bibliotek i narzędzi z dostarczonego zestawu . Tutaj wszystko jest proste, aktualną wersję Cygwina można pobrać za darmo na oficjalnej stronie projektu, w momencie pisania tego tekstu dostępna była wersja 3.1.5, z której korzystaliśmy przygotowując materiał.
Instalacja Cygwina nie jest skomplikowana, jedyne co musisz wybrać to serwer lustrzany, z którego instalator pobierze niezbędne pliki, wybierze dowolny i zainstaluje, a także zestaw narzędzi i bibliotek, pozostawiając wszystkie dostępne biblioteki i wybrane media.
Instalacja sterowników
Po podłączeniu modułu do komputera PC konieczna będzie instalacja sterowników. Można je zamówić u dystrybutora (zalecane). Nie polecam samodzielnego przeszukiwania Internetu, bo... Znalezienie przyczyny konfliktu urządzeń może zająć dużo czasu.

Wśród wybranych portów widzimy:
Windows
Linux
Opis
Diagnostyka SimTech HS-USB
Szeregowy USB
Interfejs diagnostyczny
SimTech HS-USB NMEA
Szeregowy USB
Interfejs GPS NMEA
SimTech HS-USB w porcie
Szeregowy USB
Interfejs portu AT
Modem SimTech HS-USB
Szeregowy USB
Interfejs portu modemu
Dźwięk SimTech HS-USB
Szeregowy USB
Interfejs USB Audio
Adapter SimTech HS-USB WWAN
Sieć USB
Interfejs NDIS WWAN
Android Interfejs ADB kompozytowy
ADB USB
Android dodaj port debugowania
Jak zapewne zauważyłeś, wśród portów na zrzucie ekranu nie ma USB ADB, dzieje się tak dlatego, że port ADB w module jest domyślnie zamknięty i należy go włączyć wysyłając polecenie „AT+CUSBADB=1” do AT port modułu i zrestartuj go (można to zrobić za pomocą polecenia „AT+CRESET”).
W rezultacie otrzymujemy pożądany interfejs w menedżerze urządzeń:

Skończyliśmy ze sterownikami, przejdźmy do ADB.
Instalowanie ADB
Wchodzimy na oficjalną stronę internetową Android Deweloper przez Nie pobierajmy tego większego. Android Studio, potrzebujemy tylko wiersza poleceń, dostępnego do pobrania pod linkiem „Pobierz narzędzia platformy SDK dla Windows".

Pobierz i rozpakuj powstałe archiwum do katalogu głównego dysku C.
Zmienne środowiska
Po zainstalowaniu Cygwin będziesz musiał dodać ścieżkę Cygwin/bin/ do zmiennych środowiskowych programowania (Klasyczny Panel sterowania → System → Zaawansowane ustawienia systemu → Zaawansowane → Zmienne środowiskowe → Zmienne systemowe → Ścieżka → Edytuj), jak pokazano na zrzucie ekranu poniżej:

Podobnie dodaj ścieżkę do pobranego i rozpakowanego archiwum ADB do katalogu głównego dysku C.

Kliknij kilka razy OK i uruchom ponownie komputer.
Po ponownym uruchomieniu możesz łatwo sprawdzić, czy ADB działa poprawnie, otwierając wiersz poleceń (Win+R → cmd) i wpisując polecenie „wersja adb”. Otrzymujemy coś takiego:

Podłączmy moduł do komputera (jeśli tak się złożyło, że był odłączony) i sprawdźmy czy ADB go widzi komendą 'adb devices':

Gotowe, kończy to konfigurację połączenia z modułem i możemy uruchomić powłokę do pracy z modułem.

Rozpakowywanie i kompilowanie SDK
Teraz, gdy mamy dostęp do powłoki i możemy rozpocząć pracę z wierszem poleceń modułu, spróbujmy skompilować naszą pierwszą aplikację, która zostanie załadowana do modułu.
Dla wielu osób może to być wyzwaniem! Ponieważ moduł działa w systemie operacyjnym. Linux, aby uniknąć kolizji podczas kompilacji kodu w Windows – najlepiej kompilować w środowisku natywnym – Linux.
Nie będziemy się rozwodzić nad tym, jak to się dzieje w przypadku braku Linux A jeśli nie chcesz instalować go na swoim komputerze, możesz zainstalować go na maszynie wirtualnej. Użyjemy VirtualBoxa i zainstalujemy Ubuntu wersja 20.04 (wersja aktualna w momencie pisania tego tekstu) i zaczniemy pracować nad kompilatorami, zestawami SDK itp. w oparciu o nią.
Przechodzimy do środy Linux i rozpakuj archiwum otrzymane od dystrybutora.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz Przejdź do katalogu sim_open_sdk i dodaj środowisko:
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 Pozostajemy w tym samym folderze i będąc w nim wykonujemy kolejne polecenia.
Zainstaluj bibliotekę libncurses5-dev, jeśli nie została zainstalowana:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -yPython, jeśli również nie został zainstalowany:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -yi gcc:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gccKompilacja:
Teraz musimy skompilować kilka plików, uruchamiamy sekwencyjnie następujące polecenia.
Jeśli podczas kompilacji pojawi się okno konfiguracji jądra, po prostu wybierz opcję Wyjdź i wróć do konsoli; nie musimy teraz konfigurować jądra.
My robimy:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ makeKompilacja bootloadera:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make abootKompilacja jądra:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
Skompiluj główny system plików:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfsDla użytkowników Linux Istotne będzie skompilowanie sterownika modułu:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_moduleSkompilujmy demo:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demoPo czym w katalogu sim_open_sdk/output pojawi się kilka nowych plików:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn boot.img demo_app helloworld system.img
Демо
Spróbujmy załadować demo do naszego modułu i zobaczyć, co z tego wyniknie.
Pobierz
W katalogu sim_open_sdk znajduje się plik demo_app. Wypakuj go i przenieś do katalogu głównego dysku C na komputerze, do którego podłączony jest moduł. Następnie uruchom wiersz poleceń. Windows (Win+R -> cmd) i wpisz:
C:>adb push C:demo_app /data/Konsola powie nam:
C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)Oznacza to, że plik został pomyślnie przesłany do modułu i pozostaje nam jedynie go uruchomić. Nie wahajmy się.
My robimy:
C:>adb shellRozszerzamy prawa pobranego pliku:
/ # cdhmod 777 /data/demo_appI biegniemy:
/ # /data/demo_appW tej samej konsoli moduł powie nam co następuje:
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 >
Spójrzmy na IMEI modułu, wpiszmy 7 (przejdź do trybu poleceń), a następnie wpiszmy 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 >
W ten sposób zobaczymy IMEI modułu.
Na zakończenie
Mam nadzieję, że udało nam się uzyskać ogólne pojęcie o tym, jak rozpocząć pracę z modułem. W kolejnych artykułach przyjrzymy się bliżej możliwościom, jakie zapewnia platforma SIM7600E-H, a także temu, jak można zdalnie zaktualizować własną aplikację w module.
Zapraszam do zadawania pytań w komentarzach, a także wskazania, który aspekt możliwości modułu powinien znaleźć odzwierciedlenie w kolejnych artykułach.
Źródło: www.habr.com





