你好,
我准备移植最新版本的u-boot,现在u-boot已经可以跑起来了,如log所示:
U-Boot 2015.04-14469-gd3ef2ab-dirty (Apr 21 2016 - 01:50:53)
CPU: Freescale i.MX6Q rev1.5 at 792 MHz
CPU: Temperature 24 C
Reset cause: POR
Board: MX6-SabreSD
I2C: ready
DRAM: 3.8 GiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2, FSL_SDHC: 3
No panel detected: default to Hannstar-XGA
Display: Hannstar-XGA (1024x768)
In: serial
Out: serial
Err: serial
switch to partitions #0, OK
mmc0(part 0) is current device
Net: Phy 1 not found
PHY reset timed out
FEC [PRIME]
Normal Boot
Hit any key to stop autoboot: 0
=>
我现在想实现u-boot启动logo,我们的board使用的是samsung的LTM230HL08屏,这是屏的资料:【三星液晶屏LTM230HL08概况】-全球液晶屏交易中心-屏库
下面这个是借口的电路图:
现在我做的工作是在include/configs/mx6sabresd.h文件中:
94 #define CONFIG_SPLASH_SCREEN
95 #define CONFIG_CMD_BMP
96 #define CONFIG_LCD
97 /* #define CONFIG_MXC_EPDC */
98
99 /*
100 * SPLASH SCREEN Configs
101 */
102 #if defined(CONFIG_SPLASH_SCREEN) && defined(CONFIG_MXC_EPDC)
103 /*
104 * Framebuffer and LCD
105 */
106 #define CONFIG_CMD_BMP
107 #define CONFIG_LCD
108 #define CONFIG_SYS_CONSOLE_IS_IN_ENV
109 #undef LCD_TEST_PATTERN
110 /* #define CONFIG_SPLASH_IS_IN_MMC 1 */
111 #define LCD_BPP LCD_MONOCHROME
112 /* #define CONFIG_SPLASH_SCREEN_ALIGN 1 */
113
114 #define CONFIG_WAVEFORM_BUF_SIZE 0x200000
115 #endif /* CONFIG_SPLASH_SCREEN && CONFIG_MXC_EPDC */
116
117 #endif /* __MX6QSABRESD_CONFIG_H */
打开了上面红色部分的宏,我是不是我是不是要打开CONFIG_MXC_EPDC宏呢,这个宏是干什么的。是不是只用打开CONFIG_SPLASH_SCREEN宏就可以了呢?因为在board/freescale/mx6sabresd/mx6sabresd.c文件中发现有好的定义了这个:
#if defined(CONFIG_MX6DL) && defined(CONFIG_MXC_EPDC)
vidinfo_t panel_info = {
.....
....
#endif
等于说要同事定义CONFIG_MX6DL宏才能用panel_info。如果我定义了上面的:
94 #define CONFIG_SPLASH_SCREEN
95 #define CONFIG_CMD_BMP
96 #define CONFIG_LCD
在编译的时候又会出现错误:
LDS u-boot.lds
LD u-boot
common/built-in.o: In function `lcd_get_size':
/home/fulinux/uboot-imx/common/lcd.c:138: undefined reference to `panel_info'
common/built-in.o: In function `lcd_clear':
/home/fulinux/uboot-imx/common/lcd.c:175: undefined reference to `lcd_setcolreg'
/home/fulinux/uboot-imx/common/lcd.c:176: undefined reference to `lcd_setcolreg'
/home/fulinux/uboot-imx/common/lcd.c:177: undefined reference to `lcd_setcolreg'
/home/fulinux/uboot-imx/common/lcd.c:178: undefined reference to `lcd_setcolreg'
/home/fulinux/uboot-imx/common/lcd.c:179: undefined reference to `lcd_setcolreg'
common/built-in.o:/home/fulinux/uboot-imx/common/lcd.c:180: more undefined references to `lcd_setcolreg' follow
common/built-in.o: In function `lcd_clear':
/home/fulinux/uboot-imx/common/lcd.c:227: undefined reference to `panel_info'
common/built-in.o: In function `lcd_init':
/home/fulinux/uboot-imx/common/lcd.c:252: undefined reference to `lcd_ctrl_init'
/home/fulinux/uboot-imx/common/lcd.c:268: undefined reference to `lcd_enable'
common/built-in.o: In function `lcd_set_cmap':
/home/fulinux/uboot-imx/common/lcd.c:566: undefined reference to `panel_info'
common/built-in.o: In function `lcd_display_bitmap':
/home/fulinux/uboot-imx/common/lcd.c:717: undefined reference to `panel_info'
我很好奇,在
struct display_info_t const displays[] = {{
762 .bus = -1,
763 .addr = 0,
764 .pixfmt = IPU_PIX_FMT_RGB666,
765 .detect = NULL,
766 .enable = enable_lvds,
767 .mode = {
768 .name = "Hannstar-XGA",
769 .refresh = 60,
770 .xres = 1024,
771 .yres = 768,
772 .pixclock = 15385,
773 .left_margin = 220,
774 .right_margin = 40,
775 .upper_margin = 21,
776 .lower_margin = 7,
777 .hsync_len = 60,
778 .vsync_len = 10,
779 .sync = FB_SYNC_EXT,
780 .vmode = FB_VMODE_NONINTERLACED
781 } }, {
结构体中定义了这些项,还需要panel_info,以及lcd的初始化吗?
目前displays结构体我还没有修改,在内核中这个设置是不是可以参考一下:
linux/drivers/video/mxc/ldb.c:
static struct fb_videomode ldb_modedb[] = {
107 { "WXGA", 60, 1680, 1048, 6848,//6848
108 280, 104, //280, 104
109 30, 3, //30, 3
110 176, 6,//176,6
111 FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
112 FB_VMODE_NONINTERLACED,
113 FB_MODE_IS_DETAILED,},
114 {
115 "LDB-WXGA", 60, 1280, 800, 14065,
116 40, 40,
117 10, 3,
118 80, 10,
119 0,
120 FB_VMODE_NONINTERLACED,
121 FB_MODE_IS_DETAILED,},
122 {
123 "LDB-XGA", 60, 1024, 768, 15385,
。。。
我在board/freescale/mx6sabresd/mx6sabresd.c文件中发现了好的epdc关键字的函数,这个是什么,和我这个lvds屏有关系吗?
说的内容很乱,现在大脑也是很纠结。希望你们能提供一点指导下的建议和帮助,有没有什么参考下的文档呢。
期待你的回复。
Hi,
About the u-boot logo you can refer to the thread in our community: Patch to support uboot logo keep from uboot to kernel for NXP Linux and Android BSP (HDMI, LCD and L... .
And the LVDS screen porting you can refer to Porting LVDS LCD With Low Resolution to i.MX6 .
Here you need to porting the screen to your board first and then do the u-boot logo. Hope this can help you.
Have a great day,
Dan
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Mark Correct button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
94 #define CONFIG_SPLASH_SCREEN
95 /* #define CONFIG_MXC_EPDC */
CONFIG_MXC_EPDC这个宏需不需要打开,需不需要定义panel_info数据结构体。
你好,
你发给我的这些信息我看了,我是最新版本的imx_v2015.04_4.1.15_1.0.0_ga,这个也需要打补丁?目前我使能了DEBUG宏,打印的log:
fulinux in stido_add_devices
fulinux 1 in drv_video_init
fulinux No panel detected: default to SAMSUNG-LTM230HL08
Display: SAMSUNG-LTM230HL08 (1920x1080)
fulinux 2 in drv_video_init
ipu_clk = 264000000
ldb_clk[0] = 65000000
ldb_clk[1] = 65000000
read BS_CLKGEN0 div:0, final_rate:4224000000, prate:264000000
read BS_CLKGEN0 div:0, final_rate:4224000000, prate:264000000
IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
mxcfb_init_fbinfo: 4 640 112 524
Framebuffer structures at: fbi=0xfef3b638 mxcfbi=0xfef3b848
allocated fb @ paddr=0xFEF40B80, size=8294400.
Channel already disabled 9
Channel already uninitialized 9
setup_disp_channel1 called
bpp_to_pixfmt: 16
init channel = 9
pixclock = 83001000 Hz
panel size = 1920 x 1080
pixel clk = 83001000Hz
setup_disp_channel2: 95ffcff 1920 1080 3840 fef40b80 ff335380
bpp_to_pixfmt: 16
initializing idma ch 23 @ 027005c0
IPU DMFC DP HIGH RES: 1(0,1), 5B(2~5), 5F(6,7)
ch 23 word 0 - 00000000 00000000 00000000 E0001800 0010DCEF
ch 23 word 1 - 1FE66A70 03FBD02E 20E3C000 F2C3BFC0 00082CA0
PFS 0x7, BPP 0x3, NPB 0xf
FW 1919, FH 1079, Stride 3839
Width0 4+1, Width1 5+1, Width2 4+1, Width3 7+1, Offset0 0, Offset1 5, Offset2 11, Offset3 16
IPU_CONF = 0x00000660
IDMAC_CONF = 0x0000002F
IDMAC_CHA_EN1 = 0x00800000
IDMAC_CHA_EN2 = 0x00000000
IDMAC_CHA_PRI1 = 0x18800000
IDMAC_CHA_PRI2 = 0x00000000
IPU_CHA_DB_MODE_SEL0 = 0x00800000
IPU_CHA_DB_MODE_SEL1 = 0x00000000
DMFC_WR_CHAN = 0x00000090
DMFC_WR_CHAN_DEF = 0x202020F6
DMFC_DP_CHAN = 0x0000968A
DMFC_DP_CHAN_DEF = 0x2020F6F6
DMFC_IC_CTRL = 0x00000002
IPU_FS_PROC_FLOW1 = 0x00000000
IPU_FS_PROC_FLOW2 = 0x00000000
IPU_FS_PROC_FLOW3 = 0x00000000
IPU_FS_DISP_FLOW1 = 0x00000000
Framebuffer at 0xfef40b80
Video: Drawing the logo ...
fulinux vido_logo
fulinux go logo_plot
fulinux go board_cfb_skip
fulinux here 1
代码:
2244 #ifdef CONFIG_VIDEO_LOGO
2245 /* Plot the logo and get start point of console */
2246 debug("Video: Drawing the logo ...\n");
2247 printf ("fulinux vido_logo\n");
2248 video_console_address = video_logo();
说明已经走了正常的逻辑去显示logo,应该在我的屏幕上显示u-boot的版本信息字符串的,但是显示屏一片漆黑,是不是电源引脚和和其他硬件设置的不对,
在u-boot中哪里设置lvds屏的引脚?