u-boot版本: v2009.08

在调试其他功能时增加了u-boot.bin容量到1M,使用fastboot download时提示:

sending 'bootloader' (1191 KB)...
OKAY [  1.062s]
writing 'bootloader'...
FAILED (remote: image too large for partition)
finished. total time: 1.098s

但是分区的时候是预留蛮大空间的:

# partition size in MB
BOOTLOAD_RESERVE=8

只能先查找出现error log的地方, uboot-imx/common/cmd_fastboot.c

static int rx_handler (const unsigned char *buffer, unsigned int buffer_size)
{
......else if ((download_bytes >(ptn->length * MMC_SATA_BLOCK_SIZE)) &&!(ptn->flags & FASTBOOT_PTENTRY_FLAGS_WRITE_ENV)) {printf("Image too large for the partition\n");sprintf(response, "FAILimage too large for partition");} else if (ptn->flags & FASTBOOT_PTENTRY_FLAGS_WRITE_ENV) {
......
}

download_bytes是要download的size,

ptn->length应该就是u-boot分区的大小了,以MMC_SATA_BLOCK_SIZE为单位。

那么ptn->length是什么时候得到的,看fastboot_init():

fastboot_init -> fastboot_init_mmc_sata_ptable

uboot-imx/drivers/fastboot/fastboot.c

static int fastboot_init_mmc_sata_ptable(void)
{
....../*以下操作是保存分区表信息到ptable中*/memset((char *)ptable, 0,sizeof(fastboot_ptentry) * (PTN_RECOVERY_INDEX + 1));/* MBR *//*头一个分区放MBR*/strcpy(ptable[PTN_MBR_INDEX].name, "mbr");ptable[PTN_MBR_INDEX].start = ANDROID_MBR_OFFSET / dev_desc->blksz;ptable[PTN_MBR_INDEX].length = ANDROID_MBR_SIZE / dev_desc->blksz;ptable[PTN_MBR_INDEX].partition_id = user_partition;/* Bootloader *//*保存bootloader信息,也就是u-boot信息*/strcpy(ptable[PTN_BOOTLOADER_INDEX].name, "bootloader");ptable[PTN_BOOTLOADER_INDEX].start =ANDROID_BOOTLOADER_OFFSET / dev_desc->blksz;ptable[PTN_BOOTLOADER_INDEX].length =ANDROID_BOOTLOADER_SIZE / dev_desc->blksz;ptable[PTN_BOOTLOADER_INDEX].partition_id = boot_partition;/*从MBR中读取boot, recovery, system分区的信息并保存*/setup_ptable_mmc_partition(PTN_KERNEL_INDEX,CONFIG_ANDROID_BOOT_PARTITION_MMC,user_partition, "boot", dev_desc, ptable);setup_ptable_mmc_partition(PTN_RECOVERY_INDEX,CONFIG_ANDROID_RECOVERY_PARTITION_MMC,user_partition,"recovery", dev_desc, ptable);setup_ptable_mmc_partition(PTN_SYSTEM_INDEX,CONFIG_ANDROID_SYSTEM_PARTITION_MMC,user_partition,"system", dev_desc, ptable);/*全部添加到ptable中*/for (i = 0; i <= PTN_RECOVERY_INDEX; i++)fastboot_flash_add_ptn(&ptable[i]);return 0;
}

ANDROID_BOOTLOADER_OFFSET:

#define ANDROID_BOOTLOADER_SIZE      0xFFC00

所以原因就在于u-boot.bin的size是在u-boot写死了,而不是从MBR中读取的,只要修改此值就可以了。

为什么不能按照读取boot分区那样操作呢?

因为在分区表里并没有保存bootloader的信息,所以MBR和u-boot只能在u-boot中写死了。

[IMX6Q]fastboot下载u-boot.bin失败提示太大原因相关推荐

  1. Java程序员面试失败的5大原因

    也许这5点原因适用于所有的程序员 1.说得太少 尤其是那些开放式的问题,如"请介绍下你自己"或"请讲一下你曾经解决过的复杂问题".面试官会通过你对这些技术和非技 ...

  2. 101个失败案例背后:创业公司失败的20大原因

    近日,美国科技市场研究公司CB Insights近期通过分析101家科技创业公司的失败案例,总结出了创业公司失败的20大主要原因,包括融资烧完.竞争力不足.产品糟糕和商业模式不佳等. 以下是这20个原 ...

  3. IBM Watson失败的4大原因

    https://blog.csdn.net/cf2SudS8x8F0v/article/details/83509728 来源:大数医达 被称为"认知计算"革命性代表的IBM Wa ...

  4. 你为什么被拒?盘点面试失败的3大原因

    在路上提问: <罗马假日>里有句话说:身体和灵魂,总有一个要在路上.旅行是一个很棒的生活方式,开拓眼界,调整身心.但在正值为生计和理想奋斗的当下,旅行在我的时间中,始终只能占个奢侈又寥寥的 ...

  5. java跳槽原因_跳槽求职必看:Java程序猿面试失败的5大原因!

    四月,又到了应聘跳槽高峰期了,而应聘程序员的要求更是越来越多了.如今的企业不仅要程序员做的了专职码农,还要你有一定的工作经验和过硬的技术,不仅找的到bug还能搞的定产品,不仅逻辑思维细密还要能抗压力, ...

  6. 网上开店失败的7大原因

    1.定位不明确 网站定位是一个网站生存的根本,缺乏定位或者定位不明确的网站,在运营的时候将会迷失方向,在互联网商业的迷雾中乱串,最终以耗尽资源而告终. 2.维护不得力 很多网站在前期策划的时候,收纳了 ...

  7. Linux 大文件拷贝失败,linux – Rsync失败,“文件太大”

    我正在编写一个简单的备份脚本,将我的所有媒体文件复制到外部USB驱动器.好像有一个文件呛到了,我不知道为什么.只是试图复制我得到的那个文件: [satori7@tyson Scripts]$sudo ...

  8. [问题小计]火狐浏览器下载任何东西都是提示失败

    这两天用火狐浏览器下载任何东西都失败,如下: ​ 网上找了一圈,才发现原来是下载路径设置有误,原本的路径下应该是没有保存文件的权限. 重新修改后,恢复正常,实操过程记录如下. 浏览器打开后右上角点击, ...

  9. 解决Ubuntu“下载额外数据文件失败 ttf-mscorefonts-installer”的问题 (转载)

    解决Ubuntu"下载额外数据文件失败 ttf-mscorefonts-installer"的问题 发表于 2017-09-15 | 更新于 2018-04-29 | 分类于 Li ...

  10. android tmp目录权限不够,/tmp目录下执行脚本失败提示Permission denied

    Linux上执行Shell脚本运行失败提示Permission denied一个问题,挺好的问题,切中了知识盲点. 问题现象 Shell脚本在/tmp目录下,执行./test.sh运行失败,提示Per ...

最新文章

  1. python中获取python版本号的方法
  2. 遇到一个git的大坑 src refspec master does not match any error: failed to push some refs to
  3. 【STM32】硬件随机数程序示例
  4. NullPointerException at org.mapstruct.ap.internal.processor.DefaultVersionInformation.createManifest
  5. layer弹出层 获取index
  6. Python_argparse
  7. 类和对象(2)—— 类的封装和访问控制
  8. 3-20Pytorch与张量裁剪运算
  9. Hadoop集群下进行集成测试的小策略
  10. 潭州课堂25班:Ph201805201 tornado 项目 第三课 项目 图片上传,展示 (课堂笔记)...
  11. 【车间调度】基于matlab GUI遗传算法求解车间调度问题【含Matlab源码 049期】
  12. GB35114-SIP部分技术预研
  13. 随机森林、极端随机森林以及深度森林代码
  14. 打开Office时总是提示“正在配置microsoft office解决方法
  15. Maven使用tomcat8-maven-plugin插件
  16. 【黄啊码】微信小程序弹窗图片滚动
  17. 聊一聊芯片后端的标准单元-standard cell
  18. ​​insecure-configuration --复现
  19. python百度地图poi_百度地图的poi如何调用
  20. 一、barrier指令DSB,DMB,ISB,fence——内存屏障,指令屏障

热门文章

  1. 摩斯电码php源码,摩斯密码: 用php实现摩斯密码 morse
  2. python爬虫系列——拉勾网
  3. 腾讯低代码(lowcode)行列布局
  4. 接地/漏电(原理图)/接零/零线保护
  5. android图片聊天背景图片,32张黑色简约手机壁纸图片大全 也适合作微信7.0聊天背景图片...
  6. EndNote X9使用教程
  7. 用html做自我介绍
  8. AD绘制PCB经验总结3-规则报警 Silk primitive without silk layer+Minimum Solder Mask Sliver
  9. apache Fop 2.1 支持中文
  10. CLM陆面过程模式实践技术应用