Tiny 6410 Led 驅動模組載入(五)

2021-06-18 22:36:03 字數 2455 閱讀 7981

為安卓驅動做準備,先熟悉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...