1. 程式人生 > >linux除錯LTE模組驅動

linux除錯LTE模組驅動

除錯LTE模組驅動
碰到問題:命令“ifconfig eth1 up”開啟網絡卡,出現錯誤,錯誤資訊“ifconfig: SIOCSIFFLAGS: No space left on device”
問題定位:
1)走讀LTE驅動程式碼,發現在usbnet_open函式裡呼叫usb_submit_urb函式傳送中斷狀態返錯導致網絡卡無法開啟,直接將這部分程式碼
 註釋掉,除錯傳送網絡卡能開啟,並且也能連上外網,但是串列埠無法傳送AT命令。
2)跟進usb_submit_urb函式,發現到musb_host.c檔案裡的musb_schedule()函式返錯,在條件判斷if (hw_ep == musb->bulk_ep)處
   continue了。把musb->bulk_ep打印出來值為2,分析可能是usb控制器的endpoint不夠用,所以才導致“No space left on device”。
3)走讀musb控制器程式碼,在musb_core.c檔案的musb_core_init()函式裡呼叫ep_config_from_table()函式配置,列印musb->fifo_mode=2,
   檢視mode_2_cfg的配置,裡面只有1個endnum的2種配置,修改成6個後測試驗證OK,修改程式碼如下:
   /* mode 2 - fits in 4KB */
static struct musb_fifo_cfg __devinitdata mode_2_cfg[] = {
#if 1   
{ .hw_ep_num = 1, .style = FIFO_TX,   .maxpacket = 512, },
{ .hw_ep_num = 1, .style = FIFO_RX,   .maxpacket = 512, },
{ .hw_ep_num = 2, .style = FIFO_TX,   .maxpacket = 512, },
{ .hw_ep_num = 2, .style = FIFO_RX,   .maxpacket = 512, },
{ .hw_ep_num = 3, .style = FIFO_RXTX, .maxpacket = 256, },
{ .hw_ep_num = 4, .style = FIFO_RXTX, .maxpacket = 256, },
#else
{ .hw_ep_num = 1, .style = FIFO_TX,   .maxpacket = 1024, },
{ .hw_ep_num = 1, .style = FIFO_RX,   .maxpacket = 1024, },
#endif

};
問題總結:
由於個人對USB協議還不熟悉,雖然解決問題,但是未弄懂原理,希望哪位懂USB協議的兄弟能指點一下。

相關推薦

linux除錯LTE模組驅動

除錯LTE模組驅動 碰到問題:命令“ifconfig eth1 up”開啟網絡卡,出現錯誤,錯誤資訊“ifconfig: SIOCSIFFLAGS: No space left on device” 問題定位: 1)走讀LTE驅動程式碼,發現在usbnet_open函式裡呼

Linux核心模組驅動載入與dmesg除錯

  因為近期用到了Linux核心的相關知識,下面隨筆將給出核心模組的編寫記錄,供大家參考。 1、執行環境   Ubuntu 版本:20.04   Linux核心版本:5.4.0-42-generic   gcc版本:gcc version 9.3.0   驅動和一般應用程式的執行方式很大不同 2、核

如何向linux核心加入一個驅動模組

以最簡單的helloworld模組為例子: 在drivers目錄下面建立一個目錄名為helloworld,在這個資料夾底下有三個檔案helloworld.c,Makefile,Kconfig 原始檔helloworld.c #include <linux/init.h>

Linux移植EC20 4G模組驅動簡易教程

關於4G模組常見的品牌與型號: 品牌 型號 市場價格 晶片組 狀態 HUAWEI ME909s-821 210

Linux核心模組(驅動)編譯詳解

本文主要說說如何編譯自己開發的核心模組。由於驅動通常也被編譯成核心模組,因此文章的內容也適用於驅動的編譯。 由於在下能力相當有限,有不當之處,還望大家批評指正^_^ 一、準備工作 準備工作如何做,

linux驅動部分:交叉編譯驅動模組&模組驅動的相關操作&Makefile講解

根據下面的提醒,在自己電腦是的情況是:b1、模組整個操作流程 (1)載入模組:insmod globalfifo_zs_fzs.ko (2)檢視模組是否被載入:lsmod (3)檢視裝置號:cat /proc/devices (4)建立裝置節點:mknod /dev/

ME909S-821 4G-LTE模組Linux系統下撥號上網測試

實驗平臺 中國移動 “and”普通4G USIM卡 Ubuntu Kylin 14.04作業系統 大前提 SIM正常,能撥號/能上網 4G模組正常,通過USB口連線到PC Linux系統能檢測到模組,並且能識別模組的網絡卡

Linux下載入.ko驅動模組的兩種方法:insmod與modprobe

假設要載入的驅動程式模組名為SHT21.ko 載入驅動模組 方法一: 進入SHT21.ko驅動模組檔案所在的目錄,然後直接 insmod SHT21.ko 即可 方法二: 將SHT21.ko檔案拷貝到/lib/module/#uname -r#/目

在vmware中用kdb除錯linux核心和模組

環境: vmware:6.0.7 Ubuntu:12.04 LTS Linux kernel:4.3 KDB的工作原理是把kernel停下來,然後等待命令輸入,命令可以來自串列埠或鍵盤。輸出是到串列埠和console,但console上的輸出只能在退出KDB之後才能看到。

Linux核心模組驅動之---led驅動

/**************************************************************************/ /***************************led.c********************************************

linux核心除錯環境搭建-3 除錯核心模組

在虛擬機器中 建立兩個指令碼get.sh: tftp 192.168.100.1 -g -r $1 put.sh: tftp 192.168.100.1 -p -l $1 在linux裝置驅動開發詳解中原始碼: /*=========================

linux下網卡驅動安裝全過程

linux網卡驅動方法一,用RPM包安裝驅動程序方法:1.將驅動程序文件bcm5700-.src.rpm復制到一個臨時目錄中,並在此目錄中運行以下命令:rpm –ivh bcm5700-.src.rpm2.運行以下命令切換到驅動目錄中:cd /usr/src/redhat/SPECS/3.此目錄中會生成一個名

14.linux-platform機制實現驅動層分離(詳解)

擴展性 blank 事件處理 相關 技術分享 消息 驅動 array iou 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 本節目標: 學習platform機制,如何實現驅動層分離 1.先來看看我們之前分析輸入子系統的分層概念

19.Linux-USB總線驅動分析

kmalloc 開發 硬件 ctrl 地址 allow end 處理 interface 如下圖所示,以windows為例,我們插上一個沒有USB設備驅動的USB,就會提示你安裝驅動程序 為什麽一插上就有會提示信息? 是因為windows自帶了USB總線驅動程序

23.Linux-塊設備驅動(詳解)

裏的 end opacity 塊設備 dea 獲取request device geometry cat 通過上節的塊設備驅動分析,本節便通過內存來模擬塊設備驅動 參考內核自帶的塊設備驅動程序: drivers/block /xd.c drivers/bl

Linux I2C設備驅動編寫(一)

ive AC ner 解決 args nali smb man lin http://blog.csdn.net/airk000/article/details/21345457 在Linux驅動中I2C系統中主要包含以下幾個成員: I2C adapter 即I2C適配

22.Linux-塊設備驅動之框架詳細分析(詳解)

磁盤設備 回調 隊列 rst 學習 更新 表示 索引 函數實現 1.之前我們學的都是字符設備驅動,先來回憶一下 字符設備驅動: 當我們的應用層讀寫(read()/write())字符設備驅動時,是按字節/字符來讀寫數據的,期間沒有任何緩存區,因為數據量小,不能隨機讀取數據,

聊聊Linux用戶態驅動設計

曲線 和數 抽象 res 依賴關系 epoll 隔離 如果 高性能 序言 設備驅動可以運行在內核態,也可以運行在用戶態,用戶態驅動的利弊網上有很多的討論,而且有些還上升到政治性上,這裏不再多做討論。不管用戶態驅動還是內核態驅動,他們都有各自的缺點。內核態驅動的問題是:系統調

Linux用戶態驅動設計

使用 同步 eve 顯卡 set等 download wikipedia usb 沒有 序言 設備驅動可以運行在內核態,也可以運行在用戶態,用戶態驅動的利弊網上有很多的討論,而且有些還上升到政治性上,這裏不再多做討論。不管用戶態驅動還是內核態驅動,他們都有各自的缺點

Linux按鍵設備驅動

一個 UNC 設置 expire 驅動 head pan fun 開關 ① 按鍵所用開關為物理機械彈性開關,當機械觸點斷開、閉合時,由於機械彈性作用,開關不會馬上穩定的接通或者斷開。因而在閉合及斷開的瞬間總是伴隨有一連串的抖動 ② 按鍵去抖的方法主要有兩種 (1)硬件電