主题 : LCD寄存器初始化问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 1852
精华: 0
发帖: 21
金钱: 195 两
威望: 183 点
综合积分: 42 分
注册时间: 2008-10-06
最后登录: 2012-12-02
楼主  发表于: 2009-06-13 23:07

 LCD寄存器初始化问题

在gpio中有专门的s3c2410_gpio_cfg等函数来初始化配置io引脚的配置,我现在想写个lcd的驱动用循环的形式给对应的lcd引脚初始化为对应的lcd控制和数据引脚。但是像在regs-lcd.h中S3C2410_LCDCON1到S3C2410_LCDCON5的控制寄存器又改怎么初始化呢?有没有对控制寄存器初始化的函数呢?
还有就是linux提供了对lcd这个设备的结构framebuffer,有没有介绍这个的书或者教程什么的。


(*((volatile unsigned long *)S3C2410_LCDCON4))=18|13<<8;
(*((volatile unsigned long *)S3C2410_LCDCON3))=23<<19|239<<8|8;
在驱动程序中可以这样来初始化寄存器不?


谢谢大家啦
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2009-06-14 08:56
复制代码
  1. (*((volatile unsigned long *)S3C2410_LCDCON4))=18|13<<8;
  2. (*((volatile unsigned long *)S3C2410_LCDCON3))=23<<19|239<<8|8;

可以用这样的方式初始化寄存器,即将寄存器地址强制转换为指针,对其所指向的地址赋值。但这种方式要注意的是,
1) 这个地址是虚拟地址(MMU开启情况下,比如Linux内核中)或者物理地址(MMU未开启或者物理地址等于虚拟地址,比如vivi中)
2) 并不是所有的寄存器都是32位读写的,转换为那种类型的指针需要根据CPU手册中该寄存器的读写方式(8bit,16bit, 32bit)来定。

还有就是linux提供了对lcd这个设备的结构framebuffer,有没有介绍这个的书或者教程什么的。

程序的源代码结合CPU手册就是最好的参考资料。
[ 此帖被kasim在2009-06-14 10:08重新编辑 ]
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 1852
精华: 0
发帖: 21
金钱: 195 两
威望: 183 点
综合积分: 42 分
注册时间: 2008-10-06
最后登录: 2012-12-02
2楼  发表于: 2009-06-14 10:30
谢谢啦   慢慢看代码