usb5-写成usb驱动
摘要: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
阅读(544)
推荐(0)
usb4-配置usb触摸屏
摘要:淘了一个触摸屏,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
阅读(999)
推荐(0)
io-同步 异步 阻塞 非阻塞
摘要:异步io是kernel帮你的线程盯着该线程所要的数据是否可用,而线程可以去做别的事情。当数据可用时kernel通知你的线程。需要利用事件等机制来完成。同步io是你的线程自己去向内核查询所要的数据是否可用。在查询的时候,数据不可用的话:如果内核将这个线程塞进等待队列,直到数据可用时,内核将线程加进可运行队列,并将可用数据给它,则是阻塞型io;如果内核不将其塞进等待队列,而是直接给他一个error代码表示数据不可用,则是非阻塞io。执行非阻塞型io的线程需要一遍一遍的去询问内核数据是否可用,否则它可能读不到可用的数据。可见-同步 异步 阻塞 非阻塞的关系。①异步同步是指线程对数据获取的方式而言的,
阅读全文
posted @
2011-10-28 03:47
_song
阅读(200)
推荐(0)
usb3-some hid tables
摘要: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
阅读(361)
推荐(0)
rfid5-写成platform驱动
摘要:上文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
阅读(244)
推荐(0)
rfid4-写成platform驱动
摘要:适应时代发展,将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
阅读(303)
推荐(0)
rfid6-写成platform驱动
摘要:将前面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
阅读(308)
推荐(0)
rfid3-micro2440,linux2.6.32.2,写成misc驱动
摘要:接上文的进度,将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
阅读(355)
推荐(0)
rfid2-micro2440,keil4裸机
摘要:将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
阅读(562)
推荐(0)
rfid1-stc11f32x
摘要:淘宝上买了一个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
阅读(591)
推荐(0)
mini2440的时钟
摘要:mini2440上为了降低电磁干扰配备了12MHz的晶振,如果直接给当做cpu的时钟,那这个s3c2440a就屈才了。幸好cpu内部自带了MPLL将晶振时钟倍频使得cpu工作在FCLk及AHB总线上的外设工作在HCLK和APB总线上的外设工作在PCLK。当然还配有一个UPLL来产生恒定的48MHZ以支持usb2.0.①.时钟源选择在系统复位时检测引脚OM3:OM2,若是0:0,则主时钟源选择外部晶振,usb时钟源选择外部晶振②.MPLLCON main pll control 主时钟寄存器控制用于设定FCLK和Fin的倍数。Mpll(FCLK) = ( 2 × m × Fi
阅读全文
posted @
2011-10-21 08:38
_song
阅读(376)
推荐(0)
usb2-键盘里的hid
摘要:键盘设备和主机的hid规范 /*键盘发送给PC的数据每次8个字节 data0 data1 data2 data3 data4 data5 data6 data7 定义分别是: data0 -- |--bit0: Left Control是否按下,按下为1 |--bit1: Left Shift 是否按下,按下为1 |--bit2: Left Alt 是否按下,按下为1 |--bit3: Left GUI 是否按下,按下为1 |--bit4: Right Control是否按下,按下为1 |--bit5: Right Shift 是否按下,按下为1 |--bit6: Rig...
阅读全文
posted @
2011-10-15 15:13
_song
阅读(1476)
推荐(0)
usb2-鼠标里的hid
摘要:hid spec 下载:http://www.usb.org/developers/hidpage#Class_Definitionshid usage table 下载http://www.usb.org/developers/hidpage#HID_Usagemouse设备和主机的hid规范,每次中断传输,mouse发给pc 4个字节的数据data,含义如下 data[0] -- |--bit7: 1 表示 Y 坐标的变化量超出-256 ~ 255的范围,0表示没有溢出 |--bit6: 1 表示 X 坐标的变化量超出-256 ~ 255的范围,0表示没有...
阅读全文
posted @
2011-10-15 11:40
_song
阅读(523)
推荐(0)