OpenLinux у складзе модуляў SIM7600E-H

OpenLinux у складзе модуляў SIM7600E-H

Механізм распрацоўкі карыстацкага прыкладання і загрузкі яго ў модуль даступны як пад аперацыйнай сістэмай Linux, так і Windows. У дадзеным артыкуле мы падрабязна разгледзім тое, як скарыстаўшыся прыкладамі з SDK які прадстаўляецца SIMCom Wireless Solutions скампіляваць і загрузіць карыстацкае прыкладанне ў модуль.

Перад напісаннем артыкула адзін мой знаёмы, далёкі ад распрацоўкі пад Linux, папытаў максімальна дэталёва падысці да пытання апісання працэсу распрацоўкі ўласнага прыкладання пад модуль SIM7600E-H. Крытэрам адзнакі даступнасці падачы матэрыялу стала фраза "так каб Я зразумеў".

Запрашаю азнаёміцца ​​з тым, што атрымалася.

Артыкул рэгулярна дапаўняецца і абнаўляецца

Прэлюдыя

Звычайна модулі сотавай сувязі выкарыстоўваюцца толькі для перадачы даных, галасавых выклікаў, перадачы СМС і падобнага. Усё гэта робіцца пасродкам АТ-каманд, якія адпраўляюцца з вонкавага кіраўніка мікракантролера. Але ёсць катэгорыя модуляў, якія дазваляюць выконваць карыстацкі код, які загружаецца звонку. У некаторых выпадках гэта значна скарачае агульны бюджэт прылады дазваляючы паставіць на поплатак прасцейшы (а роўна бюджэтны) мікракантролер ці адмовіцца ад яго зусім. З з'яўленнем LTE модуляў, якія кіруюцца АС Android або Linux і іх магутнымі рэсурсамі, можна вырашаць любыя задачы, якія даступныя папулярным працэсарам. У гэтым артыкуле пайдзе прамову аб SIM7600E-H, кіраваны АС Linux. Мы разгледзім, як загрузіць і запусціць выкананае прыкладанне.

Шмат у чым матэрыял грунтуецца на дакуменце "SIM7600 Open Linux development quide", але некаторыя дапаўненні і ў першую чаргу рускамоўная версія будуць карысныя. Артыкул дапаможа разабрацца тым, хто толькі пачынае засваенне модуля дайсці да загрузкі дэманстрацыйнага прыкладання і дасць неабходныя навыкі для наступнай працы.

Коратка аб тым, хто такі SIM7600E-H

SIM7600E-H - гэта модуль пабудаваны на базе працэсара ARM Cortex-A7 1.3GHz ад Qualcomm, які мае аперацыйную сістэму Linux (ядро 3.18.20) усярэдзіне, здольны працаваць з еўрапейскімі (у тым ліку і расійскімі) дыяпазонамі частот 2G/3G/ LTE, які падтрымлівае Cat.4, які забяспечвае максімальную хуткасць запампоўкі да 150Mbps і выгрузкі да 50Mbps. Багатая перыферыя, індустрыяльны тэмпературны дыяпазон і наяўнасць убудаванай навігацыі GPS/ГЛОНАСС перакрываюць любыя патрабаванні да сучаснага модульнага рашэння ў М2М тэматыцы.

Агляд сістэмы

Модуль SIM7600E-H грунтуецца на аперацыйнай сістэме Linux (ядро 3.18.20). У сваю чаргу, файлавая сістэма пабудавана на базе часопісаванай файлавай сістэмы UBIFS (Unsorted Block Image File System).

Да важных асаблівасцяў гэтай файлавай сістэмы адносяцца:

  • працуе з раздзеламі, дазваляе ствараць, выдаляць, або мяняць іх памер;
  • забяспечвае выраўноўванне запісу па ўсім аб'ёме носьбіта;
  • працуе з Bad-блокамі;
  • мінімізуе верагоднасць страты дадзеных пры аварыйным адключэнні сілкаванні ці іншых збоях;
  • вядзенне часопісаў.

Апісанне ўзята адсюль, тамака жа больш падрабязна расказана аб такой файлавай сістэме.

Г.зн. дадзены тып файлавай сістэмы ідэальна падыходзіць для цвёрдых умоў працы модуля і магчымых праблемах з харчаваннем. Але гэта не значыць, што ўмовы нестабільнага харчавання будуць з'яўляцца чаканым рэжымам працы модуля, гэта кажа толькі пра большую жыццяздольнасць прылады.

памяць

Размеркаванне абласцей памяці пабудавана наступным чынам:

OpenLinux у складзе модуляў SIM7600E-H

Трэба вылучыць тры асноўныя вобласці:

ubi0:rootfs – даступны толькі для чытання і змяшчае само ядро ​​Linux
ubi0:usrfs - выкарыстоўваецца пераважна для карыстацкай праграмы і захоўвання дадзеных
ubi0:cahcefs - зарэзервавана для FOTA абнаўленняў. Калі даступнай прасторы будзе недастаткова для загрузкі абнаўлення - сістэма выдаліць невыкарыстоўваныя файлы і такім чынам вызваліць месца. Але з меркаванняў бяспекі - не варта размяшчаць там свае файлы.

Усе тры часткі размеркаваны наступным чынам:

Filesystem
памер
выкарыстоўваецца
Даступны
Выкарыстоўваць%
Mounted on

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

ubi0:usrfs
10.5M
360K
10.1M
3%
/ дадзеныя

ubi0:cachefs
50.3M
20K
47.7M
0%
/ кэш

Даступная функцыянальнасць

Як ужо было згадана вышэй, модуль пабудаваны на базе чыпсэта Cortex A7 ад Qualcomm. Было б няправільна не падаць такое высокапрадукцыйнае ядро ​​для апрацоўкі карыстацкай праграмы і разгрузкі асноўнага працэсара прылады, пераклаўшы на модуль некаторую частку праграмы.

Для карыстацкай праграмы нам будуць даступныя наступныя рэжымы працы перыферыі:

Кантактны нумар
Імя
Sys GPIO No.
Дзеянне па змаўчанні
Func1
Func2
Пацягнуць
Wakeup interrupt

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
-
SD-карта
-
-
B-PD
-

22
SD_DATA0
-
SD-карта
-
-
B-PD
-

23
SD_DATA1
-
SD-карта
-
-
B-PD
-

24
SD_DATA2
-
SD-карта
-
-
B-PD
-

25
SD_DATA3
-
SD-карта
-
-
B-PD
-

26
SD_CLK
-
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
АЦП2
-
ADC
-
-
-
-

47
АЦП1
-
ADC
-
-
B-PU
-

48
SD_DET
GPIO_26
GPIO
GPIO
SD_DET
B-PD
X

49
СТАТУС
GPIO_52
Стан
GPIO
Стан
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
Фондавая біржа РТС
-
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
-

Пагодзіцеся, пералік вялікі і звернеце ўвагу: частка перыферыі выкарыстоўваецца для працы модуля ў якасці роўтара. Г.зн. на базе такога модуля можна зрабіць невялікі роўтэр, які будзе раздаваць інтэрнэт па Wi-Fi. Дарэчы, ёсць ужо гатовае рашэнне, завецца SIM7600E-H-MIFI і ўяўляе сабой miniPCIE картку, з напаяным модулем SIM7600E-H і некалькімі антэннымі высновамі, адзін з іх з'яўляецца антэнай Wi-Fi. Зрэшты, гэта ўжо тэма для асобнага матэрыялу.

Серада (не дзень тыдня)

SIMCom Wireless Solutions падаюць магчымасць распрацоўнікам абраць самастойна найболей знаёмае асяроддзе распрацоўкі пад Linux або Windows. Калі гаворка ідзе аб адным выкананым дадатку на модулі, то лепш абраць Windows, так атрымаецца хутчэй і прасцей. Калі мяркуецца складаная архітэктура прыкладання і наступныя апгрэйды - лепш выкарыстоўваць Linux. Таксама нам запатрабуецца Linux для кампіляцыі выкананых файлаў для наступнай загрузкі ў модуль, для кампіляцыі суцэль досыць віртуальнай машыны.

З таго што вам запатрабуецца, недаступнага для запампоўкі ў вольным доступе - SDK, якую можна запытаць у свайго дыстрыбутара.

Устаноўка ўтыліт для працы з модулем

Тут і далей мы будзем працаваць пад Windows як найболей знаёмай АС большасці карыстачоў.

Нам запатрабуецца за некалькі простых крокаў усталяваць неабходнае ПЗ для наступнага засваення працы з модулем:

  1. GNU / Linux
  2. Cygwin
  3. Кіроўца
  4. АБР

Ўстаноўка GNU/Linux

Для зборкі прыкладання можна скарыстацца любым сумяшчальным з ARM-Linux кампілятарам. Мы ж скарыстаемся SourceryCodeBenchLiteARM GNU/Linuxtranslater даступным для запампоўкі па спасылцы.

Каб усе кампаненты былі ўсталяваныя дакладна, пакіну некалькі скрыншотаў працэсу ўсталёўкі. У прынцыпе, ва ўсталёўцы няма нічога складанага.

Каб усе кампаненты былі ўсталяваныя дакладна, пакіну некалькі скрыншотаў працэсу ўсталёўкі. У прынцыпе, ва ўсталёўцы няма нічога складанага.

  1. Прымаем ліцэнзійную дамову
    OpenLinux у складзе модуляў SIM7600E-H
  2. Паказваем папку ўстаноўкі
    OpenLinux у складзе модуляў SIM7600E-H
  3. Неабходныя кампаненты пакідаем без змен
    OpenLinux у складзе модуляў SIM7600E-H
  4. Пакідаем як ёсць
    OpenLinux у складзе модуляў SIM7600E-H
  5. Некалькі разоў "Next", "Install" і ў прынцыпе ўсё
    OpenLinux у складзе модуляў SIM7600E-H

Ўстаноўка Cygwin

Далей для распрацоўкі на спатрэбіцца набор бібліятэк і ўтыліт з набору які прадстаўляецца Cygwin. Тут усё проста, актуальную версію Cygwin можна спампаваць бясплатна на афіцыйным сайце праекту, на момант напісання артыкула была даступная версія 3.1.5, яе мы і выкарыстоўвалі пры падрыхтоўцы матэрыялу.

Ва ўсталёўцы Cygwin няма нічога складанага, адзінае што трэба будзе абраць – люстэрка, з якога ўсталёўшчык запампуе неабходныя файлы, выбіраемы любое і ўсталёўваны, а таксама набор утыліт і бібліятэк, пакідаем абранымі ўсе даступныя бібліятэкі і ўтыліты.

Ўстаноўка драйвераў

Пасля таго, як модуль будзе падлучаны да ПК запатрабуецца ўсталяваць драйвера. Іх можна запытаць у свайго дыстрыбутара (рэкамендуецца). Шукаць у сетцы Інтэрнэт самастойна не рэкамендую, т.я. можа спатрэбіцца шмат часу на пошук з чым быў звязаны канфлікт прылад.

OpenLinux у складзе модуляў SIM7600E-H

Сярод выдзеленых партоў мы бачым наступныя:

Windows
Linux
Апісанне

SimTech HS-USB Diagnostics
Паслядоўны USB
Дыягнастычны інтэрфейс

SimTech HS-USB NMEA
Паслядоўны USB
GPS NMEA Interface

SimTech HS-USB AT Port
Паслядоўны USB
AT port Interface

SimTech HS-USB Modem
Паслядоўны USB
Modem port Interface

SimTech HS-USB Audio
Паслядоўны USB
Аўдыё інтэрфейс USB

SimTech HS-USB WWAN Adapter
USB Net
NDIS wwan Interface

Кампазітны інтэрфейс ADB Android
USB ADB
Android add debug port

Як вы напэўна звярнулі ўвагу, сярод портаў на скрыншоце няма USB ADB, гэта па чынніку таго, што ADB порт у модулі па змаўчанні зачынены і яго трэба ўключыць, адправіўшы каманду 'AT+CUSBADB=1' у АТ-порт модуля і перазагрузіць яго ( гэта можна зрабіць камандай 'AT+CRESET').

У выніку атрымаем патрэбны інтэрфейс у дыспетчару прылад:

OpenLinux у складзе модуляў SIM7600E-H

З драйверамі скончылі, пераходзім да ADB.

Устаноўка ADB

Заходзім на афіцыйны сайт Android Developer па спасылцы. Не будзем пампаваць грувасткі Android Studio, нам дастаткова каманднага радка, даступную для запампоўкі па спасылцы "Download SDK Platform-Tools for Windows".

OpenLinux у складзе модуляў SIM7600E-H

Качаем і распакоўваем атрыманы архіў у корань дыска C.

Пераменныя асяроддзі

Пасля ўсталёўкі Cygwin запатрабуецца дадаць шлях Cygwin/bin/ у зменныя асяроддзі распрацоўкі (Класічная Панэль кіравання → Сістэма → Дадатковыя параметры сістэмы → Дадаткова → Пераменныя асяроддзі → Сістэмныя зменныя → Path → Змяніць) бо паказана на скрыншоце ніжэй:

OpenLinux у складзе модуляў SIM7600E-H

Аналагічнай выявай дадаем шлях да запампаванага і распакаванага архіва ADB у корань дыска C.

OpenLinux у складзе модуляў SIM7600E-H

Некалькі разоў націскаем ОК і перазагружаем кампутар.

Пасля перазагрузкі можна лёгка праверыць карэктна ці працуе ADB, адкрыўшы камандны радок (Win+R → cmd) і набраўшы каманду 'adb version'. Атрымаем прыкладна такі вынік:

OpenLinux у складзе модуляў SIM7600E-H

Падлучым модуль да ПК (калі так здарылася што адключылі) і праверым ці бачыць яго ADB камандай 'adb devices':

OpenLinux у складзе модуляў SIM7600E-H

Гатова, на гэтым настройка падключэння да модуля завершана і мы можам запусціць shell для працы з модулем.

OpenLinux у складзе модуляў SIM7600E-H

Распакоўка і кампіляцыя SDK

Пасля таго як мы атрымалі доступ да shell і можам пачаць працу з камандным радком модуля, паспрабуем скампіляваць наша першае прыкладанне для загрузкі ў модуль.

З гэтым у многіх могуць узнікнуць складанасці! Т.к. модуль працуе на аперацыйнай сістэме Linux, у пазбяганне калізій пры кампіляцыі кода пад Windows - лепш за ўсё кампіляваць у родным асяроддзі - Linux.

Не будзем падрабязна спыняцца на тым, як у адсутнасць Linux і жаданні ўсталёўваць яго на сваю машыну, можна ўсталяваць яго на віртуальную. Мы ж скарыстаемся VirtualBox, усталюем Ubuntu версіі 20.04 (актуальная версія на момант напісання артыкула) і ўжо пад ёй пачнем працу з кампілятарамі, SDK і да т.п.

Пераходзім у асяроддзе Linux і распакоўваем архіў, атрыманы ад дыстрыбутара.

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

Пераходзім у каталог sim_open_sdk і дадаем асяроддзе:

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 

Застаемся ў гэтай жа тэчцы і наступныя каманды выконваем знаходзячыся ў ёй.
Усталёўваны бібліятэку libncurses5-dev, калі яна не была ўсталявана:

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

Python, калі ён гэтак жа не быў усталяваны:

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

і gcc:

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

Кампіляцыя:

Цяпер нам спатрэбіцца скампіляваць некалькі файлаў, паслядоўна выконваем наступныя каманды.

Калі пры кампіляцыі выскачыць акно налады ядра - проста выбіраемы Exit і вяртаемся ў кансоль, у нас цяпер няма неабходнасці канфігураваць ядро.

Выконваем:

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

Кампілюем bootloader:

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

Кампілюем ядро:

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

Кампілюем каранёвую файлавую сістэму:

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

Для карыстачоў Linux будзе актуальным скампіляваць драйвер модуля:

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

Скампілюем дэма:

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

Пасля чаго ў дырэкторыі sim_open_sdk/output з'явіцца некалькі новых файлаў:

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

дэма

Паспрабуем загрузіць дэманстрацыю ў наш модуль і паглядзім, што з гэтага атрымаецца.

Загрузка

У дырэкторыі sim_open_sdk мы можам убачыць файл demo_app. Забіраем яго і пераносім у корань дыска C на ПК да якога падлучаны модуль. Пасля чаго запускаем камандны радок Windows (Win+R -> cmd) і ўводны:

C:>adb push C:demo_app /data/

Кансоль нам паведаміць:

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

Гэта значыць, што файл быў паспяхова дасланы на модуль і нам застаецца толькі запусціць яго. Не будзем марудзіць.

Выконваем:

C:>adb shell

Пашыраем правы загружанага файла:

/ # cdhmod 777 /data/demo_app

І запускаем:

/ # /data/demo_app

У гэтай жа кансолі модуль нам паведаміць наступнае:

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 >   

Давайце паглядзім IMEI модуля, увядзем 7 (пераход у камандны рэжым) і пасля ўвядзем 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 >

Такім чынам мы ўбачым IMEI модуля.

У якасці заключэння

Спадзяюся, нам удалося скласці агульнае ўяўленне аб тым, як пачаць працу з модулем. У наступных артыкулах мы падрабязней разгледзім магчымасці, якія падае платформа SIM7600E-H, а таксама тое, якім чынам можна выдалена абнавіць уласнае прыкладанне ў модулі.

Запрашаю задаваць пытанні ў каментарах, а таксама пазначыць які аспект магчымасцяў модуля варта адлюстраваць у наступных артыкулах.

Крыніца: habr.com

Дадаць каментар