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

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

时间: 2024-08-28 20:39:47

迅为4418开发板/6818开发板教你如何修改屏幕的相关文章

嵌入式开发 迅为iTOP-4418/6818开发板最新资料介绍

iTOP-4418开发板无缝兼容6818平台,是北京迅为电子有限公司研发设计的一款开发板平台,核心板尺寸小,引出脚多,能够帮助工程师们快速开发新产品. 行业应用:iTOP-4418开发板/6818开发板可广泛适用于工控.智能家居.医疗.多媒体.安防.车载.金融.消费电子.手持设备.显示控制.教学.电力.通讯等领域. 产品特点: 1.三星S5P四核4418与8核6818完美兼容2.独家提供1G和2G内存版本,全机器焊接,杜绝手工,批量无忧3.核心板支持电池管理,充放电电路与电量计,适于手持应用4.

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

迅为4418开发板无缝兼容6818平台,是北京迅为电子有限公司研发设计的一款开发板平台,核心板尺寸小,引出脚多,能够帮助工程师们快速开发新产品. 行业应用:iTOP-4418开发板/6818开发板可广泛适用于工控.智能家居.医疗.多媒体.安防.车载.金融.消费电子.手持设备.显示控制.教学.电力.通讯等领域. 产品特点: 1.三星S5P四核4418与8核6818完美兼容2.独家提供1G和2G内存版本,全机器焊接,杜绝手工,批量无忧3.核心板支持电池管理,充放电电路与电量计,适于手持应用4.核心板

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

6818核心板与4418核心板兼容同一底板 核心板:经过大批量检验的核心板连接方式,更优的排列,更放心的连接性能. 六层PCB沉金设计,紧凑精致,解决电磁兼容,达到成本与性能的完美统一,更加技高一筹.核心板通过设计阶段的电磁兼容测试,高低温环境适应实验等. 6818开发板(基本型): 6818开发板(豪华型): 支持选配模块: RFID模块,VGA模块,CAN/RS485模块,继电器模块,500万摄像头,USB摄像头,USB转串转接头等. 应用行业: 规格参数:   核心板 尺寸:50mm*60

迅为6818开发板Ubuntu系统下CAN 测试使用文档

平台:iTOP-6818开发板系统:Ubuntu12.04主要是在 Ubuntu 系统环境下 iTOP-4418 和 6818 的 CAN 实验调试步骤.给用户提供了"can_libs.rar"."can_libs_more.zip"."can_tools.zip"和"can_test.zip"压缩包,分别是 can 工具需要的库文件.can 工具二进制文件以及 can 实验Qt 源码.CAN 是 Controller Are

迅为4418开发板怎么样?标配2G大内存,16G的FLASH,另有4MB的EEPROM

迅为4418开发板的优势:我们能做到的 一.配有GPS模块二.有重力加速度计三.标配2G大内存,16G的FLASH,另有4MB的EEPROM -------------------------------------------------------------------存储:搭载1G  DDR3 内存(可选2G),16G EMMC存储核心板:扩展引脚多大320个,实测-20℃到+80℃之间稳定运行 接口:支持全网通4G模块.GPS模块.WIFI模块.千兆以太网.重力加速计.AD.CAMER

迅为顶级四核开发板 Exynos4412开发板,仅售560元

业内公认最强四核 藐视一切挑战 ●四核CPU  ●四核GPU  ●双通道内存  ●HKMG技术  ●超级性能  ●至佳稳定  ●供货周期长 Exynos 4412处理器成功应用于三星GALAXY S3,联想K860,魅族MX2等热门产品当中,并取得巨大成功.出色的功耗控制以及超强的性能一直为业内称道,超过5000万片的出货量,足以证明其稳定性与可用性.已成为三星官方重点推广的处理器之一,并承诺长期供货. 超强的性能 iTOP-4412精英版搭载三星Exynos四核处理器,配备1GB内存,4GB固

迅为震撼推出iTOP-4412精英版|Cortex-A9开发板|ARM开发板|嵌入式开发板

最强四核Cortex-A9开发板迅为iTOP-4412精英版震撼推出,仅售560元 业内公认最强四核 藐视一切挑战 ●四核CPU  ●四核GPU  ●双通道内存  ●HKMG技术  ●超级性能  ●至佳稳定  ●供货周期长 Exynos 4412处理器成功应用于三星GALAXY S3,联想K860,魅族MX2等热门产品当中,并取得巨大成功.出色的功耗控制以及超强的性能一直为业内称道, 超过5000万片的出货量,足以证明其稳定性与可用性.已成为三星官方重点推广的处理器之一,并承诺长期供货. 超强的

【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | 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 开发

2014年天嵌最新开发板——TQ210V6开发板正式发售

2014年10月23日,广州天嵌计算机科技有限公司最新研发的S5PV210系列——TQ210V6开发板与TQ210coreD核心板将正式发售.此次,天嵌发布的TQ210V6开发板将重新设计部分的配置与端口,整体的设计工艺得到全面的提升,致力为广大天嵌客户提供高性能低成本的嵌入式开发板. 此次,TQ210coreD核心板的接口形式是插针,相对TQ210coreB核心板的接口形式——B2B,插针速度更快.另外,TQ210V6开发板新增MIPI端口. 10月23日,TQ210V6开发板完成开发板的调试