linux驅動開發 tq2440 leds

2021-07-06 01:45:48 字數 1948 閱讀 5346

linux kernel:2.6.30.4

#include 

#include

#include

#include

#include

#include

//#include

//#include

#include

#include

#include

#define device_name "leds" /* 載入模式後,執行」cat /proc/devices」命令看到的裝置名稱 */ #define led_major 231 /* 主裝置號 */ /* 應用程式執行ioctl(fd, cmd, arg)時的第2個引數 */ #define ioctl_led_on 0 #define ioctl_led_off 1 /* 用來指定led所用的gpio引腳 */ static unsigned long led_table = ; /* 用來指定gpio引腳的功能:輸出 */ static unsigned int led_cfg_table = ; /* 應用程式對裝置檔案/dev/leds執行open(...)時, * 就會呼叫s3c24xx_leds_open函式 */ static int s3c24xx_leds_open(struct inode *inode, struct file *file) return 0; } /* 應用程式對裝置檔案/dev/leds執行ioclt(...)時, * 就會呼叫s3c24xx_leds_ioctl函式 */ static int s3c24xx_leds_ioctl( struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) switch(cmd) } /* 這個結構是字元裝置驅動程式的核心 * 當應用程式操作裝置檔案時所呼叫的open、read、write等函式, * 最終會呼叫這個結構中指定的對應函式 */ static struct file_operations s3c24xx_leds_fops = ; /* * 執行「insmod s3c24xx_leds.ko」命令時就會呼叫這個函式 */ static int __init s3c24xx_leds_init(void) printk(device_name " initialized\n"); return 0; } /* * 執行」rmmod s3c24xx_leds.ko」命令時就會呼叫這個函式 */ static void __exit s3c24xx_leds_exit(void) /* 這兩行指定驅動程式的初始化函式和解除安裝函式 */ module_init(s3c24xx_leds_init); module_exit(s3c24xx_leds_exit); /* 描述驅動程式的一些資訊,不是必須的 */ module_author(""); // 驅動程式的作者 module_description("s3c2410/s3c2440 led driver"); // 一些描述資訊 module_license("gpl"); // 遵循的協議

#include 

#include

#include

#include

#define ioctl_led_on 0

#define ioctl_led_off 1

void usage(char *exename)

int main(int argc, char **argv) led_no = strtoul(argv[1], 0, 0) - 1; // 操作哪個led? if (led_no > 3) goto err; if (!strcmp(argv[2], "on")) else if (!strcmp(argv[2], "off")) else close(fd); return 0; err: if (fd > 0) close(fd); usage(argv[0]); return -1; }

《TQ2440載入Hello world驅動模組》

經過將近乙個月都時間終於按照手冊把linux核心移植完了,接下來要開始驅動模組的移植了,在網上查了一些資料,總結如下 目標平台 tq2440 arm9 核心版本 linux 2.6.25 前提 宿主機上已安裝交叉編譯工具,因為這個在linux核心移植的時候就使用過了,這裡就不說了。進入正題 1 首先...

tq2440 的dma裸機驅動

dma是一種提高cpu效率的工具。如果讓cpu去負責搬運資料,效率是十分低下的,因為在這個過程中,cpu就只能做這麼一件事。因此dma就應運而生。只要告訴dma,要搬運的資料源位址,以及要搬運到 去的位址,何種方式,使能它,dma就會獲取匯流排控制權,自動地搬運資料,從而解放cpu,提高效率。tq2...

TQ2440背光控制

控制lcd背光就是控制s3c2440的lcd控制的lcd pwren腳lcdcon5暫存器pwren位控制lcd是否輸出。對linux 2.6.30.4核心進行移植。新建乙個backlight.c檔案放到 drivers video 目錄下。內容如下 include include include ...