嵌入式开发者社区

标题: starterware boot 读取 nand page 与 sysbios 中 读取nand page 时间差 [打印本页]

作者: xiaoluoshan    时间: 2018-10-30 15:47
标题: starterware boot 读取 nand page 与 sysbios 中 读取nand page 时间差
本帖最后由 xiaoluoshan 于 2019-1-22 13:50 编辑

starterware boot 读取 nand page 与 sysbios 中 读取nand page 时间差异很大
你好:
遇到的问题为:
starterware boot 读取 nand page  大小528字节  耗时为4-5ms;
sysbios 中 读取nand page  大小528字节,耗时为1.5ms;
代码实现是一样的;时间差异很大的原因不知道是为什么?
DSTATUS NAND_initialize (void)
{
      DWORD i, j, w, /*d[2],*/ bb, bf, flag = SIZE_PAGE/4;
      BYTE ww;
      WORD stat;
      static DWORD *d;

      nand_init();
      flush_block();
      d = BlockBuff[0];
      /* Create physical block status table */
      for (bb = 0, i = N_RES_BLKS; i < N_TOTAL_BLKS; i++) {
           read_page(d, i * N_SIZE_BLK, 1, N_GET_BLOCK_BUFF);   /* Read two DWORDs of the spare area of 1st page */
           bf = 0;
           ww = ~(d[flag] & 0xff);   /* Check bad block mark */
           if (ww & (ww - 1)) {    /* Bad block (2 or more zeros) */
                 bb++; bf = 1;
           } else {
                 w = d[flag+1];  /* Get block status */
              if (w != 0xFFFFFFFF && (WORD)w != (WORD)(~w >> 16)) {     /* Bit error in the status? */
                      read_page(d, i * N_SIZE_BLK + 1, 1, N_GET_BLOCK_BUFF);      /* Read 2nd page */
                      w = d[flag+1];  /* Get block status */
                    if (w != 0xFFFFFFFF && (WORD)w != (WORD)(~w >> 16)) {
                          bb++; bf = 1;
                      }
                 }
           }
           stat = bf ? 0xFFFE : (WORD)w;
           BlockStat = stat;

           }
      }
}
我是使用如下配置的:
是利用提供的  AIS工具将.out 转换为 .ais文件,然后烧写到 nand flash中,重新启动,两者读取nand flash 的时间,明显的 boot的时间长。




作者: xiaoluoshan    时间: 2018-10-31 14:24
标题: RE: starterware boot 读取 nand page 与 sysbios 中 读取nand page 时间差
这是我的配置如~~~~~





欢迎光临 嵌入式开发者社区 (https://51ele.net/) Powered by Discuz! X3.4