[U-Boot] about nand_read_byte() interface

HeLei leon.he at msn.com
Mon Nov 2 04:07:37 CET 2009


Thank you, Scott :)
 

> Date: Fri, 30 Oct 2009 11:42:19 -0500
> From: scottwood at freescale.com
> To: leon.he at msn.com
> CC: u-boot at lists.denx.de
> Subject: Re: [U-Boot] about nand_read_byte() interface
> 
> On Fri, Oct 30, 2009 at 01:20:58PM +0800, HeLei wrote:
> > 
> > Hi, all
> 
> Hi, please wrap your lines at 75 or so characters -- and definitely don't
> paste code as all one line.
  

   Sorry, I change to another email client, I hope it will be okay this time.


> > I'm a little confused on NAND read operation. 
> > According to NAND character, NAND flash is read page by page, which mean's
> > once you read, at least you should read data with page size (such as
> > 512Bytes)
> 
> Yes, unless you're reading from the out-of-band area.


   So, this means we have to call nand_read() to get the whole page, even if we just need a single byte in the page. And the call chain is as following:

   mtd->nand => nand_read => nand_do_read_ops =>nand_read_page_raw => ...   

   Do I get it ? 


> > But the nand_read_byte() is implemented as following: static u_char
> > nand_read_byte(struct mtd_info *mtd) { struct nand_chip *this = mtd->priv; return readb(this->IO_ADDR_R); }
> > it seems only one byte is read out.
> 
> It's reading one byte out of a buffer that was previously filled with some
> operation. It is used for reading status bytes and OOB bad block markers.
   Yes,  interface nand_read_byte()  is often used to read out status byte or OOB byte, after I review the code.

 


> -Scott

 		 	   		  
_________________________________________________________________
全新 Windows 7:寻找最适合您的 PC。了解详情。
http://www.microsoft.com/china/windows/buy/ 


More information about the U-Boot mailing list