ubnt解决方案
查看: 7045|回复: 6

[OpenWRT] 不同大小的Flash的对应位置和长度-学习经历

[复制链接]

220

回帖

868

积分

199 小时

在线时间

中尉

注册时间
2009-3-29
金币
606 个
威望
0 个
荣誉
0 个
累计签到:31 天
连续签到:0 天
[LV.50]初入江湖
发表于 2014-2-21 14:05
http://blog.csdn.net/sdvch/article/details/16343021:
MR3420的8M固件编译方法 五。进阶设置。
用WINSCP登陆
1.在路径 /trunk/tools/firmware-utils/src/mktplinkfw.c 这个文件里边有个“fw max len”,默认3c0000是4M的,请改成7c0000 (这一步把固件最大限制改成8M),如果是16mflash,请改成fc0000(最大限制改成16m)。
2、修改target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr841n.c(找相应文件)
4M:
41 .name = "u-boot",
42 .offset = 0,
43 .size = 0x020000,
44 .mask_flags = MTD_WRITEABLE,
45 }, {
46 .name = "kernel",
47 .offset = 0x020000,
48 .size = 0x140000,
49 }, {
50 .name = "rootfs",
51 .offset = 0x160000,
52 .size = 0x290000,
53 }, {
54 .name = "art",
55 .offset = 0x3f0000,
56 .size = 0x010000,
57 .mask_flags = MTD_WRITEABLE,
58 }, {
59 .name = "firmware",
60 .offset = 0x020000,
61 .size = 0x3d0000,
62 }
63 };
8M::
41 .name = "u-boot",
42 .offset = 0,
43 .size = 0x020000,
44 .mask_flags = MTD_WRITEABLE,
45 }, {
46 .name = "kernel",
47 .offset = 0x020000,
48 .size = 0x140000,
49 }, {
50 .name = "rootfs",
51 .offset = 0x160000,
52 .size = 0x690000,
53 }, {
54 .name = "art",
55 .offset = 0x7f0000,
56 .size = 0x010000,
57 .mask_flags = MTD_WRITEABLE,
58 }, {
59 .name = "firmware",
60 .offset = 0x020000,
61 .size = 0x7d0000,
62 }
63 };
16M::
41 .name = "u-boot",
42 .offset = 0,
43 .size = 0x020000,
44 .mask_flags = MTD_WRITEABLE,
45 }, {
46 .name = "kernel",
47 .offset = 0x020000,
48 .size = 0x140000,
49 }, {
50 .name = "rootfs",
51 .offset = 0x160000,
52 .size = 0xe90000,
53 }, {
54 .name = "art",
55 .offset = 0xff0000,
56 .size = 0x010000,
57 .mask_flags = MTD_WRITEABLE,
58 }, {
59 .name = "firmware",
60 .offset = 0x020000,
61 .size = 0xfd0000,
62 }
63 };
8M::
0x000000000000-0x000000020000 : "u-boot"
0x000000020000-0x000000160000 : "kernel"
0x000000160000-0x0000007f0000 : "rootfs"
0x000000620000-0x0000007f0000 : "rootfs_data"
0x0000007f0000-0x000000800000 : "art"
0x000000020000-0x0000007f0000 : "firmware"
4M::
0x000000000000-0x000000020000 : "u-boot"
0x000000020000-0x000000160000 : "kernel"
0x000000160000-0x0000003f0000 : "rootfs"
0x000000304000-0x0000003f0000 : "rootfs_data"
0x0000003f0000-0x000000400000 : "art"
0x000000020000-0x0000003f0000 : "firmware"
16M::
0x000000000000-0x000000020000 : "u-boot"
0x000000020000-0x000000160000 : "kernel"
0x000000160000-0x000000ff0000 : "rootfs"
0x000000380000-0x000000ff0000 : "rootfs_data"
0x000000ff0000-0x000001000000 : "art"
0x000000020000-0x000000ff0000 : "firmware"

????????

220

回帖

868

积分

199 小时

在线时间

中尉

注册时间
2009-3-29
金币
606 个
威望
0 个
荣誉
0 个
累计签到:31 天
连续签到:0 天
[LV.50]初入江湖
发表于 2014-2-21 14:06

不同的编译方法,Flash的分配也不同-学习写Uboot

本帖最后由 sd007 于 2014-2-22 15:40 编辑

参考文章:
http://blog.sina.com.cn/s/blog_776596a50101kbvg.html
http://code.google.com/p/wr703n-uboot-with-web-failsafe/

下面这个固件的Flash分配是这样的(固件是从这个帖子下载的:http://www.anywlan.com/thread-198687-1-1.htmlrt5350123.rarQ5 .)(应该是,不确切,因为从此之后没再写过U-BOOT,从openwrt的status-kernellog中取得):
[    0.440000] Creating 6 MTD partitions on "spi0.0":
[    0.450000] 0x000000000000-0x000000030000 : "u-boot"
[    0.460000] 0x000000030000-0x000000040000 : "u-boot-env"
[    0.480000] 0x000000040000-0x000000050000 : "factory"
[    0.490000] 0x000000050000-0x000000130000 : "kernel"
[    0.500000] 0x000000130000-0x000000400000 : "rootfs"
[    0.520000] mtd: partition "rootfs" set to be root filesystem
[    0.530000] mtd: partition "rootfs_data" created automatically, ofs=380000, len=80000
[    0.550000] 0x000000380000-0x000000400000 : "rootfs_data"
[    0.560000] 0x000000050000-0x000000400000 : "firmware"

可见是一个4M的固件,欲使用8M的固件,首先写U-boot,如果要完善的备份MAC等,参见下面文章:
http://code.google.com/p/wr703n-uboot-with-web-failsafe/
我的MAC已经被重写过,用编程写的,已经没有意义了, 不必费神了。

运行以下命令,得到需要的固件:
cd  /tmp
cat /dev/mtdblock0 >uboot.bin
cat /dev/mtdblock1 >uboot-env.bin
cat /dev/mtdblock2 >factory1.bin
cat /dev/mtdblock6 >firmware1.bin
ls *.bin -l
-rw-r--r--    1 root     root         65536 Feb 21 06:57 factory.bin
-rw-r--r--    1 root     root         65536 Feb 21 07:35 factory1.bin
-rw-r--r--    1 root     root       3866624 Feb 21 06:59 firmware.bin
-rw-r--r--    1 root     root       3866624 Feb 21 07:36 firmware1.bin
-rw-r--r--    1 root     root         65536 Feb 21 06:57 u-boot-env.bin
-rw-r--r--    1 root     root        196608 Feb 21 06:57 u-boot.bin
-rw-r--r--    1 root     root         65536 Feb 21 07:35 uboot-env.bin
-rw-r--r--    1 root     root        196608 Feb 21 07:35 uboot.bin

尝试写mtd0或者mtdblock0时,用了许多方法,包括cat/mtd write/flashcp均告失败,看来还有没有命令没使用好,请高手指教。
root@OpenWrt:/tmp# flashcp uboot256.img /dev/mtd0
While trying to open /dev/mtd0 for read/write access: Permission denied
root@OpenWrt:/tmp# flash_unlock /dev/mtdblock0
flash_unlock: error!: could not get mtd info: /dev/mtdblock0
              error 25 (Inappropriate ioctl for device)
root@OpenWrt:/tmp# flash_unlock /dev/mtd0
flash_unlock: error!: could not open: /dev/mtd0
              error 13 (Permission denied)
root@OpenWrt:/tmp# flashcp uboot256.img /dev/mtd0
While trying to open /dev/mtd0 for read/write access: Permission denied

只能使用ttl了。下面尝试使用TTL。
TTL连接好以后,在启动过程中,按下9:
Please choose the operation:
   1: Load system code to SDRAM via TFTP.
   2: Load system code then write to Flash via TFTP.
   3: Boot system code via Flash (default).
   4: Entr boot command line interface.
   7: Load Boot Loader code then write to Flash via Serial.
   9: Load Boot Loader code then write to Flash via TFTP.
观察要求的IP地址,设置好TFTP服务器,将Uboot的代码写入到设备中,设备会自动重启,如果没有错误的话,系统就又运行起来。
我的目的是找一个能有8M闪存空间的Uboot,很遗憾没有找到。
测试的几个Uboot:
1.最早用编程器写入的含固件的系统:固件是从这个帖子下载的:http://www.anywlan.com/thread-198687-1-1.htmlrt5350123.rar
若写入的固件失败,可以使用复位键用TFTP重新写入固件,方法是按着复位键给设备加电。设置TFTP服务器的IP地址为192.168.16.111(或者是123,可能是这个,记不太清楚了,可以用wireshark试试)。

2.从https://github.com/JiapengLi/OpenWrt-RT5350 下载的Uboot256.img,注意:他自己声明是:
UbootSelf compile uboot imageThese two file use 192.168.2.1(device ip) and 192.168.2.2(server ip) by default.
uboot256.img - (RT5350 32M RAM Uboot,support 32M SDRAM)
uboot128.img - (RT5350 16M RAM Uboot,support 16M SDRAM)

可是写入后若固件失败,要重新写入的话,一是不支持上面描述的用复位键用TFTP重新写入固件,二是若由TTL按2写入新的固件,TFTP的IP地址是10.10.10.123

3.上面的Uboot不完美,最后使用这个固件,也是从
https://github.com/JiapengLi/OpenWrt-RT5350 下载,Hame offcial mpr-a1 uboot image
hame-mpr-a1-v22-uboot128.bin - (HAME Uboot support 16MRAM, divide from hame-mpr-a1-v22.bin) 。
这个Uboot运行的非常好,虽然原作者声明是16MRAM,但是对32M的RAM支持的非常好。就是依旧只有4M的Flash可用,固件是不是不能超过4M,超过以后会如何,不得而知。
此固件不仅支持用复位键用TFTP重新写入固件,还可以用如下方法写入,非常方便,上传此Uboot。



发现个小工具可以不焊ttl也可以刷机,华美网站上的   A1红灯长亮无法开机,升级程序。--内附操作说明书、工具、软件。
http://www.hamedata.com.cn/uploadfiles/download/201210110214219016.rar

刷机有风险,请谨慎!变砖不负责!编程器可解决!





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
????????

220

回帖

868

积分

199 小时

在线时间

中尉

注册时间
2009-3-29
金币
606 个
威望
0 个
荣誉
0 个
累计签到:31 天
连续签到:0 天
[LV.50]初入江湖
发表于 2014-2-21 14:07
占位中----

1586

回帖

1万

积分

1323 小时

在线时间

上校

注册时间
2012-9-23
金币
11669 个
威望
638 个
荣誉
1 个
累计签到:1135 天
连续签到:4 天
[LV.1825]无线元老
发表于 2014-2-21 14:56
进来学习一下。

342

回帖

2660

积分

358 小时

在线时间

少校

注册时间
2010-1-18
金币
2256 个
威望
1 个
荣誉
0 个
累计签到:204 天
连续签到:0 天
[LV.365]无线熟人
发表于 2014-2-21 15:16 来自手机
表示没有看懂

63

回帖

824

积分

122 小时

在线时间

中尉

注册时间
2014-5-7
金币
739 个
威望
1 个
荣誉
0 个
累计签到:68 天
连续签到:0 天
[LV.100]试剑无线
发表于 2014-5-25 21:09
看脑晕完。。。

6

回帖

64

积分

10 小时

在线时间

上等兵

注册时间
2014-12-19
金币
57 个
威望
0 个
荣誉
0 个
累计签到:4 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2014-12-20 22:35
sd007 发表于 2014-2-21 14:06
参考文章:
http://blog.sina.com.cn/s/blog_776596a50101kbvg.html
http://code.google.com/p/wr703n-ub ...

参考下
http://blog.xujif.com/archives/openwrt-fix-wireless-no-ttl.html

编译尝试把  .mask_flags   = MTD_WRITEABLE这行注释掉

站点统计 | Archiver | 手机版 | 无线门户 ( 粤ICP备11076993号|粤公网安备44010602008359号 ) |网站地图

GMT+8, 2025-1-11 18:47

返回顶部 返回列表