首页| 行业标准| 论文文档| 电子资料| 图纸模型
购买积分 购买会员 激活码充值

您现在的位置是:团子下载站 > 其他 > 《Linux设备驱动开发详解》第11章、内存与IO访问

《Linux设备驱动开发详解》第11章、内存与IO访问

  • 资源大小:0.88 MB
  • 上传时间:2021-07-18
  • 下载次数:0次
  • 浏览次数:32次
  • 资源积分:1积分
  • 标      签: 驱动 寄存器

资 源 简 介

在 X86 处理器中存在着 I/O 空间的概念,I/O 空间是相对于内存空间而言的,它通过特定的指令 in、   out 来访问。端口号标识了外设的寄存器地址。Intel 语法的 in、out 指令格式如下:   IN 累加器, {端口号│DX}   OUT {端口号│DX},累加器   目前,大多数嵌入式微控制器如 ARM、PowerPC 等中并不提供 I/O 空间,而仅存在内存空间。内存空间可   以直接通过地址、指针来访问,程序和程序运行中使用的变量和其他数据都存在于内存空间中。   内存地址可以直接由 C 语言指针操作,例如在 186 处理器中执行如下代码:   unsigned char *p = (unsigned char *)0xF000FF00;   *p=11;   以上程序的意义为在绝对地址 0xF0000+0xFF00(186 使用 16 位段地址和 16 位偏移地址)写入 11   而在 ARM、PowerPC 等未采用段地址的处理器中,p 指向的内存空间就是 0xF000FF00,而*p = 11 就   是在该地址写入 11。   再如,186 处理器启动后会在绝对地址 0xFFFF0(对应 C 语言指针是 0xF000FFF0,0xF000 为段地址,   0xFFF0 为段内偏移)执行,请看下面的代码:
VIP VIP