迅为4418开发板/6818开发板教你如何修改屏幕

author author     2022-10-05     479

关键词:

开发平台:迅为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

        }

 

/* add by cym 20160222 */

#if 1

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

        {

#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 = 480;

                fb0_plat_data.y_resol = 272;

#endif

#endif

        }

#endif

/* end add */

 

/* add by cym 20170810 */

#if 1

        else if(!strncasecmp("1024x600", str, 8))

        {

#if defined(CONFIG_TOUCHSCREEN_FT5X0X)

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

                ft5x0x_pdata.screen_max_x = 600;

                ft5x0x_pdata.screen_max_y = 1024;

 

                ft5x0x_i2c_bdi.irq = PB_PIO_IRQ(CFG_IO_TSC2007_TOUCH_PENDOWN_DETECT);

                ft5x0x_pdata.gpio_irq = CFG_IO_TSC2007_TOUCH_PENDOWN_DETECT;

 

                tsc2007_i2c_bdi.irq = NULL;//PB_PIO_IRQ(CFG_IO_TOUCH_PENDOWN_DETECT);

#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 = 600;

#endif

#endif

        }

#endif

/* end add */

 

/* add by cym 20161104 */

#if 1

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

        {

                #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 = 1920;

                fb0_plat_data.y_resol = 1080;

#endif

#endif

        }

#endif

/* end add */

 

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

}

early_param("lcdtype", setup_width_height_param);

#endif

/* end add */

这个函数根据uboot传递过来的lcdtype选择对应屏幕的设置,这里主要是修改屏幕的分辨率,如果使用其它屏幕,修改对应的分辨率就可以了。

然后是文件:kernel/arch/arm/mach-s5p4418/dev-display.c(6818对应的文件:kernel/arch/arm/mach-s5p4418/dev-display.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)) {

#if defined (CONFIG_NXP_DISPLAY_LCD)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                __lcd_vsync.h_active_len = 1024;

                __lcd_vsync.v_active_len = 768;

                __lcd_vsync.clk_div_lv0 = 14;

#endif

#endif

 

#if defined (CONFIG_NXP_DISPLAY_LVDS)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                __lvds_vsync.h_active_len = 1024;

                __lvds_vsync.v_active_len = 768;

                __lvds_vsync.clk_div_lv0 = 14;

#endif

#endif

 

#if defined (CONFIG_NXP_DISPLAY_MIPI)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                __mipi_vsync.h_active_len = 1024;

                __mipi_vsync.v_active_len = 768;

                __mipi_vsync.clk_div_lv0 = 14;

#endif

#endif

        }

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

        {

#if defined (CONFIG_NXP_DISPLAY_LCD)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                 __lcd_vsync.h_active_len = 800;

                 __lcd_vsync.v_active_len = 1280;

#endif

#endif

 

#if defined (CONFIG_NXP_DISPLAY_LVDS)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                 __lvds_vsync.h_active_len = 800;

                 __lvds_vsync.v_active_len = 1280;

#endif

#endif

 

#if defined (CONFIG_NXP_DISPLAY_MIPI)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                 __mipi_vsync.h_active_len = 800;

                 __mipi_vsync.v_active_len = 1280;

#endif

#endif

        }

 

/* add by cym 20160222 */

#if 1

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

        {

#if defined (CONFIG_NXP_DISPLAY_LCD)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                 __lcd_vsync.h_active_len = 480;

                 __lcd_vsync.v_active_len = 272;

 

                __lcd_vsync.clk_div_lv0 = 24;

                __lcd_vsync.clk_div_lv1 = 2;

#endif

#endif

 

#if defined (CONFIG_NXP_DISPLAY_LVDS)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                 __lvds_vsync.h_active_len = 480;

                 __lvds_vsync.v_active_len = 272;

 

                __lvds_vsync.clk_div_lv0 = 24;

                __lvds_vsync.clk_div_lv1 = 2;

#endif

#endif

 

#if defined (CONFIG_NXP_DISPLAY_MIPI)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                 __mipi_vsync.h_active_len = 480;

                 __mipi_vsync.v_active_len = 272;

 

                 __mipi_vsync.clk_div_lv0 = 24;

                 __mipi_vsync.clk_div_lv1 = 2;

#endif

#endif

        }

#endif

/* end add */

 

/* add by cym 20170810 */

#if 1

        else if(!strncasecmp("1024x600", str, 8))

        {

#if defined (CONFIG_NXP_DISPLAY_LCD)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                 __lcd_vsync.h_active_len = 1024;

                 __lcd_vsync.v_active_len = 600;

 

                //__lcd_vsync.clk_div_lv0 = 24;

                //__lcd_vsync.clk_div_lv1 = 2;

#endif

#endif

 

#if defined (CONFIG_NXP_DISPLAY_LVDS)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                 __lvds_vsync.h_active_len = 1024;

                 __lvds_vsync.v_active_len = 600;

 

                //__lvds_vsync.clk_div_lv0 = 24;

                //__lvds_vsync.clk_div_lv1 = 2;

#endif

#endif

 

#if defined (CONFIG_NXP_DISPLAY_MIPI)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                 __mipi_vsync.h_active_len = 1024;

                 __mipi_vsync.v_active_len = 600;

 

                 //__mipi_vsync.clk_div_lv0 = 24;

                 //__mipi_vsync.clk_div_lv1 = 2;

#endif

#endif

        }

#endif

/* end add */

 

/* add by cym 20161104 */

#if 1

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

        {

#if defined (CONFIG_NXP_DISPLAY_LCD)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                 __lcd_vsync.h_active_len = 1920;

                 __lcd_vsync.v_active_len = 1080;

#endif

#endif

 

#if defined (CONFIG_NXP_DISPLAY_LVDS)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                 __lvds_vsync.h_active_len = 1920;

                 __lvds_vsync.v_active_len = 1080;

#endif

#endif

 

#if defined (CONFIG_NXP_DISPLAY_MIPI)

#if defined(CFG_DISP_PRI_RESOL_WIDTH) && defined(CFG_DISP_PRI_RESOL_HEIGHT)

                 __mipi_vsync.h_active_len = 1920;

                 __mipi_vsync.v_active_len = 1080;

#endif

#endif

        }

#endif

/* end add */

 

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

}

early_param("lcdtype", setup_width_height_param);

#endif

/* end add */

这个函数根据uboot传递过来的lcdtype选择对应屏幕的设置,这里主要是修改屏幕的分辨率,刷新率,如果使用其它屏幕,修改对应的分辨率就可以了。

关于屏幕的设置主要就是修改上面的文件

详情了解:http://topeetboard.com/ 更多了解:https://arm-board.taobao.com/

技术分享图片

迅为itop-4418/6818开发板-驱动-实现gpio扩展

...以实现扩展的GPIO的输入和输出。另外必须要先看文档“迅为iTOP-4418开发板和6818开发板-驱动-GPIO输入输出和例程_V1.X”。1GPIO扩展的内核配置在底板上,引出的扩展口有J6(camera口),J38(GPIO/CAN/485),另外如果自己做底板,假如不... 查看详情

嵌入式开发板arm开发板-迅为4418开发板接口基本介绍

迅为4418开发板无缝兼容6818平台,是北京迅为电子有限公司研发设计的一款开发板平台,核心板尺寸小,引出脚多,能够帮助工程师们快速开发新产品。行业应用:iTOP-4418开发板/6818开发板可广泛适用于工控、智能家居、医疗、... 查看详情

迅为4418/6818开发板cortex-a9四核千兆以太网4g模块

6818核心板与4418核心板兼容同一底板650)this.width=650;"src="https://s1.51cto.com/oss/201711/16/4e3f8496c423336ee949b11a7fb89782.jpg-wh_500x0-wm_3-wmp_4-s_794103852.jpg"style="float:none;"title="6818核心板"alt="4e3f849 查看详情

迅为嵌入式4418开发板平台品质保证双11多重豪礼

S5P四核4418与八核6818完美兼容   提供1G和2G内存版本,全机器焊接,杜绝手工,批量无忧。核心板支持电池管理,充放电电路与电量计,适于手持应用 4418核心板:  6818核心板:       ... 查看详情

迅为嵌入式-itop-4418/6848开发板高端开发平台

iTOP-6818开发板是一款四核ARM八核开发板与iTOP-4418开发板完全兼容,CPU主频1.4GHz,内存1GBDDR3(2GB可选),存储16GBEMMC,板载千兆以太网,GPS,WIFI蓝牙,陀螺仪等模块,同时支持3G模块,4G模块。可适用于智能家居、医疗、媒体、车载... 查看详情

迅为itop-开发板-驱动-can和rfid配置

在迅为开发板中,在4412,4418以及6818中,有的开发板默认配置RFID,有的默认配置CAN驱动(IMX6默认都配置)。本文档介绍如何配置CAN和RFID的驱动。截图界面使用的是4418开发板的menuconfig界面,4412和6818的配置方法和路径也是一模一... 查看详情

嵌入式学习-4412开发板学习-迅为4412开发板can测试技术分享

迅为CAN测试详情了解:http://topeetboard.com  更多了解:https://arm-board.taobao.com本文档适用的范围①硬件平台:4412精英版以及全能版开发板。(4418/6818开发板以及imx6q开发板测试的道理是一样的可能细节有些不同,在这里我没... 查看详情

嵌入式开发-迅为itop-4418开发板flash空间问题

我的4418开发板是4G版本16G存储空间的。u-boot和文件系统、内核都是光盘自带的,进入linux系统之后我使用df-h命令看到的存储空间不对,我用U盘做了测试:u盘里面放1G的内容往arm开发板上面cp结果cp到一定时间时候,就提示“设备... 查看详情

嵌入式开发板迅为6818开发板qt鼠标和触摸的问题

QT 鼠标和触摸的问题一. 背景在使用迅为提供的QT4.7的时候,鼠标可以正常使用,有触摸但是触摸会出现问题。尤其是在左右滑动qt界面的时候,总是会出现往左滑动,画面急速往右走,然而往右滑动,画面急速的往左走... 查看详情

嵌入式-迅为itop-4418开发板flash空间问题

我的4418开发板是4G版本16G存储空间的。u-boot和文件系统、内核都是光盘自带的,进入linux系统之后我使用df-h命令看到的存储空间不对,我用U盘做了测试:u盘里面放1G的内容往arm开发板上面cp结果cp到一定时间时候,就提示“设备... 查看详情

嵌入式开发首选迅为i.mx6开发板高稳定工业级设计

北京迅为电子有限公司专业提供ARM开发板,嵌入式开发板,三星4412开发板,三星4418开发板,八核6818开发板,飞思卡尔I.MX6开发板,三星4412核心板,exynos4412开发板及面向客户指定完整的解决方案服务迅为-i.MX6开发板是采用FreescaleCortex-A9四... 查看详情

迅为4418开发板怎么样?标配2g大内存,16g的flash,另有4mb的eeprom

迅为4418开发板的优势:我们能做到的 一、配有GPS模块二、有重力加速度计三、标配2G大内存,16G的FLASH,另有4MB的EEPROM -------------------------------------------------------------------存储:搭载1G  DDR3内存(可选2G),16GEMMC存储... 查看详情

迅为4418开发板qt移植移动4g模块第二部分

第一部分:http://www.cnblogs.com/topeet/p/6509248.html 第二部分:5.ping不通域名一般是DNS没有设置对造成的。在etc下有一个文件resolv.conf 。这个文件是用来放DNS的。就是这个里面的域名没有设置对。然而在eth0的运行脚本里强制性... 查看详情

itop-6818开发板支持axp228电源管理[官方推荐最佳匹配]_支持动态调频

iTOP-6818开发板与4418开发板共兼容同一底板:核心板::::::尺寸50mm*60mm高度核心板连接器组合高度1.5mmPCB层数6层PCB沉金设计4418CPUARMCortex-A9四核S5P4418处理器1.4GHz6818CPUARMCortex-A53八核S5P6818处理器1.4GHz内存1GBDDR3(2GB可选)存储16... 查看详情

研发小课堂丨ok4418/6818电路设计中电感的选型

OK4418/6818开发板有多种供电模式可以选择,但由于使用单DC供电,开发板作为device插拔OTG时,会导致系统重启。所以飞凌底板选择了使用模拟锂电池的方案进行设计。今天小编就基于OK4418/6818开发板使用的DCDC芯片TPS5432... 查看详情

迅为-arm嵌入式开发一体化工业9.7寸屏幕平板式智能触控屏

产品名称:迅为9.7寸IPS高清屏幕适用于:【iTOP-4412精英版】【iTOP-4412全能版】【iTOP-4418开发板】【迅为-iMX6开发板】分辨率:1024*768 触摸屏类型:电容屏(五点触摸) 接线方式: FPC(也可以通过类似HDMI线方式连接)&... 查看详情

arm核心板,三星方案商s5p4418工控产品

产品简介Gbox4418卡片电脑尺寸,差不多只是G4418开发板的三分之一,但它的功能相对于G4418开发板是有过之而无不及,几乎包括了G4418开发板所有外设功能,而且还板载VGA,USBWIFI/BT二合一模块,等;软件上,Gbox4418和G4418开发板几... 查看详情

4418开发板和4412开发板的区别在哪里

...习的话,4412开发板足够了,早上市的板子,资料足够多迅为iTOP-4418开发板面向产品研发支持动态调频,AXP228电源管理,低功耗运行系统支持:Android4.4/5.1.1、Linux3.4.39、QT2.2/4.7/5.7、Ubuntu12.04内存:1GBDDR3(2GB)存储:16GB存储EMMC;4M... 查看详情