openwrt flash layout

openwrt典型的有两种布局方式,一种是KR(kernel在前,rootfs在后),另一种是RK(rootfs在前,kernel在后)。

AP1_mtdlayout_8M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6336k(rootfs),1408k(kernel),64k(mib0),64k(art),7744k@0x50000(firmware)
AP2_mtdlayout_16M=mtdparts=spi0.0:128k(u-boot)ro,1408k(kernel),14784k(rootfs),64k(art)ro,16192k@0x20000(firmware)

布局:
例:
AP2,它的启动地址是9f020000,其实就是从flash的128k的位置加载kernel,这种就是需要使用KR的固件布局。前128k是uboot。
AP1,它的启动地址是在flash的中间位置0x9f680000,这样就需要使用RK的布局。320K uboot,6336K rootfs。
启动地址始终需要读取到kernel的头部,才能正常启动。

firmware:
firmware=kernel+rootfs
AP1,6336K(rootfs)+1408K(kernel)=7744K(firmware)
AP2,1408K(kernel)+14784K(rootfs) = 16192K(firmware)

地址推算:
AP1:
uboot    9F000000--9F050000
rootfs    9F050000--9F680000
kernel   9F680000--9F7E0000
mib0     9F7E0000--9F7F0000
art          9F7F0000--9F800000

AP1      
uboot    9F000000--9F020000
kernel   9F020000--9F180000
rootfs    9F180000--9FFF0000
art          9FFF0000--A0000000

可以从uboot和原固件的启动信息来确定FLASH布局
FLASH采用什么布局都无所谓,最根本只需要确定uboot从哪个地方去加载kernel,只要这个确定了,那固件要怎么布局也就基本确定了
可以修改,printenv里的bootm的启动地址修改后,就可以任意使用自己想用的布局了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值