linux驱动设计
文章平均质量分 76
hurry_liu
这个作者很懒,什么都没留下…
展开
-
GPS数据处理---< 一 >---数据格式
这段时间有遇到一个GPS的项目,因为之前没有遇到过,觉得GPS是个很高级,很神秘的东西,刚刚开始的时候,还很心悸:这么高档的东西我可以搞吗?不得已,我在网上查了很多资料,后来才发觉,其实虽然说GPS是个很高深的东西,但是GPS的应用还是没有那么难的,只要认真研究,其实也很容易搞懂的。 应用GPS,首当其冲的是要处理来自GPS上面的数据,GPS上面来的数据都是有自己的格式的,我们只原创 2012-12-12 20:48:40 · 878 阅读 · 0 评论 -
arm cortex M3 实现printf
这两天在调试一个cortex M3的开发板,需要在程序中实现printf功能。不过这里有一个问题就是:系统还没有起来的时候,没有供我们调用printf的库,所以不能直接调用printf。于是上网收索资料,发现可以通过一些方法实现,下面介绍一种方法。在uart.c文件中添加如下代码#pragma import(__use_no_semihosting)原创 2013-04-26 00:13:42 · 2899 阅读 · 0 评论 -
fl2440 led驱动移植详细记录
/*********************************************************************程序开始****************************************************************************/#include /* Every Linux kernel module mus原创 2013-04-08 00:31:26 · 1582 阅读 · 0 评论 -
s3c2440 K9F2G08 nandflash支持硬件ECC校验
S3c2440的nandflash K9F2G08是支持硬件ECC的,NandFlash的每一页分为main区和spare区,S3C2440的NandFlash控制器支持这两个区的硬件ECC,这里我们实现main区的硬件ECC。在include/configs/fl2440.h文件中,如果我们定义了nandflash的硬件ECC校验,那么我们就可以控制相应的nandflash寄存器,实现硬件ECC原创 2013-03-30 23:59:55 · 2996 阅读 · 0 评论 -
第一个模块,hello world 驱动编写
1 hurryliu_hello.c的编写[liuyong@centos6 hello]$ cat hurryliu_hello.c#include#includestatic int hello_init(void){ printk(KERN_INFO "my first module ,hello world \n"); return原创 2012-12-14 23:55:41 · 578 阅读 · 0 评论 -
linux 内存和I/O访问
2012-08-14 19:22 内存空间和I/O空间 ,大多数嵌入式微控制器如ARM 等不提供I/O空间,而仅仅存在内存空间,内存空间可以直接通过地址,指针来访问,程序和程序运行中使用的变量和其他数据都存在于内存空间内。 内存地址可以直接由C指针操作,例如:(186处理器中): unsigned char * p = (unsig原创 2012-12-14 22:22:08 · 450 阅读 · 0 评论 -
LED驱动----ioremap 映射
刚开始学字符设备驱动,感觉最难的是驱动和底层硬件的连接。linux上的驱动程序,是基于操作系统之上的,他并不直接和底层的硬件打交道,但是我们写的驱动必须能使硬件“跑”起来,即与硬件紧密相连。 就拿最简单的LED驱动来说,我们的驱动程序是在虚拟的内存上面跑的,但是最终,LED的点亮还是必须靠GPIO管脚的高低电平来控制。那么,我们的虚拟的内存怎么才能和实际的硬件上面的寄存器对应起来原创 2012-12-14 23:30:05 · 929 阅读 · 0 评论 -
linux 中断与时钟
中断是指CPU在运行的时候,出现了某些突发的事件,CPU必须暂停当前的程序,去处理突发事件,处理完成之后,CPU又重新回到原程序被中断的位置,并继续执行程序。 根据中断的来源,可分为内部中断和外部中断:内部中断来自CPU内部(软件中断指令,溢出等),外部中断来自CPU外部,有外设提出请求。 也可以分为可屏蔽中断和不可屏蔽中断:可屏蔽中断通过屏蔽字被屏蔽,屏蔽后不再得到原创 2012-12-14 22:32:58 · 505 阅读 · 0 评论 -
GPS数据处理---< 二 >---数据处理
/********************************************************************************* * Copyright: (C) 2012 hurryliu@126.com> * All rights reserved. * * Filename:原创 2012-12-14 21:48:02 · 639 阅读 · 0 评论 -
linux设备驱动中的并发控制
并发是多个执行单元同时 并行被执行。而并发的执行单元对共享资源(硬件资源和软件上的全局变量,静态变量)的访问很容易导致竞态。主要的竞态有以下三种情况:对称多处理器(SMP)的多个CPU;单个CPU内进程与抢占它的进程;中断(硬中断,软中断,Tasklet 底半部)与进程之间。 注:上述情况,除了SMP是真正的并行之外,其他的都是“宏观并行,微观串行”,但其引发的问题和SMP相似原创 2012-12-14 23:24:12 · 360 阅读 · 0 评论 -
linux设备驱动中的阻塞和非阻塞I/O
2012-08-11 16:22 阻塞和非阻塞I/O是设备访问的两种不同模式,驱动程序可以灵活的支持用户空间对设备的这两种访问形式。 阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后在进行操作。被挂起的进程进入休眠状态,被从调度器的运行队列移走,直到等待的条件被满足。而非阻塞操作的进程在不能进行设备操作时,并不挂起,他或者放弃原创 2012-12-14 23:20:18 · 419 阅读 · 0 评论 -
linux 字符设备驱动
2012-08-15 12:55 在linux 2.6内核中,使用cdev结构体描述一个字符设备。定义如下: struct cdev { struct kobject kobj; //内嵌的kobject 对象 struct module *owner; //所属模块struct file_operations *ops; //文件操作结构体str原创 2012-12-14 22:25:43 · 327 阅读 · 0 评论 -
linux内核input驱动按键
linux 内核版本:3.0 平台:s3c2440 FL2440开发板 编译器版本:buildroot-2012.08这两天在实现linux内核里面的关于input的按键驱动,其实linux内核已经帮我们实现好了这个驱动。对于我们来说,只需要简单的修改一下就可以使用这个驱动。打开linux的内核,我们可以查看到,在arch/arm/mach-s3c2440/mach-mini原创 2013-05-30 11:14:22 · 2197 阅读 · 0 评论