原创 大數相除算法

簡介 在實際的項目中,同事在移植一個算法時候碰到要進行64位整數的除法運算。找了一下一下,Linux內核中有支持該運算的函數do_div(),該函數在 Linux/arch/arm/include/asm/div64.h 文件中實

原创 Linux 查看usb設備信息

下面的信息都是在VMware中運行Ubuntu12-04系統上執行的。同樣該命令也支持在嵌入式系統中進行USB調試。 一、cat設備節點獲取信息 在一些嵌入式開發中需要調試USB功能,經常會cat /sys 下的相關設備節點來查看

原创 Linux用戶空間與內核空間交互方法

本文存在幾個bug以及不規範的地方,已在創建設備節點問題進行相關的說明,請結合兩篇文章一起看。 用戶空間通常是打開某一特定的設備節點,然後通過write()/read()/ioctl()方法向內核空間進行數據的交換。 https

原创 Linux GPIO驅動結構

GPIO驅動結構 根據上圖,在Linux中,會在gpiolib.c中定義一個 ARCH_NR_GPIOS 大小的數組static struct gpio_desc gpio_desc[ARCH_NR_GPIOS];。每個元素對

原创 Linux 驅動常見錯誤返回值

在Linux驅動開發中,經常要根據返回值來判斷何種錯誤。現將常見的錯誤編號列舉如下。 errno-base.h // include/uapi/asm-generic/errno-base.h #define EPERM

原创 調試tp驅動常用的adb命令

1、adb shell cat /proc/kmsg 這條命令肯定是要放在第一位的,可以打印內核信息,對應於驅動程序中的printk語句。 如果出現以下提示,說明權限不夠,可以通過adb root獲取root權限。 /syst

原创 USB 2.0 協議中J、K、SE0狀態的定義

在USB 2.0協議中經常會看到以下術語:Chirp K、KJ序列、SE0。這裏的狀態是根據低速、全速/高速下設備D+和D-上不同的電平信號來決定的。 一、通俗解釋 1、J態、K態、SE0 低速設備: J態: D+ =

原创 USB 全速/高速設備識別信號分析

以下的內容轉載自USB chirp信號測試,在這篇文章中詳細的解釋了USB高速設備的握手過程,以及通過分析D+和D-上面的波形來進行說明。很讚的一篇文章。 一、Chirp K J信號說明 USB Chirp信號分爲K信號和J信號