24 os_printf(
"manufacturer ID: 0x%x, device ID: 0x%x\n", (flash_id >> 8), (flash_id & 0xff));
50 if (size <=
sizeof(uint32_t)) {
51 #ifdef EXT_SPI_RAM_IS_NAND 58 for (i = 0; i < (size /
sizeof(uint32_t)); i++) {
59 #ifdef EXT_SPI_RAM_IS_NAND 60 *(dst_addr + i) =
spi_transaction(
HSPI, 8, 0x03, 24, src_addr +
sizeof(uint32_t) * i, 0, 0,
sizeof(uint32_t) * CHAR_BIT, 0);
62 *(dst_addr + i) =
spi_transaction(
HSPI, 8, 0x03, 16, src_addr +
sizeof(uint32_t) * i, 0, 0,
sizeof(uint32_t) * CHAR_BIT, 0);
65 if (size %
sizeof(uint32_t)) {
66 #ifdef EXT_SPI_RAM_IS_NAND 67 *(dst_addr + i) =
spi_transaction(
HSPI, 8, 0x03, 24, src_addr +
sizeof(uint32_t) * i, 0, 0, (size %
sizeof(uint32_t)) * CHAR_BIT, 0);
69 *(dst_addr + i) =
spi_transaction(
HSPI, 8, 0x03, 16, src_addr +
sizeof(uint32_t) * i, 0, 0, (size %
sizeof(uint32_t)) * CHAR_BIT, 0);
81 if (size <=
sizeof(uint32_t)) {
83 #ifdef EXT_SPI_RAM_IS_NAND 89 #ifdef EXT_SPI_RAM_IS_NAND 96 for (i = 0; i < (size /
sizeof(uint32_t)); i++) {
98 #ifdef EXT_SPI_RAM_IS_NAND 99 spi_transaction(
HSPI, 8, 0x02, 24, dst_addr +
sizeof(uint32_t) * i,
sizeof(uint32_t) * CHAR_BIT, *(src_addr + i), 0, 0);
101 spi_transaction(
HSPI, 8, 0x02, 16, dst_addr +
sizeof(uint32_t) * i,
sizeof(uint32_t) * CHAR_BIT, *(src_addr + i), 0, 0);
104 #ifdef EXT_SPI_RAM_IS_NAND 110 if (size %
sizeof(uint32_t)) {
112 #ifdef EXT_SPI_RAM_IS_NAND 113 spi_transaction(
HSPI, 8, 0x02, 24, dst_addr +
sizeof(uint32_t) * i, (size %
sizeof(uint32_t)) * CHAR_BIT, *(src_addr + i) & ((1 << (size %
sizeof(uint32_t)) * CHAR_BIT) - 1), 0, 0);
115 spi_transaction(
HSPI, 8, 0x02, 16, dst_addr +
sizeof(uint32_t) * i, (size %
sizeof(uint32_t)) * CHAR_BIT, *(src_addr + i) & ((1 << (size %
sizeof(uint32_t)) * CHAR_BIT) - 1), 0, 0);
118 #ifdef EXT_SPI_RAM_IS_NAND 132 uint32_t flash_data_buf;
136 for (byte_count = 0; byte_count < 15; byte_count++) {
138 os_printf(
"%02x ", (flash_data_buf & 0xff));
142 os_printf(
"%02x\n", (flash_data_buf & 0xff));
ICACHE_FLASH_ATTR uint32 spi_transaction(uint8 spi_no, uint8 cmd_bits, uint16 cmd_data, uint32 addr_bits, uint32 addr_data, uint32 dout_bits, uint32 dout_data, uint32 din_bits, uint32 dummy_bits)
ICACHE_FLASH_ATTR bool ext_spi_flash_read(uint32_t src_addr, uint32_t *dst_addr, uint32_t size)
ICACHE_FLASH_ATTR void spi_init_gpio(uint8 spi_no, uint8 sysclk_as_spiclk)
ICACHE_FLASH_ATTR void spi_tx_byte_order(uint8 spi_no, uint8 byte_order)
#define ICACHE_FLASH_ATTR
ICACHE_FLASH_ATTR void ext_spi_init()
#define CLEAR_PERI_REG_MASK(reg, mask)
#define SPI_BYTE_ORDER_LOW_TO_HIGH
ICACHE_FLASH_ATTR void ext_spi_flash_hexdump(uint32_t addr)
ICACHE_FLASH_ATTR bool ext_spi_flash_write(uint32_t dst_addr, uint32_t *src_addr, uint32_t size)
ICACHE_FLASH_ATTR void spi_clock(uint8 spi_no, uint16 prediv, uint8 cntdiv)
ICACHE_FLASH_ATTR bool ext_spi_flash_erase_sector(uint16_t sec)
#define SET_PERI_REG_MASK(reg, mask)
ICACHE_FLASH_ATTR void spi_rx_byte_order(uint8 spi_no, uint8 byte_order)
ICACHE_FLASH_ATTR uint16_t ext_spi_flash_id()