2

我正在使用 simcom 800H 蜂窝模块和我的 BeagleBone Black,它与流行的 simcom 900 非常相似。我想用 simcom 模块做两件主要事情

  • 使用 AT 命令配置设置和发送和接收消息
  • 使用 ppp 启用通过 GPRS 在 BBB 上的 Internet 访问。

现在明显的问题是我不能同时做这两件事。我进行了网络搜索,发现了以下帖子

  1. 同时使用GPRS和GSM
  2. 在 pppd 处于活动状态时向 SIM900 发送 AT 命令

第二个链接特别有用,其中一位用户使用了此存储库上的代码。

共同的主题是使用该n_gsm模块。我尝试使用加载模块modprobe n_gsm,但失败了。就像用户提到的那样,BBB 也没有默认包含 n_gsm 模块,所以我不得不去构建一个新内核,并将 n_gsm 添加为模块。但是,我在将其包含n_gsm为模块时遇到了问题。这是我遵循的步骤

  1. 我按照教程为我的 BBB 下载了正确的 linux 头文件。
  2. 我尝试将模块编译为 Linux LKM(可加载内核模块),如下所示

  3. 我从这里下载了 n_gsm.c

  4. n_gsm.c文件有一些包含在我的 BBB 中丢失的内容。所以我下载了它们。
  5. 我创建了一个makefile。我的目录n_gsm.cMakefile

生成文件

obj-m += n_gsm.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

这产生了如图所示的错误n_gsm 错误

  • 我能够成功加载一个不同的模块,如图所示(内核模块你好世界)。我也不明白为什么我需要重新编译整个 linux 内核来创建 LKM。

  • 我觉得我犯了一些明显的错误,因为看起来我们人们能够成功加载这个模块。

  • 这是加载模块的正确方法吗n_gsm没有太多关于此的文档/教程

  • 如果所有这些都不起作用,是否有更简单的方法来进行这种多路复用?我真的很喜欢用于 SMS 的 AT 命令和用于 GPRS 的 PPP 的想法(而不是两者的 AT 命令)。

任何提示和建议都会非常有帮助!

Edit1:关于我的 BBB 的详细信息

  1. 内核 - Linux beaglebone 3.8.13-bone79
  2. 发行版 - Debian 7.9 (wheezy)

编辑 2:添加了有关 GSM 模块的详细信息

  1. 是我正在使用的 GSM 分线板。
  2. 它使用模块,您可以查看命令手册多路复用应用说明

更新 1

  1. 感谢@Serge,我能够构建n_gsm模块并添加它而无需重新编译内核。但是,我仍然无法让 GSM 模块进入多路复用器模式。
  2. AT+CMUX=?,AT+CMUX?AT+CMUX=在 sim800H 模块上产生错误。
  3. 这是我所做的调试
    1. 玩弄硬件/软件,没有流量。没有在任何模式下工作。
    2. 将 TE-TA 固定本地速率设置AT+IPR为 auto,115200 仍然会AT+CMUX产生错误
    3. AT+CMUX?在另一个 sim900 模块上进行了测试,并且可以正常工作。

知道为什么它不适用于 sim800H 吗?

4

1 回答 1

1

问题中的 make 问题已通过从beaglebone 的内核源存储库中下载正在使用的内核版本的 n_gsm.c 来解决。

于 2016-06-07T03:42:11.377 回答