乙個簡單的led驅動裝置模型demo 以三星s5pc100的n類引腳的最低一位作為乙個led燈裝置
開發環境: 宿主機fedora13,交叉編譯工具arm-linux-gcc4.3.2 處理器 s5pc100
先建乙個工程資料夾
/home/led/
device/ 下放led裝置有關檔案
s5pc100_led.h s5pc100_leddev.c makefile
driver/ led驅動程式
s5pc100_led.h s5pc100_leddriver.c makefile
test/ 測試程式
led_test.c makefile
本文先介紹device目錄下的3個檔案
s5pc100_led.h具體內容
#ifndef _led_android_h_
#define _led_android_h_
#include #include #define led_device_node_name "led"
#define led_device_file_name "led"
#define led_device_proc_name "led"
#define led_device_class_name "led"
struct led_android_dev
;struct resource s3c_led_res[1] = ,
};#endif
s5pc100_leddev.c函式具體內容
#include #include #include #include "s5pc100_led.h"
void led_dev_release(struct device *dev)
struct resource s3c_led_res[1] = ,
};struct platform_device s3c_led_dev = ,
.num_resources = array_size(s3c_led_res),//platform資源的數量,為1
.resource = s3c_led_res,
};static int __init led_device_init(void)
printk("led device init\n");
return 0;
}static void __exit led_device_exit(void)
module_init(led_device_init);//註冊裝置
module_exit(led_device_exit);//解除安裝裝置
module_license("gpl");
module_author("kevin");
makefile具體內容
kerneldir = /home/s5pc100-kernel
pwd := $(shell pwd)
installdir = /tftpboot
#cross_compile :=
#cc = $(cross_compile)gcc
obj-m := s5pc100_leddev.o
.phony: modules modules_install clean
modules:
$(make) -c $(kerneldir) m=$(pwd) modules
cp dev.ko $(installdir)
modules_install:
cp dev.ko $(installdir)
clean:
rm *.ko
以上為動態註冊裝置,一般我們裝置的註冊選用的是靜態註冊,在arch/arm/目錄下 找到對應開發板 的bsp檔案 我的開發板為ut-s5pc100 cpu為s5pc100
arch/arm/mach-smdkc100.c這個檔案 中新增:
static struct platform_device *smdkc100_devices __initdata 前面新增如下如下語句
/*led device 2011.9.29*/
struct resource s3c_led_res[1] = ,
};struct platform_device s3c_led_dev = ,
.num_resources = array_size(s3c_led_res),//platform資源的數量,為1
.resource = s3c_led_res,
};並 在static struct platform_device *smdkc100_devices __initdata結構體中的最後面新增
&s3c_led_dev,
重新編譯核心即可。
下文新增led裝置驅動
Linux裝置模型(1)
隨著計算機的周邊外設越來越豐富,裝置管理已經成為現代作業系統的一項重要任務,這對於linux來說也是同樣的情況。每次linux核心新版本的發布,都會伴隨著一批裝置驅動進入核心。在linux核心裡,驅動程式的 量占有了相當大的比重。下圖是我在網路上搜尋到的一幅linux核心 量的統計圖,對應的核心版本...
Linux裝置模型 1
隨著計算機的周邊外設越來越豐富,裝置管理已經成為現代作業系統的一項重要任務,這對於linux來說也是同樣的情況。每次linux核心新版本的發布,都會伴隨著一批裝置驅動進入核心。在linux核心裡,驅動程式的 量占有了相當大的比重。下圖是我在網路上搜尋到的一幅linux核心 量的統計圖,對應的核心版本...
Linux裝置模型 1
隨著計算機的周邊外設越來越豐富,裝置管理已經成為現代作業系統的一項重要任務,這對於linux來說也是同樣的情況。每次linux核心新版本的發布,都會伴隨著一批裝置驅動進入核心。在linux核心裡,驅動程式的 量占有了相當大的比重。下圖是我在網路上搜尋到的一幅linux核心 量的統計圖,對應的核心版本...