OtwarteLinux jako część modułów SIM7600E-H

OtwarteLinux jako część modułów SIM7600E-H

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 Rozwiązania bezprzewodowe SIMCom 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 stąd, 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:

OtwarteLinux jako część modułów SIM7600E-H

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)

Rozwiązania bezprzewodowe SIMCom 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:

  1. GNU ANTYLOPA/Linux
  2. Cygwin
  3. Kierowcy
  4. 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 powiązanie.

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.

  1. Akceptujemy umowę licencyjną
    OtwarteLinux jako część modułów SIM7600E-H
  2. Określ folder instalacyjny
    OtwarteLinux jako część modułów SIM7600E-H
  3. Niezbędne komponenty pozostawiamy bez zmian
    OtwarteLinux jako część modułów SIM7600E-H
  4. Zostaw to tak jak jest
    OtwarteLinux jako część modułów SIM7600E-H
  5. Kilka razy „Dalej”, „Zainstaluj” i w zasadzie to wszystko
    OtwarteLinux jako część modułów SIM7600E-H

Instalowanie Cygwina

Ponadto do programowania będziesz potrzebować zestawu bibliotek i narzędzi z dostarczonego zestawu Cygwin. 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.

OtwarteLinux jako część modułów SIM7600E-H

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

OtwarteLinux jako część modułów SIM7600E-H

Skończyliśmy ze sterownikami, przejdźmy do ADB.

Instalowanie ADB

Wchodzimy na oficjalną stronę internetową Android Deweloper przez powiązanieNie pobierajmy tego większego. Android Studio, potrzebujemy tylko wiersza poleceń, dostępnego do pobrania pod linkiem „Pobierz narzędzia platformy SDK dla Windows".

OtwarteLinux jako część modułów SIM7600E-H

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:

OtwarteLinux jako część modułów SIM7600E-H

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

OtwarteLinux jako część modułów SIM7600E-H

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:

OtwarteLinux jako część modułów SIM7600E-H

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

OtwarteLinux jako część modułów SIM7600E-H

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

OtwarteLinux jako część modułów SIM7600E-H

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 -y

Python, jeśli również nie został zainstalowany:

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

i gcc:

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

Kompilacja:

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$ make

Kompilacja bootloadera:

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

Kompilacja 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 rootfs

Dla użytkowników Linux Istotne będzie skompilowanie sterownika modułu:

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

Skompilujmy demo:

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

Po 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 shell

Rozszerzamy prawa pobranego pliku:

/ # cdhmod 777 /data/demo_app

I biegniemy:

/ # /data/demo_app

W 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

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster