linux裝置模型 (1) led裝置

2021-06-02 07:51:40 字數 2462 閱讀 7762

乙個簡單的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核心 量的統計圖,對應的核心版本...