OpenLinux 作为 SIM7600E-H 模块的一部分

OpenLinux 作为 SIM7600E-H 模块的一部分

开发自定义应用程序并将其加载到模块中的机制在 Linux 和 Windows 操作系统下均可用。 在本文中,我们将详细了解如何使用提供的 SDK 中的示例 芯讯通无线解决方案 编译自定义应用程序并将其加载到模块中。

在撰写本文之前,我的一位熟人(远非 Linux 开发人员)要求我尽可能详细地描述为 SIM7600E-H 模块开发自己的应用程序的过程。 评估材料呈现的可访问性的标准是“以便我理解”这句话。

我邀请您来了解一下发生的事情。

文章定期补充和更新

序幕

通常,蜂窝通信模块仅用于数据传输、语音呼叫、SMS传输等。 所有这一切都是通过外部控制微控制器发送的 AT 命令来完成的。 但是有一类模块允许您执行从外部加载的自定义代码。 在某些情况下,这会显着降低设备的总体预算,使您可以在板上安装更简单(且预算相同)的微控制器或完全放弃它。 随着由 Android 或 Linux 操作系统控制的 LTE 模块及其强大资源的出现,可以解决流行处理器可以完成的任何任务。 本文将讨论SIM7600E-H,由Linux操作系统控制。 我们将了解如何下载并运行可执行应用程序。

在很多方面,该材料都基于文档“SIM7600 Open Linuxdevelopment quide”,但添加了一些内容,首先,俄语版本将很有用。 本文将帮助那些刚刚开始掌握该模块的人了解如何下载演示应用程序,并为后续工作提供必要的技能。

简单介绍一下SIM7600E-H是谁

SIM7600E-H是一款基于高通ARM Cortex-A7 1.3GHz处理器构建的模块,内置Linux操作系统(内核3.18.20),能够工作于欧洲(包括俄罗斯)频段2G/3G/LTE,支持Cat .4、提供最高可达150Mbps的下载速度和最高可达50Mbps的上传速度。 丰富的外设、工业温度范围以及内置 GPS/GLONASS 导航功能可满足 M2M 领域现代模块化解决方案的任何要求。

Обзорсистемы

SIM7600E-H模块基于Linux操作系统(内核3.18.20)。 反过来,文件系统是建立在日志文件系统UBIFS(未排序块映像文件系统)的基础上的。

该文件系统的重要功能包括:

  • 使用分区,允许您创建、删除或更改其大小;
  • 确保整个媒体卷上的记录对齐;
  • 与坏块一起使用;
  • 最大限度地减少断电或其他故障期间数据丢失的可能性;
  • 保存日志。

描述已采​​取 ,对于这样的文件系统也有更详细的描述。

那些。 这种类型的文件系统非常适合模块的恶劣运行条件和可能的电源问题。 但这并不意味着不稳定的电源条件将是模块的预期运行模式;它仅表明设备具有更大的生存能力。

Память

内存区域的分布构造如下:

OpenLinux 作为 SIM7600E-H 模块的一部分

主要有以下三个方面需要强调:

ubi0:根文件系统 – 只读并包含 Linux 内核本身
ubi0:usrfs – 主要用于用户程序和数据存储
ubi0:cahcefs – 保留用于 FOTA 更新。 如果可用空间不足以下载更新,系统将删除未使用的文件,从而释放空间。 但出于安全原因,您不应将文件放在那里。

所有三个部分的分布如下:

文件系统
尺寸

可提供
用%
镶嵌在

ubi0:根文件系统
40.7M
36.2M
4.4M
89%
/

ubi0:usrfs
10.5M
360
10.1M
3%
/数据

ubi0:cachefs
50.3M
20
47.7M
0%
/缓存

可用功能

如上所述,该模块基于高通的 Cortex A7 芯片组构建。 如果不提供如此高性能的核心来处理用户程序并通过将部分程序卸载到模块来卸载设备的主处理器,那将是错误的。

对于用户程序,我们可以使用以下外设操作模式:

销号
名字
系统 GPIO 编号
默认操作
功能1
功能2

唤醒中断

6
SPI_时钟
-
UART1_RTS
-
-
B-PD
-

7
SPI_味噌
-
UART1_接收
-
-
B-PD
-

8
SPI_MOSI
-
串口1_发送
-
-
B-PD
-

9
SPI_CS
-
UART1_CTS
-
-
B-PD
-

21
SD_CMD
-
SD卡
-
-
B-PD
-

22
SD数据0
-
SD卡
-
-
B-PD
-

23
SD数据1
-
SD卡
-
-
B-PD
-

24
SD数据2
-
SD卡
-
-
B-PD
-

25
SD数据3
-
SD卡
-
-
B-PD
-

26
SD_CLK
-
SD卡
-
-
PN
-

27
SDIO_数据1
-
WLAN
-
-
B-PD
-

28
SDIO_数据2
-
WLAN
-
-
B-PD
-

29
SDIO_CMD
-
WLAN
-
-
B-PD
-

30
SDIO_数据0
-
WLAN
-
-
B-PD
-

31
SDIO_数据3
-
WLAN
-
-
B-PD
-

32
SDIO_时钟
-
WLAN
-
-
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
状态
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
转运站
-
UART2_RTS
-
-
B-PD
-

67

-
UART2_CTS
-
-
B-PD
-

68
接收器
-
UART2_接收
-
-
B-PD
-

69
RI
-
GPIO(RI)
-
-
B-PD
-

70
DCD
-
GPIO
-
-
B-PD
-

71
发送端
-
串口2_发送
-
-
B-PD
-

72
DTR
-
GPIO(DTR)
-
-
B-PD
X

73
PCM_输出
-
PCM
-
-
B-PD
-

74
PCM_输入
-
PCM
-
-
B-PD
-

75
PCM_同步
-
PCM
-
-
B-PD
-

76
PCM时钟
-
PCM
-
-
B-PU
-

87
GPIO77
GPIO77
BT
GPIO
BT
B-PD
-

同意,该列表令人印象深刻,并注意:部分外围设备用于将模块作为路由器进行操作。 那些。 基于这样的模块,您可以制作一个小型路由器,通过 Wi-Fi 分配互联网。 顺便说一下,有一个现成的解决方案,称为SIM7600E-H-MIFI,是一张miniPCIE卡,带有焊接的SIM7600E-H模块和多个天线引脚,其中一个是Wi-Fi天线。 不过,这是另一篇文章的主题。

星期三(不是一周中的某一天)

芯讯通无线解决方案 为开发人员提供选择最熟悉的 Linux 或 Windows 开发环境的机会。 如果我们谈论的是模块上的一个可执行应用程序,那么最好选择Windows,它会更快、更容易。 如果期望有复杂的应用架构和后续升级,最好使用Linux。 我们还需要Linux来编译可执行文件以便随后加载到模块中;虚拟机足以进行编译。

您需要的 SDK 无法免费下载,您可以向经销商索取。

安装用于使用模块的实用程序

下面我们将在大多数用户最熟悉的操作系统 Windows 下进行操作。

我们需要通过几个简单的步骤安装必要的软件,以便随后掌握该模块的使用:

  1. GNU / Linux的
  2. Cygwin的
  3. 司机
  4. 亚行

安装 GNU/Linux

要构建应用程序,您可以使用任何 ARM-Linux 兼容编译器。 我们将使用 SourceryCodeBenchLiteARM GNU/Linux 转换器,可从以下位置下载: 链接.

为了确保所有组件都正确安装,我将留下一些安装过程的屏幕截图。 原则上,安装没有什么复杂的。

为了确保所有组件都正确安装,我将留下一些安装过程的屏幕截图。 原则上,安装没有什么复杂的。

  1. 我们接受许可协议
    OpenLinux 作为 SIM7600E-H 模块的一部分
  2. 指定安装文件夹
    OpenLinux 作为 SIM7600E-H 模块的一部分
  3. 我们保留必要的组件不变
    OpenLinux 作为 SIM7600E-H 模块的一部分
  4. 保持原样
    OpenLinux 作为 SIM7600E-H 模块的一部分
  5. 几次“下一步”、“安装”基本上就这样了
    OpenLinux 作为 SIM7600E-H 模块的一部分

安装 Cygwin

此外,为了进行开发,您将需要提供的一组库和实用程序 Cygwin的。 这里一切都很简单,当前版本的 Cygwin 可以在项目的官方网站上免费下载;在撰写本文时,版本 3.1.5 已经可用,这是我们在准备材料时使用的。

安装 Cygwin 没有什么复杂的,您唯一需要选择的是一个镜像,安装程序将从该镜像下载必要的文件,选择任何一个并安装它,以及一组实用程序和库,留下所有可用的库和选择的公用事业。

安装驱动程序

模块与PC连接后,需要安装驱动程序。 这些可以向您的经销商索取(推荐)。 我不建议你自己上网搜索,因为...... 可能需要花费大量时间来查找导致设备冲突的原因。

OpenLinux 作为 SIM7600E-H 模块的一部分

在选定的端口中,我们看到以下内容:

Windows
Linux
使用说明

SimTech HS-USB 诊断
USB串口
诊断接口

SimTech HS-USB NMEA
USB串口
GPS NMEA 接口

SimTech HS-USB AT 端口
USB串口
AT口接口

SimTech HS-USB 调制解调器
USB串口
调制解调器端口接口

SimTech HS-USB 音频
USB串口
USB音频接口

SimTech HS-USB WWAN 适配器
USB网络
NDIS WWAN 接口

Android复合ADB界面
USB ADB
Android 添加调试端口

你可能注意到了,截图中的端口中没有USB ADB,这是因为模块中的ADB端口默认是关闭的,需要通过向AT发送命令“AT+CUSBADB=1”来启用它模块的端口并重新启动它(这可以使用命令“AT+CRESET”来完成)。

结果,我们在设备管理器中得到了想要的界面:

OpenLinux 作为 SIM7600E-H 模块的一部分

我们已经完成了驱动程序,让我们继续 ADB。

安装亚行

前往 Android 开发者官方网站 链接。 我们不会下载繁琐的 Android Studio;我们只需要命令行,可以通过“下载 SDK Platform-Tools for Windows”链接下载。

OpenLinux 作为 SIM7600E-H 模块的一部分

下载生成的存档并将其解压到驱动器 C 的根目录。

环境变量

安装Cygwin后,您需要将路径Cygwin/bin/添加到开发环境变量中(经典控制面板→系统→高级系统设置→高级→环境变量→系统变量→路径→编辑),如下图所示:

OpenLinux 作为 SIM7600E-H 模块的一部分

同样,将下载并解压的ADB存档的路径添加到C盘根目录。

OpenLinux 作为 SIM7600E-H 模块的一部分

单击“确定”几次并重新启动计算机。

重新启动后,您可以通过打开命令行(Win+R→cmd)并输入命令“adb version”来轻松检查ADB是否正常工作。 我们得到这样的东西:

OpenLinux 作为 SIM7600E-H 模块的一部分

让我们将模块连接到 PC(如果碰巧它已断开连接)并使用“adb devices”命令检查 ADB 是否看到它:

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

和海湾合作委员会:

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

汇编:

现在我们需要编译几个文件,我们依次运行以下命令。

如果编译过程中弹出内核配置窗口,只需选择退出并返回到控制台即可;我们现在不需要配置内核。

我们的确是:

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

编译引导加载程序:

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. 我们将其转移到模块所连接的 PC 上的驱动器 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

添加评论