打印
[ARM入门]

关于uboot的nand初始化,看不懂怎么判断2410还是2440

[复制链接]
1226|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
734664813|  楼主 | 2014-11-26 12:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void nand_init_ll(void)函数中有一个if语句
/* 判断是S3C2410还是S3C2440 */
    if (isS3C2410)
    {
                /* 使能NAND Flash控制器, 初始化ECC, 禁止片选, 设置时序 */
        s3c2410nand->NFCONF = (1<<15)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0);
    }
其中的判断条件isS3C2410是一个宏定义,如下:
#define rGSTATUS1       (*(volatile unsigned *)0x560000B0)
#define isS3C2410                 ((rGSTATUS1 & 0xffff0000) == 0x32410000)

不懂为什么这样就能判断是2410还是2440,请教各位大神

相关帖子

沙发
lr2131| | 2014-11-26 13:52 | 只看该作者
我没有2410的板子,有2440的板子,没去关心过2410在2440上的兼容性问题。
不过,已经很明显的看得出来,rGSTATUS1寄存器在2410和2440上的值应该是不一样的。

你把2440和2410的datasheet对着一看,就明白了。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
734664813 + 2 很给力!
板凳
734664813|  楼主 | 2014-11-26 18:50 | 只看该作者
lr2131 发表于 2014-11-26 13:52
我没有2410的板子,有2440的板子,没去关心过2410在2440上的兼容性问题。
不过,已经很明显的看得出来,rGS ...

懂了,谢谢啦
Register   Address     R/W  Description  Reset Value
GSTATUS1  0x560000b0    R    Chip ID     0x32440001

使用特权

评论回复
地板
734664813|  楼主 | 2014-11-26 20:54 | 只看该作者
lr2131 发表于 2014-11-26 13:52
我没有2410的板子,有2440的板子,没去关心过2410在2440上的兼容性问题。
不过,已经很明显的看得出来,rGS ...

这是读nand的函数
nand_read_ll_lp(buf, start_addr, (size + NAND_BLOCK_MASK_LP)&~(NAND_BLOCK_MASK_LP))
但是
#define NAND_SECTOR_SIZE_LP    2048
#define NAND_BLOCK_MASK_LP     (NAND_SECTOR_SIZE_LP - 1)
也就是最后这个函数的第三个参数(size + NAND_BLOCK_MASK_LP)&~(NAND_BLOCK_MASK_LP)是0么

使用特权

评论回复
5
lr2131| | 2014-12-1 15:28 | 只看该作者
这个我早已不记得了,那么细致的问题

使用特权

评论回复
6
lr2131| | 2014-12-1 15:28 | 只看该作者
自己查吧,也不是很难的事情

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

41

帖子

0

粉丝