天嵌 ARM开发社区

 找回密码
 注册
查看: 3613|回复: 5

TQ2440裸机程序之4.3寸屏显示问题

[复制链接]
wangshenbo 发表于 2013-1-17 14:51:38 | 显示全部楼层 |阅读模式
我写了一个裸机程序,里面有4张图片,用来作为界面,把程序烧进TQ2440后,如果不关电源直接切换至Nand模式并按复位键重新运行,图片能够正常显示,界面切换也正确,但是关掉电源,再打开电源(在nand模式下),就有两张图片显示正常,两显示不正常:一张变成了白屏,另一张一部分变成了白屏;其它的正常,界面能正常切换。这是什么原因呢??想了很久,但没有结果,我是用TQ2440的测试程序改的,能够从nand自启动的。
有哪位大牛知道吗??求求助啊!!不胜感激!!
embedsky_lhh 发表于 2013-1-17 15:22:30 | 显示全部楼层
nand.c中改下 nand拷贝镜像大小,把那个size 1M改成2M或者更大试试
 楼主| wangshenbo 发表于 2013-1-17 15:39:24 | 显示全部楼层
embedsky_lhh 发表于 2013-1-17 15:22
nand.c中改下 nand拷贝镜像大小,把那个size 1M改成2M或者更大试试

#define NEED_EXT_ADDR                        1 ????是这个吗
 楼主| wangshenbo 发表于 2013-1-17 15:43:26 | 显示全部楼层
wangshenbo 发表于 2013-1-17 15:39
#define NEED_EXT_ADDR                        1 ????是这个吗

我刚开始学arm!对nand不太了解!

#ifndef __NAND_H
#define __NAND_H

#define NUM_BLOCKS                        0x1000        //  64 MB Smartmedia card.
#define SECTOR_SIZE                        512
#define SPARE_SIZE                        16
#define PAGES_PER_BLOCK                        32

//  For flash chip that is bigger than 32 MB, we need to have 4 step address
//  
#define NFCONF_INIT                        0xF830  // 512-byte 4 Step Address
#define NEED_EXT_ADDR                        1
//#define NFCONF_INIT                        0xA830  // 256-byte 4 Step Address
//#define NEED_EXT_ADDR                        0

//#define NFCONF_INIT                        0xF840

//  NAND Flash Command. This appears to be generic across all NAND flash chips
#define CMD_READ                        0x00        //  Read
#define CMD_READ1                        0x01        //  Read1
#define CMD_READ2                        0x50        //  Read2
#define CMD_READ3                        0x30        //  Read3
#define CMD_READID                        0x90        //  ReadID
#define CMD_WRITE1                        0x80        //  Write phase 1
#define CMD_WRITE2                        0x10        //  Write phase 2
#define CMD_ERASE1                        0x60        //  Erase phase 1
#define CMD_ERASE2                        0xd0        //  Erase phase 2
#define CMD_STATUS                        0x70        //  Status read
#define CMD_RESET                        0xff        //  Reset

//  Status bit pattern
#define STATUS_READY                        0x40        //  Ready
#define STATUS_ERROR                        0x01        //  Error

//  Status bit pattern
#define STATUS_READY                        0x40
#define STATUS_ERROR                        0x01

#define NF_CMD(cmd)                        {rNFCMD  = (cmd); }
#define NF_ADDR(addr)                        {rNFADDR = (addr); }       
#define NF_nFCE_L()                        {rNFCONT &= ~(1<<1); }
#define NF_nFCE_H()                        {rNFCONT |= (1<<1); }
#define NF_RSTECC()                        {rNFCONT |= (1<<4); }
#define NF_RDMECC()                        (rNFMECC0 )
#define NF_RDSECC()                        (rNFSECC )
#define NF_RDDATA()                        (rNFDATA)
#define NF_RDDATA8()                        (rNFDATA8)
#define NF_WRDATA(data)                        {rNFDATA = (data); }
#define NF_WAITRB()                        {while(!(rNFSTAT&(1<<0)));}
#define NF_CLEAR_RB()                        {rNFSTAT |= (1<<2); }
#define NF_DETECT_RB()                        {while(!(rNFSTAT&(1<<2)));}
#define NF_MECC_UnLock()                {rNFCONT &= ~(1<<5); }
#define NF_MECC_Lock()                        {rNFCONT |= (1<<5); }
#define NF_SECC_UnLock()                {rNFCONT &= ~(1<<6); }
#define NF_SECC_Lock()                        {rNFCONT |= (1<<6); }

#define        RdNFDat8()                        (rNFDATA8)        //byte access
#define        RdNFDat()                        RdNFDat8()        //for 8 bit nand flash, use byte access
#define        WrNFDat8(dat)                        (rNFDATA8 = (dat))        //byte access
#define        WrNFDat(dat)                        WrNFDat8()        //for 8 bit nand flash, use byte access

#define pNFCONF                                rNFCONF
#define pNFCMD                                rNFCMD  
#define pNFADDR                                rNFADDR
#define pNFDATA                                rNFDATA
#define pNFSTAT                                rNFSTAT
#define pNFECC                                rNFECC0  

#define NF_CE_L()                        NF_nFCE_L()
#define NF_CE_H()                        NF_nFCE_H()
#define NF_DATA_R()                        rNFDATA
#define NF_ECC()                        rNFECC0

// HCLK=100Mhz
#define TACLS                                1        // 1-clk(0ns)
#define TWRPH0                                4        // 3-clk(25ns)
#define TWRPH1                                0        // 1-clk(10ns)  //TACLS+TWRPH0+TWRPH1>=50ns


#endif /*__NAND_H*/

这是nand.h,所有的数据定义都在这了!帮帮忙,到底改哪个啊?
 楼主| wangshenbo 发表于 2013-1-17 15:47:52 | 显示全部楼层
wangshenbo 发表于 2013-1-17 15:43
我刚开始学arm!对nand不太了解!

#ifndef __NAND_H

OK!搞定了,非常感谢!
 楼主| wangshenbo 发表于 2013-1-17 15:49:14 | 显示全部楼层
embedsky_lhh 发表于 2013-1-17 15:22
nand.c中改下 nand拷贝镜像大小,把那个size 1M改成2M或者更大试试

OK!搞定了,非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-6-13 19:37 , Processed in 1.062500 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表