原创 《Linux Device Drivers》第五章 併發和競態——note

併發及其管理 競態通常作爲對資源的共享訪問結果而產生當兩個執行線程需要訪問相同的數據結構(或硬件資源)時,併發的可能性就永遠存在只要可能就應該避免資源的共享,但共享通常是必須的,硬件本質上就是共享的訪問管理的常見技術稱爲“鎖定”或者“互斥

原创 《Linux Device Drivers》第二章 構造和運行模塊——note

1     代碼是一個完整的 "hello world"模塊: #include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL"); static

原创 FFmpeg 基本知識

容器(container):就是文件格式,在視頻文件進入處理後,我們會給這個視頻文件一個抽象,這個抽象就是存放這種視頻文件的容器,在FFMPEG中,用來抽象文件格式的容器就是AVFormatContext; 數據流(stream)

原创 《Linux Device Drivers》第十三章 USB驅動程序——note

    1. USB主機在Linux驅動中,USB驅動處於最底層的是USB主機控制器硬件,在其之上運行的是USB主機控制器驅動,主機控制器之上爲USB核心層,再上層爲USB設備驅動層(插入主機上的U盤、鼠標、USB轉串口等設備驅動)。

原创 Nand Flash基礎知識與壞塊管理機制的研究

概述 Flash名稱的由來,Flash的擦除操作是以block塊爲單位的,與此相對應的是其他很多存儲設備,是以bit位爲最小讀取/寫入的單位,Flash是一次性地擦除整個塊:在發送一個擦除命令後,一次性地將一個block,常見的塊的

原创 網絡驅動程序概述

一、網路驅動程序: 使用net_device描述設備,使用套接字描述符sk_buff封裝數據。 二、設備的註冊: alloc_ethdev分配net_device結構和私有的數據區、並初始化以太網設備結構、標誌、硬件地址、初始化緩衝區描

原创 《Linux Device Drivers》 第九章 與硬件通信

概述,本章正式接觸真正的硬件。將介紹對設備提供I/O訪問的方法和函數,用於從設備讀取數據或將數據寫入到設備並詳細說明I/O端口和I/O內存I/O端口和I/O內存 每種外設都通過讀寫寄存器進行控制在硬件層,內存區域和I/O區域沒有概念上的區

原创 Linux中查看硬件信息

查看CPU信息:cat /proc/cpuinfo 查看內存信息:cat /proc/meminfo 查看USB設備:cat /proc/bus/usb/devices 查看鍵盤和鼠標:cat /proc/bus/input/devic

原创 《Linux Device Drivers》第三章 字符設備驅動程序——note

主設備號和次設備號 那些名稱被稱爲特殊文件、設備文件,或者簡單稱之爲文件系統樹的節點,它們通常位於/dev目錄通常而言,主設備號標識設備對應的驅動程序一個主設備號對應一個驅動程序設備編號的內部表達 dev_t(<linux/types.h

原创 驅動程序調試筆記

1.uboot無法引導Linux系統,機器號不一致。 2.屏幕閃屏:使用自旋鎖,每次進入背光函數時,先獲取鎖,退出時候釋放鎖。 3.Wifi打不開的問題比較常見:      (1)有時候在system/lib/目錄下有相應驅動了,但是

原创 驅動程序 基本知識

什麼是驅動程序 驅動程序就是使硬件工作的一種特殊軟件,它運行在操作系統的內核空間(虛擬地址0xC0000000到0xFFFFFFFF),封裝硬件細節,服務於系統調用。   驅動程序和應用程序的區別 1.應用程序運行在用戶空間,驅動程序運行

原创 《Linux Device Drivers》第一章 設備驅動程序簡介——note

1 引言 Linux內核黑客習慣深入Linux內核代碼,找到精神食糧,並有能力增加某個新功能或者優化某個子系統的性能。 2 設備驅動程序的定義 驅動程序就是使硬件工作的一種特殊軟件,它運行在操作系統的內核空間(虛擬地址0xC00000

原创 Uboot 和 Linux啓動流程

Uboot啓動流程 第一階段:關閉看門狗,設置系統時鐘,初始化RAM,複製第二階段的代碼到內存中,設置好棧,跳轉到第二階段的C語言入口點。 第二階段:檢測內存映射,將內核映像和要傳給內核的參數從flash複製到內存中,,設置處理器爲SVC

原创 《Linux Device Drivers》第八章 分配內存——note

本章主要介紹Linux內核的內存管理。kmalloc函數的內幕 不對所獲取的內存空間清零分配的區域在物理內存中也是連續的flags參數 <linux

原创 《Linux Device Drivers》第四章 調試技術——note

1.本章知識點 內核中和調試相關的選項 CONFIG_DEBUG_KERNELCONFIG_DEBUG_SLABCONFIG_DEBUG_PAGEALLOCCONFIG_DEBUG_SPINLOCKCONFIG_DEBUG_SPINLOC