⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_bak.c

📁 lcd kb 程序
💻 C
字号:
#ifndef __KERNEL__#define __KERNEL__#endif#ifndef MODULE#define MODULE#endif/*powerpc-linux-gcc -O2 -D_KERNEL_ -DMODULE -I/usr/src/power-linux/include\-c hello_lcd.c\-o /tftpboot/powerpc-rootfs/tmp/hello_lcd.o*/#include <linux/ioport.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/proc_fs.h>#include <linux/delay.h>#include <asm/uaccess.h>#include <asm/io.h>#include <asm/8xx_immap.h>#define MODULE_VERSION "1.0"#define MODULE_NAME "hello_lcd"volatile immap_t *immap;static void *io_base;#define MAJOR_NUM 200#define EXPANSIONPORT 0x80000000#define EXPANSIONPORTLEN 16void signal_handler1(void);void signal_handler2(void);void signal_handler1(void){udelay(10);writeb(0x00,io_base+0x17);udelay(1);writeb(0x02,io_base+0x17);udelay(1);writeb(0x00,io_base+0x17);udelay(40);printk("data transfered!\n");}void signal_handler2(void){udelay(10);writeb(0x01,io_base+0x17);udelay(1);writeb(0x03,io_base+0x17);udelay(1);writeb(0x01,io_base+0x17);udelay(40);			printk("data transfered!\n");}static int __init init_module(void){  immap=(immap_t *)(mfspr(IMMR)&0xFFFF0000);  immap->im_memctl.memc_br7=0x80000401;  immap->im_memctl.memc_or7=0x80000FF6;  io_base=ioremap_nocache(EXPANSIONPORT,EXPANSIONPORTLEN);  printk("io_base =0x%08x\n",io_base);  writeb(0xff,io_base+0x1B);udelay(15);               /*set 8 bit mode*/signal_handler1();udelay(4);signal_handler1();         /*set 8 bit mode*/                         udelay(1);                /*set 8 mode*/signal_handler1();                         writeb(0x0C,io_base+0x1D); /*set 8bit mode ,font ,matrix*/signal_handler1();writeb(0x10,io_base+0x1D);   /*close*/signal_handler1();writeb(0x70,io_base+0x1D);  /*open*/signal_handler1();writeb(0x60,io_base+0x1D);/*set display on,cursor move right,shift right*/signal_handler1();writeb(0x80,io_base+0x1D);     /*clear screen*/signal_handler1();udelay(1000);writeb(0x12,io_base+0x1D);     /*display  a char*/signal_handler2();writeb(0xA6,io_base+0x1D);     /*display  a char*/signal_handler2();writeb(0x36,io_base+0x1D);     /*display  a char*/signal_handler2();writeb(0x36,io_base+0x1D);     /*display  a char*/signal_handler2();writeb(0xF6,io_base+0x1D);     /*display  a char*/signal_handler2();printk("immr    =0x%08x\n",immap);printk("io_base=0x%08x\n",io_base);printk(" BR7    =0x%08x\n",immap->im_memctl.memc_br7);printk(" or7    =0x%08x\n",immap->im_memctl.memc_or7);printk(KERN_INFO "%s %s initialized\n",MODULE_NAME,MODULE_VERSION);return 0;}static void __exit cleanup_module(void){writeb(0x80,io_base+0x1D);signal_handler1();writeb(0x00,io_base+0x1B);/*iorelease the ioremap*/iounmap(io_base);printk(KERN_INFO "%s  %s removed\n",MODULE_NAME,MODULE_VERSION);}MODULE_AUTHOR("A0317170 gxguo");MODULE_DESCRIPTION("hello_lcd");EXPORT_NO_SYMBOLS;/*static int device_open(struct inode *inode,struct file *file){/*to implement the open_file operation mod_buffer=kmalloc(BUFFER_SIZE,GFP_KERNEL);MOD_INC_USE_COUNT;}int device_release(struct inode *inode,struct file *file){  kfree(mod_buffer);  MOD_DEC_USE_COUNT;  return 0;}ssize_t device_read(struct file *file,char *buffer,size_t length,loff_t *offset){if (offset>=BUFFER_SIZE){return 0;}if ((offset+length)>BUFFER_SIZE)  return 0;else   copy_to_user(buffer,mod_buffer+offset,length);}ssize_t device_write(struct file *file,const char *buffer,size_t length, loff_t *offset)int len;/*deal with buffer length he/copy_from_user(mod_buffer,buffer,length);}int device_ioctl(struct inode *inode,                 struct file *file,                 unsigned int ioctl_num,                 unsigned long ioctl_param){switch(ioctl_num)  {   case xxxx:       break;   default:      break;  } return 0;}int main(){ /*initialize the variableint fd;fd=open("/dev/dev_name",O_RDWR);nbyte=write(fd,buffer,BUFFER_SIZE);/*other function///close(fd);//}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -