(void)ulong flash_init (void)
{
int i, j, k;
unsigned int flash_nb_blocks, sector;
unsigned int start_address;
OrgDef *pOrgDef;
ulong size = 0;
for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
ulong flashbase = 0;
flash_identification (&flash_info[i]);
if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
(ATM_ID_BV1614 & FLASH_TYPEMASK)) {
pOrgDef = OrgAT49BV16x4;
flash_nb_blocks = sizeof (OrgAT49BV16x4) / sizeof (OrgDef);
} else if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
(ATM_ID_BV1614A & FLASH_TYPEMASK)){ /* AT49BV1614A Flash */
pOrgDef = OrgAT49BV16x4A;
flash_nb_blocks = sizeof (OrgAT49BV16x4A) / sizeof (OrgDef);
} else if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
(ATM_ID_BV6416 & FLASH_TYPEMASK)){ /* AT49BV6416 Flash */
pOrgDef = OrgAT49BV6416;
flash_nb_blocks = sizeof (OrgAT49BV6416) / sizeof (OrgDef);
}
/*zzl*/
else if((flash_info[i].flash_id & FLASH_TYPEMASK)==
(SST_ID_xF6401B & FLASH_TYPEMASK))
{
pOrgDef=OrgSSTvF6401B;
flash_nb_blocks = sizeof (OrgSSTvF6401B) / sizeof (OrgDef);
}
else {
flash_nb_blocks = 0;
pOrgDef = OrgAT49BV16x4;
}
flash_info[i].sector_count = flash_number_sector(pOrgDef, flash_nb_blocks);
memset (flash_info[i].protect, 0, flash_info[i].sector_count);
if (i == 0)
flashbase = PHYS_FLASH_1;
else
panic ("configured too many flash banks!\n");
sector = 0;
start_address = flashbase;
flash_info[i].size = 0;
for (j = 0; j < flash_nb_blocks; j++) {
for (k = 0; k < pOrgDef[j].sector_number; k++) {
flash_info[i].start[sector++] = start_address;
start_address += pOrgDef[j].sector_size;
flash_info[i].size += pOrgDef[j].sector_size;
}
}
size += flash_info[i].size;
if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
(ATM_ID_BV6416 & FLASH_TYPEMASK)){ /* AT49BV6416 Flash */ /*zzl*/
/* Unlock all sectors at reset */
for (j=0; j<flash_info[i].sector_count; j++){
flash_unlock_sector(&flash_info[i], j);
}
}
}
/* Protect binary boot image */
flash_protect (FLAG_PROTECT_SET,
CFG_FLASH_BASE,
CFG_FLASH_BASE + CFG_BOOT_SIZE - 1, &flash_info[0]);
/* Protect environment variables */
flash_protect (FLAG_PROTECT_SET,
CFG_ENV_ADDR,
CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
/* Protect U-Boot gzipped image */
flash_protect (FLAG_PROTECT_SET,
CFG_U_BOOT_BASE,
CFG_U_BOOT_BASE + CFG_U_BOOT_SIZE - 1, &flash_info[0]);
return size;
相关推荐
u-boot-1.1.4可以移植到很多系统的
本文档详细的分析了u-boot-1.1.4的源代码结构,主要的手段是通过详细的分析它的makefile文件与config.mk文件来实现的
[ ] eigenbase-properties-1.1.4-javadoc.jar 06-Dec-2013 18:28 83K [ ] eigenbase-properties-1.1.4-javadoc.jar.md5 06-Dec-2013 18:28 32 [ ] eigenbase-properties-1.1.4-javadoc.jar.sha1 06-Dec-2013 18:28...
u-boot-1.1.4-gd10afb39
写在前面:通过uboot的阅读我学到了很多东西,高手写的代码就是不一样。 代码阅读顺序: 1.第一阶段(Stage 1) 第一阶段的启动代码在 cpu\<cpu type>\start.s中,完成的工作主要有: .................
nacos-server-1.1.4.tar.gz下载,nacos-server-1.1.4.zip下载,免费下载
yum-3.4.3-154.el7.centos.noarch.rpm ...yum-metadata-parser-1.1.4-10.el7.x86_64.rpm rpm-4.11.3-25.el7.x86_64.rpm yum-updateonboot-1.1.31-42.el7.noarch.rpm yum-utils-1.1.31-42.el7.noarch.rpm
mysql 开启审计插件
编译好的带u-boot.bin文件的u-boot1.1.4包,内含如何修改的文章,.bin文件是2410的板子所用,本人正常使用
uboot 支持嵌入式linux系统的引导,而且还支持多种不同的cpu ,在移植时需要配置uboot已满足不同单板的需求。
u-boot-1.1.4 for smdk2410/2440
赠送原API文档:druid-1.1.4-javadoc.jar; 赠送源代码:druid-1.1.4-sources.jar; 赠送Maven依赖信息文件:druid-1.1.4.pom; 包含翻译后的API文档:druid-1.1.4-javadoc-API文档-中文(简体)-英语-对照版.zip; ...
mysql-connector-c++-noinstall-1.1.4-win32.zip mysql官方提供的连接库。 本来想修改成1分下载的,奈何至少5分。
赠送原API文档:snappy-java-1.1.4-javadoc.jar; 赠送源代码:snappy-java-1.1.4-sources.jar; 赠送Maven依赖信息文件:snappy-java-1.1.4.pom; 包含翻译后的API文档:snappy-java-1.1.4-javadoc-API文档-中文...
casperjs-1.1.4-1.zip
git官方地址下载nacos-server-1.1.4.zip速度太慢,下载完成之后,进入项目目录,然后 解压,点击bin下的 start.cmd
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
python库。 资源全名:kahypar-1.1.4-cp35-cp35m-manylinux2014_x86_64.whl
sjlombardo-sqlcipher-1.1.4-0-gc0cf162SQLCipher开发得和开放源码的扩展,它提供的SQLite数据库的透明加密.数据页之前被写入加密存储和读取解密. 它可以实现对android sqlite数据库加密,加密后的数据库可以做到任何...