原创 LINUX鏈表學習

      使用前需要初始化,內核鏈表的結構是個雙向循環鏈表,只有指針域,數據域根據使用鏈表的人的具體需求而定。         兩種初始化方法 struct list_head {    struct list_head *next,

原创 H264相關知識學習

H264在網絡傳輸的是NALU,NALU的結構是:NAL頭+RBSP,  其中NAL頭佔一個字節,其低5個bit位表示NAL type。 RBSP 爲原始字節序列載荷 在實際的H264數據幀中,往往幀NAL type前面帶有00 00 0

原创 將自己的模塊編譯進內核

一、編寫驅動程序   將需要編譯進內核的源代碼編寫好,我舉個最簡單的Hello World的例子:   hello.c #include <linux/init.h> #include <linux/module.h> static

原创 字符驅動程序模板

設備驅動模型通過sysfs文件系統向用戶層提供設備驅動視圖,如下。 1.設備是具體的一個個設備,在/sys/devices/是創建了實際的文件節點。而其他目錄,如設備類和總線以下的子目錄中出現的設備都是用符號鏈接指向/sys/devic

原创 platform_match 函數分析

static int platform_match(struct device *dev, struct device_driver *drv) {     struct platform_device *pdev = to_platf

原创 驅動程序--編譯進內核和編譯成模塊

在 內核中增加程序需要完成以下五項工作: 1. 將編寫的源代碼複製到 Linux 內核源代碼的相應目錄; 2. 在目錄的 Kconfig 文件中增加新源代碼對應項目的編譯配置選項; 3. 在目錄的 Makefile 文件中增加對新源代碼的

原创 IIC驅動

linux iic驅動體系分三部分。 struct i2c_adapter 用來描述I2C控制器的,只和主機有關係。換一顆SoC則需要修改該結構體。 struct i2c_client   I2C從機設備信息 struct i2c_dri

原创 幾個重要文件說明

/etc/profile,/etc/bashrc 是系統全局環境變量設定。 ~/.profile,~/.bashrc用戶家目錄下的私有環境變量設定。 當登入系統時候獲得一個shell進程時,其讀取環境設定檔有三步      1. 首先讀入

原创 等待隊列示例

#include <linux/module.h> #include <linux/init.h> #include <linux/fs.h> #include <linux/cdev.h> #include <linux/slab.h

原创 阻塞式按鍵驅動

#include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #include <linux/delay.h> /*delay*/ #i

原创 雙向鏈表的使用。

#include <stdio.h> #include <stdlib.h> #define LEN 5 #define ERROR -1 #define OK 0 /* 數據元素類型 */ typedef int Type

原创 X210 FIMC驅動

mach-x210.c中,先註冊platform設備。 static struct resource s3c_fimc0_resource[] = { [0] = { .start = S5P_PA_FIMC0, .end =

原创 Platform總線匹配方法。

             如果有idtable就說明驅動支持多個設備,所以要去對比idtable中的所有name。只要找個一個相同的就匹配上了,不用再找。如果idtable都配置完了還沒有找到就說明沒有匹配上。如果沒有idtalbe或者沒

原创 linux中斷共享

irqreturn_t Deal_With_Button_INT(int irq, void *dev_id) linux 中斷處理函數中兩個參數 int              irq是中斷號。 void *dev_id    是用來

原创 Linux內存空間

        對於一個系統來講,會有很多的外設,那麼這些外設的管理都是通過CPU完成。那麼CPU在這個過程中是如何找到外設的呢?儘管在一個系統中會有諸多的外設,在每個外設的接口電路中會有多個端口。但是如果系統能夠每個端口都被賦予一個具體