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相关推荐

  1. Linux驱动之LCD驱动编写

    在Linux驱动之内核自带的S3C2440的LCD驱动分析这篇博客中已经分析了编写LCD驱动的步骤,接下来就按照这个步骤来字尝试字节编写LCD驱动.用的LCD屏幕为tft屏,每个像素点为16bit.对 ...

  2. [lcm] Qualcomm平台的显示屏lcd驱动移植步骤

    1lk部分 1-1 target_displayc 1-2 oem_panelc 1-3 panel_innont51021b_1200p_videoh 2Kernel 2-1 dsi-panel-b ...

  3. TQ2440平台上LCD驱动的移植

    参考: http://liu1227787871.blog.163.com/blog/static/205363197201242393031250/ http://blog.csdn.net/cum ...

  4. 高通 android平台LCD驱动分析

    目前手机芯片厂家提供的源码里包含整个LCD驱动框架,一般厂家会定义一个xxx_fb.c的源文件,注册一个平台设备和平台驱动,在驱动的probe函数中来调用register_framebuffer(), ...

  5. IO 模拟 1/2 Bias、1/4 Duty的 LCD 驱动

    工作原理 方式一      根据 LCD 的驱动原理可知,LCD 像素点上只能加上 AC 电压,LCD 显示器的对比度由 COM脚上的电压值减去 SEG 脚上的电压值决定,当这个电压差大于 LCD 的 ...

  6. android lcd驱动框架,LCD驱动及Framebuffer相关(转载)

    LCD驱动及Framebuffer相关 (2012-11-20 17:04) 标签:&nBSP; lcd驱动  framebuffer  io内存  分类: Android驱动模块相关 内容提 ...

  7. Linux LCD 驱动实验

    目录 Linux 下LCD 驱动简析 1 Framebuffer 设备 LCD 驱动简析 硬件原理图分析 LCD 驱动程序编写 运行测试 LCD 屏幕基本测试 设置LCD 作为终端控制台 LCD 背光 ...

  8. LCD驱动移植(二)

    LCD驱动的话会在MINI2440里是向Plaform注册的一个驱动 Plaform的话可以在网上查查这方面的资料,主要要注意这两个函数,如下: (1)platform_device_register ...

  9. Barebox for Tiny6410(LCD驱动移植)

    一.目的 熟悉Barebox的Frame buffer框架.LCD驱动的移植和测试命令的编写. 二.主要内容 1.1 为Barebox移植基于Tiny6410的LCD驱动. 1.2 编写lcd命令测试 ...

最新文章

  1. CentOS6.5 安装 ntopng
  2. 基于mysql实现的网站_[源码和文档分享]基于JavaScript和MySQL的文化平台网站的设计与实现...
  3. 组合模式 桥接模式 java_java设计模式5.组合模式、门面模式、享元模式、桥接模式...
  4. 踏平RecyclerView使用的各种坑,跟ListView和GridView说拜拜
  5. 向量值函数在计算机工程与应用,拟Newton法在高阶矩阵中的应用-计算机工程与应用.PDF...
  6. CRM呼叫中心inbox的调试步骤
  7. codeforce 185 A——Plant
  8. dom4j实现为list添加父节点_Heap 堆的实现
  9. 前端复习-02-ajax原生以及jq和跨域方面的应用。
  10. python selenium 点击加载更多_Python Selenium 疑难杂症解方(三): 点击
  11. kaka启动出现:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000c00000, 1073,0)
  12. 【Unity游戏开发】动画系统(四)Unity3d动画基础
  13. Go代码调优利器-火焰图
  14. code first修改表或字段
  15. 【名企面试经验-新浪-校招提前批】【数据平台研发工程师】
  16. Python学习 | 2022-01-15 Python基础复习(一)
  17. 御坂坂的c++学习之路(4)
  18. 英语单词词性顺口溜_巧记英语单词的顺口溜 这样记忆不枯燥
  19. 位图BITMAP结构
  20. 计算机插入的图片怎么改成线条格式,电脑把CAD转化为JPG格式后图片不清晰怎么办...

热门文章

  1. 西门子1200跟V90伺服总线通讯②_设置PLC
  2. Word VBA:结合网友的自定义函数对汉字批量增 / 删拼音
  3. 如何用c语言编辑一个象棋软件,C语言编写象棋软件源代码.doc
  4. Microsoft SQL Server 2012版下载与安装步骤
  5. 电脑测试软件的参数,电脑显卡参数检测软件
  6. linux中的bin目录的作用,linux中bin与sbin目录的作用及区别介绍
  7. O2OA组织架构,组织职位,组织属性
  8. java项目-第94期基于ssm的在线答题系统-计算机毕业设计
  9. 简单模板,小样,难道简单点不好吗?
  10. oracle客户端测试连接失败,教你解决win7系统配置Oracle客户端连接失败的设置步骤...