2011年10月31日
摘要: usb总线驱动模型里也有struct usb_driver和struct usb_device,这点与platform虚拟总线里的structplatform_device和structplatform_driver相似。不同之处是platform模型中,需要写两个驱动文件,分别是driver.ko和device.ko,然后分别insmod。usb驱动只需要写一个驱动文件driver,只insmod driver.ko即可,为什么不insmod device.ko了呢?因为没写,恩,不必写。因为usb是实际的总线,当有usb设备插入的时候usbcore就会自动对该设备执行枚举,枚举之后usbc 阅读全文
posted @ 2011-10-31 09:26 _song 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 淘了一个触摸屏,usb接口,四线电阻,usb芯片是cy7c63723c。此芯片一端接触摸屏的四根线,对触摸动作采样然后ad转换,一端通过usb接mini2440,即将ad转换后的数据通过usb接口发给mini2440.linux2.6.32已经集成usb 触摸屏驱动,mini2440默认是不配置的。可以配置一下make menuconfig 之后选择Device Drivers ---> Input device support ---> [*] Touchscreens ---> USB Touchscreen Driver即如图分析一下这一项的帮助信息,如下,可知其对应的 阅读全文
posted @ 2011-10-31 03:32 _song 阅读(919) 评论(0) 推荐(0) 编辑
  2011年10月28日
摘要: 异步io是kernel帮你的线程盯着该线程所要的数据是否可用,而线程可以去做别的事情。当数据可用时kernel通知你的线程。需要利用事件等机制来完成。同步io是你的线程自己去向内核查询所要的数据是否可用。在查询的时候,数据不可用的话:如果内核将这个线程塞进等待队列,直到数据可用时,内核将线程加进可运行队列,并将可用数据给它,则是阻塞型io;如果内核不将其塞进等待队列,而是直接给他一个error代码表示数据不可用,则是非阻塞io。执行非阻塞型io的线程需要一遍一遍的去询问内核数据是否可用,否则它可能读不到可用的数据。可见-同步 异步 阻塞 非阻塞的关系。①异步同步是指线程对数据获取的方式而言的, 阅读全文
posted @ 2011-10-28 03:47 _song 阅读(181) 评论(0) 推荐(0) 编辑
  2011年10月27日
摘要: 3 Usage PagesTable 1: Usage Page SummaryPage ID Page Name Section or Document 00 Undefined 01 Generic Desktop Controls 4 02 Simulation Controls 5 03 VR Controls 0 04 Sport Controls 7 05 Game Controls 8 06 Generic Device Controls 9 07 Keyboard/Keypad 10 08 LE... 阅读全文
posted @ 2011-10-27 08:46 _song 阅读(337) 评论(0) 推荐(0) 编辑
  2011年10月25日
摘要: 上文platform驱动虽然可用,但内层要要写misc驱动,所以不使用设备提供的资源会更加简便。可以如下改一下Makefile,同上文ifneq ($(KERNELRELEASE),) obj-m := platform_dev.o platform_drv.o else KDIR := /opt/FriendlyARM/mini2440/linux-2.6.32.2 #KDIR := /lib/modules/`uname -r`/build all: make -C $(KDIR) M=$(PWD) modules clean: rm -f *.ko *.... 阅读全文
posted @ 2011-10-25 10:55 _song 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 适应时代发展,将misc驱动封装到platfrom总线里面去,platform平台总线模型,把设备和驱动分开,即一个东东要分成两个部分去写和去insmod,是不是有点麻烦。--对于固定于一个cpu平台的用户确实感觉比较麻烦,但是linux的目标是兼容所有的cpu平台,在换cpu平台时就会发现这种设计的优点。先看一个platform的简单例子先把Makefile列出ifneq ($(KERNELRELEASE),) obj-m := platform_dev.o platform_drv.o else KDIR := /opt/FriendlyARM/mini2440/linux-... 阅读全文
posted @ 2011-10-25 09:50 _song 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 将前面rfid的misc挂到platform平台上,因为misc驱动都有了,所以很简单,代码复制过来就好了设备侧就用上文的那个就好/******************platfrom_dev.c***************************/ #include #include #include #include #include #include #define DEVICE_NAME "song_rfid" static struct platform_device *my_device; static int __in... 阅读全文
posted @ 2011-10-25 03:54 _song 阅读(287) 评论(0) 推荐(0) 编辑
  2011年10月23日
摘要: 接上文的进度,将keil下已经成功的读卡程序写成linux驱动的形式采用misc来写比较方便简单,仅是为了方便测试,好多都在驱动中实现。主文件是rfid.c#include "rc522.h" #define DEVICE_NAME "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]= 阅读全文
posted @ 2011-10-23 19:06 _song 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 将rfid小板移到arm裸机下比较简单,就把arm当单片机来操作就好了。软硬两方面考虑:硬件上,由于rfid的spi在stc11f32x上本来是模拟出来的,所以在micro2440上也先用模拟的吧(s3c2440a有spi接口先不用了)在micro2440原理图上引出如下接口现在定义EINT0 MF_SDA(NSS片选)------(GPF0 OUT)EINT1 MF_SCK(时钟)-------------(GPF1 OUT)EINT2 MF_MOSI--------------------(GPF2 OUT)EINT3 MF_MISO--------------------(GPF3 IN 阅读全文
posted @ 2011-10-23 18:48 _song 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 淘宝上买了一个rfid板,如下,左边是单片机stc11f32x,右边是rfid小板射频小板的主控芯片是rc522,可读iso 14443 type a卡,比如s50卡,店主送了两张。简介一下s50卡吧,注:ICC(Integrated Circuit Card)为集成电路卡,CD(Coupling Device)指读写设备s50卡的eeprom共16扇区;每扇区4块,共64块;每块16字节,则每扇区16x4=64字节,每卡64x16=1024字节,如下所有块统一编址,每扇区的尾块是控制块,其余为数据块,但扇区1的块0特殊一点,记录了厂家序列号之类的,只读。本例将数据存入扇区1的块4。对某扇区进 阅读全文
posted @ 2011-10-23 09:06 _song 阅读(512) 评论(0) 推荐(0) 编辑