项目简介
本项目是基于ARM STM32F103C8T6开发板(“蓝药丸”)的SPI NOR闪存读写器,主要用于转储和替换Ubiquiti Unifi接入点(UAP)中使用的Winbond 25Q64CVFIG芯片。NOR闪存存在比特翻转问题,会致使UAP出现内核崩溃、随机锁定或无法启动等状况,此读写器可有效修复这类问题。
项目的主要特性和功能
- 闪存转储:能通过SSH或SPI接口转储UAP中Winbond 25Q64CVFIG芯片的数据,可备份包含设备特定数据(如MAC地址和校准信息)的“EEPROM”分区。
- 闪存编程:可擦除芯片并将转储文件编程到芯片中,同时对编程后的芯片进行验证。
- TFTP编程:支持通过TFTP协议对NOR闪存的特定分区(如Linux内核和根文件系统)进行编程和验证。
- 诊断辅助:提供诊断方法,帮助用户识别NOR闪存比特翻转问题,如查看启动加载器错误和squashfs错误。
安装使用步骤
硬件准备
- 准备以下硬件:
- 1块STM32F103C8T6“蓝药丸”开发板
- 1个ST - Link v2调试器
- 若干个替换用的25Q64CVFIG芯片
- 3个4K7电阻
- 1块面包板
- 1个热风枪
- 1根FTDI或类似的3.3V串口转USB线
- 若无法启动UAP的Linux系统,需按
schematic
目录中的电路图将芯片连接到“蓝药丸”开发板。
软件准备
安装以下开发工具: - Eclipse(Mars.2) - GNU ARM Eclipse插件 - GCC for ARM工具链(gcc - arm - none - eabi - 4_9 - 2015q3) - OpenOCD(0.90)
闪存转储
通过SSH转储
若UAP能正常启动,可使用以下命令通过SSH转储闪存数据:
bash
cd openocd
./dump - via - ssh.sh <ip address>
建议多次转储并比较结果,确保数据准确。
通过SPI转储
- 导入项目(
dump_spi_flash
文件夹),使用launch_configurations
文件夹中的启动配置。 - 启动OpenOCD:
bash cd openocd ./launch.sh
- 在Eclipse中选择
Debug
配置,运行项目(dump_spi_flash Debug
)。 - 在OpenOCD界面中,根据提示输入相应命令操作:
d
:读取闪存数据并保存到dump.bin
文件。p
:擦除芯片并将dump.bin
文件编程到芯片中,然后验证。v
:读取闪存数据并与dump.bin
文件比较。
TFTP编程
- 配置TFTP服务器(如使用tftpd - hpa或OS X内置服务器),确保UAP和TFTP服务器的IP地址正确配置。
- 根据需要,使用U - boot命令通过TFTP对NOR闪存的特定分区进行编程和验证,例如:
bash ar7240> tftp 83000000 mtdblock2 ar7240> protect off all ar7240> erase 0x9f050000 +0x100000 ar7240> cp.b 0x83000000 0x9f050000 0x100000 ar7240> cmp.b 0x83000000 0x9f050000 0x100000
可多次运行验证命令,检查是否存在比特翻转问题。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】