Contiki 2.6

cfs-coffee-arch.h

Go to the documentation of this file.
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 */