手把手教你4418/6818开发板屏幕修改

发布者:梦中的额吉最新更新时间:2021-12-29 来源: eefocus关键字:开发板 手机看文章 扫描二维码
随时随地手机看文章

开发平台:iTOP-4418/6818开发板

 

4418&6818屏幕修改分别需要修改uboot和内核,首先是修改uboot。

 

1.首先进入到android源码目录下:

 

 

 

 

 

 

 

 

 

 

 

图1

4418平台,需要修改uboot的文件是:u-boot/board/s5p4418/drone2/board.c,使用vi命令打开这个文件,屏幕的默认参数设置在49行到93行,如下图:

 

图2

4418暂时支持9.7寸,7寸,4.3寸屏幕,他们的设置在该文件,如下图所示的地方:

 

图3

上图中代码的功能,首先是从uboot的环境变量里面读取出当前使用的哪款屏幕,然后根据屏幕类型选择对应分支的设置。比如屏幕的宽,高,刷新率,如果用户使用其它的屏幕,需要在此处修改(需要根据自己屏幕的参数,修改图2中的那些默认变量)(6818的修改文件是:u-boot/board/s5p6818/dronel/board.c,方法同上)

 

2,linux内核部分的修改:

首先是文件kernel/arch/arm/plat-s5p4418/topeet/include/cfg_main.h(6818对应的文件是:kernel/arch/arm/plat-s5p6818/topeet/include/cfg_main.h)

这个文件里定义里一组与屏幕相关的宏,如下所示:

/*------------------------------------------------------------------------------

 *      Display (DPC and MLC)

 */

/* Primary */

#define CFG_DISP_PRI_SCREEN_LAYER               0

#define CFG_DISP_PRI_SCREEN_RGB_FORMAT          MLC_RGBFMT_A8R8G8B8

#define CFG_DISP_PRI_SCREEN_PIXEL_BYTE          4

#define CFG_DISP_PRI_SCREEN_COLOR_KEY           0x090909

 

#define CFG_DISP_PRI_VIDEO_PRIORITY                             2       // 0, 1, 2, 3

#define CFG_DISP_PRI_BACK_GROUND_COLOR          0x000000

 

#define CFG_DISP_PRI_MLC_INTERLACE              CFALSE

 

#define CFG_DISP_PRI_LCD_WIDTH_MM                               154

#define CFG_DISP_PRI_LCD_HEIGHT_MM                              85

 

/* modify by cym 20150811 */

#if 0

#define CFG_DISP_PRI_RESOL_WIDTH                        1024    // X Resolution

#define CFG_DISP_PRI_RESOL_HEIGHT                               600     // Y Resolution

#else

#define CFG_DISP_PRI_RESOL_WIDTH                        800//1024    // X Resolution

#define CFG_DISP_PRI_RESOL_HEIGHT                               1280//768     // Y Resolution

#endif

/* end remove */

 

#define CFG_DISP_PRI_HSYNC_SYNC_WIDTH            20

#define CFG_DISP_PRI_HSYNC_BACK_PORCH           160

#define CFG_DISP_PRI_HSYNC_FRONT_PORCH          160

#define CFG_DISP_PRI_HSYNC_ACTIVE_HIGH          CTRUE

#define CFG_DISP_PRI_VSYNC_SYNC_WIDTH            3

#define CFG_DISP_PRI_VSYNC_BACK_PORCH            23

#define CFG_DISP_PRI_VSYNC_FRONT_PORCH           12

#define CFG_DISP_PRI_VSYNC_ACTIVE_HIGH          CTRUE

 

#define CFG_DISP_PRI_CLKGEN0_SOURCE             DPC_VCLK_SRC_PLL2

#define CFG_DISP_PRI_CLKGEN0_DIV                12 // even divide

#define CFG_DISP_PRI_CLKGEN0_DELAY              0

#define CFG_DISP_PRI_CLKGEN0_INVERT                             0

#define CFG_DISP_PRI_CLKGEN1_SOURCE             DPC_VCLK_SRC_VCLK2

#define CFG_DISP_PRI_CLKGEN1_DIV                1

#define CFG_DISP_PRI_CLKGEN1_DELAY              0

#define CFG_DISP_PRI_CLKGEN1_INVERT                             0

#define CFG_DISP_PRI_CLKSEL1_SELECT                             0

#define CFG_DISP_PRI_PADCLKSEL                  DPC_PADCLKSEL_VCLK      /* VCLK=CLKGEN1, VCLK12=CLKGEN0 */

 

#define CFG_DISP_PRI_PIXEL_CLOCK                                800000000/CFG_DISP_PRI_CLKGEN0_DIV

 

#define CFG_DISP_PRI_OUT_SWAPRB                                 CFALSE

#define CFG_DISP_PRI_OUT_FORMAT                 DPC_FORMAT_RGB888

#define CFG_DISP_PRI_OUT_YCORDER                DPC_YCORDER_CbYCrY

#define CFG_DISP_PRI_OUT_INTERLACE              CFALSE

#define CFG_DISP_PRI_OUT_INVERT_FIELD           CFALSE

#define CFG_DISP_LCD_MPY_TYPE                                           0

 

/*------------------------------------------------------------------------------

 *      LVDS

 */

/* modify by cym 20150811 */

#if 0

#define CFG_DISP_LVDS_LCD_FORMAT                LVDS_LCDFORMAT_VESA

#else

#define CFG_DISP_LVDS_LCD_FORMAT                LVDS_LCDFORMAT_JEIDA

#endif

/* end modify */

然后是文件:kernel/arch/arm/plat-s5p4418/topeet/device.c(6818对应的文件:kernel/arch/arm/plat-s5p6818/topeet/device.c)

在这个文件找到函数setup_width_height_param,如下:

/* add by cym 20151128 */

#if 1

static int __init setup_width_height_param(char *str)

{

        if (!strncasecmp("9.7", str, 3)) {

                //printk("fun:%s, line = %d(lcdtype:%s)n", __FUNCTION__, __LINE__, str);

#if defined(CONFIG_TOUCHSCREEN_FT5X0X)

                //printk("fun:%s, line = %d(lcdtype:%s)n", __FUNCTION__, __LINE__, str);

                ft5x0x_pdata.screen_max_x = 768;

                ft5x0x_pdata.screen_max_y = 1024;

#endif

 

#if defined (CONFIG_FB_NXP)

#if defined (CONFIG_FB0_NXP)

                //printk("fun:%s, line = %d(lcdtype:%s)n", __FUNCTION__, __LINE__, str);

                fb0_plat_data.x_resol = 1024;

                fb0_plat_data.y_resol = 768;

#endif

#endif

        }

        else if(!strncasecmp("7.0", str, 3))

        {

#if defined(CONFIG_TOUCHSCREEN_FT5X0X)

                //printk("fun:%s, line = %d(lcdtype:%s)n", __FUNCTION__, __LINE__, str);

                ft5x0x_pdata.screen_max_x = 800;

                ft5x0x_pdata.screen_max_y = 1280;

#endif

 

#if defined (CONFIG_FB_NXP)

#if defined (CONFIG_FB0_NXP)

                //printk("fun:%s, line = %d(lcdtype:%s)n", __FUNCTION__, __LINE__, str);

                fb0_plat_data.x_resol = 800;

                fb0_plat_data.y_resol = 1280;

#endif

#endif

        }

[1] [2] [3]
关键字:开发板 引用地址:手把手教你4418/6818开发板屏幕修改

上一篇:迅为iTOP-4418开发板串口虚拟控制台配置为普通串口
下一篇:iTOP-4418开发板Ubuntu系统烧写方法分享

推荐阅读最新更新时间:2024-11-12 16:54

OK6410A 开发板 (八) 95 linux-5.11 OK6410A linux高速缓存
高速缓存是什么 存储器在访问(读写)速度上有 金字塔等级架构 高速缓存 其实就是缓存, 高速只是缓存的一个特性(高等级的内存相对于低等级的内存) 缓存 其实 就是 将 低等级存储中的数据 放置到 高等级存储中 可以这么说,高等级存储 就是 低层级存储的缓存 在这里,我们有时候将 缓存 看成一个动词(将 低等级存储中的数据 放置到 高等级存储中 这个动作),有时候也被看成一个名词(高等级存储中的数据) 缓存的理论分析 源数据在哪个等级都有 在cache等级有 二进制指令 在物理内存等级有 二进制指令 在物理内存等级有 页表数据 在本地磁盘等级有 文件 在本地磁盘等级有 二进制指令
[单片机]
OK6410A 开发板 (四) 1 OK6410A 裸机LCD RGB接口
代码已经上库,https://github.com/lisider/OK6410/tree/master/lcd 硬件 lcd 控制器侧 14 Display Controller // 位于S3C6410 datasheet Page455 寄存器范围 : 0x77100000 - 0x77100344 寄存器个数 : 105个 硬件接口 : 支持 RGB 和其他三种接口(I80接口/NTSC/PAL标准电视编码器接口/IT-R BT. 601 接口) lcd 侧 型号: WXCAT43-TG3#001 4.3 寸 屏 规格书与原理图 屏幕显示区域 : 95.04 * 53.856 mm 对角线(可显示区域) : 4.
[单片机]
LPC2103开发板WDT看门狗测试试验
#include config.h #define LED1 (1 19) #define KEY1 (1 18) void DelayNS(uint32 dly) { uint32 i; for(;dly 0; dly--) { for(i = 0; i 50000; i++); } } void WDTInit(uint32 uiTime) { WDTC = uiTime; WDMOD = 0x03; WDFEED = 0xaa; WDFEED = 0x55; } void FeedDog(void) { IRQDisable(); WDFEED = 0xa
[单片机]
s3c2440A开发板UART总结以及UART代码详解
一.概述: s3c2440A 提供三个独立异步串口端,每个端口可以在中断模式和DMA模式下操作,也就是讲UART可以产生一个中断或DMA请求用于CPU和UART之间的数据传输。 每一个串口UART都有一个64字节的发送FIFO,一个64字节的接收FIFO。 要实现UART与上位机之间的通信,必须遵循木一个协议,通过ULCON可以定义传输数据的位数,停止的位数,红外模式等。 波特率的时钟源有:PCLK,FCLK/n,UEXTCLK,通过UCON寄存器的10,11位进行选择。大小可以这样计算:时钟源频率/(波特率*16)-1;如果计算的结果是个小数,那么把这个最接近的整数放到UBRDIVn中,即如果算的结果是16.25,那
[单片机]
S3C2440开发板如何修改LCD参数
1.TQ2440u-boot-1.1.6 本文引用地址:  http://embed.21ic.com/hardware/development/201801/50078.html 修改文件所在的路径是u-boot-1.1.6includeconfigsEmbedSky.h 将#defineLCD_TFTxxx(LCD类型) W353.5寸 TFT4802724.3寸 TFT8004807寸 TFT80060010.4寸 VGA1024768VGA1024*768 2.TQ2440winceEboot和nk 修改文件所在的路径是PLATFORMTQ2440SrcIncs3c2440a_lcd.h 修改#defineLCD_TYP
[嵌入式]
OK6410A 开发板 (八) 56 linux-5.11 OK6410A armv6 异常之访存异常
本文描述 armv6 异常 中的 data abort 和 instruction fetch abort ARMv6 异常 ARMv6 异常 7种 reset 和 swi 共享 SVC异常模式(特权) data abort 和 instruction fetch abort 共享 ABT异常模式(特权) attempted execution of an Undefined instruction UND异常模式(特权) IRQ, normal interrupt IRQ异常模式(特权) FIQ, fast interrupt FIQ异常模式(特权) ARMv6 非
[单片机]
OK6410A <font color='red'>开发板</font> (八) 56 linux-5.11 OK6410A armv6 异常之访存异常
FL2440开发板U盘挂载
在移植好内核和跟文件系统的基础上,进行USB的移植。 S3C2440集成了USB控制器支持USB1.1版本,支持USB主机和USB设备主机符合OHCI1.0版本,Linux2.6.29.1的内核支持USB控制器,只需在内核中配置即可。 在内核目录下,输入make menuconfig,进入配置菜单,如下: Device Drivers- SCSI device support- * SCSI device support legacy /proc/scsi/ support * SCSI disk support * SCSI CDROM s
[单片机]
FL2440<font color='red'>开发板</font>U盘挂载
2440开发板Qt中文显示的问题
搞了老半天,参考别人的做法,终于解决了中文显示的问题。具体做法如下: 如果你急于在ARM开发板上看到Qt显示中文,而不介意稍次的效果,可以在运行Qt程序时,增加设置字体的参数,比如运行名为hello的Qt程序:./hello -fn unifont 1.首先,需要文泉驿字体文件,你可以从网络上下载得到这些文件,比如,wenquanyi_160_75.qpf。将全部文泉驿字体文件复制到ARM开发板上的Qt字体库中,在这个例子中,Qt字体库的路径是/usr/local/qt463lib/lib/fonts 2.你还需要增加一个ARM开发板上的环境变量,在/etc/profile文件中增加: export QT_QWS_
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved