原创 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在這個過程中是如何找到外設的呢?儘管在一個系統中會有諸多的外設,在每個外設的接口電路中會有多個端口。但是如果系統能夠每個端口都被賦予一個具體