Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1286387
  • 博文数量: 168
  • 博客积分: 2124
  • 博客等级: 大尉
  • 技术积分: 2590
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-16 23:51
文章分类

全部博文(168)

文章存档

2014年(6)

2013年(74)

2012年(71)

2011年(17)

发布时间:2013-01-09 20:05:46

关键词:ARM中断向量表  中断处理例程  顶半部和底半部  快速和慢速中断处理例程 硬中断与软中断本贴试图从硬件到软件以全方位角度来剖析基于ARM的Linux内核中如何处理一个完整的外部设备中断流程。第一部分:硬件的行为ARM的中断向量表如下:从上图知道,对于IRQ中断类型(ARM平台下大约99%的外部设备使用IRQ中断,也是驱动程序员打交道最多的中断类型),其低端地址为0x0000_0018,高端地址为0xFFFF_0018(ARM处理器在IRQ中断发生时,到低端地址还是高端地址取中断向量是可配置的,缺省是到低端地址,在OS把MM......【阅读全文】

阅读(1416) | 评论(0) | 转发(0)

发布时间:2013-01-07 21:33:23

内核从3G开始的那一段是连续映射而且这种固定映射最大到896M的地址范围,也即从0xc0000000-0xf7ffffff的虚拟地址采用固定映射,称为内核逻辑地址.剩下的1G-896=128M范围的虚拟地址可以映射到任意物理地址.称为内核虚拟地址.当实际内存大于1G时(实际上是> 896M时),用这块地址空间做映射. 实际的计算机体系结构有硬件的制约,这限制了页框可以使用的方式。尤其是,Linux内核必须处理80x86体系结构的两种硬件约束:ISA总线的直接存储器(DMA)处理器有一个严格的限制:它们只能对RAM的前16MB寻址。在具有大容量RAM的现代32位计算机中,CPU不......【阅读全文】

阅读(4713) | 评论(0) | 转发(1)

发布时间:2013-01-05 16:00:43

  在Linux内核源码中,经常要对链表进行操作,其中一个很重要的宏是list_for_each_entry:意思大体如下: 假设下面几个结点,则第一个member代表head,list_for_each_entry的作用就是循环遍历每一个pos中的member子项。list_for_each_entry应用: 它实际上是一个 for 循环,利用传入的 pos 作为循环变量,从表头 head 开始,逐项向后(next 方向)移动 pos,直至又回head(prefetch() 可以不考虑,用于预取以提高遍历速度 )。 在程序中的使用如下:list_fo......【阅读全文】

阅读(761) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册