【OpenWrt笔记】MT76x8 reboot命令后系统死机

本文介绍了一种解决开发板在烧写固件后,执行reboot命令时出现卡死现象的方法。通过修改m25p80.c文件中的shutdown函数,确保了开发板在重启过程中的正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象

将固件烧写到系统后,执行reboot命令重启时,开发板卡死,无法进入重启流程。

解决

修改m25p80.c文件

diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
index 8548270..9b186b1 100644
--- a/drivers/mtd/devices/m25p80.c
+++ b/drivers/mtd/devices/m25p80.c
@@ -259,6 +259,21 @@ static int m25p_remove(struct spi_device *spi)
         return mtd_device_unregister(&flash->spi_nor.mtd);
}

+static void m25p_shutdown(struct spi_device *spi)
+{
+        struct m25p        *flash = spi_get_drvdata(spi);
+
+        if ((&flash->spi_nor)->addr_width > 3) {
+                printk(KERN_INFO "m25p80: exit 4-byte address mode\n");
+                flash->command[0] = SPINOR_OP_EX4B;  // exit 4-byte address mode: 0xe9
+                spi_write(flash->spi, flash->command, 1);
+                flash->command[0] = 0x66;  // enable reset
+                spi_write(flash->spi, flash->command, 1);
+                flash->command[0] = 0x99;  // reset
+                spi_write(flash->spi, flash->command, 1);
+        }
+}
+
/*
  * Do NOT add to this array without reading the following:
  *
@@ -329,6 +344,7 @@ static struct spi_driver m25p80_driver = {
         .id_table        = m25p_ids,
         .probe        = m25p_probe,
         .remove        = m25p_remove,
+        .shutdown = m25p_shutdown,

         /* REVISIT: many of these chips have deep power-down modes, which
          * should clearly be entered on suspend() to minimize power use.
<think>好的,用户的问题是关于如何使用TFTP命令下载特定版本的OpenWRT固件。首先,我需要确认用户的需求。他们提到的是“openwrt-ramips-mt76x8-alfa-network_awusfree1-squashfs”这个固件文件,并且想通过TFTP下载。首先,我需要回忆TFTP的基本用法,以及OpenWRT固件下载的一般步骤。 首先,TFTP(Trivial File Transfer Protocol)是一个简单的文件传输协议,通常用于局域网内传输小文件,尤其是在没有复杂验证的情况下。用户可能需要通过TFTP将固件上传到路由器进行刷机。不过,通常OpenWRT刷机可能使用scp或者web界面,但TFTP在某些情况下也是可行的,特别是当设备支持从TFTP服务器启动恢复模式时。 接下来,用户需要下载特定版本的固件。OpenWRT的固件命名通常包含硬件架构、型号和版本信息。用户提供的文件名“openwrt-ramips-mt76x8-alfa-network_awusfree1-squashfs”看起来像是特定设备的固件,可能属于Alfa Network的AWUSFREE1型号,基于ramips架构的mt76x8芯片组。用户可能需要确认这个固件的正确性,确保与设备兼容。 接下来,使用TFTP下载的过程通常涉及设置TFTP服务器,将固件文件放在服务器的指定目录,然后配置客户端(如路由器)从服务器获取文件。不过,用户的问题是如何下载固件到本地,可能是指从本地计算机通过TFTP上传到设备,或者从远程服务器下载到本地。需要进一步明确,但根据问题描述,可能是指将固件从本地计算机通过TFTP传输到设备。 可能步骤包括: 1. 在本地计算机上搭建TFTP服务器,确保固件文件存放在正确目录。 2. 配置设备的网络设置,使其能连接到TFTP服务器。 3. 进入设备的恢复模式或启动加载程序,执行TFTP命令下载固件。 但用户的问题可能更偏向于如何从互联网下载特定版本的固件到本地,然后通过TFTP上传到设备。因此,可能需要先指导用户如何从OpenWRT官网或镜像站点下载正确的固件文件,然后设置TFTP服务器进行传输。 需要注意的是,不同设备的TFTP刷机方法可能不同,可能需要特定的步骤,比如在设备启动时按下某个键进入恢复模式,设置计算机的IP地址与设备在同一子网,配置TFTP服务器参数,然后触发设备的TFTP客户端下载固件。 另外,用户提到的引用中有一个文件名“openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin”,但用户需要的是mt76x8的型号,可能存在混淆,需要确认设备型号和固件的匹配性,避免刷错导致设备变砖。 总结步骤: 1. 下载正确的固件文件到本地计算机。 2. 设置本地计算机为TFTP服务器,配置正确的目录和权限。 3. 连接设备到计算机,确保网络连通。 4. 进入设备的TFTP恢复模式。 5. 执行TFTP命令上传固件到设备。 6. 等待刷机完成,重启设备。 需要详细说明每一步的具体操作,包括如何下载固件、安装和配置TFTP服务器(例如使用tftp-hpa或atftpd),设置静态IP,以及设备端的操作步骤。 可能遇到的问题包括:固件版本不匹配、TFTP服务器配置错误、网络连接问题、设备无法进入恢复模式等,需要给出相应的解决建议或注意事项,比如备份原固件、确认MD5校验等。</think>### 如何使用 TFTP 下载 OpenWRT 固件文件 #### 步骤 1:下载正确的固件文件 1. 访问 OpenWRT 官方固件仓库: - 官方地址:<https://downloads.openwrt.org> - 根据设备型号选择路径。例如,`openwrt-ramips-mt76x8-alfa-network_awusfree1-squashfs` 的固件可能位于: $$ \text{https://downloads.openwrt.org/releases/[版本号]/targets/ramips/mt76x8/} $$ - 确保文件名包含 `squashfs-sysupgrade.bin` 或 `squashfs-factory.bin`,表示刷机文件[^1]。 2. **校验文件完整性**: - 下载后对比文件的 SHA256 或 MD5 校验值,避免损坏。 --- #### 步骤 2:配置 TFTP 服务器 1. **安装 TFTP 服务器**(以 Ubuntu 为例): ```bash sudo apt install tftpd-hpa ``` - 配置文件路径:`/etc/default/tftpd-hpa`,需指定固件存放目录(如 `/var/lib/tftpboot`)。 2. **放置固件文件**: ```bash sudo cp openwrt-ramips-mt76x8-alfa-network_awusfree1-squashfs-sysupgrade.bin /var/lib/tftpboot/ sudo chmod 666 /var/lib/tftpboot/*.bin ``` 3. **重启 TFTP 服务**: ```bash sudo systemctl restart tftpd-hpa ``` --- #### 步骤 3:设备端操作 1. **连接设备与计算机**: - 通过网线直连,并设置计算机的 IP 为 `192.168.1.100`(子网掩码 `255.255.255.0`)。 2. **进入设备的 TFTP 恢复模式**: - 断电后长按复位键(或特定组合键)再通电,进入刷机模式。不同设备操作可能不同,需参考手册。 3. **通过 TFTP 上传固件**: - 设备启动时会自动从 TFTP 服务器获取文件。若需手动触发,可通过设备的 U-Boot 命令行输入: ``` tftpboot 0x80060000 openwrt-ramips-mt76x8-alfa-network_awusfree1-squashfs-sysupgrade.bin erase 0x9f050000 +0x200000 cp.b 0x80060000 0x9f050000 0x200000 reset ``` --- #### 注意事项 1. **网络配置**:确保设备与 TFTP 服务器在同一子网。 2. **固件兼容性**:刷错固件可能导致设备变砖,务必验证文件名与设备型号匹配。 3. **备份配置**:刷机前备份原系统配置(如有)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值