00001 /* 00002 * Copyright (c) 2008, Swedish Institute of Computer Science 00003 * All rights reserved. 00004 * 00005 * Redistribution and use in source and binary forms, with or without 00006 * modification, are permitted provided that the following conditions 00007 * are met: 00008 * 1. Redistributions of source code must retain the above copyright 00009 * notice, this list of conditions and the following disclaimer. 00010 * 2. Redistributions in binary form must reproduce the above copyright 00011 * notice, this list of conditions and the following disclaimer in the 00012 * documentation and/or other materials provided with the distribution. 00013 * 3. Neither the name of the Institute nor the names of its contributors 00014 * may be used to endorse or promote products derived from this software 00015 * without specific prior written permission. 00016 * 00017 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 00018 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00019 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00020 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 00021 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00022 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 00023 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 00024 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00025 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 00026 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00027 * SUCH DAMAGE. 00028 * 00029 * This file is part of the Contiki operating system. 00030 * 00031 */ 00032 00033 /** 00034 * \file 00035 * Coffee architecture-dependent header for the Zolertia Z1 platform. 00036 * \author 00037 * Nicolas Tsiftes <nvt@sics.se> 00038 * Enric M. Calvo <ecalvo@zolertia.com> 00039 */ 00040 00041 #ifndef CFS_COFFEE_ARCH_H 00042 #define CFS_COFFEE_ARCH_H 00043 00044 #include "contiki-conf.h" 00045 #include "dev/xmem.h" 00046 00047 /*** M25P16 Memory Organization 00048 The memory is organized as: 00049 16Mbit = 2 097 152 bytes (8 bits each) 00050 32 sectors (512 Kbits, 65536 bytes each) 00051 8192 pages (256 bytes each). 00052 Each page can be individually programmed (bits are programmed from 1 to 0). The device is 00053 sector or bulk erasable (bits are erased from 0 to 1) but not page erasable 00054 */ 00055 #define COFFEE_XMEM_TOTAL_SIZE_KB 2048UL //Total size of the External Flash Memory in the Z1 00056 00057 /* Coffee configuration parameters. */ 00058 #define COFFEE_SECTOR_SIZE 65536UL 00059 #define COFFEE_PAGE_SIZE 256UL 00060 #define COFFEE_START COFFEE_SECTOR_SIZE 00061 #define COFFEE_SIZE (COFFEE_XMEM_TOTAL_SIZE_KB * 1024UL - COFFEE_START) 00062 #define COFFEE_NAME_LENGTH 16 00063 #define COFFEE_MAX_OPEN_FILES 6 00064 #define COFFEE_FD_SET_SIZE 8 00065 #define COFFEE_LOG_TABLE_LIMIT 256 00066 #define COFFEE_DYN_SIZE 4*1024 00067 #define COFFEE_LOG_SIZE 1024 00068 00069 #define COFFEE_MICRO_LOGS 1 00070 00071 /* Flash operations. */ 00072 #define COFFEE_WRITE(buf, size, offset) \ 00073 xmem_pwrite((char *)(buf), (size), COFFEE_START + (offset)) 00074 00075 #define COFFEE_READ(buf, size, offset) \ 00076 xmem_pread((char *)(buf), (size), COFFEE_START + (offset)) 00077 00078 #define COFFEE_ERASE(sector) \ 00079 xmem_erase(COFFEE_SECTOR_SIZE, COFFEE_START + (sector) * COFFEE_SECTOR_SIZE) 00080 00081 /* Coffee types. */ 00082 typedef int16_t coffee_page_t; 00083 00084 #endif /* !COFFEE_ARCH_H */