驅動檔案:
/*******************************************
使用linux3.2.81核心
********************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
static
struct
class *ledsdrv_class; //類結構體
static
struct device *ledsdrv_class_dev; //裝置結構體
volatile
unsigned
long *gpfcon = null ;
volatile
unsigned
long *gpfdat = null;
static
int leds_drv_open(struct inode *inode, struct file *file)
static ssize_t leds_drv_write(struct file *file, const
char __user *buf, size_t count, loff_t * ppos)
else
return0;}
/*當應用程式操作裝置檔案時所呼叫的open、read、write等函式,最終會呼叫這個結構體中上的對應函式
*/static
struct file_operations leds_drv_fops = ;
int major;
//指定insmod命令時會呼叫這個函式
static
int leds_drv_init(void)
//執行rmmod時會呼叫這個函式
static
void leds_drv_exit(void)
//指定驅動程式的初始化函式和解除安裝函式
module_init(leds_drv_init);
module_exit(leds_drv_exit);
module_license("gpl"); //防止出現「module license」unspecified taints kernel的警告
測試程式(應用程式)
#include
#include
#include
#include
/* led_test on
* led_test off
*/int main(int argc, char **argv)
if (argc != 2) //引數個數不為2,則顯示使用方法
if (strcmp(argv[1], "on") == 0) //第二個引數為"on"
else
write(fd, &val, 4); //寫入4個位元組資料到裝置檔案,該函式最終將呼叫底層驅動的write函式
return
0;}
LED字元裝置驅動
一 實驗環境 開發機環境 作業系統 ubuntu 10.10 交叉編譯環境 arm linux gcc 4.4.1,安裝位置 usr local arm 4.4.1 6410板子核心原始碼路徑 work linux 2.6.36.2 v1.05 目標板環境 ok6410 a linux2.6.36 ...
字元裝置驅動 LED型
字元驅動程式 對於led型別的字元裝置驅動函式編寫 1 建立乙個file operation結構體,裡面會有點燈操作的各個硬體操作函式 2 編寫乙個drv init 函式 3 要對drv init函式進行修飾為入口函式,告訴核心,載入驅動時進行掛接 4 有init函式,那麼也會有出口函式exit m...
字元裝置驅動 LED驅動程式
int main open sys.open led.open write sys.write led.write 第一步 驅動功能實現 static int first drv open struct inode inode,struct file file static ssize t firs...