This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于uboot移植LCD驱动,调试过程卡死问题?



 我在uboot阶段自己添加Lcd驱动,步骤如下:

1.lcd端口配置,(board/ti/mux.c)

static struct module_pin_mux lcd_pin_mux[] = {
 {OFFSET(lcd_data0), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data1), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data2), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data3), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data4), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data5), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data6), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data7), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data8), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data9), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data10), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data11), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data12), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data13), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data14), (MODE(0) | PULLUDDIS)}, 
 {OFFSET(lcd_data15), (MODE(0) | PULLUDDIS)}, 
 
 {OFFSET(lcd_vsync), (MODE(0))}, 
 {OFFSET(lcd_hsync), (MODE(0))}, 
 {OFFSET(lcd_pclk), (MODE(0))}, 
 {OFFSET(lcd_ac_bias_en), (MODE(0))}, 
 {-1},
};

  configure_module_pin_mux(lcd_pin_mux);

2.am335x_evm.h里面添加关于LCD驱动的宏

#define CONFIG_VIDEO
#define CONFIG_VIDEO_DA8XX
#define CONFIG_CFB_CONSOLE
#define CONFIG_CMD_BMP
#define DAVINCI_LCD_CNTL_BASE  0x4830E000
#define CONFIG_SYS_CONSOLE_IS_IN_ENV
#define VIDEO_TSTC_FCT          serial_tstc
#define VIDEO_GETC_FCT          serial_getc
#define VIDEO_KBD_INIT_FCT      0
#define CONFIG_VIDEO_LOGO

3.修改LCD屏参数(drivers/video/da8xx-fb.c)

static const struct display_panel disp_panel = {
 WVGA,
 32,
 8,
 COLOR_ACTIVE,
};

static const struct lcd_ctrl_config lcd_cfg = {
 &disp_panel,
 .ac_bias  = 255,
 .ac_bias_intrpt  = 0,
 .dma_burst_sz  = 16,
 .bpp   = 16,
 .fdd   = 255,
 .tft_alt_mode  = 0,
 .stn_565_mode  = 0,
 .mono_8bit_mode  = 0,
 .invert_line_clock = 1,
 .invert_frm_clock = 1,
 .sync_edge  = 0,
 .sync_ctrl  = 1,
 .raster_order  = 0,
};

4.编译uboot,

5.烧写运行,打印调试查看,运行卡死下面语句

static inline void lcd_disable_raster(void)
{
 u32 reg;
 printf("debug test1!\n")
 reg = lcdc_read(&da8xx_fb_reg_base->raster_ctrl);//在该语句卡死,没有下条打印,所有的 lcdc_read()与lcdc_write()均卡住,
 
 printf("debug test2!\n")
 if (reg & LCD_RASTER_ENABLE)
  lcdc_write(reg & ~LCD_RASTER_ENABLE,
   &da8xx_fb_reg_base->raster_ctrl);
}

我怀疑是

video_hw_init初始化时, da8xx_fb_reg_base = (struct da8xx_lcd_regs *)DAVINCI_LCD_CNTL_BASE;的DAVINCI_LCD_CNTL_BASE地址我查看am335x的芯片手册为0x4830E000),请问是什么原因导致调用lcdc_read()时,芯片就再也没有网下打印出调试信息,是卡死了还是什么其他原因?