×

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

消耗积分:0 | 格式:rar | 大小:0.88 MB | 2017-10-27

分享资料个

  在 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 为段内偏移)执行,请看下面的代码:

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !