当前位置:嗨网首页>书籍在线阅读

19-总结

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

11.7 总结

外设可处于CPU的内存空间和I/O空间,除X86外,嵌入式处理器一般只存在内存空间。在Linux系统中,为I/O内存和I/O端口的访问提高了一套统一的方法,访问流程一般为“申请资源→映射→访问→去映射→释放资源”。

对于有MMU的处理器而言,Linux系统的内部布局比较复杂,可直接映射的物理内存称为常规内存,超出部分为高端内存。kmalloc()和_ _get_free_pages()申请的内存在物理上连续,而vmalloc()申请的内存在物理上不连续。

DMA操作可能导致Cache的不一致问题,因此,对于DMA缓冲,应该使用dma_alloc_coherent()等方法申请。在DMA操作中涉及总线地址、物理地址和虚拟地址等概念,区分这3类地址非常重要。Linux内核中对DMA通道的申请和释放采用了和中断类似的方法。