折腾了2天LCD驱动程序才发现系统其实已经移植了LCD驱动。设备名为/dev/fb0. 白折腾。

不过也有好处,搞了一遍基本了解LCD驱动的实现方法。

这里涉及到一个问题是如何把ARM寄存器地址空间映射到linux内核虚拟地址空间的问题。是通过更新map_desc对象来实现的:

static struct map_desc at91sam9g45_io_desc[] __initdata = {

{

.virtual = AT91_VA_BASE_SYS,

.pfn = __phys_to_pfn(AT91_BASE_SYS),

.length = SZ_16K,

.type = MT_DEVICE,

}, {

.virtual = AT91_IO_VIRT_BASE - AT91SAM9G45_SRAM_SIZE,

.pfn = __phys_to_pfn(AT91SAM9G45_SRAM_BASE),

.length = AT91SAM9G45_SRAM_SIZE,

.type = MT_DEVICE,

}, {

.virtual = AT91_IO_VIRT_BASE - AT91SAM9G45_SRAM_SIZE - SZ_8K,

.pfn = __phys_to_pfn(AT91SAM9G45_LCDC_BASE),

.length = SZ_8K,

.type = MT_DEVICE,

}

};

最后声明了一个8K空间的LCD寄存器地址。

重新编译内核以后,驱动程序就可以通过LCD寄存器的内核虚拟起始地址通过虚拟地址来访问LCD寄存器了。

linux设备寄存器映射,linux LCD驱动 及 ARM 寄存器映射相关推荐

  1. linux 设备驱动程序 过滤,Linux驱动发开,usb设备的probe全过程

    本文将详细讲述2.6.22 下的一个USB 设备插上linux 系统的PC 后是如何一步一步调到我们的usb 设备驱动的probe 函数的,我们知道我们的USB 驱动的probe 函数中的一个参数是i ...

  2. Linux 设备树下的 platform 驱动实验基于正点原子IMX6ULL开发板

    1 设备树下的 platform 驱动简介 platform 驱动框架分为总线.设备和驱动,其中总线不需要我们这些驱动程序员去管理,这个是 Linux 内核提供的,我们在编写驱动的时候只要关注于设备和 ...

  3. Linux 设备树下的 platform 驱动示例

    1.简介 基于总线.设备和驱动这样的驱动框架,Linux 内核提出来 platform 这个虚拟总线,相应的也有 platform 设备和 platform 驱动. Linux 总线设备和驱动模式 2 ...

  4. 嵌入式实践教程--设备树下的LCD驱动开发

    先来回顾一下裸机的时候 LCD 驱动是怎么编写的,裸机 LCD 驱动编写流程如下: ①.初始化 I.MX6U 的 eLCDIF 控制器,重点是 LCD 屏幕宽(width).高(height).hsp ...

  5. linux设备资源分配,基于Linux 简化 AMP 配置使其更方便更动态地分配资源

    描述 嵌入式系统一般分为两大类:需要硬实时性能的:和不需要硬实时性能的.过去,我们不得不做出艰难抉择: 选择实时操作系统的性能还是我们钟爱的 Linux 系统的丰富特性,然后努力弥补不足之处? 如今, ...

  6. Linux设备驱动程序学习-Linux设备模型(总线、设备、驱动程序和类)

    文章的例子和实验使用<LDD3>所配的lddbus模块(稍作修改). 总线 总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连, 甚至是内部的虚拟" ...

  7. linux 设备树 otg,linux下充电IC OTG设备供电控制

    linux下充电IC OTG设备供电控制 备注:下面提到的充电IC 用charger表示 1.     OTG VBUS 5V供电 接入OTG设备,比如U盘,具体是怎么通过charger驱动来给U盘供 ...

  8. Linux设备树led,linux设备树下LED灯控制

    linux设备树下LED灯控制 linux设备树下LED灯控制 原理图: 所以在设备树下子节点下插入gpioled节点: gpioled { #address-cells = <1>; # ...

  9. 《linux设备驱动程序》——Linux设备模型

    一.概论 1.2.6版内核对系统结构的一般性抽象描述.现在内核使用了该抽象支持了多种不同的任务,其中包括: 1).电源管理和系统关机. 2).与用户控件通信. 3).热插拔设备. 4).设备类型. 5 ...

最新文章

  1. 在OpenCV中怎样测量代码的运行时间?
  2. 【Linux 内核】Linux 内核体系架构 ( 硬件层面 | 内核空间 | 用户空间 | 内核态与用户态切换 | 系统调用 | 体系结构抽象层 )
  3. tableau必知必会之如何将 Tableau Server 从 Windows 迁移到 Linux 的方法
  4. php oracle按时间查询,Oracle日期查询:季度、月份、星期等时间信息
  5. 【遥感物候】植被物候与气候(气温和降水)条件的空间相关性分析
  6. 安装php no permision,php安装过程中的No package ‘xxx’ found问题
  7. muduo源代码分析--Reactor模式在muduo中的使用
  8. 解决Vscode提示bodyparser已被弃用的问题
  9. openvino系列 16. OpenVINO 手写字体识别 OCR
  10. 如何选择嵌入式练手项目、嵌入式开源项目大全,嵌入式产品举例
  11. STM32 高级定时器 输出PWM波
  12. vue模板字符串标签动态参数_vue模板字符串
  13. 名人漏网之语 --联合早报2007-01-28
  14. 马里兰帕克分校计算机研士排名,2020年马里兰大学帕克分校QS世界排名
  15. caj格式的文档怎么转成pdf格式呢?
  16. 解决ROS中运行launch文件报错ERROR: cannot launch node of type[xxx/xxx]:xxx的问题
  17. Python语言程序设计基础_序列型数据和控制结构综合练习(第七周)_答案_通识教育必修课程_上海师范大学
  18. 送书|逆向系列-你一定要懂的MD5加密
  19. 凉宫春日的忧郁第六章
  20. Compact 命令压缩和解压缩文件

热门文章

  1. 制作 Favicon.ico 图标教程
  2. 【HOOPS新功能】——HOOPS Exchange 2021 - 3MF Import
  3. 2021年电工(高级)考试技巧及电工(高级)复审考试
  4. 最好的视频会议软件gotomeeting
  5. Java继承子类的构造函数
  6. Python 向量化处理(numpy.vectorize())
  7. 今天看见.do网页,疑惑,这是什么文件??又是什么新技术??查了一下
  8. 企业对CMMI认证存在的误区有哪些?
  9. 华为升级鸿蒙后的界面,华为鸿蒙系统终于亮相,界面设计焕然一新,首批升级名单已出炉...
  10. TCP\IP 协议栈中的协议 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层