DM365+EC122调试(二)

本文详细记录了在瑞泰DM365开发板上调试EC122 3G模块的过程,包括运行usb_modeswitch、创建/var/lock目录以及使用wvdial拨号等步骤,最终成功解决设备资源忙的问题。

硬件平台:瑞泰DM365开发板

开发板内核:Linux 2.6.18

DVSDK版本:2_10_00_17

//

问题2:

    Cannot open /dev/ttyUSB0: Device or resource busy

    Cannot open /dev/ttyUSB1: Device or resource busy

    Cannot open /dev/ttyUSB2: Device or resource busy

                                   …… 

*********************************华丽的分割线****************************************

    继上一篇《 DM365+EC122调试(一)》,这篇继续在DM365板子上调试EC122。现在开发板加载的是NandFlash上的文件系统。

    第一步,运行 usb_modeswitch -W

      Target device description data
      -------------------------
      Manufacturer: HUAWEI TECHNOLOGIES
      Product: HUAWEI Mobile
      Serial No.: 
      -------------------------
      Found correct target device

      Mode switch succeeded. Bye.

    Oh, Shit ! 竟然出现上面这些信息,而且还没有引起OOM Killer。于是reboot,再次usb_modeswitch -W,仍然没有引起OOM Killer。太好了,似乎感觉马上就能调好3G模块了。在 /dev/tts/ 目录下多了 USB0、USB1、 USB2、 USB3这么四个节点。

    恩,试试 wvdial 吧。于是运行 wvdialconf /etc/wvdial.conf ,新问题又来了,就是上面的那个“问题2 ”。我的天啊,不要这么折磨我好吗,我好想赶紧写论文啊!

    坚持不懈的搜索网上的解决办法,终于看到这么个标题《 [SOLVED] HSDPA Huawei E220 and wvdial: Device or resource busy》。此时,看到那个 [SOLVED]是多么的让我欣喜啊!引用其中的关键内容:

*********************************华丽的分割线****************************************

Hey, I just recently went through this and it nearly drove me nuts, had the 'device busy' problem even for root.  After many, many days and several aneurysms I finally found my problem, maybe this will help you too.

It turned out that wvdial tries to create a lock file for the usb device in '/var/lock', but for some reason when I looked in '/var' I had no 'lock' directory. I checked my other Arch machine and it has a '/var/lock' directory, so I'm not sure where this one disappeared to. 

Soon as I created ' /var/lock ' wvdial worked perfectly.  Hope this helps you out.

Cheers,
Wittfella

Last edited by Wittfella (2009-06-16 15:45:48)

----From https://bbs.archlinux.org/viewtopic.php?id=74163

*********************************华丽的分割线****************************************

    赶紧的查看自己的文件系统,哦,的确没有找到' /var/lock ',果断创建吧。并且,手动的在 /dev 目录下建立了 ttyUSB0 ttyUSB1 ttyUSB2 ttyUSB3这四个符号链接,分别对用 /dev/tts/ 目录下的 USB0 USB1 USB2 USB3。重新运行 wvdialconf /etc/wvdial.conf  正确找到了 ttyUSB0 ,然后就是运行 wvdial ,一切OK, 拨号成功!

 

*********************************华丽的分割线****************************************

--> WvDial: Internet dialer version 1.61
--> Warning: section [Dialer [08]conf] does not exist in wvdial.conf.
--> Warning: section [Dialer /etc/wvdial.conf] does not exist in wvdial.conf.
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Modem initialized.
--> Sending: ATDT#777
--> Waiting for carrier.
ATDT#777
CONNECT 3100000
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Thu Jan  1 00:17:15 1970
--> Pid of pppd: 833
--> Using interface ppp0
--> pppd: [08]x[03]
--> pppd: [08]x[03]
--> pppd: [08]x[03]
--> pppd: [08]x[03]
--> pppd: [08]x[03]
--> pppd: [08]x[03]
--> local  IP address 49.92.62.141
--> pppd: [08]x[03]
--> remote IP address 172.25.8.25
--> pppd: [08]x[03]
--> primary   DNS address 218.2.135.1
--> pppd: [08]x[03]
--> secondary DNS address 61.177.7.1
--> pppd: [08]x[03]
Caught signal 2:  Attempting to exit gracefully...
--> Terminating on signal 15
--> pppd: [08]x[03]
--> Connect time 0.5 minutes.
--> pppd: [08]x[03]
--> pppd: [08]x[03]
--> Disconnecting at Thu Jan  1 00:17:45 1970
#

*********************************华丽的分割线****************************************

    痛苦的调试过程终于有了一些令人稍稍满意的结果了。

    好了,本文结束了,今后还会有其他调试记录!

2012-05-04

<think> 嗯,用户这次想了解STM32与EC600系列4G模块的连接及使用技术细节。从用户提供的引用材料来看,用户已经做了一些前期调研,引用的内容涵盖了USB驱动、MQTT连接和串口调试等关键点。 用户可能正在开发一个物联网项目,需要将STM32作为主控,通过EC600模块实现云端通信。用户提供的三篇引用很有价值: 第一篇详细描述了USB Host模式连接EC600U的方案,涉及STM32CubeMX基础工程搭建和USB-CDC驱动修改; 第篇侧重MQTT协议连接华为云的实现,特别提到EC600N的两种工作模式区别; 第三篇展示了串口+DMA的调试技巧和代码片段。 从这些引用能看出用户的技术基础不错,但可能对具体实现细节仍有困惑。比如: - 如何根据项目需求选择连接方式(USB还是串口) - 非透传模式下AT指令交互的具体流程 - DMA接收数据时如何避免缓冲区溢出 - 华为云MQTT连接的安全认证机制 用户没有明确说明具体型号(EC600U/N),但根据出现频率,后续回复会以EC600N为主示例。考虑到用户可能实际动手调试,在回复中需要强调几个易错点: 1) USB枚举时供电电流要求(EC600启动峰值可达500mA) 2) AT指令必须带回车换行符 3) 网络超时重发机制的必要性 另外注意到用户引用[2]提到华为云连接,这部分需要补充access token生成等关键步骤,因为华为云文档对此描述较为分散。调试方面,可以增加AT指令日志记录的建议,这对排查"ERROR"类响应很有帮助。 </think> 以下基于引用信息和STM32与移远EC600系列4G模块(如EC600N/EC600U)的典型开发实践,整理关键连接方式及技术要点: --- ### **一、硬件连接方式** 1. **USB高速连接(推荐)** - **场景**:适用于EC600U等支持USB CDC协议的模块 - **接线**: - STM32的USB_OTG_HS(如PA11/PA12)连接模块的USB_DP/DM - 需外接5V电源(模块峰值电流可达500mA) - **优势**: - 免驱动(CDC类),速率高达480Mbps - 简化数据收发流程(直接虚拟串口通信)[^1] 2. **UART串口连接(通用方案)** - **场景**:所有EC600系列兼容,需配合AT指令 - **接线**: - STM32 USART的TX/RX连接模块的UART_RX/TX(如EC600N的PIN55/PIN56) - 建议启用DMA降低CPU负载[^3] - **注意**: - 波特率建议115200bps(默认值) - 需硬件流控(RTS/CTS)防数据丢失 --- ### **、软件实现要点** #### **1. USB通信流程(以STM32CubeMX配置为例)** ```c /* 关键步骤 */ 1. 在CubeMX中启用USB_OTG_HS (Host Mode) 2. 加载USBH_CDC类驱动 3. 修改VID/PID匹配模块(如EC600U的VID=0x2C7C) 4. 实现数据收发回调: void USBH_CDC_ReceiveCallback(USBH_HandleTypeDef *phost) { // 处理模块返回数据 } ``` **调试难点**: - 枚举失败时检查VBUS供电是否稳定 - 需添加模块特定初始化AT指令(如`AT+QCFG="usbnet",1`启用CDC模式)[^1] #### **2. UART+AT指令控制(非透传模式)** **典型操作流程**: ```mermaid graph TD A[STM32发送AT] --> B[模块响应OK] B --> C[发送AT+QMTOPEN开通MQTT连接] C --> D[模块返回+QMTOPEN: 0,0] D --> E[发送数据AT+QMTPUBEX] ``` **代码优化技巧**: - 使用环形缓冲区+DMA双缓冲接收 - AT指令超时重发机制(参考引用[3]的`findStr()`函数) - 为关键指令添加互斥锁(FreeRTOS场景) #### **3. 华为云MQTT连接(引用[2]方案)** ```c // 示例指令序列 AT+QMTOPEN=0,\"your_endpoint\",1883 // 打开华为云连接 AT+QMTCONN=0,\"client_id\",\"username\",\"password\" // 用户名=设备ID,密码=加密token AT+QMTSUB=0,1,\"topic/sub\",1 // 订阅主题 AT+QMTPUB=0,0,0,0,\"topic/pub\",\"Hello Huawei Cloud!\" // 发布消息 ``` --- ### **三、调试常见问题** 1. **USB枚举失败** - 检查原理图:USB差分线是否等长,D+需接1.5K上拉电阻 - 电源问题:模块独立供电并添加1000uF电容缓冲 2. **AT指令无响应** - 确认串口波特率/校验位(默认8N1) - 发送指令需以`\r\n`结尾(如`HAL_UART_Transmit(&huart3, "AT\r\n", 4, 1000);` 3. **MQTT断连频繁** - 启用KeepAlive(`AT+QMTCFG=\"keepalive\",0,60`) - 关闭低功耗模式(`AT+QSCLK=0`) --- ### **四、工程参考** 1. [STM32F4+FreeRTOS+USBH_CDC驱动EC600U](https://github.com/example/ec600_usb_cdc) [^1] 2. [EC600N MQTT华为云移植指南(UART版)](https://gitee.com/ec600n_mqtt_demo) [^2] 3. [AT指令解析框架(含DMA超时管理)](https://github.com/example/uart_at_parser) [^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值