7898|42

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

平台:2440,bootloader问题 [复制链接]

我的bsp里面有stepldr和eboot,
我想让eboot跑起来,
但把stepldr.nb1烧写到flash中后,在dnw上显示的却是乱码!!!!

这个是串口的初始代码:
void Uart_Init(void)
{    int i;
    rUFCON1 = 0x0;      // FIFO disable
    rUMCON1 = 0x0;      // AFC disable
      
    rULCON1 = 0x3;      // Normal,No parity,1 stop,8 bits
    rUCON1  = 0x245;   
   
    rUBRDIV1=( (int)(PCLK/16./11520) -1 );

    for(i=0;i<100;i++);   
}

这个应该是没有问题的,是不是在startup.s中  的相关设置有问题啊?-------------------
我的nandflash是k9f1208(64MB)的,原来的stepldr应该不是针对这flash的,因为在

\stepldr\main.c文件中有
#define NAND_BLOCK_SIZE_BYTES   0x00020000   //不是16K
#define NAND_PAGE_SIZE_BYTES    0x00000200    //512B
#define NAND_PAGES_PER_BLOCK    (NAND_BLOCK_SIZE_BYTES / NAND_PAGE_SIZE_BYTES)

我改成了:
#define NAND_BLOCK_SIZE_BYTES   0x00004000

串口打印乱码,郁闷,怎么设置

最新回复

stepldr.nb0/nb1,你打开看一下,应该是一样的.但也有地方说到nb0是空的.eboot.nb0和eboot.bin,前者是直接可以拷贝到memory上执行,而后者不可以.  详情 回复 发表于 2009-7-29 13:49
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

波特率设置不正确
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
今天接分
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
换新版了,在LZ的帖子里踩第一脚
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 
换新版了,在LZ的帖子里踩第一脚
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

6
 
突然换了  搞的我  乱丢分!
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

7
 
换新版了,在LZ的帖子里踩第一脚
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

8
 
你叼  连发三贴
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 
一般 出现打印乱码的情况!
除了MPLL的设置外,还有哪些方面!
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 
难道是缓冲区没有清空吗~?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

11
 
波特率和PC端的不匹配。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

12
 
2440 官方的BSP中的BOOTloader  有谁高过!
一般都要做哪些修改!
有点乱了!
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

13
 
你确定是烧stepldr.nb1而不是stepldr.nb0;
还有
#define NAND_BLOCK_SIZE_BYTES  0x00020000  //不是16K
#define NAND_PAGE_SIZE_BYTES    0x00000200    //512B
#define NAND_PAGES_PER_BLOCK    (NAND_BLOCK_SIZE_BYTES / NAND_PAGE_SIZE_BYTES)
根本不用改,你结合NF_ReadID、NF_ReadPage函数看看就知道为什么不用改了。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

14
 
uping
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

15
 
[code](void)
{
        UINT8 pMID;
        UINT8 pDID;
    UINT32  nCnt;
    UINT32  nRet;
    UINT8  nBuff;
    UINT8   n4thcycle;
        int i;

        bLARGEBLOCK = FALSE;
    n4thcycle = nBuff = 0;

    NF_nFCE_L();   
        NF_CLEAR_RB();
    NF_CMD  (0x90);        // read id command
    NF_ADDR (0x00);
        for ( i = 0; i < 100; i++ );

    /* tREA is necessary to Get a MID. */
    for (nCnt = 0; nCnt < 5; nCnt++)
    {
        pMID = (BYTE) NF_RDDATA();
        if (0xEC == pMID)
            break;
    }

    pDID = (BYTE) NF_RDDATA();
   
    nBuff     = (BYTE) NF_RDDATA();
    n4thcycle = (BYTE) NF_RDDATA();
    NF_nFCE_H();

    if (pMID != (UINT8)0xEC)
        nRet = FALSE;
    else
        nRet = TRUE;

        if (pDID >= 0xA0)
        {
                bLARGEBLOCK = TRUE;
        }

    return (nRet);
}


int NF_ReadPage(UINT32 block,UINT32 page,UINT8 *buffer)
{
    //volatile int i;
    register UINT8 * bufPt=buffer;//0x30038000
    unsigned int blockPage;
        ULONG MECC;
        int NewDataAddr;

        if ( bLARGEBLOCK == TRUE )
        {

                Uart_SendString("large block");
                blockPage = (block<<6) + page/4;
                NewDataAddr = 512*(page%4);
                NF_RSTECC();    // Initialize ECC
                NF_MECC_UnLock();
   
                NF_nFCE_L();   
                NF_CMD(0x00);   // Read command

                NF_ADDR((NewDataAddr)&0xff);
                NF_ADDR(((NewDataAddr)>>8)&0xff);
                NF_ADDR(blockPage&0xff);            //
                NF_ADDR((blockPage>>8)&0xff);   // Block & Page num.
            if (LB_NEED_EXT_ADDR) {
                NF_ADDR((blockPage>>16)&0xff);   // Block & Page num.
            }
        }
        else
        {


                Uart_SendString("small block");
                Uart_SendDWORD(block,0);
                blockPage = (block<<5) + page;
                //blockPage = (block<<8) + page;
                NewDataAddr=0;
[del]如果每个block的页数不确定,这里是怎么执行的![/del]   
                NF_RSTECC();    // Initialize ECC
                NF_MECC_UnLock();
   
                NF_nFCE_L();   
                NF_CMD(0x00);   // Read command

                NF_ADDR((NewDataAddr)&0xff);
                NF_ADDR(blockPage&0xff);            //
                NF_ADDR((blockPage>>8)&0xff);   // Block & Page num.
            if (SB_NEED_EXT_ADDR) {
                NF_ADDR((blockPage>>16)&0xff);   // Block & Page num.
            }
        }

        NF_CLEAR_RB();
        NF_CMD(0x30);
        NF_DETECT_RB();

    __RdPage512(bufPt);
        NF_MECC_Lock();

        // no ecc check
        return 1;

        MECC = NF_RDDATA32();
        MECC = NF_RDDATA32();
            
    MECC = NF_RDDATA32();
    NF_WRMECCD0( ((MECC&0xff00    )<<8) |  (MECC&0xff    )      );
    NF_WRMECCD1( ((MECC&0xff000000)>>8) | ((MECC&0xff0000)>>16) );
    NF_nFCE_H();   

        if(rNFESTAT0 & 0x3)
        {
                Uart_SendString("ECC ERROR block");
                Uart_SendDWORD(block,0);
                Uart_SendString("page");
                Uart_SendDWORD(page,1);
                return 0;
        }
        else
                return 1;

}

在ReadID的函数里面有判断是大页还是小页的功能!   我用的是64MB /1个block是64MB  /一页时512B
这个判断是成功的!
-----------------------------------------
NF_ReadPage是什么作用??
是不是把EBOOT得内容copy到RAM里面去! 如果是的话,这个过程出错的话 ,是不是
((PFN_IMAGE_LAUNCH)(LOAD_ADDRESS_PHYSICAL))();  就无法进行!
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

16
 
stepldr.nb1和stepldr.nb0;有什么不同???
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

17
 
已经没的思路了! 郁闷!  头都大了
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

18
 
LZ,我也在搞这个 加我Q:275957142.人多力量大
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

19
 
乱码90%的可能都是时钟设置不对
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

20
 
刚才不是也是你发帖说改了MPLL就显示正常了吗?我还看了两次呢。。。今天eeworld怎么了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表