/* SPI-Flash: CS - D9 MOSI - D11 MISO - D12 CLK - D13 SD-Card Shield: CS - D10 MOSI - D11 MISO - D12 CLK - D13 */ #include <SD.h> #include <SPIFlash.h> #define Flash_CS 9 #define SD_CS 10 #define FILENAME "BIOS.ROM" File myFile; SPIFlash flash(Flash_CS); void setup() { Serial.begin(115200); while (!Serial) {} // // SD- Serial.println("Initializing SD card..."); if (!SD.begin(SD_CS)) { Serial.println("Initialization SD card failed!"); return; } Serial.println("Initialization done."); // , Serial.print(FILENAME); if (SD.exists(FILENAME)) { Serial.println(" exists, removing..."); SD.remove(FILENAME); } else { Serial.println(" doesn't exist."); } // Serial.print("Creating "); Serial.print(FILENAME); Serial.println("..."); myFile = SD.open(FILENAME, FILE_WRITE); // - if (myFile) { // SPI Flash Serial.println("Initializing SPI Flash..."); flash.begin(); // / / 256 uint8_t data_buffer[256]; // uint32_t maxPage = flash.getMaxPage(); // Checksum (32 bit) uint32_t checkSum = 0; for (int page = 0; page < maxPage; page++) { // if ((page % 1000) == 0) { Serial.print(page + 1); Serial.print("/"); Serial.println(maxPage); } // SPI Flash flash.readByteArray(page, 0, &data_buffer[0], 256); // myFile.write(data_buffer, 256); // for (int i = 0; i < 256; i++) { checkSum += data_buffer[i]; } } // myFile.close(); // Serial.print("Checksum-32: 0x"); Serial.println(checkSum, HEX); Serial.println("Done."); } else { // , Serial.println("Error creating "); Serial.println(FILENAME); } } void loop() { // }
/* SPI-Flash: CS - D9 MOSI - D11 MISO - D12 CLK - D13 SD-Card Shield: CS - D10 MOSI - D11 MISO - D12 CLK - D13 */ #include <SD.h> #include <SPIFlash.h> #define Flash_CS 9 #define SD_CS 10 #define FILENAME "B75PRO31.90" File myFile; SPIFlash flash(Flash_CS); void setup() { Serial.begin(115200); while (!Serial) {} // // SD- Serial.println("Initializing SD card..."); if (!SD.begin(SD_CS)) { Serial.println("Initialization SD card failed!"); return; } Serial.println("Initialization done."); if (!SD.exists(FILENAME)) { Serial.print(FILENAME); Serial.println(" doesn't exist."); return; } // Serial.print("Opening "); Serial.print(FILENAME); Serial.println("..."); myFile = SD.open(FILENAME, FILE_READ); // - if (myFile) { Serial.print("File "); Serial.print(FILENAME); Serial.println(" is open."); // SPI Flash Serial.println("Initializing SPI Flash..."); flash.begin(); // if (flash.eraseChip()) { Serial.println("Chip erased."); } else { Serial.println("Error erasing chip."); return; } // / / 256 uint8_t data_buffer[256]; // uint32_t maxPage = flash.getMaxPage(); // Checksum (32 bit) uint32_t checkSum = 0; for (int page = 0; page < maxPage; page++) { // if ((page % 1000) == 0) { Serial.print(page + 1); Serial.print("/"); Serial.println(maxPage); } // myFile.read(data_buffer, 256); // SPI Flash flash.writeByteArray(page, 0, &data_buffer[0], 256); // for (int i = 0; i < 256; i++) { checkSum += data_buffer[i]; } } // myFile.close(); // Serial.print("Checksum-32: 0x"); Serial.println(checkSum, HEX); Serial.println("Done."); } else { // - Serial.print("Error opening "); Serial.println(FILENAME); } } void loop() { // }
/* SPI-Flash: CS - D9 MOSI - D11 MISO - D12 CLK - D13 */ #include <SPIFlash.h> #define Flash_CS 9 SPIFlash flash(Flash_CS); void setup() { Serial.begin(115200); while (!Serial) {} // // , SD- pinMode(10, OUTPUT); digitalWrite(10, HIGH); // SPI Flash Serial.println("Initializing SPI Flash..."); flash.begin(); // 256 uint8_t data_buffer[256]; // uint32_t maxPage = flash.getMaxPage(); // Checksum (32 bit) uint32_t checkSum = 0; for (int page = 0; page < maxPage; page++) { // if ((page % 1000) == 0) { Serial.print(page + 1); Serial.print("/"); Serial.println(maxPage); } // SPI Flash flash.readByteArray(page, 0, &data_buffer[0], 256); // for (int i = 0; i < 256; i++) { checkSum += data_buffer[i]; } } // Serial.print("Checksum-32: 0x"); Serial.println(checkSum, HEX); Serial.println("Done."); } void loop() { // }
Source: https://habr.com/ru/post/318110/
All Articles