完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
裸机跑nand flash.可以在原本为FF的地方写入,读出。但再次往相同地方写入时就写不正确,只有原来为‘1’的bit改写成功。例如原本写入了0xef(1110 1111),可以改为0xab(1010 1011),要改为0xcd(1100 1101)就失败了,变成了0x89(1000 1001);求大神解答! 芯片是s5pv210,K9K8G08U0B 程序如下: 自己写的裸机程序,下面的是nand flash 部分。 #define u32 volatile unsigned long //-->For nand flash register address #define MP0_3con *((u32*)0xe0200320) #define MP0_1con *((u32*)0xe02002e0) #define NFCONF *((u32*)0xb0e00000) #define NFCONT *((u32*)0xb0e00004) #define NFCMD *((u32*)0xb0e00008) #define NFDATA *((volatile unsigned char*)0xb0e00010) #define NFADDR *((u32*)0xb0e0000c) #define NFSTAT *((u32*)0xb0e00028) //-- #define tacls 4 #define twrph0 3 #define twrph1 2 #define NF_en_on NFCONT &= ~(1<<1) //enable nand flash chip select #define NF_en_off NFCONT |= (1<<1) //disable nand flash chip select //---->For uart put char&str #define UTRSTAT0 *((volatile unsigned long*)0xE2900010) #define UTXH0 *((volatile unsigned long*)0xE2900020) void put_char(char c) { while(!(UTRSTAT0 & (1 << 1))) ; //绛夊緟涓插彛缂撳瓨绌洪棽 if((UTRSTAT0 & (1<<1))==(1<<1)) //濡傛灉绌洪棽锛屽垯杩涘叆瀛楃鎵撳嵃 { while(!(UTRSTAT0 & (1 << 1))) ;//绛夊緟绌洪棽 UTXH0 = c; //鍚戠紦瀛樺彂閫佸瓧绗? while(!(UTRSTAT0 & (1 << 1))) ;//绛夊緟绌洪棽 } } void put_str(char *p) { int i; for(i=0;*(p+i);i++) //濡傛灉*(p+i)涓嶆槸' |