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

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 (arch\arm\lib)    

代码关系:    
        
    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 (drivers\mtd) 添加一下代码
        /*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, 1),
                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的更新
            
                    
           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值