找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 19236|回复: 20

MR3420 16M u-boot编译方法,16M编程器固件放出,楼主亲自测成功

[复制链接]
发表于 2011-10-24 16:51 | 显示全部楼层 |阅读模式
本帖最后由 pupie 于 2011-10-26 21:10 编辑

参考:
https://right.com.cn/forum/viewt ... &highlight=3420

1. 下载解压源代码不再赘述 http://www.tp-link.com/support/t ... 5F3220v1%2Etar%2Egz
2. 进入build 目录:/home/colin/mr3420_3220v1/build
3. 备份make文件名
mv Makefile Makefile.bak
mv Makefile.ap99 Makefile
4. 在你的代码的home目录下建立一个目录,因为脚本最后会拷贝uboot.bin过来,起始不建立也可以。/home/用户名/images/ap99
5. 替换修改的/home/用户米/mr3420_3220v1/ap99/boot/u-boot/include/configs/ap99.h 头文件,此文件中定义了16M flash,如果是8M  Flash,请修改ap99.h 头文件中的 FLASH_SIZE 8
6. 启动编译make BOARD_TYPE=ap99 uboot
7. 最后到/home/用户名/images/ap99 下取得编译出来的u-boot.bin
8.由于uboot定义为128k长度,故用需要将其后面填满已达到128k,即每个由于NOR flash的特性,每个比特位初始化置为1,故ultraedit将后面填满,活的一个128k长度的uboot
9. uboot 1FC00 开始6字节是MAC,1FE00 开始 8字节是PIN,用uboot和编程器固件前记得修改,一般机器背面标贴会有MAC和PIN,保存加了mac和pin的uboot,的到一个新的uboot

压缩包包含2个,一个是原始编译出来的,一个是填到128k的
写flash的时候,用MR3420_16M_u-boot-128k.bin


如果是在TLL中更新uboot的时候,注意几点:

flash基址为:0x9f000000
CFG_FLASH_BASE                    0x9f000000

使用16M flash的时候,查data sheet注意满足ap99.h中定义:
CFG_FLASH_SECTOR_SIZE   (64*1024)  flash扇区大小为64k
CFG_MAX_FLASH_SECT      256  flash扇区数为256,即整个flash为64K*256=16384k=16M

查看openwrt 源代码 m25p80.c
支持的串行flash有:mx25l12805d,64k扇区,256个扇区。

类似的还有
{ "s25sl12801", INFO(0x012018, 0x0301,  64 * 1024, 256, 0) },

如果没有,要自己查data sheet 把device id he manufacturer id 等参数加入,注意如果不过64k扇区大小的flash会出错,对于16m芯片而言一定要用64k扇区256个扇区的flash


由于我没有焊台和编程器,无法验证,故买了一台全新3420找一位有焊接手艺朋友修改,我理论他实践,楼主以身试火。终于成功,另向此修改的原作者lzn致敬。
固件编译分区是按照16m的来的

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 };

然后按照楼下我的回帖做编程器固件

本帖子中包含更多资源

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

×

点评

楼主,不知道我要为840n v1升级16兆flash, 刷dd-wrt,以上步骤还需要哪些更改。  发表于 2013-6-7 23:25
发表于 2011-10-24 22:09 | 显示全部楼层
编程器我有,焊盘是啥东东?
 楼主| 发表于 2011-10-24 22:25 | 显示全部楼层
本帖最后由 pupie 于 2011-10-26 22:26 编辑

http://115.com/file/dngskdkx#mr3420_16m_all_pupie.rar

按照人生入戏的方法,以及dyq分享的art,生成了16M编程器固件,有编程器的朋友可以上,注意用之前看帖子改MAC和PIN!!

楼上的,抱歉,应该是焊台和编程器,我打成焊盘了
发表于 2011-10-24 22:44 | 显示全部楼层
http://115.com/file/dngskdkx#mr3420_16m_all_pupie.rar

按照人生入戏的方法,以及dyq分享的art,生成了16M编程器固件,有编程器的朋友可以上了。

楼上的,抱歉,应该是焊台和编程器,我打成焊盘了
pupie 发表于 2011-10-24 22:25

固件用的是哪版?
发表于 2011-10-24 23:02 | 显示全部楼层
請問MR3220怎樣編譯uboot呢? 找了很久沒找不到答案
 楼主| 发表于 2011-10-25 00:53 | 显示全部楼层
4# xll



ar71xx,openwrt 最新trunk,openwrt-ar71xx-generic-tl-mr3420-v1-squashfs-factory.bin 头加uboot,尾巴加art
 楼主| 发表于 2011-10-25 00:53 | 显示全部楼层
5# rice_big


跟MR3240一样
发表于 2011-10-25 21:50 | 显示全部楼层
5# rice_big


跟MR3240一样
pupie 发表于 2011-10-25 00:53

我用MR3420的uboot不能啟動,開機所有燈長亮
 楼主| 发表于 2011-10-26 10:48 | 显示全部楼层
本帖最后由 pupie 于 2011-10-26 17:46 编辑

8# rice_big


首先,你用的什么16M芯片,是否是64K扇区的型号?用64k扇区型号的,我的uboot已经可以启动我的3420了。之前问题出在flash芯片型号上,昨天用错256k扇区型号就会报错,如:
Creating 5 MTD partitions on "spi0.0":
0x000000000000-0x000000020000 : "u-boot"
0x000000020000-0x000000160000 : "kernel"
mtd: partition "kernel" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only
0x000000160000-0x000000ff0000 : "rootfs"
mtd: partition "rootfs" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only
mtd: partition "rootfs" set to be root filesystem
mtd: partition "rootfs_data" created automatically, ofs=3C0000, len=C30000
0x0000003c0000-0x000000ff0000 : "rootfs_data"
mtd: partition "rootfs_data" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only
0x000000ff0000-0x000001000000 : "art"
0x000000020000-0x000000ff0000 : "firmware"
mtd: partition "firmware" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only


其次,你用的什么固件?3420和3220固件不通用,因为硬件不同,你如果用我16M 3420的编程器固件,肯定会出问题:
TL-MR3420: Atheros AR9287 wireless chip. Single-band, 2x2 MIMO configuration http://www.atheros.com/technolog ... 1=47&product=80
TL-MR3220: Atheros AR9285 wireless chip. Single-stream (no MIMO, Lite-N) http://www.atheros.com/networkin ... nd=3&product=79

正确的做法是,用16M UBOOT, 加上3220为编译的openwrt,加上3220的art备份,用winhex组合做成16m编程器固件,然后再刷芯片焊接。关于如何组合编程器固件:

1. 用WINHEX 新建一个16M模板,用查找替换,把所有00 替换成FF
2. 打开uboot,按照你机器壳子后面的标签 修改MAC和PIN, 1FC00 开始6字节是MAC,1FE00 开始 8字节是PIN 然后保存,复制修改的uboot(128K), 写到(ctrl+b)模板头128K
3. 打开固件,大约15.75M, 复制,接着写128K后从0x20000开始写 .
4. 打开你的art备份,写到模板的最后64k地址。即从0xff0000开始
发表于 2011-10-26 20:34 | 显示全部楼层
8# rice_big


首先,你用的什么16M芯片,是否是64K扇区的型号?用64k扇区型号的,我的uboot已经可以启动我的3420了。之前问题出在flash芯片型号上,昨天用错256k扇区型号就会报错,如:
Creating 5 MTD partit ...
pupie 发表于 2011-10-26 10:48

我的flash是8M的.
我知道MR3420和MR3220的硬件不一樣,可是它的源代碼是同一個檔案,所以我不知道如何去區分和編譯.有人說是用AP99tpl去線譯,但我不知道如何做
 楼主| 发表于 2011-10-26 21:15 | 显示全部楼层
10# rice_big


参考我上面的方法,源代码,替换修改头文件,ap99.h,修改文件中的flash size定义 为8 以适应你的flash芯片,另外你一定要先确定linux内核支持你的芯片,而且你的芯片是64k扇区大小的。见openwrt 源码中 m25p80.c
然后按照 :https://right.com.cn/forum/thread-48506-1-1.html 中的方法,修改编译8M 固件
.在路径 /trunk/tools/firmware-utils/src/mktplinkfw.c  这个文件里边有个“fw max len”请改成7c0000 (这一步把固件最大限制改成8M),如果是16mflash,请改成fc0000(最大限制改成16m)。
2、修改target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-mr3x20.c(找相应文件)

然后再用我楼上的方法,组合一个8M编程器固件。
发表于 2012-7-7 00:17 | 显示全部楼层
记号一下 思考
发表于 2013-6-7 23:39 | 显示全部楼层
没查到m25p80.c里面的flash,哪位给个链接。。。。
发表于 2014-5-15 21:56 | 显示全部楼层
mark一把,下次编的时候参考
发表于 2014-8-27 23:39 | 显示全部楼层
谢谢分享~!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-6-30 18:40

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表