当前位置:   article > 正文

Buildroot显示uboot logo_buildroot如何配置启动系统带logo图片

buildroot如何配置启动系统带logo图片

根据之前的开机现象,uboot部分没有开机logo

 1、Makefile配置

查看一下u-boot/tools/Makefile是否都有如下配置

  1. # Enable all the config-independent tools
  2. ifneq ($(HOST_TOOLS_ALL),)
  3. CONFIG_LCD_LOGO = y
  4. CONFIG_CMD_LOADS = y
  5. CONFIG_CMD_NET = y
  6. CONFIG_XWAY_SWAP_BYTES = y
  7. CONFIG_NETCONSOLE = y
  8. CONFIG_SHA1_CHECK_UB_IMG = y
  9. CONFIG_ARCH_SUNXI = y
  10. endif
  1. # Generated LCD/video logo
  2. LOGO_H = $(objtree)/include/bmp_logo.h
  3. LOGO_DATA_H = $(objtree)/include/bmp_logo_data.h
  4. LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_H)
  5. LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_DATA_H)
  6. LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_H)
  7. LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_DATA_H)
  8. # Generic logo
  9. ifeq ($(LOGO_BMP),)
  10. LOGO_BMP= $(srctree)/$(src)/logos/denx.bmp
  11. # Use board logo and fallback to vendor
  12. ifneq ($(wildcard $(srctree)/$(src)/logos/$(BOARD).bmp),)
  13. LOGO_BMP= $(srctree)/$(src)/logos/$(BOARD).bmp
  14. else
  15. ifneq ($(wildcard $(srctree)/$(src)/logos/$(VENDOR).bmp),)
  16. LOGO_BMP= $(srctree)/$(src)/logos/$(VENDOR).bmp
  17. endif
  18. endif
  19. endif # !LOGO_BMP

 这些都是默认的,并没有修改,而且u-boot显示的logo在kernel/logo.bmp,文件名在kernel的dts配置

2、跑u-boot时没有检测到dsi配置

  1. boot mode: None
  2. Found DTB in boot part
  3. DTB: rk-kernel.dtb
  4. HASH(c): OK
  5. I2c0 speed: 400000Hz
  6. PMIC: RK808
  7. vdd_center 900000 uV
  8. vdd_cpu_l 900000 uV
  9. vdd_log 1100000 uV
  10. I2c8 speed: 100000Hz
  11. panel_i2c_reg_read fail, i = 0 reg = 80 ret = -121
  12. panel_i2c_reg_read fail, i = 1 reg = 80 ret = -121
  13. panel_i2c_reg_read fail, i = 2 reg = 80 ret = -121
  14. panel_i2c_reg_read fail, i = 3 reg = 80 ret = -121
  15. panel_i2c_reg_read fail, i = 0 reg = 4 ret = -121
  16. panel_i2c_reg_read fail, i = 1 reg = 4 ret = -121
  17. panel_i2c_reg_read fail, i = 2 reg = 4 ret = -121
  18. panel_i2c_reg_read fail, i = 3 reg = 4 ret = -121
  19. rockchip_display_probe rpi_buffer=-121 powertip_buffer=-121
  20. rockchip_display_probe: no dsi panel connected
  21. Could not find baseparameter partition
  22. Model: ASUS Tinker Board 2/2S
  23. read_bmp_header:BMP singature incorrectly 0x9d 0x27load_bmp_logo 42 4d bit_count=8 width=258 height=94 file_size=2d40
  24. Rockchip UBOOT DRM driver version: v1.0.1
  25. hdmi@ff940000 disconnected

 在网上有些源码没有这段代码,先把continue屏蔽一下,继续往下跑

  1. diff --git a/drivers/video/drm/rockchip_display.c b/drivers/video/drm/rockchip_display.c
  2. index 6fcedcdfe6..a70bc02087 100644
  3. --- a/drivers/video/drm/rockchip_display.c
  4. +++ b/drivers/video/drm/rockchip_display.c
  5. @@ -507,6 +507,7 @@ static int display_get_timing_from_dts(struct panel_state *panel_state,
  6. struct rockchip_panel *panel = panel_state->panel;
  7. int phandle;
  8. ofnode timing, native_mode;
  9. + printf("rpi_panel_connected=%d, powertip_panel_connected=%d\n", rpi_panel_connected, powertip_panel_connected);
  10. timing = dev_read_subnode(panel->dev, "display-timings");
  11. if (rpi_panel_connected) {
  12. @@ -1776,8 +1777,11 @@ static int rockchip_display_probe(struct udevice *dev)
  13. return -ENODEV;
  14. ofnode_for_each_subnode(node, route_node) {
  15. - if (!ofnode_is_available(node))
  16. + if (!ofnode_is_available(node)) {
  17. + printf("rockchip_display_probe node.np->name=%s is not available\n", node.np->name);
  18. continue;
  19. + }
  20. + printf("rockchip_display_probe node.np->name=%s\n", node.np->name);
  21. if (!strncmp(node.np->name, "route-dsi", 9)) {
  22. struct udevice *powertip_dev;
  23. struct udevice *rpi_dev;
  24. @@ -1789,7 +1793,7 @@ static int rockchip_display_probe(struct udevice *dev)
  25. i2c_get_chip_for_busnum(0x8, 0x36, 1, &powertip_dev);//powertip
  26. powertip_buffer = panel_i2c_reg_read(powertip_dev, 0x4);
  27. - printf("rockchip_display_probe rpi_buffer=%d powertip_buffer=%d\n",rpi_buffer, powertip_buffer);
  28. + printf("rockchip_display_probe rpi_buffer=%x powertip_buffer=%x\n",rpi_buffer, powertip_buffer);
  29. if (rpi_buffer == 0xDE || rpi_buffer == 0xC3) {
  30. rpi_panel_connected = true;
  31. @@ -1799,7 +1803,7 @@ static int rockchip_display_probe(struct udevice *dev)
  32. if (!powertip_panel_connected && !rpi_panel_connected) {
  33. printf("rockchip_display_probe: no dsi panel connected\n");
  34. - continue;
  35. + //continue;
  36. }
  37. }

 3、dw_mipi_dsi.c

  1. rockchip_display_probe node.np->name=route-hdmi
  2. rockchip_display_probe node.np->name=route-dsi
  3. I2c8 speed: 100000Hz
  4. panel_i2c_reg_read fail, i = 0 reg = 80 ret = -121
  5. panel_i2c_reg_read fail, i = 1 reg = 80 ret = -121
  6. panel_i2c_reg_read fail, i = 2 reg = 80 ret = -121
  7. panel_i2c_reg_read fail, i = 3 reg = 80 ret = -121
  8. panel_i2c_reg_read fail, i = 0 reg = 4 ret = -121
  9. panel_i2c_reg_read fail, i = 1 reg = 4 ret = -121
  10. panel_i2c_reg_read fail, i = 2 reg = 4 ret = -121
  11. panel_i2c_reg_read fail, i = 3 reg = 4 ret = -121
  12. rockchip_display_probe rpi_buffer=ffffff87 powertip_buffer=ffffff87
  13. rockchip_display_probe: no dsi panel connected
  14. panel_i2c_reg_read fail, i = 0 reg = 80 ret = -121
  15. panel_i2c_reg_read fail, i = 1 reg = 80 ret = -121
  16. panel_i2c_reg_read fail, i = 2 reg = 80 ret = -121
  17. panel_i2c_reg_read fail, i = 3 reg = 80 ret = -121
  18. panel_i2c_reg_read fail, i = 0 reg = 4 ret = -121
  19. panel_i2c_reg_read fail, i = 1 reg = 4 ret = -121
  20. panel_i2c_reg_read fail, i = 2 reg = 4 ret = -121
  21. panel_i2c_reg_read fail, i = 3 reg = 4 ret = -121
  22. dw_mipi_dsi_child_pre_probe rpi_buffer=-121 powertip_buffer=-121
  23. rockchip_display_probe node.np->name=route-edp is not available
  24. Could not find baseparameter partition
  25. Model: ASUS Tinker Board 2/2S
  26. read_bmp_header:BMP singature incorrectly 0x9d 0x27load_bmp_logo 42 4d bit_count=8 width=258 height=94 file_size=2d40
  27. Rockchip UBOOT DRM driver version: v1.0.1
  28. hdmi@ff940000 disconnected
  29. rpi_panel_connected=0, powertip_panel_connected=1
  30. Using display timing dts
  31. dsi@ff960000: detailed mode clock 66800 kHz, flags[a]
  32. H: 0720 0728 0783 0838
  33. V: 1280 1288 1308 1328
  34. bus_format: 100e
  35. final DSI-Link bandwidth: 504 Mbps x 2
  36. panel_simple_prepaer

看log跑到了dw_mipi_dsi_child_pre_probe

对powertip_buffer的判断不完整导致获取到的timing参数不对,屏幕显示如下

修改powertip_buffer的判断

  1. diff --git a/drivers/video/drm/dw_mipi_dsi.c b/drivers/video/drm/dw_mipi_dsi.c
  2. index 370948a3c8..2c17939363 100644
  3. --- a/drivers/video/drm/dw_mipi_dsi.c
  4. +++ b/drivers/video/drm/dw_mipi_dsi.c
  5. @@ -1732,7 +1732,7 @@ static int dw_mipi_dsi_child_pre_probe(struct udevice *dev)
  6. device->lanes = 1;
  7. device->format = MIPI_DSI_FMT_RGB888;
  8. device->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |MIPI_DSI_MODE_LPM;
  9. - } else if ((powertip_buffer & 0xF0) == 0x80) {
  10. + } else if ((powertip_buffer > 0) && (powertip_buffer & 0xF0) == 0x80) {
  11. powertip_panel_connected = true;
  12. powertip_id = powertip_buffer;
  13. device->lanes = 2;

4、运行正常

buildroot显示uboot logo

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/899318
推荐阅读
相关标签
  

闽ICP备14008679号