rfid6-写成platform驱动
生活随笔
收集整理的這篇文章主要介紹了
rfid6-写成platform驱动
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
將前面rfid的misc掛到platform平臺上,因為misc驅(qū)動都有了,所以很簡單,代碼復(fù)制過來就好了
設(shè)備側(cè)就用上文的那個就好
/******************platfrom_dev.c***************************/ #include <linux/module.h> #include <linux/device.h> #include <linux/platform_device.h> #include <linux/string.h> #include <linux/init.h> #include <linux/kernel.h> #define DEVICE_NAME "song_rfid" static struct platform_device *my_device; static int __init my_init(void) { int ret=0; my_device= platform_device_alloc(DEVICE_NAME,-1);//this name is matched for driver,song_rfid ret=platform_device_add(my_device); if (ret == 0) { printk("Register %s\n",DEVICE_NAME); } else { printk("Register error.\n"); platform_device_put(my_device); } return ret; } static void __exit my_exit(void) { platform_device_unregister(my_device); printk("Unregister %s\n",DEVICE_NAME); } module_init(my_init); module_exit(my_exit); MODULE_LICENSE("GPL"); MODULE_VERSION("1.5"); 驅(qū)動側(cè),就把misc驅(qū)動的init函數(shù)中實現(xiàn)的內(nèi)容比如misc_register,射頻初始化等放到platform的probe函數(shù)中即可
#include "rc522.h" #define DEVICE_NAME "rfid"#include <linux/module.h> ? #include <linux/device.h> ? #include <linux/platform_device.h> ? #include <linux/string.h> ? #include <linux/init.h> ? #include <linux/kernel.h> ? #include <linux/io.h> ?#define DRIVER_NAME "song_rfid" ?unsigned char? LastKeyA[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};//NO.2卡 unsigned char? NewKeyA[6]={0x19,0x84,0x07,0x15,0x76,0x14};//NO.2卡 unsigned char? NewKey[16]={0x19,0x84,0x07,0x15,0x76,0x14,0xff,0x07,0x80,0x69,0x19,0x84,0x07,0x15,0x76,0x14};unsigned char? Read_Data[16]={0x00}; unsigned char? Write_First_Data[16]; unsigned char? Write_Consume_Data[16]; unsigned char? RevBuffer[30]; unsigned char? MLastSelectedSnr[4]; unsigned char? oprationcard;extern signed char PcdReset(void); extern signed char PcdRequest(unsigned char? req_code,unsigned char *pTagType); extern void PcdAntennaOn(void); extern void PcdAntennaOff(void); extern signed char M500PcdConfigISOType(unsigned char? type); extern signed char PcdAnticoll(unsigned char *pSnr); extern signed char PcdSelect(unsigned char *pSnr); extern signed char PcdAuthState(unsigned char? auth_mode,unsigned char? addr,unsigned char *pKey,unsigned char *pSnr); extern signed char PcdWrite(unsigned char? addr,unsigned char *pData); extern signed char PcdRead(unsigned char? addr,unsigned char *pData); extern signed char PcdHalt(void);union flt_chr {//float flt;int flt;unsigned char chr[4]; }fltchr;void delay_5ms(int x){ unsigned long j=jiffies+x*10; while(jiffies<j) {;}}unsigned long rfid_table [] = {S3C2410_GPF(0),//nss out S3C2410_GPF(1),//sck out S3C2410_GPF(2),//mosi out S3C2410_GPF(3),//miso inS3C2410_GPF(4),//rst? out }; unsigned int rfid_cfg_table [] = {S3C2410_GPIO_OUTPUT,S3C2410_GPIO_OUTPUT,S3C2410_GPIO_OUTPUT,S3C2410_GPIO_INPUT,S3C2410_GPIO_OUTPUT, };int open_flag; void InitRc522(void) {PcdReset();PcdAntennaOff(); ?PcdAntennaOn();M500PcdConfigISOType( 'A' ); } void ctrlprocess(void) {char? status;?? ?int ii;printk("\n");printk("HZ=%d\n",HZ); /**********************************************尋卡**************************************************************/status=PcdRequest(PICC_REQIDL,&RevBuffer[0]);//尋天線區(qū)內(nèi)未進(jìn)入休眠狀態(tài)的卡,返回卡片類型 2字節(jié)if(status!=MI_OK){?? ?printk("XXXXXXXXXXXXXXXX no card type\n");return;}printk("*********** discard card typr\n");/**********************************************返回序列號**************************************************************/status=PcdAnticoll(&RevBuffer[2]);//防沖撞,返回卡的序列號 4字節(jié)if(status!=MI_OK){printk("XXXXXXXXXXXXXXXX no card serial num\n");return;}?? ?printk("***********dicover card serial num\n");memcpy(MLastSelectedSnr,&RevBuffer[2],4);for(ii=0;ii<4;ii++){printk("%x",(MLastSelectedSnr[ii]>>4)&0x0f);printk("%x",MLastSelectedSnr[ii]&0x0f);}/**********************************************選卡**************************************************************/memcpy(MLastSelectedSnr,&RevBuffer[2],4);status=PcdSelect(MLastSelectedSnr);//選卡if(status!=MI_OK){printk("XXXXXXXXXXXXXXXX selected no card\n");return;}printk("*********** selected card\n");/**********************************************驗證密碼,扇區(qū)1,扇區(qū)1的控制塊,地址為7********************************/status=PcdAuthState(PICC_AUTHENT1A,7,NewKeyA,MLastSelectedSnr);if(status!=MI_OK){ printk("XXXXXXXXXXXXXXXX not right password \n");return;}printk("*********** right password\n");status=PcdRead(4,Read_Data);? //讀卡?? *********************************************************if(status!=MI_OK){printk("XXXXXXXXXXXXXXXX the first reading card failed\n");return;}printk("*********** the first reading card success,as follows \n");for(ii=0;ii<4;ii++){fltchr.chr[ii]=Read_Data[ii];printk("fltchr.chr[%d]=%x\n",ii,fltchr.chr[ii]);}printk("fltchr.flt=%d\n",fltchr.flt);/**********************************************寫卡,扇區(qū)1,扇區(qū)1的控第一個數(shù)據(jù)塊,地址為4********************************///fltchr.flt=108;fltchr.flt+=6;printk("*********** write card with the data as follows \n");printk("fltchr.flt=%d\n",fltchr.flt);for(ii=0;ii<4;ii++)?? ??? ?{Write_First_Data[ii]=fltchr.chr[ii];printk("fltchr.chr[%d]=%x\n",ii,fltchr.chr[ii]);}for(ii=0;ii<4;ii++)?? ?printk("Write_First_Data[%d]=%x\n",ii,Write_First_Data[ii]);?? ?status=PcdWrite(4,&Write_First_Data[0]);?? ?//寫卡*********************************if(status!=MI_OK){printk("XXXXXXXXXXXXXXXX write to card failed \n") ;?? ? printk("status=%d\n",status); ?return;}?? ?printk("*********** write to card success with the data above\n") ;?? ? status=PcdRead(4,Read_Data);? //讀卡?? *********************************************************if(status!=MI_OK){printk("XXXXXXXXXXXXXXXX the first reading card failed\n");return;}printk("*********** the second reading card success,as follows\n");for(ii=0;ii<4;ii++){fltchr.chr[ii]=Read_Data[ii];printk("fltchr.chr[%d]=%x\n",ii,fltchr.chr[ii]);}printk("fltchr.flt=%d\n",fltchr.flt);}static ssize_t write_rfid(struct file *filp, const char *buffer, size_t count, loff_t *ppos) {?? ??? ??? ?int ret;char *commad=0;if (count == 0) {return count;}commad=kmalloc(count+1,GFP_KERNEL);//need print it using %s, so plus 1 byte for '\0'ret = copy_from_user(commad, buffer, count);//if success,ret=0if (ret) {return ret;}commad[count]='\0';printk("from kernel commad=%s\n",commad);printk("from kenel ret=%d\n",ret);//to test the command "set to 1" or "clear to 0" if correct if(strncmp(commad,"SET_SPI_CS",count)==0) {SET_SPI_CS;printk("excuting %s succes !\n",commad);}?? ?if(strncmp(commad,"CLR_SPI_CS",count)==0) {CLR_SPI_CS;printk("excuting %s succes !\n",commad);}if(strncmp(commad,"SET_SPI_CK",count)==0) {SET_SPI_CK;printk("excuting %s succes !\n",commad);}if(strncmp(commad,"CLR_SPI_CK",count)==0) {CLR_SPI_CK;printk("excuting %s succes !\n",commad);}if(strncmp(commad,"SET_SPI_MOSI",count)==0) {SET_SPI_MOSI;printk("excuting %s succes !\n",commad);}if(strncmp(commad,"CLR_SPI_MOSI",count)==0) {CLR_SPI_MOSI;printk("excuting %s succes !\n",commad);}if(strncmp(commad,"SET_RC522RST",count)==0) {SET_RC522RST;printk("excuting %s succes !\n",commad);}if(strncmp(commad,"CLR_RC522RST",count)==0) {CLR_RC522RST;printk("excuting %s succes !\n",commad);}kfree(commad);return ret ? ret : count;} static ssize_t read_rfid(struct file *filp, char *buffer, size_t count, loff_t *ppos) {?? ?printk("read_rfid1\n");?? ?ctrlprocess();?? ?printk("read_rfid2\n");?? ?return 0; }static int release_rfid(struct inode *inode, struct file *filp) {return 0; }static int open_rfid(struct inode *inode, struct file *filp) {?? ?open_flag=1;printk("open_flag=%d\n",open_flag);return 0; }static struct file_operations dev_fops = {.owner?? ?=?? ?THIS_MODULE,.open?? ?=?? ?open_rfid,.read?? ?=?? ?read_rfid,.write?? ?=?? ?write_rfid,.release=?? ?release_rfid, };static struct miscdevice misc = {.minor = MISC_DYNAMIC_MINOR,.name = DEVICE_NAME,.fops = &dev_fops, }; /**************************** 以上屬于misc ************************//**************************** 以下屬于platform ************************//*在平臺驅(qū)動probe函數(shù)中實現(xiàn)misc功能型驅(qū)動注冊,及其他咚咚初始化*/ static int? my_probe(struct platform_device *pdev) ? { ? int ret,i; printk("driver find device : %s which can handle\n",DRIVER_NAME); for (i = 0; i < 5; i++) {s3c2410_gpio_cfgpin(rfid_table[i], rfid_cfg_table[i]);s3c2410_gpio_setpin(rfid_table[i], 0); }ret = misc_register(&misc);InitRc522()?? ?; printk (DEVICE_NAME"\tinitialized\n"); open_flag=0; return ret;} ? /*在平臺驅(qū)動remove函數(shù)中實現(xiàn)misc驅(qū)動的注銷*/ static int? my_remove(struct platform_device *pdev) ? { ? misc_deregister(&misc); printk("driver found device : %s unpluged\n",DRIVER_NAME); ? return 0; ? } ?static struct platform_driver my_driver = { ? .probe????? = my_probe, ? .remove???? = my_remove, ? .driver???? = { ?.owner? = THIS_MODULE, ?.name?? = DRIVER_NAME,//this name is matched for driver,song_rfid ? }, ? }; ? /*在驅(qū)動入口函數(shù)init中實現(xiàn)平臺驅(qū)動的注冊*/ static int __init my_init(void) ? { ? printk("Register my_driver.\n"); ? return platform_driver_register(&my_driver); ? } ? /*在驅(qū)動注銷函數(shù)中實現(xiàn)平臺驅(qū)動的注銷*/ static void __exit my_exit(void) ? { ? printk("Unregister my_driver.\n"); ? platform_driver_unregister(&my_driver); ? } module_init(my_init); ? module_exit(my_exit); ? MODULE_LICENSE("GPL"); ?
[root@FriendlyARM plg]# insmod platform_dev.ko Register song_rfid [root@FriendlyARM plg]# insmod mymodule.ko //之后就會出現(xiàn)設(shè)備文件/dev/rfid Register my_driver. driver find device : song_rfid which can handle rfid??? initialized [root@FriendlyARM plg]# cat /dev/rfid open_flag=1 read_rfid1HZ=200 rc522.c-PcdRequest: status = 0 *********** discard card typr ***********dicover card serial num ce1ed4c7*********** selected card *********** right password *********** the first reading card success,as follows fltchr.chr[0]=17 fltchr.chr[1]=0 fltchr.chr[2]=d5 fltchr.chr[3]=42 fltchr.flt=1121255447 *********** write card with the data as follows fltchr.flt=1121255453 fltchr.chr[0]=1d fltchr.chr[1]=0 fltchr.chr[2]=d5 fltchr.chr[3]=42 Write_First_Data[0]=1d Write_First_Data[1]=0 Write_First_Data[2]=d5 Write_First_Data[3]=42 *********** write to card success with the data above *********** the second reading card success,as follows fltchr.chr[0]=1d fltchr.chr[1]=0 fltchr.chr[2]=d5 fltchr.chr[3]=42 fltchr.flt=1121255453 read_rfid2 [root@FriendlyARM plg]#
http://download.csdn.net/detail/songqqnew/3716591
設(shè)備側(cè)就用上文的那個就好
/******************platfrom_dev.c***************************/ #include <linux/module.h> #include <linux/device.h> #include <linux/platform_device.h> #include <linux/string.h> #include <linux/init.h> #include <linux/kernel.h> #define DEVICE_NAME "song_rfid" static struct platform_device *my_device; static int __init my_init(void) { int ret=0; my_device= platform_device_alloc(DEVICE_NAME,-1);//this name is matched for driver,song_rfid ret=platform_device_add(my_device); if (ret == 0) { printk("Register %s\n",DEVICE_NAME); } else { printk("Register error.\n"); platform_device_put(my_device); } return ret; } static void __exit my_exit(void) { platform_device_unregister(my_device); printk("Unregister %s\n",DEVICE_NAME); } module_init(my_init); module_exit(my_exit); MODULE_LICENSE("GPL"); MODULE_VERSION("1.5"); 驅(qū)動側(cè),就把misc驅(qū)動的init函數(shù)中實現(xiàn)的內(nèi)容比如misc_register,射頻初始化等放到platform的probe函數(shù)中即可
#include "rc522.h" #define DEVICE_NAME "rfid"#include <linux/module.h> ? #include <linux/device.h> ? #include <linux/platform_device.h> ? #include <linux/string.h> ? #include <linux/init.h> ? #include <linux/kernel.h> ? #include <linux/io.h> ?#define DRIVER_NAME "song_rfid" ?unsigned char? LastKeyA[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};//NO.2卡 unsigned char? NewKeyA[6]={0x19,0x84,0x07,0x15,0x76,0x14};//NO.2卡 unsigned char? NewKey[16]={0x19,0x84,0x07,0x15,0x76,0x14,0xff,0x07,0x80,0x69,0x19,0x84,0x07,0x15,0x76,0x14};unsigned char? Read_Data[16]={0x00}; unsigned char? Write_First_Data[16]; unsigned char? Write_Consume_Data[16]; unsigned char? RevBuffer[30]; unsigned char? MLastSelectedSnr[4]; unsigned char? oprationcard;extern signed char PcdReset(void); extern signed char PcdRequest(unsigned char? req_code,unsigned char *pTagType); extern void PcdAntennaOn(void); extern void PcdAntennaOff(void); extern signed char M500PcdConfigISOType(unsigned char? type); extern signed char PcdAnticoll(unsigned char *pSnr); extern signed char PcdSelect(unsigned char *pSnr); extern signed char PcdAuthState(unsigned char? auth_mode,unsigned char? addr,unsigned char *pKey,unsigned char *pSnr); extern signed char PcdWrite(unsigned char? addr,unsigned char *pData); extern signed char PcdRead(unsigned char? addr,unsigned char *pData); extern signed char PcdHalt(void);union flt_chr {//float flt;int flt;unsigned char chr[4]; }fltchr;void delay_5ms(int x){ unsigned long j=jiffies+x*10; while(jiffies<j) {;}}unsigned long rfid_table [] = {S3C2410_GPF(0),//nss out S3C2410_GPF(1),//sck out S3C2410_GPF(2),//mosi out S3C2410_GPF(3),//miso inS3C2410_GPF(4),//rst? out }; unsigned int rfid_cfg_table [] = {S3C2410_GPIO_OUTPUT,S3C2410_GPIO_OUTPUT,S3C2410_GPIO_OUTPUT,S3C2410_GPIO_INPUT,S3C2410_GPIO_OUTPUT, };int open_flag; void InitRc522(void) {PcdReset();PcdAntennaOff(); ?PcdAntennaOn();M500PcdConfigISOType( 'A' ); } void ctrlprocess(void) {char? status;?? ?int ii;printk("\n");printk("HZ=%d\n",HZ); /**********************************************尋卡**************************************************************/status=PcdRequest(PICC_REQIDL,&RevBuffer[0]);//尋天線區(qū)內(nèi)未進(jìn)入休眠狀態(tài)的卡,返回卡片類型 2字節(jié)if(status!=MI_OK){?? ?printk("XXXXXXXXXXXXXXXX no card type\n");return;}printk("*********** discard card typr\n");/**********************************************返回序列號**************************************************************/status=PcdAnticoll(&RevBuffer[2]);//防沖撞,返回卡的序列號 4字節(jié)if(status!=MI_OK){printk("XXXXXXXXXXXXXXXX no card serial num\n");return;}?? ?printk("***********dicover card serial num\n");memcpy(MLastSelectedSnr,&RevBuffer[2],4);for(ii=0;ii<4;ii++){printk("%x",(MLastSelectedSnr[ii]>>4)&0x0f);printk("%x",MLastSelectedSnr[ii]&0x0f);}/**********************************************選卡**************************************************************/memcpy(MLastSelectedSnr,&RevBuffer[2],4);status=PcdSelect(MLastSelectedSnr);//選卡if(status!=MI_OK){printk("XXXXXXXXXXXXXXXX selected no card\n");return;}printk("*********** selected card\n");/**********************************************驗證密碼,扇區(qū)1,扇區(qū)1的控制塊,地址為7********************************/status=PcdAuthState(PICC_AUTHENT1A,7,NewKeyA,MLastSelectedSnr);if(status!=MI_OK){ printk("XXXXXXXXXXXXXXXX not right password \n");return;}printk("*********** right password\n");status=PcdRead(4,Read_Data);? //讀卡?? *********************************************************if(status!=MI_OK){printk("XXXXXXXXXXXXXXXX the first reading card failed\n");return;}printk("*********** the first reading card success,as follows \n");for(ii=0;ii<4;ii++){fltchr.chr[ii]=Read_Data[ii];printk("fltchr.chr[%d]=%x\n",ii,fltchr.chr[ii]);}printk("fltchr.flt=%d\n",fltchr.flt);/**********************************************寫卡,扇區(qū)1,扇區(qū)1的控第一個數(shù)據(jù)塊,地址為4********************************///fltchr.flt=108;fltchr.flt+=6;printk("*********** write card with the data as follows \n");printk("fltchr.flt=%d\n",fltchr.flt);for(ii=0;ii<4;ii++)?? ??? ?{Write_First_Data[ii]=fltchr.chr[ii];printk("fltchr.chr[%d]=%x\n",ii,fltchr.chr[ii]);}for(ii=0;ii<4;ii++)?? ?printk("Write_First_Data[%d]=%x\n",ii,Write_First_Data[ii]);?? ?status=PcdWrite(4,&Write_First_Data[0]);?? ?//寫卡*********************************if(status!=MI_OK){printk("XXXXXXXXXXXXXXXX write to card failed \n") ;?? ? printk("status=%d\n",status); ?return;}?? ?printk("*********** write to card success with the data above\n") ;?? ? status=PcdRead(4,Read_Data);? //讀卡?? *********************************************************if(status!=MI_OK){printk("XXXXXXXXXXXXXXXX the first reading card failed\n");return;}printk("*********** the second reading card success,as follows\n");for(ii=0;ii<4;ii++){fltchr.chr[ii]=Read_Data[ii];printk("fltchr.chr[%d]=%x\n",ii,fltchr.chr[ii]);}printk("fltchr.flt=%d\n",fltchr.flt);}static ssize_t write_rfid(struct file *filp, const char *buffer, size_t count, loff_t *ppos) {?? ??? ??? ?int ret;char *commad=0;if (count == 0) {return count;}commad=kmalloc(count+1,GFP_KERNEL);//need print it using %s, so plus 1 byte for '\0'ret = copy_from_user(commad, buffer, count);//if success,ret=0if (ret) {return ret;}commad[count]='\0';printk("from kernel commad=%s\n",commad);printk("from kenel ret=%d\n",ret);//to test the command "set to 1" or "clear to 0" if correct if(strncmp(commad,"SET_SPI_CS",count)==0) {SET_SPI_CS;printk("excuting %s succes !\n",commad);}?? ?if(strncmp(commad,"CLR_SPI_CS",count)==0) {CLR_SPI_CS;printk("excuting %s succes !\n",commad);}if(strncmp(commad,"SET_SPI_CK",count)==0) {SET_SPI_CK;printk("excuting %s succes !\n",commad);}if(strncmp(commad,"CLR_SPI_CK",count)==0) {CLR_SPI_CK;printk("excuting %s succes !\n",commad);}if(strncmp(commad,"SET_SPI_MOSI",count)==0) {SET_SPI_MOSI;printk("excuting %s succes !\n",commad);}if(strncmp(commad,"CLR_SPI_MOSI",count)==0) {CLR_SPI_MOSI;printk("excuting %s succes !\n",commad);}if(strncmp(commad,"SET_RC522RST",count)==0) {SET_RC522RST;printk("excuting %s succes !\n",commad);}if(strncmp(commad,"CLR_RC522RST",count)==0) {CLR_RC522RST;printk("excuting %s succes !\n",commad);}kfree(commad);return ret ? ret : count;} static ssize_t read_rfid(struct file *filp, char *buffer, size_t count, loff_t *ppos) {?? ?printk("read_rfid1\n");?? ?ctrlprocess();?? ?printk("read_rfid2\n");?? ?return 0; }static int release_rfid(struct inode *inode, struct file *filp) {return 0; }static int open_rfid(struct inode *inode, struct file *filp) {?? ?open_flag=1;printk("open_flag=%d\n",open_flag);return 0; }static struct file_operations dev_fops = {.owner?? ?=?? ?THIS_MODULE,.open?? ?=?? ?open_rfid,.read?? ?=?? ?read_rfid,.write?? ?=?? ?write_rfid,.release=?? ?release_rfid, };static struct miscdevice misc = {.minor = MISC_DYNAMIC_MINOR,.name = DEVICE_NAME,.fops = &dev_fops, }; /**************************** 以上屬于misc ************************//**************************** 以下屬于platform ************************//*在平臺驅(qū)動probe函數(shù)中實現(xiàn)misc功能型驅(qū)動注冊,及其他咚咚初始化*/ static int? my_probe(struct platform_device *pdev) ? { ? int ret,i; printk("driver find device : %s which can handle\n",DRIVER_NAME); for (i = 0; i < 5; i++) {s3c2410_gpio_cfgpin(rfid_table[i], rfid_cfg_table[i]);s3c2410_gpio_setpin(rfid_table[i], 0); }ret = misc_register(&misc);InitRc522()?? ?; printk (DEVICE_NAME"\tinitialized\n"); open_flag=0; return ret;} ? /*在平臺驅(qū)動remove函數(shù)中實現(xiàn)misc驅(qū)動的注銷*/ static int? my_remove(struct platform_device *pdev) ? { ? misc_deregister(&misc); printk("driver found device : %s unpluged\n",DRIVER_NAME); ? return 0; ? } ?static struct platform_driver my_driver = { ? .probe????? = my_probe, ? .remove???? = my_remove, ? .driver???? = { ?.owner? = THIS_MODULE, ?.name?? = DRIVER_NAME,//this name is matched for driver,song_rfid ? }, ? }; ? /*在驅(qū)動入口函數(shù)init中實現(xiàn)平臺驅(qū)動的注冊*/ static int __init my_init(void) ? { ? printk("Register my_driver.\n"); ? return platform_driver_register(&my_driver); ? } ? /*在驅(qū)動注銷函數(shù)中實現(xiàn)平臺驅(qū)動的注銷*/ static void __exit my_exit(void) ? { ? printk("Unregister my_driver.\n"); ? platform_driver_unregister(&my_driver); ? } module_init(my_init); ? module_exit(my_exit); ? MODULE_LICENSE("GPL"); ?
[root@FriendlyARM plg]# insmod platform_dev.ko Register song_rfid [root@FriendlyARM plg]# insmod mymodule.ko //之后就會出現(xiàn)設(shè)備文件/dev/rfid Register my_driver. driver find device : song_rfid which can handle rfid??? initialized [root@FriendlyARM plg]# cat /dev/rfid open_flag=1 read_rfid1HZ=200 rc522.c-PcdRequest: status = 0 *********** discard card typr ***********dicover card serial num ce1ed4c7*********** selected card *********** right password *********** the first reading card success,as follows fltchr.chr[0]=17 fltchr.chr[1]=0 fltchr.chr[2]=d5 fltchr.chr[3]=42 fltchr.flt=1121255447 *********** write card with the data as follows fltchr.flt=1121255453 fltchr.chr[0]=1d fltchr.chr[1]=0 fltchr.chr[2]=d5 fltchr.chr[3]=42 Write_First_Data[0]=1d Write_First_Data[1]=0 Write_First_Data[2]=d5 Write_First_Data[3]=42 *********** write to card success with the data above *********** the second reading card success,as follows fltchr.chr[0]=1d fltchr.chr[1]=0 fltchr.chr[2]=d5 fltchr.chr[3]=42 fltchr.flt=1121255453 read_rfid2 [root@FriendlyARM plg]#
http://download.csdn.net/detail/songqqnew/3716591
轉(zhuǎn)載于:https://www.cnblogs.com/-song/archive/2011/10/25/3331940.html
總結(jié)
以上是生活随笔為你收集整理的rfid6-写成platform驱动的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rfid3-micro2440,linu
- 下一篇: rfid4-写成platform驱动