上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页
摘要: 平台设备驱动: 包含BUS(总线)、DEVICE、DRIVER。 DEVICE:硬件相关的代码 DRIVER:比较稳定的代码 BUS有一个driver链表和device链表。 ①把device放入bus的device链表中 ②从bus的drv链表中取出每一个drv,用bus的match函数判断drv 阅读全文
posted @ 2016-10-31 09:08 叶念西风 阅读(717) 评论(0) 推荐(0) 编辑
摘要: 以前写的一些输入设备的驱动都是采用字符设备处理的。问题由此而来,Linux开源社区的大神们看到了这大量输入设备如此分散不堪,有木有可以实现一种机制,可以对分散的、不同类别的输入设备进行统一的驱动,所以才出现了输入子系统。 输入子系统引入的好处: (1)统一了物理形态各异的相似的输入设备的处理功能。例 阅读全文
posted @ 2016-10-27 09:38 叶念西风 阅读(641) 评论(0) 推荐(1) 编辑
摘要: 在之前的定时器驱动程序中,我们发现在连续按下按键的时候,正常情况下应该是一次按下对应一次松开。而程序有时候会显示是两次按下,一次松开。这个问题是因为在按下的时候,因为是机械按键,所以电压信号会产生一定的波动,会让程序进行两次中断,如何解决这个问题呢? 我们可以在发生一次中断之后等待一段时间再去判断按 阅读全文
posted @ 2016-10-27 09:19 叶念西风 阅读(1114) 评论(0) 推荐(0) 编辑
摘要: 目的:同一个时刻,只能有一个应用程序打开我们的驱动程序。 ①原子操作: v = ATOMIC_INIT( i ) 定义原子变量v并初始化为i atomic_read(v) 返回原子变量的值atomic_set(v,i) 设置原子变量的值 atomic_inc_and_test(v) 自加后和测试是否 阅读全文
posted @ 2016-10-26 15:41 叶念西风 阅读(501) 评论(0) 推荐(0) 编辑
摘要: 之前的按键方式: 查询: 极度占用CPU资源 中断: 在读的时候产生休眠,在没有信号的时候永远不会返回。 poll机制: 在中断的基础上加上超时时间。 异步通知就是通过信号来传送。 首先在应用程序中有一个信号处理函数,在应用程序接收到信号时会自动调用信号处理函数。 驱动程序为应用程序提供设置信号量的 阅读全文
posted @ 2016-10-26 13:10 叶念西风 阅读(513) 评论(0) 推荐(0) 编辑
摘要: 实现的功能是在读取按键信息的时候,如果没有产生按键,则程序休眠在read函数中,利用poll机制,可以在没有退出的情况下让程序自动退出。 下面的程序就是在读取按键信息的时候,如果5000ms内没有按键信息,则自己退出。 首先应用程序执行poll函数 kernel中的sys_poll do_sys_p 阅读全文
posted @ 2016-10-26 12:44 叶念西风 阅读(874) 评论(0) 推荐(0) 编辑
摘要: 轮询方式: 和led驱动不同的是在配置IO引脚的时候,把LED的输出引脚换成输入,在read函数中向外发送io的状态。必须由应用程序不断的来查询当前IO口的状态来判断。 中断方式: Makefile同led中的类似。 应用程序: sd 阅读全文
posted @ 2016-10-25 17:48 叶念西风 阅读(1925) 评论(0) 推荐(1) 编辑
摘要: 首先贴上代码: 字符设备驱动代码: 模块的Makefile: 测试文件: 完 阅读全文
posted @ 2016-10-25 09:19 叶念西风 阅读(553) 评论(0) 推荐(0) 编辑
摘要: 应用程序通过open read write close 等函数来操作计算机硬件。类似是一个接口。 当应用程序调用这些接口程序时,计算机是如何进入内核的呢?这是经过了系统调用。 实际上当调用接口函数时,会引发一个swi异常(附带参数,软中断),通过这个异常就进入了内核空间。在内核空间的异常处理函数中就 阅读全文
posted @ 2016-10-24 13:21 叶念西风 阅读(593) 评论(0) 推荐(0) 编辑
摘要: 开发板 jz2440 下载uboot.bin 下载内核 下载文件系统 阅读全文
posted @ 2016-10-24 09:42 叶念西风 阅读(1505) 评论(0) 推荐(0) 编辑
摘要: busybox 在配置busybox,在是否选择要静态链接库时,在静态下,busybox中的工具不需要动态链接库,能够直接运行。而用户自己编写的程序如果需要动态链接库,还是依然需要有。 (从http://www.busybox.net/downloads/可以下载busybox工具) 如果是动态链接 阅读全文
posted @ 2016-10-22 16:53 叶念西风 阅读(2148) 评论(0) 推荐(0) 编辑
摘要: 编译的内核可能会很大,故这里可以压缩一下。而在内核文件中需要解压,所以就会有一段自解压代码。 在uboot启动内核的时候,调用了函数: thekernel(0,MACH_ID,params_addr ) 0 存放在r0寄存器 MACH_ID 存放在r1 params_addr存放在r2 1. 首先处 阅读全文
posted @ 2016-10-20 13:12 叶念西风 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 内核启动是需要必要的启动参数。不能开机自动完全从0开始启动,需要uboot帮助内核实现重定位并提供参数。 首先,uboo会从Kernel分区中读取bootcmd环境变量,根据环境变量可自动启动。 分区: 每个硬盘上都有一个分区表。由于Flash中没有分区表,所以Flash的分区只能在源代码中定义,故 阅读全文
posted @ 2016-10-19 22:36 叶念西风 阅读(307) 评论(0) 推荐(0) 编辑
摘要: -p1代表忽略第一层目录(patch文件中的)。 阅读全文
posted @ 2016-10-19 20:38 叶念西风 阅读(656) 评论(0) 推荐(0) 编辑
摘要: 假如: __main的链接地址是0x20000000。而因为它在前面,在启动的时候被拷贝到前面了,所以实际的地址是0x00000000. __main2的链接地址是0x20000010。实际地址是0x00000010. B指令是相对跳转。 也就是把pc加上两个链接地址之间的差值。 如果使用 在 __ 阅读全文
posted @ 2016-10-18 21:43 叶念西风 阅读(690) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页
叶念西风 - 个人博客 & 电脑Run - 维修帮助软件教程安装