Hi TI FAEs,
我以前用的是AM3358ZCZ (Silicon verion 1.0, 跑的是720MHz), 现用的是AM3352BZCZ60 (Silicon version 2.1, 跑的是600MHz)。
同样的程序,同样的电路板,现在出现画面向左偏移,以前用AM3358时没有这个问题:
1. 第一次上电,LCD画面向左偏移;
2. 断电15秒, 重上电,LCD显示正常;
3. 又断电20秒,重上电,LCD画面向左偏移;
4. 就是说断电间隔小于15秒,LCD显示正常;断电间隔大于20s,LCD显示左偏移。
5. 另外,如上电画面左移,但其它功能正常(如通讯,触摸屏等);
6. 我没用操作系统,我是基于starterwarefree,跑的是embos + emWin。
我进行仿真,发现的Frame sync lost, 我按照
processors.wiki.ti.com/.../DA8xx_LCDC_Linux_FB_FAQs 上的
Flicker due to underflow error
- Apply below patch:
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index 0f96b40..3bc7104 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -821,8 +821,8 @@ static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg)
u32 stat = lcdc_read(LCD_MASKED_STAT_REG);
u32 reg_int;
- if ((stat & LCD_SYNC_LOST) && (stat & LCD_FIFO_UNDERFLOW)) {
- printk(KERN_ERR "LCDC sync lost or underflow error occured\n");
+ if ((stat & LCD_SYNC_LOST) || (stat & LCD_FIFO_UNDERFLOW)) {
++ printk(KERN_ERR "LCDC sync lost or underflow error occured 0x%x\n", lcdc_read(LCD_RAW_STAT_REG));
lcd_disable_raster(NO_WAIT_FOR_FRAME_DONE);
lcdc_write(stat, LCD_MASKED_STAT_REG);
lcd_enable_raster();
- Occasional underflow errors were seen on playing mp4 video with mplayer mostly on start and stop of mplayer.
- Issue is not observed on revision 1.2 of AM335x EVM.
- Underflow errors reduced on configuring th_fifo_ready to max(512 bytes)
- Issue disappears on configuring PR_OLD_COUNT field in the EMIF control register(OCP config) to value close to zero.
- Tuning of dma_master_prio in dma_master control register doesnot help.
- L3 level initiator priority control – keep LCDC at higher priority. From U-boot
#mw 44e1060c 00c00000 from uboot prompt
- mreqprio_0 register setting (The MREQPRIO register provides an interface to change the access priorities for the various masters
accessing the EMIF(DDR). Software can make use of this register to set the requestor priorities for required EMIF arbitration.) From U-boot.
#mw 44e10670 44444477
- Put LCD into Connection ID to Class of Service 1 Mapping Register
REG_CONNID_COS_1_MAP_EN ==> set to 1 to enable REG_CONNID_1_COS_1 ==> LCDC (0x9) REG_MSK_1_COS_1 ==> 0 (Disable masking, have only LCDC)
Also raise REG_COS_COUNT_1 priority in OCP_config: value 0x10.
因我用的不是linux,我按上面要求移植到我的uboot和应用程序。 问题同样存在, 没有得到解决。
Best regards
希望得到你们的回复!!!