為安卓驅動做準備,先熟悉linux下的驅動。
1.重新編譯核心
去掉核心對led驅動的支援,
#make menuconfig arch=arm cross_compile=arm-linux- (配置)
device drivers->characterdevices->led support for mini6410 gpio leds(取消)
make uimage arch=arm cross_compile=arm-linux-(編譯好後燒入開發板)
2.編寫模組
#include
#include
#include
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define device_name "led123"
static int sbc6410_leds_ioctl(
struct inode *inode,
struct file *file,
unsigned int cmd,
unsigned long arg)
tmp = readl(s3c64xx_gpkdat);
tmp &= ~(1 << (4+ arg));
tmp |= ( (!cmd) << (4 + arg));
writel(tmp, s3c64xx_gpkdat);
// printk (device_name": %d %d\r\n", arg, cmd);
return 0;
default:
return -einval; }
}static struct file_operations dev_fops = ;
static struct miscdevice misc = ;
static int __init dev_init(void)
ret = misc_register(&misc);
printk (device_name"\tinitialized\r\n");
return ret; }
static void __exit dev_exit(void)
module_init(dev_init);
module_exit(dev_exit);
module_license("gpl");
module_author("qiugong");
使用android-linux,編譯核心模組時出現了好多錯誤。最後是參照友善原來有的核心模組程式,修改最終完成。
3.編寫makefile
ifneq ($(kernelrelease),)
obj-m := tiny6410_leds_misc.o
else
kdir := /home/qiugong/linux-2.6.28.6_use
all:
make -c $(kdir) m=$(pwd) modules arch=armcross_compile=arm-linux-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
modul*
endif
模組,makefile編寫好後,直接執行make。會產生 .ko檔案。
拷貝到開發板,執行 insmod tiny6410_leds_misc.ko(lsmod:檢視當前模組 rmmod tiny6410_leds_misc:移除模組)
4.編寫應用程式
#include
#include
#include
#include
//#include "memdev.h"
int main(int argc, char **argv)
fd = open("/dev/led123", 0);
if (fd < 0)
if(sta)
else
close(fd);
return 0;
}編譯:
以上是led模組驅動,有點粗糙,不太具體。但都是最重要的!
Tiny6410 LED 裸機驅動筆記
1.先檢視 tiny6410 1170 cpu 核心板原理圖 找到 led部分 從上圖可知,當nled 1 為低電平時,ledx 就會亮。2.再在 tiny6410 1170 cpu 核心板原理圖 中找到 nled x 連線圖 應該就在附近 從上圖可知 led1 連線 gpk4 led2 連線 gp...
基於Tiny6410的LED驅動程式
從電路圖中看出,gpio低電平有效 led亮 gpk共有16個埠,每個埠由三個暫存器控制 控制暫存器 gpkcon 資料暫存器 gpkdat 和上拉暫存器 gpkpud 每個暫存器都是32位,如下圖所示。gpk的控制暫存器分為兩個,gpkcon0控制0 8好埠,gpkcon1控制9 15號埠。控制暫...
Tiny6410 buttons c 按鍵驅動程式
最近一直在找帶中斷的led驅動程式先貼出來方便自己複習。tiny6410 buttons xyl.c 引用的標頭檔案 include 模組有關的 include 核心有關的 include 檔案系統有關的 include include include include include 中斷 incl...