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 ...
最新文章
- 3年工作必备 装饰器模式
- LeetCode 55. 跳跃游戏 中等难度
- PHP解决网站大流量与高并发
- 使用ASP生成HTML文件
- 机房漏电产生的危害及安全隐患解决方案
- python if写在return 后面_python中return如何写
- Linux——安装FTP服务器
- jvm(12)-java内存模型与线程
- Sonatype Nexus高级配置
- java web框架 django_django——web框架简介
- java linkedlist 更新_Java填坑系列之LinkedList
- c语言 取随机字符串,C语言之获取32字节随机数的字符串
- Okhttp3 使用和原理(DEMO)
- 阮一峰ES6入门读书笔记(九):Set 和 Map
- curl error while loading shared libraries libcrypto.so.1.0.0 解决方案
- 优雅写代码的45个小技巧
- android自动隐藏虚拟键,Android 隐藏底部虚拟键的两种方法
- [C++教程①]--了解c语言以及第一行代码
- linux修改blacklist.conf的权限不够怎么办,跪求 /etc/modprobe.d/blacklist.conf
- 燕麦冬食补益脾肾、降脂降压
热门文章
- 【读写内部Flsah】
- 腾讯地图转换成百度地图坐标
- Python 线性回归计算r-squared方法
- 银行利率bp是什么意思,bp是什么意思贷款利率
- 云顶之弈法机器人_云顶之弈里面出现了一个雷电法王,机器人一个勾自己没了!...
- 双城记:云和恩墨三场精彩活动已就绪
- 信阳新闻网:《观察+思考+努力=创新——访南京大数据研究院院长刘鹏》
- PSA极化注意力机制:Polarized Self-Attention: Towards High-quality Pixel-wise Regression
- 自动刷帖机器人 python_虎牙自动发弹幕机器人 python+airtest实现
- android程序自动卸载软件,Android应用静默安装和卸载