linux设备寄存器映射,linux LCD驱动 及 ARM 寄存器映射
折腾了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 寄存器映射相关推荐
- linux 设备驱动程序 过滤,Linux驱动发开,usb设备的probe全过程
本文将详细讲述2.6.22 下的一个USB 设备插上linux 系统的PC 后是如何一步一步调到我们的usb 设备驱动的probe 函数的,我们知道我们的USB 驱动的probe 函数中的一个参数是i ...
- Linux 设备树下的 platform 驱动实验基于正点原子IMX6ULL开发板
1 设备树下的 platform 驱动简介 platform 驱动框架分为总线.设备和驱动,其中总线不需要我们这些驱动程序员去管理,这个是 Linux 内核提供的,我们在编写驱动的时候只要关注于设备和 ...
- Linux 设备树下的 platform 驱动示例
1.简介 基于总线.设备和驱动这样的驱动框架,Linux 内核提出来 platform 这个虚拟总线,相应的也有 platform 设备和 platform 驱动. Linux 总线设备和驱动模式 2 ...
- 嵌入式实践教程--设备树下的LCD驱动开发
先来回顾一下裸机的时候 LCD 驱动是怎么编写的,裸机 LCD 驱动编写流程如下: ①.初始化 I.MX6U 的 eLCDIF 控制器,重点是 LCD 屏幕宽(width).高(height).hsp ...
- linux设备资源分配,基于Linux 简化 AMP 配置使其更方便更动态地分配资源
描述 嵌入式系统一般分为两大类:需要硬实时性能的:和不需要硬实时性能的.过去,我们不得不做出艰难抉择: 选择实时操作系统的性能还是我们钟爱的 Linux 系统的丰富特性,然后努力弥补不足之处? 如今, ...
- Linux设备驱动程序学习-Linux设备模型(总线、设备、驱动程序和类)
文章的例子和实验使用<LDD3>所配的lddbus模块(稍作修改). 总线 总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连, 甚至是内部的虚拟" ...
- linux 设备树 otg,linux下充电IC OTG设备供电控制
linux下充电IC OTG设备供电控制 备注:下面提到的充电IC 用charger表示 1. OTG VBUS 5V供电 接入OTG设备,比如U盘,具体是怎么通过charger驱动来给U盘供 ...
- Linux设备树led,linux设备树下LED灯控制
linux设备树下LED灯控制 linux设备树下LED灯控制 原理图: 所以在设备树下子节点下插入gpioled节点: gpioled { #address-cells = <1>; # ...
- 《linux设备驱动程序》——Linux设备模型
一.概论 1.2.6版内核对系统结构的一般性抽象描述.现在内核使用了该抽象支持了多种不同的任务,其中包括: 1).电源管理和系统关机. 2).与用户控件通信. 3).热插拔设备. 4).设备类型. 5 ...
最新文章
- 在OpenCV中怎样测量代码的运行时间?
- 【Linux 内核】Linux 内核体系架构 ( 硬件层面 | 内核空间 | 用户空间 | 内核态与用户态切换 | 系统调用 | 体系结构抽象层 )
- tableau必知必会之如何将 Tableau Server 从 Windows 迁移到 Linux 的方法
- php oracle按时间查询,Oracle日期查询:季度、月份、星期等时间信息
- 【遥感物候】植被物候与气候(气温和降水)条件的空间相关性分析
- 安装php no permision,php安装过程中的No package ‘xxx’ found问题
- muduo源代码分析--Reactor模式在muduo中的使用
- 解决Vscode提示bodyparser已被弃用的问题
- openvino系列 16. OpenVINO 手写字体识别 OCR
- 如何选择嵌入式练手项目、嵌入式开源项目大全,嵌入式产品举例
- STM32 高级定时器 输出PWM波
- vue模板字符串标签动态参数_vue模板字符串
- 名人漏网之语 --联合早报2007-01-28
- 马里兰帕克分校计算机研士排名,2020年马里兰大学帕克分校QS世界排名
- caj格式的文档怎么转成pdf格式呢?
- 解决ROS中运行launch文件报错ERROR: cannot launch node of type[xxx/xxx]:xxx的问题
- Python语言程序设计基础_序列型数据和控制结构综合练习(第七周)_答案_通识教育必修课程_上海师范大学
- 送书|逆向系列-你一定要懂的MD5加密
- 凉宫春日的忧郁第六章
- Compact 命令压缩和解压缩文件
热门文章
- 制作 Favicon.ico 图标教程
- 【HOOPS新功能】——HOOPS Exchange 2021 - 3MF Import
- 2021年电工(高级)考试技巧及电工(高级)复审考试
- 最好的视频会议软件gotomeeting
- Java继承子类的构造函数
- Python 向量化处理(numpy.vectorize())
- 今天看见.do网页,疑惑,这是什么文件??又是什么新技术??查了一下
- 企业对CMMI认证存在的误区有哪些?
- 华为升级鸿蒙后的界面,华为鸿蒙系统终于亮相,界面设计焕然一新,首批升级名单已出炉...
- TCP\IP 协议栈中的协议 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层