?? dataflash.c
字號:
#include <zooboot.h>#ifdef CFG_HAS_DATAFLASHdataflash_info_t dataflash_info[CFG_MAX_DATAFLASH_BANKS];extern int get_dataflash_status( char);dataflash_info_t * dataflash_init( void) { int i, j; int dfcode; spi_init(); for (i = 0; i < CFG_MAX_DATAFLASH_BANKS; i++) { if (i != 0) { panic("More than one DataFlash not supported.\n"); } dfcode = dataflash_probe(); switch( dfcode) { case AT45DB161: case AT45DB321: case AT45DB642: break; default: printf("Unsupported DataFlash type 0x%x. Defaulting to AT45DB161.\n", dfcode); dfcode = AT45DB161; break; } switch( dfcode) { case AT45DB161: dataflash_info[i].page_count = 4096; dataflash_info[i].page_size = 528; break; case AT45DB321: dataflash_info[i].page_count = 8192; dataflash_info[i].page_size = 528; break; case AT45DB642: dataflash_info[i].page_count = 8192; dataflash_info[i].page_size = 1056; break; default: break; } dataflash_info[i].size = dataflash_info[i].page_count * dataflash_info[i].page_size; for (j = 0; j < dataflash_info[i].page_count; j++) dataflash_info[i].protect[j] = FLAG_PROTECT_SET; dataflash_info[i].id = dfcode; dataflash_info[i].base = CFG_DATAFLASH_LOGICAL_BASE + i * 0x01000000; } return( dataflash_info);}void dataflash_print_info( dataflash_info_t * info) { printf("DataFlash:"); switch( info->id) { case AT45DB161: printf(" Atmel: AT45DB161 "); break; case AT45DB321: printf(" Atmel: AT45DB321 "); break; case AT45DB642: printf(" Atmel: AT45DB642 "); break; default: printf(" unsupported.\n"); return; } printf("(%d bytes)\n", info->size); printf(" %d pages of %d bytes\n", info->page_count, info->page_size); printf(" Logical base address 0x%x\n", info->base);}dataflash_info_t * addr2dataflash( ulong addr) { int i; for (i = 0; i < CFG_MAX_DATAFLASH_BANKS; i++) { if ((addr >= dataflash_info[i].base) && (addr < (dataflash_info[i].base + dataflash_info[i].size))) return( &dataflash_info[i]); } return( NULL);}void dataflash_perror(int err){ switch (err) { case ERR_OK: break; case ERR_TIMOUT: printf ("Timeout writing to DataFlash\n"); break; case ERR_PROTECTED: printf ("Can't write to protected DataFlash sectors\n"); break; case ERR_INVAL: printf ("Outside available DataFlash\n"); break; case ERR_UNKNOWN_FLASH_TYPE: printf ("Unknown Type of DataFlash\n"); break; case ERR_PROG_ERROR: printf ("General DataFlash Programming Error\n"); break; default: printf ("%s[%d] FIXME: rc=%d\n",__FILE__,__LINE__,err); break; }}#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -