LCD裸板驱动

    打开电路图观察到相应的寄存器:

      

 可以观察到 LCD1由45根线来控制,主要配置的寄存器是24根RGB以及TOU1 EINT10  以及VDEN VYNC HSYNC VCLK驱动;

  在核心板中找到网标,找出相应的寄存器;

    

                

        

         在核心板子里面找出对应寄存器,配置好;

        

        

        

        其中,详细寄存器的描述如以下代码:

        

  1 #include "regs.h"
  2
  3 int (*printf)(char *, ...) = 0xc3e114d8;
  4
  5 void clean_screen(unsigned long *addr);
  6
  7 int main()
  8 {
  9
 10     unsigned long addr = 0x52000000;
 11     clean_screen(addr);
 12 /////////
 13 //准备:打开时钟
 14     printf("hahahah\n");
 15     LCDBLK_CFG = 2;
 16     CLK_SRC_LCD0 = 6;
 17     CLK_DIV_LCD = 0;
 18     CLK_GATE_IP_LCD = 1;
 19     //配时钟
 20
 21 #if 0
 22     GPD0CON &= ~(0xf << 4);
 23     GPD0CON |= (0x3 << 4);
 24 #else
 25
 26 ////////////////////
 27 //第一步:配置 OUT1 EINT10 以及24根RGB
 28     GPD0CON = (1 << 4);
 29     GPD0DAT = (1 << 1);
 30     //配置CPD0 OUT1
 31 #endif
 32     GPX1CON &= ~(0xf << 8);
 33     GPX1CON |= (0x2 << 8);
 34     //EINT10寄存器
 35     //
 36     GPF0CON = 0x22222222;
 37     GPF1CON = 0x22222222;
 38     GPF2CON = 0x22222222;
 39     GPF3CON = 0x2222;
 40     //RGB lcd dv
 41
 42     printf("heheheh\n");
 43
 44 ///////////////////////
 45 //第二步:看时序图配置相关寄存器
 46     //pages 1860
 47     //使能video 以及显示控制信号 28为时钟频率 详见 注释1
 48     VIDCON0 = 1 | (1 << 1) | (1 << 5) | (28 << 6);
 49     //配置IVDEN IVSYNC IHSYNC IVCLK
 50     VIDCON1 = (1 << 5) | (1 << 6) | (1 << 7);
 51     VIDCON2 = 0;
 52
 53     //配置 VSPW VFPD VBPD VBPDE VFPDE HBPD HFPD HSPW
 54     VIDTCON0 = 9 | (21 << 8) | (12 << 16);
 55     VIDTCON1 = 19 | (209 << 8) | (25 << 16);
 56     VIDTCON2 = 799 | (479 << 11);
 57     VIDTCON3 = 0;
 58
 59 ///////////////////
 60 //第三步配置窗口
 61     //开启频道0
 62     SHADOWCON = 0x1;
 63     //指定输出的开关 以及BBP模式为RGB 888
 64     WINCON0 = 1 | (13 << 2);
 65     //窗口左上,右下以及窗口大小
 66     VIDOSD0A = 0 | (0 << 11);
 67     VIDOSD0B = 479 | (799 << 11);
 68     VIDOSD0C = 800 * 480;
 69     //定义取数据的详细地址
 70     VIDW00ADD0B0 = addr;
 71     VIDW00ADD1B0 = addr + 800 * 480 * 4;
 72     //定义是横屏还是竖屏
 73     VIDW00ADD2 = 800;
 74 }
 75
 76 void clean_screen(unsigned long *addr)
 77 {
 78     int i = 0;
 79     for(i=0; i<480*800; i++)
 80         addr[i] = 0x00f0000f;
 81         ///开始时候打印图片的值
 82 }
 83
 84 

      其中第二步,对应时序图,列出各个时间表:

      

   

             

        其中,页面频率的值计算公式是:

        

      第三步,配置相关窗口寄存器的值,以及取数据的地址。

驱动代码:

    

  1 #include "regs.h"
  2
  3 int (*printf)(char *, ...) = 0xc3e114d8;
  4
  5 void clean_screen(unsigned long *addr);
  6
  7 int main()
  8 {
  9     unsigned long addr = 0x52000000;
 10     clean_screen(addr);
 11
 12     printf("hahahah\n");
 13     CLK_SRC_LCD0 = 6;
 14     CLK_DIV_LCD = 0;
 15     CLK_GATE_IP_LCD = 1;
 16
 17 #if 0
 18     GPD0CON &= ~(0xf << 4);
 19     GPD0CON |= (0x3 << 4);
 20 #else
 21     GPD0CON = (1 << 4);
 22     GPD0DAT = (1 << 1);
 23 #endif
 24     GPX1CON &= ~(0xf << 8);
 25     GPX1CON |= (0x2 << 8);
 26     GPF0CON = 0x22222222;
 27     GPF1CON = 0x22222222;
 28     GPF2CON = 0x22222222;
 29     GPF3CON = 0x2222;
 30
 31     printf("heheheh\n");
 32     //pages 1860
 33     VIDCON0 = 1 | (1 << 1) | (1 << 5) | (28 << 6);
 34     VIDCON1 = (1 << 5) | (1 << 6) | (1 << 7);
 35     VIDCON2 = 0;
 36     VIDTCON0 = 9 | (21 << 8) | (12 << 16);
 37     VIDTCON1 = 19 | (209 << 8) | (25 << 16);
 38     VIDTCON2 = 799 | (479 << 11);
 39     VIDTCON3 = 0;
 40     WINCON0 = 1 | (13 << 2);
 41     VIDOSD0A = 0 | (0 << 11);
 42     VIDOSD0B = 479 | (799 << 11);
 43     VIDOSD0C = 800 * 480;
 44     VIDW00ADD0B0 = addr;
 45     VIDW00ADD1B0 = addr + 800 * 480 * 4;
 46     VIDW00ADD2 = 480;
 47 }
 48
 49 void clean_screen(unsigned long *addr)
 50 {
 51     int i = 0;
 52     for(i=0; i<480*800; i++)
 53         addr[i] = 0x00ff0000;
 54 }
 55
 56
 57
 58 
  1 #define CLK_SRC_LCD0    (*(volatile unsigned long *)0x1003c234)
  2 #define CLK_DIV_LCD     (*(volatile unsigned long *)0x1003c534)
  3 #define CLK_GATE_IP_LCD (*(volatile unsigned long *)0x1003c934)
  4
  5 #define GPIO_BASE 0x11400000
  6
  7 #define GPD0CON (*(volatile unsigned long *)(GPIO_BASE + 0x00A0))
  8 #define GPD0DAT (*(volatile unsigned long *)(GPIO_BASE + 0x00A4))
  9 #define GPX1CON (*(volatile unsigned long *)(GPIO_BASE + 0x0C20))
 10 #define GPF0CON (*(volatile unsigned long *)(GPIO_BASE + 0x0180))
 11 #define GPF1CON (*(volatile unsigned long *)(GPIO_BASE + 0x01A0))
 12 #define GPF2CON (*(volatile unsigned long *)(GPIO_BASE + 0x01C0))
 13 #define GPF3CON (*(volatile unsigned long *)(GPIO_BASE + 0x01E0))
 14
 15 #define LCD_BASE 0x11C00000
 16
 17 #define VIDCON0         (*(volatile unsigned long *)(LCD_BASE + 0x0000))
 18 #define VIDCON1         (*(volatile unsigned long *)(LCD_BASE + 0x0004))
 19 #define VIDCON2         (*(volatile unsigned long *)(LCD_BASE + 0x0008))
 20 #define VIDCON3         (*(volatile unsigned long *)(LCD_BASE + 0x000C))
 21 #define VIDTCON0        (*(volatile unsigned long *)(LCD_BASE + 0x0010))
 22 #define VIDTCON1        (*(volatile unsigned long *)(LCD_BASE + 0x0014))
 23 #define VIDTCON2        (*(volatile unsigned long *)(LCD_BASE + 0x0018))
 24 #define VIDTCON3        (*(volatile unsigned long *)(LCD_BASE + 0x001C))
 25 #define WINCON0         (*(volatile unsigned long *)(LCD_BASE + 0x0020))
 26 #define WINCON1         (*(volatile unsigned long *)(LCD_BASE + 0x0024))
 27 #define WINCON2         (*(volatile unsigned long *)(LCD_BASE + 0x0028))
 28 #define WINCON3         (*(volatile unsigned long *)(LCD_BASE + 0x002C))
 29 #define WINCON4         (*(volatile unsigned long *)(LCD_BASE + 0x0030))
 30 #define SHADOWCON       (*(volatile unsigned long *)(LCD_BASE + 0x0034))
 31 #define WINCHMAP2       (*(volatile unsigned long *)(LCD_BASE + 0x003C))
 32 #define VIDOSD0A        (*(volatile unsigned long *)(LCD_BASE + 0x0040))
 33 #define VIDOSD0B        (*(volatile unsigned long *)(LCD_BASE + 0x0044))
 34 #define VIDOSD0C        (*(volatile unsigned long *)(LCD_BASE + 0x0048))
 35 #define VIDOSD1A        (*(volatile unsigned long *)(LCD_BASE + 0x0050))
 36 #define VIDOSD1B        (*(volatile unsigned long *)(LCD_BASE + 0x0054))
 37 #define VIDOSD1C        (*(volatile unsigned long *)(LCD_BASE + 0x0058))
 38 #define VIDOSD1D        (*(volatile unsigned long *)(LCD_BASE + 0x005C))
 39 #define VIDOSD2A        (*(volatile unsigned long *)(LCD_BASE + 0x0060))
 40 #define VIDOSD2B        (*(volatile unsigned long *)(LCD_BASE + 0x0064))
 41 #define VIDOSD2C        (*(volatile unsigned long *)(LCD_BASE + 0x0068))
 42 #define VIDOSD2D        (*(volatile unsigned long *)(LCD_BASE + 0x006C))
 43 #define VIDOSD3A        (*(volatile unsigned long *)(LCD_BASE + 0x0070))
 44 #define VIDOSD3B        (*(volatile unsigned long *)(LCD_BASE + 0x0074))
 45 #define VIDOSD3C        (*(volatile unsigned long *)(LCD_BASE + 0x0078))
 46 #define VIDOSD4A        (*(volatile unsigned long *)(LCD_BASE + 0x0080))
 47 #define VIDOSD4B        (*(volatile unsigned long *)(LCD_BASE + 0x0084))
 48 #define VIDOSD4C        (*(volatile unsigned long *)(LCD_BASE + 0x0088))
 49 #define VIDW00ADD0B0    (*(volatile unsigned long *)(LCD_BASE + 0x00A0))
 50 #define VIDW00ADD0B1    (*(volatile unsigned long *)(LCD_BASE + 0x00A4))
 51 #define VIDW00ADD0B2    (*(volatile unsigned long *)(LCD_BASE + 0x20A0))
 52 #define VIDW01ADD0B0    (*(volatile unsigned long *)(LCD_BASE + 0x00A8))
 53 #define VIDW01ADD0B1    (*(volatile unsigned long *)(LCD_BASE + 0x00AC))
 54 #define VIDW01ADD0B2    (*(volatile unsigned long *)(LCD_BASE + 0x20A8))
 55 #define VIDW02ADD0B0    (*(volatile unsigned long *)(LCD_BASE + 0x00B0))
 56 #define VIDW02ADD0B1    (*(volatile unsigned long *)(LCD_BASE + 0x00B4))
 57 #define VIDW02ADD0B2    (*(volatile unsigned long *)(LCD_BASE + 0x20B0))
 58 #define VIDW03ADD0B0    (*(volatile unsigned long *)(LCD_BASE + 0x00B8))
 59 #define VIDW03ADD0B1    (*(volatile unsigned long *)(LCD_BASE + 0x00BC))
 60 #define VIDW03ADD0B2    (*(volatile unsigned long *)(LCD_BASE + 0x20B8))
 61 #define VIDW04ADD0B0    (*(volatile unsigned long *)(LCD_BASE + 0x00C0))
 62 #define VIDW04ADD0B1    (*(volatile unsigned long *)(LCD_BASE + 0x00C4))
 63 #define VIDW04ADD0B2    (*(volatile unsigned long *)(LCD_BASE + 0x20C0))
 64 #define VIDW00ADD1B0    (*(volatile unsigned long *)(LCD_BASE + 0x00D0))
 65 #define VIDW00ADD1B1    (*(volatile unsigned long *)(LCD_BASE + 0x00D4))
 66 #define VIDW00ADD1B2    (*(volatile unsigned long *)(LCD_BASE + 0x20D0))
 67 #define VIDW01ADD1B0    (*(volatile unsigned long *)(LCD_BASE + 0x00D8))
 68 #define VIDW01ADD1B1    (*(volatile unsigned long *)(LCD_BASE + 0x00DC))
 69 #define VIDW01ADD1B2    (*(volatile unsigned long *)(LCD_BASE + 0x20D8))
 70 #define VIDW02ADD1B0    (*(volatile unsigned long *)(LCD_BASE + 0x00E0))
 71 #define VIDW02ADD1B1    (*(volatile unsigned long *)(LCD_BASE + 0x00E4))
 72 #define VIDW02ADD1B2    (*(volatile unsigned long *)(LCD_BASE + 0x20E0))
 73 #define VIDW03ADD1B0    (*(volatile unsigned long *)(LCD_BASE + 0x00E8))
 74 #define VIDW03ADD1B1    (*(volatile unsigned long *)(LCD_BASE + 0x00EC))
 75 #define VIDW03ADD1B2    (*(volatile unsigned long *)(LCD_BASE + 0x20E8))
 76 #define VIDW04ADD1B0    (*(volatile unsigned long *)(LCD_BASE + 0x00F0))
 77 #define VIDW04ADD1B1    (*(volatile unsigned long *)(LCD_BASE + 0x00F4))
 78 #define VIDW04ADD1B2    (*(volatile unsigned long *)(LCD_BASE + 0x20F0))
 79 #define VIDW00ADD2      (*(volatile unsigned long *)(LCD_BASE + 0x0100))
 80 #define VIDW01ADD2      (*(volatile unsigned long *)(LCD_BASE + 0x0104))
 81 #define VIDW02ADD2      (*(volatile unsigned long *)(LCD_BASE + 0x0108))
 82 #define VIDW03ADD2      (*(volatile unsigned long *)(LCD_BASE + 0x010C))
 83 #define VIDW04ADD2      (*(volatile unsigned long *)(LCD_BASE + 0x0110))
 84 #define VIDINTCON0      (*(volatile unsigned long *)(LCD_BASE + 0x0130))
 85 #define VIDINTCON1      (*(volatile unsigned long *)(LCD_BASE + 0x0134))
 86 #define W1KEYCON0       (*(volatile unsigned long *)(LCD_BASE + 0x0140))
 87 #define W1KEYCON1       (*(volatile unsigned long *)(LCD_BASE + 0x0144))
 88 #define W2KEYCON0       (*(volatile unsigned long *)(LCD_BASE + 0x0148))
 89 #define W2KEYCON1       (*(volatile unsigned long *)(LCD_BASE + 0x014C))
 90 #define W3KEYCON0       (*(volatile unsigned long *)(LCD_BASE + 0x0150))
 91 #define W3KEYCON1       (*(volatile unsigned long *)(LCD_BASE + 0x0154))
 92 #define W4KEYCON0       (*(volatile unsigned long *)(LCD_BASE + 0x0158))
 93 #define W4KEYCON1       (*(volatile unsigned long *)(LCD_BASE + 0x015C))
 94 #define W1KEYALPHA      (*(volatile unsigned long *)(LCD_BASE + 0x0160))
 95 #define W2KEYALPHA      (*(volatile unsigned long *)(LCD_BASE + 0x0164))
 96 #define W3KEYALPHA      (*(volatile unsigned long *)(LCD_BASE + 0x0168))
 97 #define W4KEYALPHA      (*(volatile unsigned long *)(LCD_BASE + 0x016C))
 98 #define DITHMODE        (*(volatile unsigned long *)(LCD_BASE + 0x0170))
 99 #define WIN0MAP         (*(volatile unsigned long *)(LCD_BASE + 0x0180))
100 #define WIN1MAP         (*(volatile unsigned long *)(LCD_BASE + 0x0184))
101 #define WIN2MAP         (*(volatile unsigned long *)(LCD_BASE + 0x0188))
102 #define WIN3MAP         (*(volatile unsigned long *)(LCD_BASE + 0x018C))
103 #define WIN4MAP         (*(volatile unsigned long *)(LCD_BASE + 0x0190))
104 #define WPALCON_H       (*(volatile unsigned long *)(LCD_BASE + 0x019C))
105 #define WPALCON_L       (*(volatile unsigned long *)(LCD_BASE + 0x01A0))
106 #define TRIGCON         (*(volatile unsigned long *)(LCD_BASE + 0x01A4))
107 #define I80IFCONA0      (*(volatile unsigned long *)(LCD_BASE + 0x01B0))
108 #define I80IFCONA1      (*(volatile unsigned long *)(LCD_BASE + 0x01B4))
109 #define I80IFCONB0      (*(volatile unsigned long *)(LCD_BASE + 0x01B8))
110 #define I80IFCONB1      (*(volatile unsigned long *)(LCD_BASE + 0x01BC))
111 #define COLORGAINCON    (*(volatile unsigned long *)(LCD_BASE + 0x01C0))
112 #define LDI_CMDCON0     (*(volatile unsigned long *)(LCD_BASE + 0x01D0))
113 #define LDI_CMDCON1     (*(volatile unsigned long *)(LCD_BASE + 0x01D4))
114 #define SIFCCON0        (*(volatile unsigned long *)(LCD_BASE + 0x01E0))
115 #define SIFCCON1        (*(volatile unsigned long *)(LCD_BASE + 0x01E4))
116 #define SIFCCON2        (*(volatile unsigned long *)(LCD_BASE + 0x01E8))
117 #define HUECOEF_CR_1    (*(volatile unsigned long *)(LCD_BASE + 0x01EC))
118 #define HUECOEF_CR_2    (*(volatile unsigned long *)(LCD_BASE + 0x01F0))
119 #define HUECOEF_CR_3    (*(volatile unsigned long *)(LCD_BASE + 0x01F4))
120 #define HUECOEF_CR_4    (*(volatile unsigned long *)(LCD_BASE + 0x01F8))
121 #define HUECOEF_CB_1    (*(volatile unsigned long *)(LCD_BASE + 0x01FC))
122 #define HUECOEF_CB_2    (*(volatile unsigned long *)(LCD_BASE + 0x0200))
123 #define HUECOEF_CB_3    (*(volatile unsigned long *)(LCD_BASE + 0x0204))
124 #define HUECOEF_CB_4    (*(volatile unsigned long *)(LCD_BASE + 0x0208))
125 #define HUEOFFSET       (*(volatile unsigned long *)(LCD_BASE + 0x020C))
126 #define VIDW0ALPHA0     (*(volatile unsigned long *)(LCD_BASE + 0x021C))
127 #define VIDW0ALPHA1     (*(volatile unsigned long *)(LCD_BASE + 0x0220))
128 #define VIDW1ALPHA0     (*(volatile unsigned long *)(LCD_BASE + 0x0224))
129 #define VIDW1ALPHA1     (*(volatile unsigned long *)(LCD_BASE + 0x0228))
130 #define VIDW2ALPHA0     (*(volatile unsigned long *)(LCD_BASE + 0x022C))
131 #define VIDW2ALPHA1     (*(volatile unsigned long *)(LCD_BASE + 0x0230))
132 #define VIDW3ALPHA0     (*(volatile unsigned long *)(LCD_BASE + 0x0234))
133 #define VIDW3ALPHA1     (*(volatile unsigned long *)(LCD_BASE + 0x0238))
134 #define VIDW4ALPHA0     (*(volatile unsigned long *)(LCD_BASE + 0x023C))
135 #define VIDW4ALPHA1     (*(volatile unsigned long *)(LCD_BASE + 0x0240))
136 #define BLENDEQ1        (*(volatile unsigned long *)(LCD_BASE + 0x0244))
137 #define BLENDEQ2        (*(volatile unsigned long *)(LCD_BASE + 0x0248))
138 #define BLENDEQ3        (*(volatile unsigned long *)(LCD_BASE + 0x024C))
139 #define BLENDEQ4        (*(volatile unsigned long *)(LCD_BASE + 0x0250))
140 #define BLENDCON        (*(volatile unsigned long *)(LCD_BASE + 0x0260))
141 #define W0RTQOSCON      (*(volatile unsigned long *)(LCD_BASE + 0x0264))
142 #define W1RTQOSCON      (*(volatile unsigned long *)(LCD_BASE + 0x0268))
143 #define W2RTQOSCON      (*(volatile unsigned long *)(LCD_BASE + 0x026C))
144 #define W3RTQOSCON      (*(volatile unsigned long *)(LCD_BASE + 0x0270))
145 #define W4RTQOSCON      (*(volatile unsigned long *)(LCD_BASE + 0x0274))
146 #define LDI_CMD0        (*(volatile unsigned long *)(LCD_BASE + 0x0280))
147 #define LDI_CMD1        (*(volatile unsigned long *)(LCD_BASE + 0x0284))
148 #define LDI_CMD2        (*(volatile unsigned long *)(LCD_BASE + 0x0288))
149 #define LDI_CMD3        (*(volatile unsigned long *)(LCD_BASE + 0x028C))
150 #define LDI_CMD4        (*(volatile unsigned long *)(LCD_BASE + 0x0290))
151 #define LDI_CMD5        (*(volatile unsigned long *)(LCD_BASE + 0x0294))
152 #define LDI_CMD6        (*(volatile unsigned long *)(LCD_BASE + 0x0298))
153 #define LDI_CMD7        (*(volatile unsigned long *)(LCD_BASE + 0x029C))
154 #define LDI_CMD8        (*(volatile unsigned long *)(LCD_BASE + 0x02A0))
155 #define LDI_CMD9        (*(volatile unsigned long *)(LCD_BASE + 0x02A4))
156 #define LDI_CMD10       (*(volatile unsigned long *)(LCD_BASE + 0x02A8))
157 #define LDI_CMD11       (*(volatile unsigned long *)(LCD_BASE + 0x02AC))

    寄存器,时序图时间值:

      

  1 gpf0_0    ~   gpf0_7
  2 gpf1_0    ~   gpf1_7
  3 gpf2_0    ~   gpf2_7
  4 gpf3_0    ~   gpf3_3
  5 gpd0_1
  6 gpx1_2
  7
  8 vspw + 1        tvpw            10
  9 vbpd + 1        tvb - tvpw      13
 10 lineval + 1     tvd             480
 11 vfpd + 1        tvfp            22
 12
 13 hspw + 1        thpw            20
 14 hbpd + 1        thb - thpw      26
 15 hozval + 1      thd             800
 16 hfpd + 1        thfp            210
 17
 18 Frame Rate = 1/[{(VSPW + 1) + (VBPD + 1) + (LIINEVAL + 1) + (VFPD + 1)} * {(HSPW + 1) + (    HBPD + 1) + (HFPD + 1) + (HOZVAL + 1)} * {(CLKVAL + 1)/(Frequency of Clock source)}]
 19
 20 50 = 1 / [{10 + 13 + 480 + 22} * {20 + 26 + 800 + 210} * X / 800M]
 21 50 = 1 / [525 * 1056 * X / 800M]
 22 1 = 50 * 525 * 1056 * X / 800M
 23 800M = 50 * 525 * 1056 * X
 24 X = 800M / (50 * 525 * 1056)
 25 X = 800M / 27720000
 26 X = 28.8
 27
 28
 29 

  

  

    

         

时间: 2024-08-24 14:37:55

LCD裸板驱动的相关文章

S5PV210裸板驱动:启动

以往2440和6410的启动方式,只要我们把裸板代码烧写到NAND FLASH的开始位置,当开发板上点启动时,处理器会自动从NAND FLASH上拷贝前面一段的代码到内部的RAM中执行.按照以前的方法,我写了一段汇编代码,如下: 1_ARM/1_start/start.S 1 #define WTCON 0xE2700000 2 3 .text 4 .align 2 5 .global _start 6 7 _start: 8 //close the watchdog 9 ldr r1, =WT

今天学习的裸板驱动之存储控制器心得(初始化SDRAM)

CPU只管操作地址,而有些地址代表的是某些存储设备. 但是操作这些存储设备需要很多东西,比如需要制定bank,行/列地址等.所以就有了存储管理器,用来处理这种CPU操作的地址和存储设备间的转换. (1)存储管理器在得到一个CPU的地址时,根据地址范围和自身的信息,知道这个地址位于那个片选. (2)若该片选连接的是一个SDRAM,还会根据地址范围和自身的信息,知道对应的如SDRAM中的BANK,行/列地址等. 所以,配置存储管理器 (3)根据芯片手册知道这个芯片的存储管理器的片选有8个,说明它可以

[转载]嵌入式开发板-iTOP-4412开发板LCD的屏幕驱动

平台:iTOP-4412开发板 大家好今天我们来讲一下 iTOP-4412 开发板 LCD 的屏幕驱动, iTOP-4412 开发板支持 4.3 寸, 7 寸, 9.7寸的 lcd 显示屏.其中 4.3 寸屏是用的 cpu 直接出来的 RGB 信号,7 寸屏和 9.7 寸屏是用的 LVDS 信号,硬件 上 使 用 了 一 个 RGB 转 LVDS 的 芯 片 实 现 的 . 我 们 来 看 下 显 示 驱 动 , 显 示 驱 动 在 内 核 的"drivers/video/samsung&quo

[迅为开发板资料分享]iTOP-4412开发板LCD的屏幕驱动

大家好今天我们来讲一下 iTOP-4412 开发板 LCD 的屏幕驱动, iTOP-4412 开发板支持 4.3 寸, 7 寸, 9.7寸的 lcd 显示屏.其中 4.3 寸屏是用的 cpu 直接出来的 RGB 信号,7 寸屏和 9.7 寸屏是用的 LVDS 信号,硬件 上 使 用 了 一 个 RGB 转 LVDS 的 芯 片 实 现 的 . 我 们 来 看 下 显 示 驱 动 , 显 示 驱 动 在 内 核 的"drivers/video/samsung" 目录下面, 这个驱动是三星

【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11) 开发环境 : -- 操作系统 : Vmware11 + RedHat6.3 企业版 + Win8.1; -- 硬件 : OK-6410-A 开发

刚接触开发板之烧写裸板程序

使用串口操作开发板的前提是开发板上已经有烧好的程序,因此开发板在没有烧好程序时,应先烧写程序.方法有: 1.使用并口工具烧写:接线(参考百问网JZ2440V2开发板使用手册),使用oflash烧写(速度比较慢),可烧写.bin文件,从新上电观察效果.可烧写u_boot. 2.使用openJTAG烧写,接线,使用oflash烧写(oflash烧写完后,会复位开发板). 3.使用Jlink烧写,请看如何烧写S3C2440裸板程序:JLink只支持烧写Nor Flash,不支持Nand Flash.要

【内核】四、搭建完整的mini2440开发板驱动开发环境(仿照JZ2440驱动开发环境搭建)

一.mini2440开发板驱动环境搭建: <mini2440用户手册>说明原文>>注意:本开发板提供的 linux 内核并不能直接用于 u-boot ,因为我们公司是不使用u-boot的,并且对其各个参数设置并不了解,关于 U-Boot 的使用方法用户可以参考网上的资料. 我了个...鉴于使用免费版的mini2440光盘资料,驱动开发环境搭建从未成功过,罢了,虽然以后LCD和触摸屏驱动学习时会有些问题,但还是换熟悉的u-boot和uImage来搭建环境吧. 二.在mini2440开

嵌入式 hi3518c裸板uboot烧写、kernel烧写、fs烧写小结

1.在uboot中我可以添加自己的命令,添加的方法是找到一个uboot的命令,然后模仿着去增加属于自己的命令代码以及实现函数就可以 2.记住在使用printf进行调试的时候,在遇到指针或者字符串的时候最好使用“%x”,以为我不知道指针或者字符串中是否包含不可见字符,如果有不可见字符会导致错误,而且错误不好查找 3.对于uboot中的环境变量,其实是放在uboot里面的,也就是环境变量占用的是uboot的空间,如果不需要去实时修改环境变量的值那么就可以不用env这个分区:但是如果需要修改环境变量,

micro/mini 2440 Jlinker 裸板烧录

1. 简要说明 JLink的调试功能.烧写Flash的功能都很强大,但是对于S3C2410.S3C2440的Flash操作有些麻烦:烧写Nor Flash时需要设置SDRAM,否则速率很慢:烧写Nand Flash只是从理论上能够达到,但是还没有人直接实现这点. 本文使用一个间接的方法来实现对S3C2410.S3C2440开发板的Nor.Nand Flash的烧写.原理为:JLink可以很方便地读写内存.启动程序,那么可以把一个特制的程序下载到开发板上的SDRAM去,并运行它,然后使用这个程序来