u-boot-2015.10을 JZ2440 개발판에 이식(二)--norflash 지원

3243 단어
직렬로 정보를 출력한 후 Flash:0 Bytes가 출력된 것을 발견하여norflash를 식별하지 못했기 때문에 코드에서 "Flash:"를 검색하여 initr 로 지정합니다flash(), 계속 추적해, flashinit(),
flash_detect_legacy()에는 다음 코드가 있습니다.
    flash_read_jedec_ids(info);
    debug("JEDEC PROBE: ID %x %x %x
", info->manufacturer_id, info->device_id, info->device_id2); if (jedec_flash_match(info, info->start[0])) break;

flash_read_jedec_ids 함수는 제조업체 ID, 장치 ID 등을 읽고 debug는 출력할 수 있기 때문에 ID가 잘 읽혔는지 확인하려면 smdk2410.h에서 DEBUG 매크로를 인쇄하도록 정의합니다.
컴파일 및 쓰기를 변경한 결과 읽은 공급업체 ID 및 장치 ID가 정확합니다.그래서 다시 제덱flash_match 함수, 읽은 ID 및 jedec테이블을 비교해 보면 이 항목이 존재하는지 확인합니다. 표에 우리의norflash 형식이 없습니다. 그래서 우리는 다른 항목을 본떠서 다음과 같이 추가합니다.
  {                                                                               
        .mfr_id     = (u16)MX_MANUFACT,                                             
        .dev_id     = 0x2249,                                                       
        .name       = "MX29LV160D",                                                 
        .uaddr      = {                                                             
            [1] = MTD_UADDR_0x0555_0x02AA /* x16 */
         },                                                                          
        .DevSize    = SIZE_2MiB,                                                    
        .CmdSet     = CFI_CMDSET_AMD_LEGACY,                                        
        .NumEraseRegions= 4,                                                        
        .regions    = {                                                             
            ERASEINFO(0x10000, 31),                                                 
            ERASEINFO(0x08000, 1),                                                  
            ERASEINFO(0x02000, 2),                                                  
            ERASEINFO(0x04000, 1),                                                  
        }                                                                           
    },    

컴파일 및 쓰기 오류too many flash sectors, 코드에서 검색, CONFIG 발견SYS_MAX_FLASH_SECT 이 매크로는 19로 정의되었고, 우리의norflash 섹터 수는 35로 19보다 많습니다. 그래서 이 매크로를 64로 바꾸고, 다시 컴파일하여 2M으로 정확하게 식별했습니다.우리는norflash가 정확하게 읽기와 쓰기를 할 수 있는지,cp.b 0 30000000 80;cmp.b 0 30000000 80, 위의 두 명령으로 norflash를 읽는 데 문제가 없음을 발견.다음 몇 가지 명령으로norflash:mw를 테스트합니다.b 30000000 12 3;  protect off all; erase 0 ffff; cp.b 30000000 0 3; md.b 0 3;발견도 121212;따라서 norflash를 성공적으로 썼습니다. u-boot에서는 norflash를 지원합니다.

좋은 웹페이지 즐겨찾기