nandflash在代码搬移时判断地址或长度不对齐--疑问
/* 读函数 用于把nand flash中代码复制到sdram中*/void nand_read(unsigned char *buf, unsigned long start_addr, int size)
{
int i, j;
if ((start_addr & NAND_BLOCK_MASK_LP) || (size & NAND_BLOCK_MASK_LP)) {
return ; /* 地址或长度不对齐 */
为什么可以判断“地址或长度不对齐”? 因为nand的读取最小单位是Page,所以起始地址必须是Page的首地址,长度必须是页的整数倍。你取几个典型地址 按位与 一下,就知道为什么能实现检测地址或长度不对齐了
页:
[1]