极路由1S(HC5661A)刷breed刷错了,身边没有编程器写flash芯片(型号25Q128CS),因此就萌生了使用Arduino作为编程器的想法
参考了ZLBG这篇文章写得很不错
都是标准ISP协议,其他flash可以参考读写
电路图请参考ZLBG的博客文章,我贴一下Arduino接线
Arduino代码如下:
/*
communication with W25Q80BV (1 MBYTE SPI FLASH) using Arduino Pro Mini 3.3V/8MHz
Reference: http://www.instructables.com/id/How-to-Design-with-Discrete-SPI-Flash-Memory/?ALLSTEPS
Reference2: http://www.cnblogs.com/zlbg/p/4246721.html
*/
// the SPI bus uses pins 10 (SS), 11 (MOSI), 12 (MISO), and 13 (SCK)
/**
* 使用Arduino作为编程器将uboot写入flash(EEPROM)
* 注意uboot不要超过芯片存储容量
* 理论上支持所有EEPROM
*
* 测试机型:极路由1S(HC5661A),刷入breed
*/
#include <SPI.h>
#define READ_JEDEC_ID 0x9F
#define READ_STATUS_1 0x05
#define READ_DATA 0x03
#define WRITE_ENABLE 0x06
#define PAGE_PROGRAM 0x02
#define CHIP_ERASE 0