244 lines
7.8 KiB
C
244 lines
7.8 KiB
C
/**
|
|
*
|
|
* \file
|
|
*
|
|
* \brief WINC1500 SPI Flash.
|
|
*
|
|
* Copyright (c) 2016-2018 Atmel Corporation. All rights reserved.
|
|
*
|
|
* \asf_license_start
|
|
*
|
|
* \page License
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the following disclaimer.
|
|
*
|
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
* this list of conditions and the following disclaimer in the documentation
|
|
* and/or other materials provided with the distribution.
|
|
*
|
|
* 3. The name of Atmel may not be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
|
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
|
|
* EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
|
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
* \asf_license_stop
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* @file spi_flash_map.h
|
|
* @brief This module contains spi flash CONTENT
|
|
* @author M.S.M
|
|
* @date 17 SEPT 2013
|
|
* @version 1.0
|
|
*/
|
|
#ifndef __SPI_FLASH_MAP_H__
|
|
#define __SPI_FLASH_MAP_H__
|
|
|
|
#define FLASH_MAP_VER_0 (0)
|
|
#define FLASH_MAP_VER_1 (1)
|
|
#define FLASH_MAP_VER_2 (2)
|
|
#define FLASH_MAP_VER_3 (3)
|
|
|
|
#define FLASH_MAP_VERSION FLASH_MAP_VER_3
|
|
|
|
//#define DOWNLOAD_ROLLBACK
|
|
//#define OTA_GEN
|
|
#define _PROGRAM_POWER_SAVE_
|
|
|
|
/* =======*=======*=======*=======*=======
|
|
* General Sizes for Flash Memory
|
|
* =======*=======*=======*=======*=======
|
|
*/
|
|
|
|
#define FLASH_START_ADDR (0UL)
|
|
/*!<Starting Address of Flash Memory
|
|
*
|
|
*/
|
|
#define FLASH_BLOCK_SIZE (32 * 1024UL)
|
|
/*!<Block Size in Flash Memory
|
|
*/
|
|
#define FLASH_SECTOR_SZ (4 * 1024UL)
|
|
/*!<Sector Size in Flash Memory
|
|
*/
|
|
#define FLASH_PAGE_SZ (256)
|
|
/*!<Page Size in Flash Memory
|
|
*/
|
|
#define FLASH_2M_TOTAL_SZ (256 * 1024UL)
|
|
/*!<Total Size of 2M Flash Memory
|
|
*/
|
|
#define FLASH_4M_TOTAL_SZ (512 * 1024UL)
|
|
/*!<Total Size of 4M Flash Memory
|
|
*/
|
|
#define FLASH_8M_TOTAL_SZ (1024 * 1024UL)
|
|
/*!<Total Size of 8M Flash Memory
|
|
*/
|
|
|
|
/*
|
|
* Detailed Sizes and locations for Flash Memory:
|
|
* ____________________ ___________ ___________________________ _______________________________________________
|
|
* | Starting Address | Size | Location's Name | Description |
|
|
* |____________________|___________|___________________________|_______________________________________________|
|
|
* | 0 K | 4 K | Boot Firmware | Firmware to select which version to run |
|
|
* | 4 K | 8 K | Control Section | Structured data used by Boot firmware |
|
|
* | 12 K | 4 K | PLL+GAIN : | LookUp Table for PLL and Gain calculations |
|
|
* | | | PLL Size = 1K | PLL |
|
|
* | | | GAIN Size = 3K | Gain configuration |
|
|
* | 16 K | 4 K | CERTIFICATE | X.509 Certificate storage |
|
|
* | 20 K | 8 K | TLS Server | TLS Server Private Key and certificates |
|
|
* | 28 K | 8 K | HTTP Files | Files used with Provisioning Mode |
|
|
* | 36 K | 4 K | Connection Parameters | Parameters for success connection to AP |
|
|
* | 40 K | 236 K | Main Firmware/program | Main Firmware to run WiFi Chip |
|
|
* | 276 K | 236 K | OTA Firmware | OTA firmware |
|
|
* | 512 K Total flash size |
|
|
* |____________________|___________|___________________________|_______________________________________________|
|
|
*
|
|
*
|
|
* *Keys for Comments with each MACRO:
|
|
* "L:xxxK" -means-> location :xxxK
|
|
* "S:xxxK" -means-> Size is :xxxK
|
|
*/
|
|
|
|
/*
|
|
* Boot Firmware: which used to select which firmware to run
|
|
*
|
|
*/
|
|
#define M2M_BOOT_FIRMWARE_STARTING_ADDR (FLASH_START_ADDR)
|
|
#define M2M_BOOT_FIRMWARE_FLASH_SZ (FLASH_SECTOR_SZ)
|
|
|
|
/*
|
|
* Control Section: which used by Boot firmware
|
|
*
|
|
*/
|
|
#define M2M_CONTROL_FLASH_OFFSET (M2M_BOOT_FIRMWARE_STARTING_ADDR + M2M_BOOT_FIRMWARE_FLASH_SZ)
|
|
#define M2M_CONTROL_FLASH_BKP_OFFSET (M2M_CONTROL_FLASH_OFFSET + FLASH_SECTOR_SZ)
|
|
#define M2M_CONTROL_FLASH_SEC_SZ (FLASH_SECTOR_SZ)
|
|
#define M2M_CONTROL_FLASH_TOTAL_SZ (FLASH_SECTOR_SZ * 2)
|
|
|
|
/*
|
|
* LUT for PLL and TX Gain settings:
|
|
*
|
|
*/
|
|
#define M2M_PLL_FLASH_OFFSET (M2M_CONTROL_FLASH_OFFSET + M2M_CONTROL_FLASH_TOTAL_SZ)
|
|
#define M2M_PLL_FLASH_SZ (1024 * 1)
|
|
#define M2M_GAIN_FLASH_OFFSET (M2M_PLL_FLASH_OFFSET + M2M_PLL_FLASH_SZ)
|
|
#define M2M_GAIN_FLASH_SZ (M2M_CONFIG_SECT_TOTAL_SZ - M2M_PLL_FLASH_SZ)
|
|
#define M2M_CONFIG_SECT_TOTAL_SZ (FLASH_SECTOR_SZ)
|
|
|
|
/*
|
|
* Certificate:
|
|
*
|
|
*/
|
|
#define M2M_TLS_ROOTCER_FLASH_OFFSET (M2M_PLL_FLASH_OFFSET + M2M_CONFIG_SECT_TOTAL_SZ)
|
|
#define M2M_TLS_ROOTCER_FLASH_SIZE (FLASH_SECTOR_SZ * 1)
|
|
|
|
/*
|
|
* Scratch:
|
|
*
|
|
*/
|
|
#define M2M_TLS_FLASH_SESSION_CACHE_OFFSET (M2M_TLS_FLASH_ROOTCERT_CACHE_OFFSET + M2M_TLS_FLASH_ROOTCERT_CACHE_SIZE)
|
|
#define M2M_TLS_FLASH_SESSION_CACHE_SIZE (FLASH_SECTOR_SZ * 1)
|
|
|
|
/*
|
|
* reserved section
|
|
*
|
|
*/
|
|
#define M2M_TLS_SERVER_FLASH_OFFSET (M2M_TLS_ROOTCER_FLASH_OFFSET + M2M_TLS_ROOTCER_FLASH_SIZE)
|
|
#define M2M_TLS_SERVER_FLASH_SIZE (FLASH_SECTOR_SZ * 2)
|
|
|
|
/*
|
|
* HTTP Files
|
|
*
|
|
*/
|
|
#define M2M_HTTP_MEM_FLASH_OFFSET (M2M_RESERVED_FLASH_OFFSET + M2M_RESERVED_FLASH_SZ)
|
|
#define M2M_HTTP_MEM_FLASH_SZ (FLASH_SECTOR_SZ * 2)
|
|
/*
|
|
* Saved Connection Parameters:
|
|
*
|
|
*/
|
|
#define M2M_CACHED_CONNS_FLASH_OFFSET (M2M_HTTP_MEM_FLASH_OFFSET + M2M_HTTP_MEM_FLASH_SZ)
|
|
#define M2M_CACHED_CONNS_FLASH_SZ (FLASH_SECTOR_SZ * 1)
|
|
|
|
/*
|
|
*
|
|
* Common section size
|
|
*/
|
|
|
|
#define M2M_COMMON_DATA_SEC \
|
|
(M2M_BOOT_FIRMWARE_FLASH_SZ + M2M_CONTROL_FLASH_TOTAL_SZ + M2M_CONFIG_SECT_TOTAL_SZ \
|
|
+ M2M_TLS_FLASH_ROOTCERT_CACHE_SIZE + M2M_TLS_FLASH_SESSION_CACHE_SIZE + M2M_HTTP_MEM_FLASH_SZ \
|
|
+ M2M_CACHED_CONNS_FLASH_SZ + M2M_RESERVED_FLASH_SZ)
|
|
/*
|
|
*
|
|
* OTA image1 Offset
|
|
*/
|
|
|
|
#define M2M_OTA_IMAGE1_OFFSET (M2M_CACHED_CONNS_FLASH_OFFSET + M2M_CACHED_CONNS_FLASH_SZ)
|
|
/*
|
|
* Firmware Offset
|
|
*
|
|
*/
|
|
#if (defined _FIRMWARE_) || (defined OTA_GEN)
|
|
#define M2M_FIRMWARE_FLASH_OFFSET (0UL)
|
|
#else
|
|
#if (defined DOWNLOAD_ROLLBACK)
|
|
#define M2M_FIRMWARE_FLASH_OFFSET (M2M_OTA_IMAGE2_OFFSET)
|
|
#else
|
|
#define M2M_FIRMWARE_FLASH_OFFSET (M2M_OTA_IMAGE1_OFFSET)
|
|
#endif
|
|
#endif
|
|
/*
|
|
*
|
|
* Firmware
|
|
*/
|
|
#define M2M_FIRMWARE_FLASH_SZ (236 * 1024UL)
|
|
/**
|
|
*
|
|
* OTA image Size
|
|
*/
|
|
#define OTA_IMAGE_SIZE (M2M_FIRMWARE_FLASH_SZ)
|
|
/**
|
|
*
|
|
* Flash Total size
|
|
*/
|
|
#define FLASH_IMAGE1_CONTENT_SZ (M2M_COMMON_DATA_SEC + OTA_IMAGE_SIZE)
|
|
|
|
/**
|
|
*
|
|
* OTA image 2 offset
|
|
*/
|
|
#define M2M_OTA_IMAGE2_OFFSET (FLASH_IMAGE1_CONTENT_SZ)
|
|
|
|
/*
|
|
* App(Cortus App 4M): App. which runs over firmware
|
|
*
|
|
*/
|
|
#define M2M_APP_4M_MEM_FLASH_SZ (FLASH_SECTOR_SZ * 16)
|
|
#define M2M_APP_4M_MEM_FLASH_OFFSET (FLASH_4M_TOTAL_SZ - M2M_APP_4M_MEM_FLASH_SZ)
|
|
#define M2M_APP_8M_MEM_FLASH_OFFSET (M2M_OTA_IMAGE2_OFFSET + OTA_IMAGE_SIZE)
|
|
#define M2M_APP_8M_MEM_FLASH_SZ (FLASH_SECTOR_SZ * 32)
|
|
#define M2M_APP_OTA_MEM_FLASH_OFFSET (M2M_APP_8M_MEM_FLASH_OFFSET + M2M_APP_8M_MEM_FLASH_SZ)
|
|
|
|
/* Check if total size of content
|
|
* don't exceed total size of memory allowed
|
|
**/
|
|
#if (M2M_COMMON_DATA_SEC + (OTA_IMAGE_SIZE * 2) > FLASH_4M_TOTAL_SZ)
|
|
#error "Excced 4M Flash Size"
|
|
#endif /* (FLASH_CONTENT_SZ > FLASH_TOTAL_SZ) */
|
|
|
|
#endif /* __SPI_FLASH_MAP_H__ */
|