摘要:
这是最后的运行流程,用户open设备节点,通过主设备号找到驱动程序,根据次设备号找到对应的设备,使用驱动函数中的read(),write()等函数操作设备。为了搭建这样的运行时环境,需要做如下工作:1 驱动程序加载(申请主设备号,在/proc/devices下创建设备)2 根据具体设备创建设备节点 (查询合适的主设备号和可用的次设备号 在/dev下面创建设备节点)先说说设备号的申请吧int register_chrdev_region(dev_t first, unsigned int -count, char*name)这个是静态申请 第一个参数是自己定义的一个32位无符号整数,第二个是要申 阅读全文
阅读排行榜
SD卡 驱动层测速
2013-06-26 11:59 by 至上, 688 阅读, 收藏,
摘要:
init_timer(&timer1); timer1.function = test_time; timer1.data = 0; timer1.expires = jiffies + msecs_to_jiffies(1); add_timer(&timer1); sd_test(mmc); printk("count = %d \n",count);sd_test()函数写在probe函数中,但要等待sd初始化完毕才行,需要在上电时就插入SD卡,而不要等待系统起来之后。另外,如果mmc_rescan函数使用的工作队列实现的,那么它与probe就属于两. 阅读全文
linux设备模型与sysfs
2012-07-19 17:28 by 至上, 652 阅读, 收藏,
摘要:
linux建立设备模型的目的:这事2.6内核版本引入的一种设备管理机制,同时出现的还有sysfs文件系统(他完全表现向用户呈现了内核中设备的层次结构,也有人说之为设备模型的副产物),具体的为什么要引入设备模型呢?为内核建立一个统一的设备模型,从而有一个对系统结构的一般性抽象描述。好吧,这句话并不是很好懂。这样说吧,跟以前比,引入他有什么好处呢?1 电源管理,根据设备的层次关系,当系统进入睡眠的时候,不需要一个一个设备的关,只需要关一个总线设备,接在总线下的设备就都会关掉。2 sysfs 虚拟文件系统的实现与设备模型的紧密相关, 并向外界展示它所表述的结构。向用户空间提供系统信息、改变操作参数的 阅读全文
lcd驱动解析(二)
2012-07-12 16:18 by 至上, 582 阅读, 收藏,
摘要:
init部分主要完成的任务是:屏的初始化,显示的初始化,最后打开lcd,背光,等待图片数据输入,然后输出。(产生fbinfo结构体给fbmem.c使用)用户操作的流程包括:ioctl控制图片的显示属性(读取初始化时的配置或者使用bsp操作寄存器改变显示设置)和显示图片的数据源。(概括说就是控制和数据两条线)这一节主要分析init部分,就是属于***fb.c文件的函数。 驱动程序绑定由内核自动执行,当内核发现一个驱动程序与一个设备匹配时,将调用驱动程序的probe函数,完成对设备的探测及初始化等工作。device与driver是用名字搭配的,其实注册并部分先后,device注册时会去找drive 阅读全文
精解一些ARM指令
2012-05-25 16:45 by 至上, 561 阅读, 收藏,
摘要:
其实ldr指令分两种:1)ldr r0,#100 这是ldr指令2) ldr r0,=10000 这是ldr伪指令 编译器在编译伪指令的时候会把伪指令编译成多条指令机器码 (伪操作是不会被编译成指令机器码的)这源于一个问题:ldr r0,#10000 在编译这条指令的时候,是会出错的,下面解释下为什么?在指令编码的时候,32位中有12位是用来表示立即数的,其中高4位表示循环右移的位数,后8位表示右移前的数,一个立即数是这样表示的:将低8位补0扩展为32位,然后循环右移X位,(X为高4位表示的无符号整数*2)例如:低12位为0x512,则表示的立即数是0x04800000其实这样表示的立即数的范 阅读全文
浙公网安备 33010602011771号