⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataflash.c

📁 开发三星s3c44b0引导程序
💻 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 + -