给小度路由换了16M的flash,重新编译了Uboot。但下载固件时出下如下情况:
Bytes transferred = 6291460 (600004 hex) NetBootFileXferSize= 00600004 raspi_erase_write: offs:50000, count:600004 Abort: image size larger than 3866624! ## Booting image at bc050000 ... raspi_read: from:50000 len:40 Bad Magic Number,FFFFFFFF
从uboot的config看,在非dual image模式下Uboot应该是不会受flash大小影响的,估计是openwrt固件的分区表的问题。
以上分析是完全错误的,经王工提醒,在之前的Uboot启动信息中还有一句警告被我忽视了:
Warning: un-recognized chip ID, please update bootloader!
原来是没检测到flash芯片的ID,于是我查看了/driver下的spi_flash.c
发现果然没有我使用的winboard芯片,于是我将我芯片写入了其中
{ "W25Q128BV", 0xef, 0x40180000, 64 * 1024, 256, 0 },
编译之,烧写之,再运行~
OK了~~~成功进入系统
但rootfs仍然只有2M多点,很奇怪的是在dts中并没有看到rootfs分区,观察rootfs的数值,我猜想rootfs是不是就是firmware-kernel的剩余空间,于是乎我将firmware分区改到了最大。
果然,rootfs变多了。
另外在4-debug模式下,还看到如下警告:
Sat Feb 22 08:02:56 2014 kern.warn kernel: [ 0.930000] mtd: partition "rootfs" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only
dq给出的答案:
firmware分区是刷 kernel+rootfs
kernel现在大小不是64k的整数倍,比如 大小996k,这样紧跟着的rootfs,就不是从64k的整数倍开始的,就会提示错误。
在kernel后补一个996k%64k – 64(64是uImage header的大小)大小的内容,kernel大小就可以是64k的整数倍了。
kernel现在大小不是64k的整数倍,比如 大小996k,这样紧跟着的rootfs,就不是从64k的整数倍开始的,就会提示错误。
在kernel后补一个996k%64k – 64(64是uImage header的大小)大小的内容,kernel大小就可以是64k的整数倍了。
openwrt kernel 起始地址是bc040000 小度路由的uboot是 bc050000
这个可以自己改,不一定是50000
请问U-BOOT是在哪里下载的?官方是否会提供?
百度“Ralink ApSoc SDK 网盘”就有了
请问在哪里修改在kernel后面补996k%64k – 64?