142day:LCD驱动1
2013年10月14日
LCD
1.LCD==>/dev/fb0
2.LCD是一种折射光的液体 ==>最好的LCD公司夏普
3.LCD:长宽比例:
4:3
16:9
16:10
s3c6410:480:272
30:17
4.
app
-------------------------
os
-------------------------
hw
-------------------------
5.注:
触屏:/home/linux_you/drivers/input/touchscreen
做任何事,都需要一个时钟。运动,转变的一个快慢。
6.
pixel
\n:跳到下一行
\r :回到行首
下面是Lcd 的裸版程序:
#include "up.h"
void clean_screen(unsigned short *addr);
int main()
{
// clean_screen(0x56000000);
GPECON &= ~0xf;
GPECON |= 1;
GPEDAT |= 1;
GPFCON &= ~(3 << 28);
GPFCON |= (1 << 28);
GPFDAT |= (1 << 14);
GPICON = 0xaaaaaaaa;
GPJCON = 0xaaaaaa;
//s3c6410 p491
//step 1:
MOFPCON &= ~(1 << 3);
//step 2:
SPCON &= ~0x3;
SPCON |= 0x1;
//step 3:
/*
Frame Rate = 1/ [ { (VSPW+1) + (VBPD+1) + (LIINEVAL + 1) + (VFPD+1) } x {(HSPW+1) + (HBPD +1)
+ (HFPD+1) + (HOZVAL + 1) } x { ( CLKVAL+1 ) / ( Frequency of Clock source ) } ]
40 = 1 / [{10 + 2 + 272 + 2} * {41 + 2 + 480 + 255} * X /133M]
40 = 1 / [286 * 778 * X / 133M]
1 = 40 * 286 * 778 * X / 133M
133M = 40 * 286 * 778 * X
X = 133M / (40 * 286 * 778)
X = 133M / 8900320
X = 15
*/
VIDCON0 = 1 | (1 << 1) | (1 << 4) | (15 << 6);
//step 4:
VIDCON1 = (1 << 5) | (1 << 6);
//step 5,6:
//step 7:
VIDTCON0 = 9 | (1 << 8) | (1 << 16);
VIDTCON1 = 40 | (254 << 8) | (1 << 16);
VIDTCON2 = 479 | (271 << 11);
//step 8:
WINCON0 = 1 | (5 << 2) | (1 << 16);
//step 9:
VIDOSD0A = 0;
//VIDOSD0B = 479 | (271 << 11);
VIDOSD0B = 271 | (479 << 11);
//step 10:
VIDOSD0C = 480 * 272 * 2 >> 2;
//step 11:
VIDW00ADD0B0 = 0x56000000;
VIDW00ADD1B0 = 0x56000000 + 480 * 272 * 2;
VIDW00ADD2 = 480 * 2;
VIDCON0 |= 1 | (1 << 1);
}
void clean_screen(unsigned short *addr)
{
int i = 0;
for(i=0; i<480 * 272; i++)
addr[i] = 0xf800;//红屏
}
up.c文件:
#define GPICON (*(volatile unsigned long *)0x7F008100)
#define GPIDAT (*(volatile unsigned long *)0x7F008104)
#define GPJCON (*(volatile unsigned long *)0x7F008120)
#define GPJDAT (*(volatile unsigned long *)0x7F008124)
#define GPECON (*(volatile unsigned long *)0x7F008080)
#define GPEDAT (*(volatile unsigned long *)0x7F008084)
#define GPFCON (*(volatile unsigned long *)0x7F0080A0)
#define GPFDAT (*(volatile unsigned long *)0x7F0080A4)
#define VIDCON0 (*(volatile unsigned long *)0x77100000)
#define VIDCON1 (*(volatile unsigned long *)0x77100004)
#define VIDCON2 (*(volatile unsigned long *)0x77100008)
#define VIDTCON0 (*(volatile unsigned long *)0x77100010)
#define VIDTCON1 (*(volatile unsigned long *)0x77100014)
#define VIDTCON2 (*(volatile unsigned long *)0x77100018)
#define WINCON0 (*(volatile unsigned long *)0x77100020)
#define WINCON1 (*(volatile unsigned long *)0x77100024)
#define WINCON2 (*(volatile unsigned long *)0x77100028)
#define WINCON3 (*(volatile unsigned long *)0x7710002C)
#define WINCON4 (*(volatile unsigned long *)0x77100030)
#define VIDOSD0A (*(volatile unsigned long *)0x77100040)
#define VIDOSD0B (*(volatile unsigned long *)0x77100044)
#define VIDOSD0C (*(volatile unsigned long *)0x77100048)
#define VIDOSD1A (*(volatile unsigned long *)0x77100050)
#define VIDOSD1B (*(volatile unsigned long *)0x77100054)
#define VIDOSD1C (*(volatile unsigned long *)0x77100058)
#define VIDOSD1D (*(volatile unsigned long *)0x7710005C)
#define VIDOSD2A (*(volatile unsigned long *)0x77100060)
#define VIDOSD2B (*(volatile unsigned long *)0x77100064)
#define VIDOSD2C (*(volatile unsigned long *)0x77100068)
#define VISOSD2D (*(volatile unsigned long *)0x7710006C)
#define VIDOSD3A (*(volatile unsigned long *)0x77100070)
#define VIDOSD3B (*(volatile unsigned long *)0x77100074)
#define VIDOSD3C (*(volatile unsigned long *)0x77100078)
#define VIDOSD4A (*(volatile unsigned long *)0x77100080)
#define VIDOSD4B (*(volatile unsigned long *)0x77100084)
#define VIDOSD4C (*(volatile unsigned long *)0x77100088)
#define VIDW00ADD0B0 (*(volatile unsigned long *)0x771000A0)
#define VIDW00ADD0B1 (*(volatile unsigned long *)0x771000A4)
#define VIDW01ADD0B0 (*(volatile unsigned long *)0x771000A8)
#define VIDW01ADD0B1 (*(volatile unsigned long *)0x771000AC)
#define VIDW02ADD0 (*(volatile unsigned long *)0x771000B0)
#define VIDW03ADD0 (*(volatile unsigned long *)0x771000B8)
#define VIDW04ADD0 (*(volatile unsigned long *)0x771000C0)
#define VIDW00ADD1B0 (*(volatile unsigned long *)0x771000D0)
#define VIDW00ADD1B1 (*(volatile unsigned long *)0x771000D4)
#define VIDW01ADD1B0 (*(volatile unsigned long *)0x771000D8)
#define VIDW01ADD1B1 (*(volatile unsigned long *)0x771000DC)
#define VIDW02ADD1 (*(volatile unsigned long *)0x771000E0)
#define VIDW03ADD1 (*(volatile unsigned long *)0x771000E8)
#define VIDW04ADD1 (*(volatile unsigned long *)0x771000F0)
#define VIDW00ADD2 (*(volatile unsigned long *)0x77100100)
#define VIDW01ADD2 (*(volatile unsigned long *)0x77100104)
#define VIDW02ADD2 (*(volatile unsigned long *)0x77100108)
#define VIDW03ADD2 (*(volatile unsigned long *)0x7710010C)
#define VIDW04ADD2 (*(volatile unsigned long *)0x77100110)
#define VIDINTCON0 (*(volatile unsigned long *)0x77100130)
#define VIDINTCON1 (*(volatile unsigned long *)0x77100134)
#define W1KEYCON0 (*(volatile unsigned long *)0x77100140)
#define W1KEYCON1 (*(volatile unsigned long *)0x77100144)
#define W2KEYCON0 (*(volatile unsigned long *)0x77100148)
#define W2KEYCON1 (*(volatile unsigned long *)0x7710014C)
#define W3KEYCON0 (*(volatile unsigned long *)0x77100150)
#define W3KEYCON1 (*(volatile unsigned long *)0x77100154)
#define W4KEYCON0 (*(volatile unsigned long *)0x77100158)
#define W4KEYCON1 (*(volatile unsigned long *)0x7710015C)
#define DITHMODE (*(volatile unsigned long *)0x77100170)
#define WIN0MAP (*(volatile unsigned long *)0x77100180)
#define WIN1MAP (*(volatile unsigned long *)0x77100184)
#define WIN2MAP (*(volatile unsigned long *)0x77100188)
#define WIN3MAP (*(volatile unsigned long *)0x7710018C)
#define WIN4MAP (*(volatile unsigned long *)0x77100190)
#define WPALCON (*(volatile unsigned long *)0x771001A0)
#define TRIGCON (*(volatile unsigned long *)0x771001A4)
#define ITUIFCON0 (*(volatile unsigned long *)0x771001A8)
#define I80IFCONA0 (*(volatile unsigned long *)0x771001B0)
#define I80IFCONA1 (*(volatile unsigned long *)0x771001B4)
#define I80IFCONB0 (*(volatile unsigned long *)0x771001B8)
#define I80IFCONB1 (*(volatile unsigned long *)0x771001BC)
#define LDI_CMDCON0 (*(volatile unsigned long *)0x771001D0)
#define LDI_CMDCON1 (*(volatile unsigned long *)0x771001D4)
#define SIFCCON0 (*(volatile unsigned long *)0x771001E0)
#define SIFCCON1 (*(volatile unsigned long *)0x771001E4)
#define SIFCCON2 (*(volatile unsigned long *)0x771001E8)
#define LDI_CMD0 (*(volatile unsigned long *)0x77100280)
#define LDI_CMD1 (*(volatile unsigned long *)0x77100284)
#define LDI_CMD2 (*(volatile unsigned long *)0x77100288)
#define LDI_CMD3 (*(volatile unsigned long *)0x7710028C)
#define LDI_CMD4 (*(volatile unsigned long *)0x77100290)
#define LDI_CMD5 (*(volatile unsigned long *)0x77100294)
#define LDI_CMD6 (*(volatile unsigned long *)0x77100298)
#define LDI_CMD7 (*(volatile unsigned long *)0x7710029C)
#define LDI_CMD8 (*(volatile unsigned long *)0x771002A0)
#define LDI_CMD9 (*(volatile unsigned long *)0x771002A4)
#define LDI_CMD10 (*(volatile unsigned long *)0x771002A8)
#define LDI_CMD11 (*(volatile unsigned long *)0x771002AC)
#define W2PDATA01 (*(volatile unsigned long *)0x77100300)
#define W2PDATA23 (*(volatile unsigned long *)0x77100304)
#define W2PDATA45 (*(volatile unsigned long *)0x77100308)
#define W2PDATA67 (*(volatile unsigned long *)0x7710030C)
#define W2PDATA89 (*(volatile unsigned long *)0x77100310)
#define W2PDATACD (*(volatile unsigned long *)0x77100318)
#define W2PDATAEF (*(volatile unsigned long *)0x7710031C)
#define W3PDATA01 (*(volatile unsigned long *)0x77100320)
#define W3PDATA23 (*(volatile unsigned long *)0x77100324)
#define W3PDATA45 (*(volatile unsigned long *)0x77100328)
#define W3PDATA67 (*(volatile unsigned long *)0x7710032C)
#define W3PDATA89 (*(volatile unsigned long *)0x77100330)
#define W3PDATAAB (*(volatile unsigned long *)0x77100334)
#define W3PDATACD (*(volatile unsigned long *)0x77100338)
#define W3PDATAEF (*(volatile unsigned long *)0x7710033C)
#define W4PDATA01 (*(volatile unsigned long *)0x77100340)
#define W4PDATA23 (*(volatile unsigned long *)0x77100344)
#define MOFPCON (*(volatile unsigned long *)0x7410800C)
#define SPCON (*(volatile unsigned long *)0x7F0081A0)
Makefile
all:
arm-none-linux-gnueabi-gcc -c test.c -o test.o
arm-none-linux-gnueabi-ld -Ttext=0x50000000 test.o -o test
arm-none-linux-gnueabi-objcopy -Ielf32-littlearm -Obinary test /tftpboot/test.bin
clean:
rm test.o test /tftpboot/test.bin
142day:LCD驱动1相关推荐
- Linux驱动之LCD驱动编写
在Linux驱动之内核自带的S3C2440的LCD驱动分析这篇博客中已经分析了编写LCD驱动的步骤,接下来就按照这个步骤来字尝试字节编写LCD驱动.用的LCD屏幕为tft屏,每个像素点为16bit.对 ...
- [lcm] Qualcomm平台的显示屏lcd驱动移植步骤
1lk部分 1-1 target_displayc 1-2 oem_panelc 1-3 panel_innont51021b_1200p_videoh 2Kernel 2-1 dsi-panel-b ...
- TQ2440平台上LCD驱动的移植
参考: http://liu1227787871.blog.163.com/blog/static/205363197201242393031250/ http://blog.csdn.net/cum ...
- 高通 android平台LCD驱动分析
目前手机芯片厂家提供的源码里包含整个LCD驱动框架,一般厂家会定义一个xxx_fb.c的源文件,注册一个平台设备和平台驱动,在驱动的probe函数中来调用register_framebuffer(), ...
- IO 模拟 1/2 Bias、1/4 Duty的 LCD 驱动
工作原理 方式一 根据 LCD 的驱动原理可知,LCD 像素点上只能加上 AC 电压,LCD 显示器的对比度由 COM脚上的电压值减去 SEG 脚上的电压值决定,当这个电压差大于 LCD 的 ...
- android lcd驱动框架,LCD驱动及Framebuffer相关(转载)
LCD驱动及Framebuffer相关 (2012-11-20 17:04) 标签:&nBSP; lcd驱动 framebuffer io内存 分类: Android驱动模块相关 内容提 ...
- Linux LCD 驱动实验
目录 Linux 下LCD 驱动简析 1 Framebuffer 设备 LCD 驱动简析 硬件原理图分析 LCD 驱动程序编写 运行测试 LCD 屏幕基本测试 设置LCD 作为终端控制台 LCD 背光 ...
- LCD驱动移植(二)
LCD驱动的话会在MINI2440里是向Plaform注册的一个驱动 Plaform的话可以在网上查查这方面的资料,主要要注意这两个函数,如下: (1)platform_device_register ...
- Barebox for Tiny6410(LCD驱动移植)
一.目的 熟悉Barebox的Frame buffer框架.LCD驱动的移植和测试命令的编写. 二.主要内容 1.1 为Barebox移植基于Tiny6410的LCD驱动. 1.2 编写lcd命令测试 ...
最新文章
- CentOS6.5 安装 ntopng
- 基于mysql实现的网站_[源码和文档分享]基于JavaScript和MySQL的文化平台网站的设计与实现...
- 组合模式 桥接模式 java_java设计模式5.组合模式、门面模式、享元模式、桥接模式...
- 踏平RecyclerView使用的各种坑,跟ListView和GridView说拜拜
- 向量值函数在计算机工程与应用,拟Newton法在高阶矩阵中的应用-计算机工程与应用.PDF...
- CRM呼叫中心inbox的调试步骤
- codeforce 185 A——Plant
- dom4j实现为list添加父节点_Heap 堆的实现
- 前端复习-02-ajax原生以及jq和跨域方面的应用。
- python selenium 点击加载更多_Python Selenium 疑难杂症解方(三): 点击
- kaka启动出现:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000c00000, 1073,0)
- 【Unity游戏开发】动画系统(四)Unity3d动画基础
- Go代码调优利器-火焰图
- code first修改表或字段
- 【名企面试经验-新浪-校招提前批】【数据平台研发工程师】
- Python学习 | 2022-01-15 Python基础复习(一)
- 御坂坂的c++学习之路(4)
- 英语单词词性顺口溜_巧记英语单词的顺口溜 这样记忆不枯燥
- 位图BITMAP结构
- 计算机插入的图片怎么改成线条格式,电脑把CAD转化为JPG格式后图片不清晰怎么办...
热门文章
- 西门子1200跟V90伺服总线通讯②_设置PLC
- Word VBA:结合网友的自定义函数对汉字批量增 / 删拼音
- 如何用c语言编辑一个象棋软件,C语言编写象棋软件源代码.doc
- Microsoft SQL Server 2012版下载与安装步骤
- 电脑测试软件的参数,电脑显卡参数检测软件
- linux中的bin目录的作用,linux中bin与sbin目录的作用及区别介绍
- O2OA组织架构,组织职位,组织属性
- java项目-第94期基于ssm的在线答题系统-计算机毕业设计
- 简单模板,小样,难道简单点不好吗?
- oracle客户端测试连接失败,教你解决win7系统配置Oracle客户端连接失败的设置步骤...