好文档 - 专业文书写作范文服务资料分享网站

u-boot启动流程分析

天下 分享 时间: 加入收藏 我要投稿 点赞

#ifdef CFG_FLASH_CFI

uchar portwidth; /* the width of the port */ uchar chipwidth; /* the width of the chip */ ushort buffer_size; /* # of bytes in write buffer */ ulong erase_blk_tout; /* maximum block erase timeout */

ulong write_tout; /* maximum write timeout */ ulong buffer_write_tout; /* maximum buffer write timeout */

ushort vendor; /* the primary vendor id */ ushort cmd_reset; /* Vendor specific reset command */ ushort interface; /* used for x8/x16 adjustments */ #endif } flash_info_t;

下面就是对这个结构的填充 */

flash_info[i].flash_id = //我这块sbc2410的NorFlash型号是29LV160DB

#if defined(CONFIG_AMD_LV400)

(AMD_MANUFACT & FLASH_VENDMASK) | (AMD_ID_LV400B & FLASH_TYPEMASK); #elif defined(CONFIG_AMD_LV800)

(AMD_MANUFACT & FLASH_VENDMASK) | (AMD_ID_LV800B & FLASH_TYPEMASK);

#else

#error \

//以上没有这个型号,若默认编译,只能认出是512K的,实际是2M的,若要移植到sbc2410上,这里要修改才能得到正确的容量 #endif

flash_info[i].size = FLASH_BANK_SIZE;

//在/include/configs/smdk2410.h文件中定义了此块NorFlash的PHY_FLASH_SIZE,我这个应该是2M

flash_info[i].sector_count = CFG_MAX_FLASH_SECT;

//擦除的单元总数,在smdk2410.h中定义为19(1M容量的NorFlash,我这块应该是多少个?),即flash中的扇区总数目

memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);//取消扇区的写保护?

if (i == 0)

flashbase = PHYS_FLASH_1; else

panic (\); //只有一块Norflash,如果i > 0了表示不止一块

for (j = 0; j < flash_info[i].sector_count; j++) {

//初始化每个扇区的首地址。其中,前4个扇区的大小和后面不同,需要分开设置。??

if (j <= 3) {

/* 1st one is 16 KB */ if (j == 0) {

flash_info[i].start[j] = flashbase + 0; }

/* 2nd and 3rd are both 8 KB */ if ((j == 1) || (j == 2)) { flash_info[i].start[j] = flashbase + 0x4000 + (j - 1) * 0x2000; }

/* 4th 32 KB */ if (j == 3) {

flash_info[i].start[j] = flashbase + 0x8000; } } else {

flash_info[i].start[j] =

flashbase + (j - 3) * MAIN_SECT_SIZE; //后面的扇区都是0x10000,即64KB } }

size += flash_info[i].size; //计算此块flash的总size,供最后return }

flash_protect (FLAG_PROTECT_SET, CFG_FLASH_BASE,

CFG_FLASH_BASE + monitor_flash_len - 1, &flash_info[0]); //此函数有待研究

flash_protect (FLAG_PROTECT_SET, CFG_ENV_ADDR,

CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);

return size; }

u-boot启动流程分析

#ifdefCFG_FLASH_CFIucharportwidth;/*thewidthoftheport*/ucharchipwidth;/*thewidthofthechip*/ushortbuffer_size;/*
推荐度:
点击下载文档文档为doc格式
5o83w5ymdv4n25q6ny0j2r4yi9c8hj003xi
领取福利

微信扫码领取福利

微信扫码分享