linux mtd手动烧写固件,路由器固件的几种烧写方式

1.httpd方式:

Uboot启动时按住reset键,设置电脑ip:192.168.1.x

在电脑端登入192.168.1.1

进入升级界面升级

2. MTD

启动路由器,进入linux环境。

通过winscp 连接ssh

然后将 _ar71xx_.bin 拷贝到 /tmp 目录

切换到tty,在命令行下输入

mtd

mtd -r write

/tmp/_ar71xx_.bin firmware

同理:如果刷Uboot

则执行如下命令

mtd -r write /tmp/uboot.bin u-boot

附录1:分区备份

备份art:dd

if=/dev/mtd4 of=/tmp/art.bin

写入art:mtd -r write

/tmp/art.bin art

附录2:查看Flash分区

root@OpenWrt:/# cat /proc/mtd

dev:    size

erasesize  name

mtd0: 00020000 00010000 "u-boot"

mtd1: 000ecf6c 00010000 "kernel"

mtd2: 006e3094 00010000 "rootfs"

mtd3: 00550000 00010000 "rootfs_data"

mtd4: 00010000 00010000 "art"

mtd5: 007d0000 00010000 "firmware"

附录3:

如果你想从原来的tp-link固件升级到op 那就刷带factory的固件

如果你想从某个版本的op升级到新的op

那就sysupgrade固件

无论是从tp-link还是op升级 都可以用factory固件

如果你需要更新系统后还保持原来的设置和安装的软件,就用sysupgrade

3.TFTPD32

1.在Windows上搭建TFTPD32

服务,然后把固件放在tftp服务器下

2.设置路由器的IP和IPserver

ar7240>setenv ipaddr 192.168.1.2

ar7240>setenv serverip

192.168.1.10

3.在uboot命令下,就可以把tftp上的固件刷到路由器

//1.将固件加载到内存0x8000 0000

ar7240>

tftpboot 0x80000000 wr841n-v5.bin

//2.擦除Flash地址0x9F02 0000 大小0x3C0000的空间

ar7240> erase 0x9f020000

+0x3c0000

//3.将RAM中的数据拷贝到Flash中 cp.b src dst size[b w l]

ar7240> cp.b 0x80000000 0x9f020000

0x3c0000

//4.启动内核

ar7240> bootm 0x9f020000

附录:

Easy-Link> printenv

bootargs=console=ttyS0,115200 root=31:02

rootfstype=squashfs init=/sbin/init

mtdparts=ar7240-nor0:128k(u-boot),1024k(kernel),2816k(rootfs),64k(config),64k(ART)

bootcmd=bootm 0x9F020000

bootdelay=2

baudrate=115200

ipaddr=192.168.1.1

serverip=192.168.1.100

bootfile="firmware.bin"

loadaddr=0x80800000

ncport=6666

stdin=serial

stdout=serial

stderr=serial

ethact=eth0

Environment size: 364 bytes

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mtdLinux中的一种驱动框架,用于支持闪存的读写操作。通过mtd,我们可以在Linux中使用flash,进行数据的存储和读取。mtd提供了一组API,让我们可以在应用程序中直接操作flash,而无需自己编写底层驱动程序。 要使用mtd烧写程序,需要以下步骤: 1. 准备好闪存设备和对应的驱动程序。在Linux中,mtd框架对应的驱动程序通常是NOR或NAND Flash驱动程序。 2. 创建mtd分区。mtd分区是flash中的一段逻辑地址空间,用于存储数据。可以使用mtdutils工具来创建和管理mtd分区。例如,可以使用mtd_utils工具的mtd_debug命令,来查看当前系统中的mtd分区信息。 3. 在应用程序中使用mtd API读写mtd分区。在mtd的API中,最基本的是mtd_read和mtd_write函数。mtd_read函数用于从mtd分区中读取数据,mtd_write函数用于向mtd分区中写入数据。此外,还有一些其他函数,如mtd_erase函数用于擦除mtd分区中的数据。 4. 对于较大的数据块,如果一次写入不能完成,可以使用mtd_oob写入。这个函数可以将除数据外还有一部分空间,用于存储一些控制信息,例如校验和等。 通过以上步骤,我们可以使用mtd框架进行flash烧写操作。需要注意的是,在使用mtd烧写时,必须要保证闪存设备的正确连接和配置,否则可能会导致数据丢失或其他异常情况。因此,建议在熟悉闪存设备和mtd框架的基础上进行操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值