Uboot30之start.S第二阶段part2

00489: #ifndef CFG_NO_FLASH    //我们没有定义,因此执行下面的flash初始化函数
00490:
/* configure available FLASH banks */
00491:     size = flash_init ();
00492:     display_flash_config (size);
00493: #endif
/* CFG_NO_FLASH */

00084: ulong flash_init (void)
00085: {
00086: int i, j;
00087: ulong size = 0;
00088:
00089: for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
00090: ulong flashbase = 0;
00091:
00092: flash_info[i].flash_id =
00093: #if defined(CONFIG_AMD_LV800)
00094: (AMD_MANUFACT & FLASH_VENDMASK) |
00095: (AMD_ID_LV800B & FLASH_TYPEMASK);
00096: #elif defined(CONFIG_MX_LV640EB)
00097: (MX_MANUFACT & FLASH_VENDMASK) |
00098: (MX_ID_LV640EB & FLASH_TYPEMASK);
00099: #else
00100: #error "Unknown flash configured"
00101: #endif
00102: flash_info[i].size = FLASH_BANK_SIZE;
00103: flash_info[i].sector_count =
00103: CFG_MAX_FLASH_SECT;
00104:
00105: memset (flash_info[i].protect, 0,
00105: CFG_MAX_FLASH_SECT);
00106: if (i == 0)
00107: flashbase = CFG_FLASH_BASE;
00108: else
00109: panic (
00109: "configured too many flash banks!\n");
00110: for (j = 0; j < flash_info[i].sector_count; j
00110: ++) {
00111: #if defined(CONFIG_AMD_LV800)
00112: if (j <= 3) {
00113:
/* 1st one is 16 KB */
00114: if (j == 0) {
00115: flash_info[i].start[j] =
00116: flashbase + 0;
00117: }
00118:
00119:
/* 2nd and 3rd are both 8 KB */
00120: if ((j == 1) || (j == 2)) {
00121: flash_info[i].start[j] =
00122: flashbase + FIRST_SECT_SIZE +
00122: (j - 1) *
00123: SECOND_SECT_SIZE;
00124: }
00125:
00126:
/* 4th 32 KB */

 

 

 

1)虽然NandFlash和NorFlash都是Flash,但是一般NandFlash会简称为Nand而不是Flash,一般讲Flash都是指的Norflash。这里2行代码是Norflash相关的。

2)flash_init执行的是开发板中对应的NorFlash的初始化、display_flash_config打印的也是NorFlash的配置信息(Flash: 8 MB就是这里打印出来的)。但是实际上X210中是没有Norflash的。所以着两行代码是可以去掉的(我也不知道为什么没去掉?猜测原因有可能是去掉着两行代码会导致别的地方工作不正常,需要花时间去移植调试,然后移植的人就懒得弄。实际上不去掉除了显示有8MB Flash实际没用之外也没有别的影响)

猜你喜欢

转载自blog.csdn.net/wangdapao12138/article/details/80035074