nbsp; ÍùÉÏ¿´ R/nB Õâ¸öÊý¾ÝÏßÉÏ˵Ã÷ÁËÔÒò£¬Õâ¶Îʱ¼äÄÚËüÊǵ͵çƽ ¼´Ö¸Ê¾ÏÖÔÚ ´¦ÓÚ Ã¦Âµ×´Ì¬£¬»¹Î´×¼±¸ºÃÊý¾ÝÊä³ö¡£ÎªÊ²Ã´»áÕâÑù£¿
ÒòΪÄã дÁË Ò»¸öÃüÁдÁËÒª¶ÁÊý¾ÝµÄµØÖ·£¬ÓÖдÁËÒ»¸öÃüÁî¡£ Äã×ÜÒª¸ø cpuһЩʱ¼äÈ¥´¦ÀíÕâЩÃüÁî°É£¬
R/nBΪµÍµçƽÕâ¶Îʱ¼ä¾ÍÊÇ ÔÚ´¦ÀíÕâЩÃüÁʵ¼ÊÉÏÊǸù¾ÝÃüÁÄ㶨λµÄÄÇÒ»Ò³Êý¾Ý¶Áµ½ÄÚ²¿¼Ä´æÆ÷ÖУ©£¬
µÈ R/nB±ä³É¸ßµçƽÁË£¬¾ÍָʾÃüÁî´¦ÀíÍê±Ï£¬ÏÖÔÚÊý¾ÝÒ²¾Í¿ÉÒÔ¶Á³öÀ´ÁË¡£
×ÛÉÏÎÒÃÇ´ÓÊÖ²áÖÐÎÒÃǾÍÖªµÀÁ˶Á²Ù×÷µÄ¾ßÌå²½Ö裬
1 Ê×ÏÈnand flash Ò²ÊÇÒ»¸öÍâÉ裬Ҫ·ÃÎÊËû¾ÍÐèҪƬѡËü£¬ËùÒÔÔÚÖ´ÐÐʱÐòͼÉϵIJ½Öè֮ǰÐèҪƬѡnand flash.
2 ¿´ºóÃæ¾ÍÊÇ°²×°Ê±ÐòͼÀ´ÁË£¬¿´Ê±Ðòͼ! µÚÒ»²½ÏÈÊÇ·¢ËÍÒ»¸öÃüÁî 0x00.
3 ¿´Ê±Ðòͼ£¡ È»ºó·¢ËÍÎå¸öµØÖ·ÐòÁУ¨ÏÈ·¢ËÍÁ½¸öÁеØÖ·£¬ÔÚ·¢ËÍÈý¸öÐеØÖ·£¨¼´Ò³µØÖ·£©£©
4 ¿´Ê±Ðòͼ£¡ ½Ó×ÅÔÙÊÇÒ»¸öÃüÁî 0x30.
5 ¿´Ê±Ðòͼ£¡ R/nB Òý½ÅΪµÍ±íʾÏÖÔÚÕý棬ÕýÔÚ´¦ÀíÕâЩÃüÁÄǾÍÒªµÈ´ý R/nB Òý½Å±äΪ¸ßµçƽ
6 ¿´Ê±Ðòͼ£¡ Õâ¸öʱºò¾Í¿ÉÒÔ¶ÁÊý¾ÝÁË
7 Ò»´Î¶Á²Ù×÷½áÊøÁË nand flash ÔÝʱÊDz»ÐèҪʹÓÃÁË£¬ÄÇô±ðÍüÁËÓ¦¸Ã È¡ÏûƬѡÐźš£
ÖÁÓÚÕâÿһ¸ö²½ÖèÖоßÌåµÄʱÐò£¬cpuÖеÄnand flash¿ØÖÆÆ÷»á°ïÎÒÃÇÍê³É¡£ÎÒÃÇÒª×ö¾ÍÊÇÉèÖü¸¸öʱ¼ä²ÎÊý
ÕâÀïÎÒÃÇ·´¸´Ç¿µ÷ÁËÒª¿´Ê±Ðòͼ¡£ÆäʵѧǶÈëʽǰÆÚ¶ÔÊý¾ÝÊÖ²áÒ»¶¨Òª¶à¿´£¬¿´¶àÁËÄã¾Í»ØÖªµÀ£¬Ê²Ã´¶«Î÷µÄÄãÖصãÒª¿´µÄ£¬Ê²Ã´ÊǺÍÄãµÄ±à³Ì²Ù×÷Î޹صÄÄã²»ÐèÒª¹ØÐÄ¡£ÕâÑùºóÃæÄã²ÅÄÜ£¬Äõ½Ò»¸öÍâÉè ¾ÍÄÜд³öËûµÄ²Ù×÷¡£¶ø²»Óøú×ÅÊé±³²½Öè¡£Ö»ÒªÊÖ²áÔÚ¾ÍÐÐÁË¡£
ÉÏÃæµÄ²½Ö裬ÊÇÒ»¸ö¾ßÌåµÄ¶Á²Ù×÷µÄ²½Ö裬²»¹ýÔÚʹÓÃÒ»¸öÆ÷¼þ֮ǰÎÒÃÇÐèÒª³õʼ»¯Ò»ÏÂËü¡£ÖÁÓÚ³õʼ»¯Ò²¾ÍÊÇÉèÖÃÎÒÃÇÉÏÃæ¶à´ÎÌáµ½µÄ
ÎÒÃÇ˵¹ý s3c2440ÒѾ°ïÎÒ×öÁ˺ܶàµ×²ãµÄµ¥Ôª²Ù×÷£¬ÎÒÃÇÖ»ÐèÉèÖü¸¸öʱ¼ä²ÎÊý ƬÄÚµÄ nand flash¾Í»á×Ô¶¯·¢³öÏàÓ¦²Ù×÷µÄʱÐò²Ù×÷
ÄÇôµ½µ×ÉèÖÃÄǼ¸¸öʱ¼äÄØ¡£
s3c2440 ÊÖ²áÉϸø³öÁË ÐèÒªÎÒÃÇÉèÖõļ¸¸ö²ÎÊý¡£
´ÓÖÐÎÒÃÇ¿ÉÒÔ¿´³ö µÚÒ»·ùʱÐòͼÊÇ ÃüÁîºÍµØÖ·Ëø´æµÄʱÐò£¬µÚ¶þ·ùÊÇ Êý¾Ý¶ÁÈ¡ºÍдÈëµÄʱÐò¡£
¿ÉÒÔ¿´³ö£¬ËûÃÇÒªÉèÖõÄʱ¼ä¶¼ÊÇÒ»ÑùµÄ¡£Ç°Ãæ·ÖÎöÁËÄÇô¶à£¬ÕâÀïÓ¦¸Ã²»ÄÑ ¿´³ö
1 TACLS ºÜÃ÷±íʾµÄÊÇ CLE/ALE µÄ½¨Á¢Ê±¼ä£¨ÕâÀï²¢²»×¼È·£¬ÆäʵÊÇ CLE/ALEÓÐЧµ½ WE ±ä³ÉµÍµçƽ֮¼äµÄʱ¼ä£¬µ« WE È´ÊÇÔÚÉÏÉýÑزÅËø´æÃüÁî/µØÖ·£©
2 TWRPH0 ´ú±íµÄÊÇ WE µÄÂö³å¿í¶È£¬¼´ÓÐЧʱ¼ä
3 TWRPH1 ´ú±íµÄÊÇ CLE/ALE µÄ±£³Öʱ¼ä
Äǵ½µ×ÉèÖóÉʲôÊý×ÖÄØ¡£¼ÈÈ» ÉÏͼÖжÁ/д/ÃüÁî/µØÖ· ²Ù×÷ÐèÒªµÄʱ¼ä²ÎÊý¶¼ÊÇÒ»ÑùµÄ
ÄÇôÎÒÃÇ´Ó nand flashÖÐËæ±ãÕÒÒ»¸ö ÃüÁîʱÐòÀ´¶ÔÕÕ²»¾ÍÐÐÁË
¾ÍÄÃÉÏÃæÎÒÃÇ˵¹ýµÄ ÃüÁîËø´æʱÐòÀ´¶Ô±È
ÄÇôÎÒÃǾÍÄܵõ½ÏÂÃæµÄ¹Øϵ
TWRPH0 = tWP
TWRPH1 = tCLH
TACLS = tCLS - tWP
È»ºóÉèÖóɶàÉÙÄØ£¿ ¿´Êֲᰡ£¬ÊÖ²áÖÐ¶Ô tWP tCLH tCLS ¶¼»áÖÁÉÙ¸ø³ö ÐèÒªµÄ×îСʱ¼ä
Õâ¿îоƬnand flashÊÖ²áÖÐÕâÈý¸ö²ÎÊýÒªÇóÊÇ
ËùÒÔ TWRPH0 = tWP >=12ns
TWRPH1 = tCLH >=5ns
TACLS = tCLS - tWP >=0£»
¶øÕâÈý¸ö²ÎÊýÔÚs3c2440µÄÊý¾ÝÊÖ²áÖÐ˵Ã÷Ϊ
µ±È»ÕâÀïµÄʱ¼ä¶¼ÊÇÒÔ HCLK Ϊµ¥Î»µÄ£¬Õ⼸¸ö²ÎÊý ÊÇÔÚ nand flash¿ØÖƼĴæÆ÷ÖÐµÄ NFCONFÖÐÉèÖõÄ
ÕâÀïÎÒûÓÃʹÓÃMPLL ËùÒÔHCLKÊÇ 12MHZ
ËùÒÔ TWRPH0 = 0 TWRPH1 =0 TACLS =0; (Èç¹ûÄãµÄʱÖÓƵÂʱȽϸߣ¬ÄǾÍÒªÉè±ðµÄÊýÁË¡£µ±È»ÓÐÊÇÓÐÄãÕæ²»ÖªµÀ£¬ÉèÖôóµã×Üû´í£¬Ö»²»¹ýËٶȿÉÄÜ»áÂýµã¡£)
ËùÒÔ NFCONF =0;£¨NOFCONFÆäËûλÊý¾ÝÊÖ²áÖÐÓÐ˵Ã÷£¬ÕâÀïÖ»ÊǼòµ¥¶Á²Ù×÷£¬ÆäËûλ¿ÉÒÔ²»ÉèÖã©
È»ºóÊdzõʼ»¯Ò»Ï ECC ʹÄÜnand flash¿ØÖÆÆ÷£¨ÎÒÃÇÖ»ÊÇÉèÖÃÁ˼¸¸öʱ¼ä²ÎÊý£¬Ê±ÐòµÄ¾ßÌå²Ù×÷¾ÍÊÇ¿¿ËûÀ´Íê³ÉµÄ£¬ËùÒÔҪʹÄÜËû£©
È»ºóÏÈ¡¡È¡ÏûƬѡnand flash ÒòΪÎÒÃÇÏÖÔÚ»¹Ã»ÓвÙ×÷Ëü°¡£¬Ö»Êdzõʼ»¯Ò»Ï¡£ËùÒÔ»¹ÊÇÓ¦¸ÃÏÈÈ¡ÏûƬѡ£¬µÈÕæÕý¶ÁµÄʱºòÔÙʹÄÜƬѡÐźÅ
NFCONT = (1<<4) | (1<<1) (1<<0);
£¨Êý¾ÝÊÖ²áÖÐÓжÔӦλµÄ˵Ã÷£©
×îºó£¬µÚÒ»´ÎʹÓÃnand flash ÎÒÃÇÐèÒª¸´Î»²Ù×÷һϡ£
×ÛÉÏ£¬nand flash µÄ³õʼ»¯´úÂëÈçÏÂ
void nand_init(void){
NFCONF =0;
NFCONT = (1<<4) | (1<<1) | (1<<0);
nand_reset(); //nand reset´úÂëÔÚºóÃæ
}
ÏÂÃæ´úÂëһЩµØÖ·µÄд·¨ÊÇÓë nand flash ÐͺÅÓйصġ£¾ßÌåÐèÒª²Î¿¼Ð¾Æ¬ÊÖ²á
void select_chip(void){
&nbs