移值:还在玩fatfs?换点口味吧!jiaowoxiaolu有个问题要请教。
http://www.amobbs.com/forum.php?mod=viewthread&tid=5535279&highlight=yaffs我在S3c2440中移植你的代码。底层驱动有个地方不明白,请教你,希望你多多赐教。谢谢
/************** yaffs 专用函数******************************************
* @brief 读一页数据,连带spear区域
* @param 页编号,*tr 数组参数指针,参数数组数量n_tr
* @return 1正常,-1异常
**********************************************************************/
int8_t NandFlash_RD_Page_With_Spare( uint16_t page_num,struct nanddrv_transfer *tr, int8_t n_tr )
{
uint8_t busy=0;
uint16_tr_cont=0;
if(n_tr < 1)
return -1;
s3c2440_nand_select_chip();
busy=s3c2440_wait_idle();
if(busy==OK)
{
s3c2440_write_cmd(0x00);
rNFADDR = r_addr& 0xff; //读命令开始
rNFADDR =(uint8_t)( tr.offset & 0x000000FF);
rNFADDR =(uint8_t)((tr.offset & 0x0000FF00) >> 8);
rNFADDR =(uint8_t) ( page_num & 0x000000FF);
rNFADDR =(uint8_t)(( page_num & 0x0000FF00) >> 8);
// WR_CMD =NAND_CMD_READ_2ND; //读命令结束
busy=NandFlash_WaitForReady(); //等待命令完成
if(busy==OK) //读main data
{
for(r_cont=0;r_cont< tr.nbytes; r_cont++)
{
tr.buffer=RD_DATA;
}
}
if(n_tr==2) //读spare
{
// WR_CMD =NAND_CMD_RANDOM_DATA_OUTPUT_1ST;
WR_ADDR =(uint8_t) ( tr.offset & 0x000000FF);
WR_ADDR =(uint8_t)(( tr.offset & 0x0000FF00) >> 8);
// WR_CMD =NAND_CMD_RANDOM_DATA_OUTPUT_2ND;
for(r_cont=0;r_cont< tr.nbytes; r_cont++)
{
tr.buffer=RD_DATA;
}
}
}
NAND_CS_H();
return 1;
}
在底层读和写函数中,标红色的地方写了两次地址,是怎么回事?是同时像两个页读写同样的数据吗?
地址写几次可以看nand手册 jiaowoxiaolu 发表于 2014-5-5 22:55
地址写几次可以看nand手册
非常感谢你的回复,可能我问的问题不是很对,你用的NAND是写四次,前两次是写入一页中的第几个字节吗?后两次写入是整片中的第几页吗? 硬邦邦 发表于 2014-5-6 09:03
非常感谢你的回复,可能我问的问题不是很对,你用的NAND是写四次,前两次是写入一页中的第几个字节吗?后 ...
要先找到第几页然后再找到这页内想要的哪一个字节,具体先发什么要查看nand手册,里面有地址周期说明 非常感谢。我对照你的数据手册明白了点。谢谢 rNFADDR =(uint8_t)( tr.offset & 0x000000FF);
rNFADDR =(uint8_t)((tr.offset & 0x0000FF00) >> 8);
rNFADDR =(uint8_t) ( page_num & 0x000000FF);
rNFADDR =(uint8_t)(( page_num & 0x0000FF00) >> 8);
找份nand datasheet 看架构你会很清楚的. mcuprogram 发表于 2014-5-6 09:31
rNFADDR =(uint8_t)( tr.offset & 0x000000FF); ...
谢谢回复,看明白了,英文能力需要提高,所以慢慢啃
jiaowoxiaolu 发表于 2014-5-5 22:55
地址写几次可以看nand手册
我移植编译通过了,是不是用dtest.c里的函数进行测试?
页:
[1]