加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

u-boot2012.04移植到jz2440 支持norflash

发布时间:2020-12-15 20:01:18 所属栏目:百科 来源:网络整理
导读:u-boot2012.04支持norflash ?? ?1. nand flash 启动启动代码 ?? ??? ??? ?U-Boot 2012.04.01 (Jul 22 2016 - 13:26:28) ?? ??? ??? ?CPUID: 32440001 ?? ??? ??? ?FCLK:????? 400 MHz ?? ??? ??? ?HCLK:????? 100 MHz ?? ??? ??? ?PCLK:?????? 50 MHz ?? ???
u-boot2012.04支持norflash
?? ?1. nand flash 启动启动代码

?? ??? ??? ?U-Boot 2012.04.01 (Jul 22 2016 - 13:26:28)

?? ??? ??? ?CPUID: 32440001
?? ??? ??? ?FCLK:????? 400 MHz
?? ??? ??? ?HCLK:????? 100 MHz
?? ??? ??? ?PCLK:?????? 50 MHz
?? ??? ??? ?DRAM:? 64 MiB
?? ??? ??? ?WARNING: Caches not enabled
?? ??? ??? ?Flash: *** failed ***
?? ??? ??? ?### ERROR ### Please RESET the board ###
?? ??? ?搜索:Flash: ?
?? ??? ??? ??? ??? ?puts("Flash: ");?? ?Board.c (archarmlib)?? ?

代码关系:?? ?
?? ??? ?
    board_init_r
                         puts("Flash: ");
                         flash_size = flash_init();  //对nor  flash的初始化
                         if (flash_size > 0)
                             print_size(flash_size,"n");
                     else {     
                            puts(failed); //  static char *failed = "*** failed ***n";
                            hang();    //    puts("### ERROR ### Please RESET the board ###n")  for (;;);
                        }


?? ??? ??? ?==> nand flash 启动没有必要 hang 。
?? ??? ??? ??? ??? ?==>注销 ??? ?puts(failed); ?? ?hang();? ?
?? ??? ??? ??? ??? ?

2. 解决无法nor flash启动的问题
??
     unsigned long flash_init (void)        
                   cfi_flash_bank_addr(在si中显示灰色) (drivers/mtd/cfi_flash.c:100:static phys_addr_t __cfi_flash_bank_addr(int i)
                            -->phys_addr_t cfi_flash_bank_addr(int i)
                                            __attribute__((weak,alias("__cfi_flash_bank_addr")));
                                                static phys_addr_t __cfi_flash_bank_addr(int i)
                                                   {
                                                    return ((phys_addr_t [])CONFIG_SYS_FLASH_BANKS_LIST)[i];
                                                    }


?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?(结果为0)
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?面对复杂的问题。使用打印信息解决
?? ??? ??? ??? ??? ?打开cfi_flash 的 DEBUG宏
?? ??? ??? ??? ??? ?nor flash启动。 usb 下载
?? ??? ??? ??? ??? ?usb 1 30000000
?? ??? ??? ??? ??? ?protect off all
?? ??? ??? ??? ??? ?erase 0 7ffff
?? ??? ??? ??? ??? ?cp.b 30000000 0 80000
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ??? ?U-Boot 2012.04.01 (Jul 22 2016 - 22:02:57)
                            CPUID: 32440001
                            FCLK:      400 MHz
                            HCLK:      100 MHz
                            PCLK:       50 MHz
                            DRAM:  64 MiB
                            WARNING: Caches not enabled
                            Flash: fwc addr (null) cmd f0 00f0 16bit x 16 bit
                            fwc addr 0000aaaa cmd aa 00aa 16bit x 16 bit
                            fwc addr 00005554 cmd 55 0055 16bit x 16 bit
                            fwc addr 0000aaaa cmd 90 0090 16bit x 16 bit
                            fwc addr (null) cmd f0 00f0 16bit x 16 bit
                            JEDEC PROBE: ID c2 2249 0
                            fwc addr (null) cmd ff 00ff 16bit x 16 bit
                            fwc addr (null) cmd 90 0090 16bit x 16 bit
                            fwc addr (null) cmd ff 00ff 16bit x 16 bit
                            JEDEC PROBE: ID 13 ea00 0
                            0 KB
                            *** Warning - bad CRC,using default environment

                            In:    serial
                            Out:   serial
                            Err:   serial
                            Net:   CS8900-0
                            


?? ??? ??? ??? ?搜索:JEDEC PROBE
?? ??? ??? ??? ?
?? ??? ??? ??? ?确定取得的ID 数据对不对
?? ?
?? ?没有识别出所用的这个nor flasdh 芯片
??
  在   static const struct amd_flash_info jedec_table[] = { // Jedec_flash.c (driversmtd) 添加一下代码
        /*jz2440 v2 MT29D160DT*/

      {
            .mfr_id        = (u16)MX_MANUFACT,/*厂家 ID*/
            .dev_id        = 0X2249,/*设备ID*/
            .name        = "MXIC MT29D160DT",/*名字*/
            .uaddr        = {        /*解锁地址 ,nor flash写之前需要解锁,这个地址是nor flash角度看到的地址*/
                [1] = MTD_UADDR_0x0555_0x02AA /* x16 */
            },.DevSize    = SIZE_2MiB,/*总大小*/
            .CmdSet        = P_ID_AMD_STD,.NumEraseRegions= 4,/*擦除区域的个数,擦除块是多少*/
            .regions    = {
                ERASEINFO(16 * 1024,1),ERASEINFO(8 * 1024,2),ERASEINFO(32 * 1024,ERASEINFO(64 * 1024,31),}
        }


?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?修改:#define CONFIG_SYS_MAX_FLASH_SECT?? ?(19) 为
?? ??? ??? ??? ?#define CONFIG_SYS_MAX_FLASH_SECT?? ?(120)
?? ??? ??? ??? ?
?? ??? ??? ??? ?去掉 cfi_flash 的调试信息
?? ??? ??? ??? ?
?? ??? ??? ??? ?make
?? ??? ??? ??? ?
?? ??? ??? ??? ?
?? ?
        CPUID: 32440001
            FCLK:      400 MHz
            HCLK:      100 MHz
            PCLK:       50 MHz
            DRAM:  64 MiB
            WARNING: Caches not enabled
            Flash: ERROR: too many flash sectors
            2 MiB                //已经识别出来
            *** Warning - bad CRC,using default environment

            In:    serial
            Out:   serial
            Err:   serial
            Net:   CS8900-0
                
SMDK2410 # flinfo

        Bank # 1: MXIC MT29D160DT flash (16 x 16)  Size: 2 MB in 19 Sectors
          AMD Legacy command set,Manufacturer ID: 0xC2,Device ID: 0x2249
          Erase timeout: 30000 ms,write timeout: 100 ms

          Sector Start Addresses:
          00000000   RO   00004000   RO   00006000   RO   00008000   RO   00010000   RO
          00020000   RO   00030000   RO   00040000   RO   00050000   RO   00060000   RO
          00070000   RO   00080000        00090000        000A0000        000B0000      
          000C0000        000D0000        000E0000        000F0000   


?? ??? ??? ?
?? ??? ??? ?
?? ??? ??? ?//RO 软件指定为只读 ?
?? ??? ??? ?测试 u-boot 之后的数据。能否写
?? ??? ??? ?SMDK2410 # erase 80000? 8ffff
?? ??? ?
        . done
                Erased 1 sectors
                SMDK2410 # cp.b 30000000 80000 10000   //对刚才擦除的地方进行写
                Copy to Flash... 9....8....7....6....5....4....3....2....1....done
                md.b 30000000
                
                SMDK2410 # md.b  30000000
            30000000: 14 00 00 ea 14 f0 9f e5 14 f0 9f e4 14 f0 9f e5    
            30000010: 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5    
            30000020: 60 01 f0 33 c0 01 f0 33 20 02 f0 33 80 02 f0 33    
            30000030: e0 02 f0 33 40 03 f0 33 a0 03 f0 33 ef be ad de    
            SMDK2410 # md.b 80000
            00080000: 14 00 00 ea 14 f0 9f e5 14 f0 9f e4 14 f0 9f e5    
            00080010: 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5    
            00080020: 60 01 f0 33 c0 01 f0 33 20 02 f0 33 80 02 f0 33    
            00080030: e0 02 f0 33 40 03 f0 33 a0 03 f0 33 ef be ad de    
            
            mw.b 30000000 12345678
            
            erase 80000 8ffff
            cp.b 30000000 80000 10000
            
            cmp.b 30000000 80000 10000
            SMDK2410 # cmp 30000000 800000 10000
            word at 0x30000008 (0xe49ff014) != word at 0x00800008 (0xe59ff014)
            Total of 2 words were the same
            
?? ??? ??? ?//如果在第二阶段之前,没有重新设置栈,将会有问题 ?? ??? ??? ? ?? ??? ??? ? ?? ??? ??? ?可以使用loady 来进行下载 (使用超级终端 ) ?? ??? ??? ? ?? ??? ?没有网络的情况下,可以使用这种方法,进行u-boot的更新 ?? ??? ??? ? ?? ??? ??? ??? ??? ? ?? ??? ????

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读