天嵌 ARM开发社区

 找回密码
 注册
查看: 2627|回复: 0

关于RdNF2SDRAM的问题

[复制链接]
chenenzhi 发表于 2010-1-23 22:33:21 | 显示全部楼层 |阅读模式
本帖最后由 chenenzhi 于 2010-1-23 22:51 编辑

我在看BOOTLOADER程序的时候看到一个函数RdNF2SDRAM();它的功能是Copy Image from Nand Flash to SDRAM; 也就是把程序拷贝到SDRAM中,但是我看这个函数如下:
//=======================================================
void RdNF2SDRAM( )
{
        U32 i;
        U32 start_addr = 0x0;
        unsigned char * to = (unsigned char *)0x33F80000;
        U32 size = 0x40000;
        rNF_Init();
        switch(rNF_ReadID())
        {
                case 0x76:
                        for(i = (start_addr >> 9); size > 0; )
                        {
                                rSB_ReadPage(i, to);
                                size -= 512;
                                to += 512;
                                i ++;
                        }
                        break;
                case 0xf1:
                case 0xda:
                case 0xdc:
                case 0xd3:
                        for(i = (start_addr >> 11); size > 0; )
                        {
                                rLB_ReadPage(i, to);
                                size -= 2048;
                                to += 2048;
                                i ++;
                        }
                        break;
        }
}               
//=======================================================
问题就处在unsigned char * to = (unsigned char *)0x33F80000;这里,我们不是要把NAND FLASH 中256K的程序拷贝到SDRAM中,那地址应该是0x30000000才对,为什么会是0x33F80000呢?

这个是在EmbedSky_boot.mcp这个工程里面的一个bootloader,只有一个简单的引导linux启动的功能.

另外还有一个问题,为什么地址需要"start_addr >> 11"右移11位或9位?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-18 09:22 , Processed in 1.031243 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表