原创 u盤自動掛載-udev

Linux傳統上使用靜態設備創建的方法,在dev下創建了大量的節點,而不管這些節點相應的硬件設備是否存在。採用udev的方法,系統檢測到設備纔會往創

原创 內核中與驅動相關的內存操作之六(vmalloc)

    vmalloc是在整個虛擬空間分配出一段內存,它所面向的處理對象是CPU整個虛擬內存空間,而kmalloc是CPU的邏輯地址空間.邏輯地址空間也是"虛擬"的,只不過它和物理地址空間保持着線性關係的一種"虛擬地址空間",可以說,邏輯

原创 LINUX中時間相關的概念與操作

    一切東西離開了時間便失去了其存在的意義,內核也不例外.下面是經常在內核驅動中經常談及到的時間的概念和具體的操作應用. 1.HZ:     HZ在內核中表徵時鐘中斷間隔.與具體體系結構相關.可以理解爲"秒".經常用它來派生更短的延

原创 Linux 中直接 I/O 機制的介紹

Linux 中直接 I/O 機制的介紹 黃 曉晨, 軟件工程師, IBM 黃曉晨,IBM system Z 自動化技術支持軟件工程師。 簡介: 對於傳統的操作系統來說,普通的 I/O 操作一般會被內核緩存,這種 I/O 被稱作緩存

原创 內核中與驅動相關的內存操作之九(重映射)

   ioremap()函數也是需要建立新的頁表,但是不會分配內存.它的功能是將一個物理地址轉換成內核需要的虛擬地址(邏輯地址),從而實際硬件的操作.其相反的動作爲iounmap().          以S3C2440的RTC驅動爲例:

原创 內核中與驅動相關的內存操作之五(kmalloc)

    在內核空間裏面獲取一段內存區域,最常用到的API就是kmalloc. 1.原型(lk2.6.22)如下: static inline void *kmalloc(size_t size, gfp_t flags)     2.

原创 設備文件指針操控llseek

    llseek主要用來操作文件的指針.其實質是內核依賴filp->f_ops執行文件的定位.   1.原型: llseek(struct file *filp, loff_t off, int whence);     各參數意義如

原创 內核中與驅動相關的內存操作之八(面向頁的內存分配)

1.概述:     當我們在內核驅動代碼中需要用到大量內存時,一般建議採用面向頁的內存管理.面向頁的內存管理有如下優點: 高效利用內存,避免內存碎片的產生.因爲內核都是基於頁爲基本單位去管理內存的.     面向頁的內存管理,顧名思義,就

原创 內核中與驅動相關的內存操作之十二(mmap)

1.mmap簡介:     mmap是標準的用戶空間的系統調用API.最爲常見的就是用戶空間對LCD的操作.mmap允許用戶直接對硬件設備實現直接訪問操作,因此,其效率是很高的.要正確使用mmap機制,首先重溫一下VMA.VMA(Virt

原创 內核中與驅動相關的內存操作之一(MMU)

1.MMU的存在意義:     MMU(Memory Manage Unit)的出現是爲了解決以下這類問題的一種"硬件算法"或者說策略:16MB的程序運行於4MB內存空間的問題,實現內存的更高效地利用.類比於現實生活中的銀行.銀行無須要保

原创 異步通知fasync

1.異步通知機制的實現理論:     最基本的read()和write()函數實現的數據最基本的交互.等待隊列實現了讀寫阻塞策略,針對一些比較長時間纔可以獲取資源的設備進程進行休眠處理進而優化了系統資源的利用率;poll機制可以實現設備的

原创 從C看C++之(四)構造函數與析構函數

 構造函數的意義: 實現類成員初始化的一種快捷方式. 使用限制: 1.與類名一樣; 2.無返回類型,void都不可以; 3.其訪問權限絕大部分是public,如果用於其派生類的話,可以是protect;     調用機制: 定義

原创 基於步進電機在LINUX平臺下的調試(之一)

    工作接到一個項目是需要在LINUX平臺(LK3.0 JZ4775)調試一個步進電機的驅動,功能要求不是很嚴格,主要實現步進電機正反向的穩定轉動即可.主要功能是通過兩個按鍵控制步進電機的正反向轉動.因此,先了解一下步進電機的原理.

原创 從C看C++之(八)文件流操作

    Linux平臺下提供了標準的C庫API實現對文件的讀寫操作,同樣C++也提供了自身對文件流操作的一些手段.雖然不知道以後會不會用到,但是瞭解一下是很有必要的. 源碼: #include <iostream> #include <

原创 基於步進電機在LINUX平臺下的調試(之二)

    之前在用戶空間用操作gpio實現完整的步進電機的控制功能.下面將其挪到底層去,順便總結下驅動所用到的知識點. 驅動源碼: /* * Copyright (c) 2014-5-15 SE7EN * * Four phas