只有注册用户登录后才能阅读该文。 阅读全文
posted @ 2018-01-29 20:26 梦提三尺剑 阅读(3) 评论(0) 推荐(0) 编辑
只有注册用户登录后才能阅读该文。 阅读全文
posted @ 2018-01-26 19:30 梦提三尺剑 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 1 采用之前的中断按键法,程序会一直在read函数中死循环。 2 使用了poll之后,在一段时间内如果有按键按下就会返回,如果没有按键按下等时间到再返回。 3 4 应用程序的open,read,write,poll分别对应了驱动程序的open,read,write和poll。 5 首先,增加fileoperation结构体。 6 7 static struct ... 阅读全文
posted @ 2018-01-25 14:45 梦提三尺剑 阅读(187) 评论(0) 推荐(0) 编辑
只有注册用户登录后才能阅读该文。 阅读全文
posted @ 2018-01-24 20:54 梦提三尺剑 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 一、添加头文件 二、构造fileoperation结构体 static struct fileoperations second_drv_fops = { .owner = THIS_MODULE; .open = second_drv_open; .write = ;second_drv_write ... 阅读全文
posted @ 2018-01-23 12:16 梦提三尺剑 阅读(139) 评论(0) 推荐(0) 编辑
摘要: char* filename; 1.先判断参数个数 if(argc != 3) { printf("xxx"); } filename = argc[1]; fd = open(filename,O_RDWR); if(fd < 0) { printf("can't open!\n"); retur 阅读全文
posted @ 2018-01-22 21:33 梦提三尺剑 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 1.首先在驱动文件开头定义用于保存带操作IOK口的unsigned long变量,并且要用volatile修饰。 volatile unsigned long *gpfcon = NULL; volatile unsigned long *gpfdat = NULL; 2.在入口函数中对寄存器进行映射。 gpfcon = (volatile unsigned long ... 阅读全文
posted @ 2018-01-22 20:17 梦提三尺剑 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 1 头文件: 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 13 定义变量 14 int major; 15 static struct class *firstdrv_cl... 阅读全文
posted @ 2018-01-22 19:08 梦提三尺剑 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 2440的地址直接接到了内存设备,比如NOR FLASH,SDRAM,DM9000。通过片选避免其胡乱。 内存管理设备根据CPU发出的地址,自动选择要用的片选线,nGCSx。 8位内存芯片可以直接连接CPU,A0对A0,一直到A7。 16位内存芯片接CPU时,芯片A0接CPU的A1,依此类推。 32 阅读全文
posted @ 2017-10-27 12:58 梦提三尺剑 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 串口: 开始时逻辑电平为高电平,ARM开发板将其拉低,并保持1bit的时间。 拉低瞬间PC机开始计时,这是开始位。然后ARM根据数据,依次变换高低电平(TX灯,RX灯)。 PC机在X.5的事件开始判断电平高低。 可发送数据的条件: 发送一位数据的时间是固定的(波特率),开始为高电平,然后变为低电平。 阅读全文
posted @ 2017-10-27 09:45 梦提三尺剑 阅读(618) 评论(0) 推荐(0) 编辑