Skip to content

Commit

Permalink
cleanup/unify flash sector size define value (esp8266#5327)
Browse files Browse the repository at this point in the history
* cleanup/unify sector size define value

* replicate spi_flash_sec_size.h file for host tests

* further flash geometry cleanup, remove host test duplicate file
  • Loading branch information
devyte authored Nov 24, 2018
1 parent cf21dfd commit 3d70f43
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 36 deletions.
4 changes: 3 additions & 1 deletion bootloaders/eboot/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@ AR := $(XTENSA_TOOLCHAIN)xtensa-lx106-elf-ar
LD := $(XTENSA_TOOLCHAIN)xtensa-lx106-elf-gcc
OBJDUMP := $(XTENSA_TOOLCHAIN)xtensa-lx106-elf-objdump


INC += -I../../tools/sdk/include
CFLAGS += -std=gnu99

CFLAGS += -O0 -g -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mno-text-section-literals

CFLAGS += $(INC)

LDFLAGS += -nostdlib -Wl,--no-check-sections -umain

LD_SCRIPT := -Teboot.ld
Expand Down
Binary file modified bootloaders/eboot/eboot.elf
Binary file not shown.
12 changes: 8 additions & 4 deletions bootloaders/eboot/flash.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,19 @@
#ifndef FLASH_H
#define FLASH_H


/* The geometry defines are placed in the sdk. The .h was factored out for reuse by eboot here.
* Beware: this means that eboot has an external dependency.
* The following .h is placed in tools/sdk/includes
*/
#include <spi_flash_geometry.h>

int SPIEraseBlock(uint32_t block);
int SPIEraseSector(uint32_t sector);
int SPIRead(uint32_t addr, void *dest, size_t size);
int SPIWrite(uint32_t addr, void *src, size_t size);
int SPIEraseAreaEx(const uint32_t start, const uint32_t size);

#define FLASH_SECTOR_SIZE 0x1000
#define FLASH_BLOCK_SIZE 0x10000
#define APP_START_OFFSET 0x1000

typedef struct {
unsigned char magic;
Expand All @@ -25,7 +29,7 @@ typedef struct {
/* SPI Flash Interface (0 = QIO, 1 = QOUT, 2 = DIO, 0x3 = DOUT) */
unsigned char flash_mode;

/* High four bits: 0 = 512K, 1 = 256K, 2 = 1M, 3 = 2M, 4 = 4M,
/* High four bits: 0 = 512K, 1 = 256K, 2 = 1M, 3 = 2M, 4 = 4M, 8 = 8M, 9 = 16M
Low four bits: 0 = 40MHz, 1= 26MHz, 2 = 20MHz, 0xf = 80MHz */
unsigned char flash_size_freq;

Expand Down
34 changes: 6 additions & 28 deletions cores/esp8266/flash_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,39 +21,17 @@
#ifndef FLASH_UTILS_H
#define FLASH_UTILS_H


#ifdef __cplusplus
extern "C" {
#endif

int SPIEraseBlock(uint32_t block);
int SPIEraseSector(uint32_t sector);
int SPIRead(uint32_t addr, void *dest, size_t size);
int SPIWrite(uint32_t addr, void *src, size_t size);
int SPIEraseAreaEx(const uint32_t start, const uint32_t size);

#define FLASH_SECTOR_SIZE 0x1000
#define FLASH_BLOCK_SIZE 0x10000
#define APP_START_OFFSET 0x1000

typedef struct {
unsigned char magic;
unsigned char num_segments;

/* SPI Flash Interface (0 = QIO, 1 = QOUT, 2 = DIO, 0x3 = DOUT) */
unsigned char flash_mode;

/* High four bits: 0 = 512K, 1 = 256K, 2 = 1M, 3 = 2M, 4 = 4M, 8 = 8M, 9 = 16M
Low four bits: 0 = 40MHz, 1= 26MHz, 2 = 20MHz, 0xf = 80MHz */
unsigned char flash_size_freq;

uint32_t entry;
} image_header_t;

/* Definitions are placed in eboot. Include them here rather than duplicate them.
* Also, prefer to have eboot standalone as much as possible and have the core depend on it
* rather than have eboot depend on the core.
*/
#include <../../bootloaders/eboot/flash.h>

typedef struct {
uint32_t address;
uint32_t size;
} section_header_t;

#ifdef __cplusplus
}
Expand Down
4 changes: 2 additions & 2 deletions tools/sdk/include/spi_flash.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
#ifndef SPI_FLASH_H
#define SPI_FLASH_H

#include <spi_flash_geometry.h>

#ifdef __cplusplus
extern "C" {
#endif
Expand All @@ -44,8 +46,6 @@ typedef struct{
uint32 status_mask;
} SpiFlashChip;

#define SPI_FLASH_SEC_SIZE 4096

extern SpiFlashChip * flashchip; // in ram ROM-BIOS

uint32 spi_flash_get_id(void);
Expand Down
15 changes: 15 additions & 0 deletions tools/sdk/include/spi_flash_geometry.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#ifndef SPI_FLASH_GEOMETRY_H
#define SPI_FLASH_GEOMETRY_H

/* The flash geometry is meant to be unified here. This header file should be included wherever needed.
* Beware: this file is needed by eboot as well as the Arduino core.
*/

#define FLASH_SECTOR_SIZE 0x1000
#define FLASH_BLOCK_SIZE 0x10000
#define APP_START_OFFSET 0x1000

//pulled this define from spi_flash.h for reuse in the Arduino core without pulling in a bunch of other stuff
#define SPI_FLASH_SEC_SIZE FLASH_SECTOR_SIZE

#endif
2 changes: 1 addition & 1 deletion tools/sdk/include/upgrade.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@
extern "C" {
#endif

#include <spi_flash_geometry.h>

#define SPI_FLASH_SEC_SIZE 4096
#define LIMIT_ERASE_SIZE 0x10000

#define USER_BIN1 0x00
Expand Down

0 comments on commit 3d70f43

Please sign in to comment.