jk110333 发表于 2015-10-10 13:31

制作编程器固件教程


原文连接:http://www.openwrtdl.com/wordpress/?p=177关注订阅号实时查看制作编程器固件(以7620为例)
说明编程器固件依据flash大小而定,一般是8M和16M。
步骤1、确定分区路由器上看mtd分区,命令cat/proc/mtdroot@openwrt:/# cat /proc/mtddev:   size   erasesizenamemtd0: 00030000 00010000"u-boot"mtd1: 00010000 00010000"u-boot-env"mtd2: 00010000 00010000"Factory"mtd3: 00140000 00010000 "kernel"mtd4: 00e70000 00010000 "rootfs"mtd5: 00890000 00010000"rootfs_data"mtd6: 00fb0000 00010000"firmware"mtd7: 01000000 00010000"fullflash"另外用logread命令可以看出来flash的大小和每个分区的起始结束点[   0.520000] deice id : ef 40 18 0 0 (40180000)[   0.528000] W25Q128BV(ef 40180000) (16384 Kbytes)----这个大小就是flash大小[   0.536000] mtd .name = raspi, .size = 0x01000000 (0M) .erasesize =0x00000010 (0K) .numeraseregions = 65536[   0.564000] Squashfs filesystem found at offset 0x190000,adjustment mtdpartition.[   0.580000] Creating 7 MTD partitions on "raspi":[   0.588000] 0x000000000000-0x000000030000 : "u-boot"[   0.600000] 0x000000030000-0x000000040000 : "u-boot-env"[   0.612000] 0x000000040000-0x000000050000 : "Factory"[   0.624000] 0x000000050000-0x000000190000 : "kernel"[   0.636000] 0x000000190000-0x000001000000 : "rootfs"[   0.648000] mtd: partition "rootfs" set to be root filesystem[   0.660000] mtd: partition "rootfs_data" created automatically,ofs=770000, len=890000[   0.676000] 0x000000770000-0x000001000000 : "rootfs_data"[   0.688000] 0x000000050000-0x000001000000 : "firmware"[   0.700000] 0x000000000000-0x000001000000 : "fullflash"
从上面的信息可以看出每个分区所占用的flash空间范围。
对7620来说我们需要的分区就是上面红色字体的几个。
2、获取每个分区数据获取uboot、uboot-env,Factory分区root@openwrt:/# dd if=/dev/mtd0of=/tmp/uboot.bin384+0 records in384+0 records outroot@openwrt:/#root@openwrt:/# dd if=/dev/mtd1of=/tmp/uboot-env.bin128+0 records in128+0 records outroot@openwrt:/# dd if=/dev/mtd2of=/tmp/Factory.bin128+0 records in128+0 records out
获取firmware分区的方法这个有两个方法,一个直接使用openwrt编译出来squashfs-factory.bin,注意是factory的固件,不是squashfs-sysupgrade.bin,这种方法需要给不满firmware分区长度的部分补0,让他的长度达到firmware分区的大小。另一个就是先把factory或者sysupgrade的固件传到路由器上,mtd写进去,在用dd读出来,注意在读取之前不能重启,保证新写进去的固件是没有被启动过的root@openwrt:~# mtd write/tmp/xxx-squashfs-sysupgrade.bin firmware这样将固件写入到firmware分区,在用dd命令读取出来firmware数据root@openwrt:~# dd if=/dev/mtd6 of=/tmp/firmware.bin32128+0 records in32128+0 records outroot@openwrt:~#所有分区的数据都得到了,下面该合并了。
3、合并分区得到编程器固件用winscp将路由器中的文件复制到电脑上(需要路由器固件支持ssh,scp)合并用到的软件是winhex我的方法是分别复制uboot-env.bin,factory.bin,firmware.bin的数据到uboot的下面粘贴,这样就ok了!注意一定要看清楚每个分区的顺序

lqvj 发表于 2015-10-10 17:11

最好是个图文教程,这样很难懂的,有些固件breed不能识别又是怎么情况

水中的萍 发表于 2015-10-10 19:54

就是,来个图文教程。

kepyy 发表于 2015-10-11 19:20

就是,来个图文教程。

10655188 发表于 2015-10-14 01:01

辛苦了来个图文吧谢谢

modi5156 发表于 2015-10-14 01:11

:lol
谢谢分享

hello520i 发表于 2015-10-29 02:33

学习学习,谢谢楼主分享

624440703 发表于 2015-10-29 05:08

学习学习,谢谢楼主分享

喝茶的鱼 发表于 2015-10-29 05:31

学习:victory:

jk110333 发表于 2015-11-4 11:15

lqvj 发表于 2015-10-10 17:11
最好是个图文教程,这样很难懂的,有些固件breed不能识别又是怎么情况

我见过breed不能启动固件的情况
这种情况没办法的   只能换个uboot

jk110333 发表于 2015-11-4 11:16

水中的萍 发表于 2015-10-10 19:54
就是,来个图文教程。

没什么需要图片的
本来想用图片 但是一想好多需要复制的,给你图片你就复制不了了。。

jk110333 发表于 2015-11-4 11:17

624440703 发表于 2015-10-29 05:08
学习学习,谢谢楼主分享

{:1_1:}:lol:victory:
页: [1]
查看完整版本: 制作编程器固件教程