Contiki-NG
Toggle main menu visibility
Loading...
Searching...
No Matches
flash.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
3
* All rights reserved.
4
*
5
* Copyright (c) 2013, ADVANSEE - http://www.advansee.com/
6
* Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
7
* All rights reserved.
8
*
9
* Redistribution and use in source and binary forms, with or without
10
* modification, are permitted provided that the following conditions
11
* are met:
12
* 1. Redistributions of source code must retain the above copyright
13
* notice, this list of conditions and the following disclaimer.
14
* 2. Redistributions in binary form must reproduce the above copyright
15
* notice, this list of conditions and the following disclaimer in the
16
* documentation and/or other materials provided with the distribution.
17
*
18
* 3. Neither the name of the copyright holder nor the names of its
19
* contributors may be used to endorse or promote products derived
20
* from this software without specific prior written permission.
21
*
22
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
28
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
29
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
31
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
33
* OF THE POSSIBILITY OF SUCH DAMAGE.
34
*/
35
/**
36
* \addtogroup cc2538
37
* @{
38
*
39
* \defgroup cc2538-flash cc2538 flash memory
40
*
41
* Definitions for the cc2538 flash memory
42
* @{
43
*
44
* \file
45
* Header file for the flash memory definitions
46
*/
47
#ifndef FLASH_H_
48
#define FLASH_H_
49
50
#include "
dev/cc2538-dev.h
"
51
#include "cfs-coffee-arch.h"
52
53
#include <stdint.h>
54
/*---------------------------------------------------------------------------*/
55
/** \name Flash memory organization
56
* @{
57
*/
58
#define FLASH_PAGE_SIZE 2048
59
#define FLASH_WORD_SIZE 4
60
/** @} */
61
/*---------------------------------------------------------------------------*/
62
/** \name Flash lock bit page and CCA location
63
* @{
64
*/
65
#define FLASH_CCA_ADDR (CC2538_DEV_FLASH_ADDR + CC2538_DEV_FLASH_SIZE - \
66
FLASH_CCA_SIZE)
/**< Address */
67
#define FLASH_CCA_SIZE 0x0000002C
/**< Size in bytes */
68
/** @} */
69
/*---------------------------------------------------------------------------*/
70
/** \name Bootloader backdoor configuration bit fields
71
* @{
72
*/
73
#define FLASH_CCA_BOOTLDR_CFG_DISABLE 0xEFFFFFFF
/**< Disable backdoor function */
74
#define FLASH_CCA_BOOTLDR_CFG_ENABLE 0xF0FFFFFF
/**< Enable backdoor function */
75
#define FLASH_CCA_BOOTLDR_CFG_ACTIVE_HIGH 0x08000000
/**< Selected pin on pad A active high */
76
#define FLASH_CCA_BOOTLDR_CFG_PORT_A_PIN_M 0x07000000
/**< Selected pin on pad A mask */
77
#define FLASH_CCA_BOOTLDR_CFG_PORT_A_PIN_S 24
/**< Selected pin on pad A shift */
78
/** @} */
79
/*---------------------------------------------------------------------------*/
80
/** \name Image valid definitions
81
* @{
82
*/
83
#define FLASH_CCA_IMAGE_VALID 0x00000000
/**< Indicates valid image in flash */
84
/** @} */
85
/*---------------------------------------------------------------------------*/
86
/** \name Lock page / debug definitions
87
* @{
88
*/
89
#define FLASH_CCA_LOCKED 0
/**< Page or debug locked if bit == 0 */
90
#define FLASH_CCA_LOCK_DEBUG_BYTE 31
/**< Lock byte containing the debug lock bit */
91
#define FLASH_CCA_LOCK_DEBUG_BIT 7
/**< Debug lock bit position in the corresponding lock byte */
92
/** @} */
93
/*---------------------------------------------------------------------------*/
94
/** \name Firmware location in flash memory
95
* @{
96
*/
97
#ifdef FLASH_CONF_FW_ADDR
98
#define FLASH_FW_ADDR FLASH_CONF_FW_ADDR
99
#elif !defined(COFFEE_CONF_CUSTOM_PORT)
100
#define FLASH_FW_ADDR (COFFEE_START + COFFEE_SIZE)
101
#else
102
#define FLASH_FW_ADDR CC2538_DEV_FLASH_ADDR
103
#endif
104
#ifdef FLASH_CONF_FW_SIZE
105
#define FLASH_FW_SIZE FLASH_CONF_FW_SIZE
106
#else
107
#define FLASH_FW_SIZE (FLASH_CCA_ADDR - FLASH_FW_ADDR)
108
#endif
109
/** @} */
110
/*---------------------------------------------------------------------------*/
111
/** \name Flash lock bit page and CCA layout
112
* @{
113
*/
114
typedef
struct
{
115
uint32_t bootldr_cfg;
/**< Bootloader backdoor configuration (page bytes 2004 - 2007) */
116
uint32_t image_valid;
/**< Image valid (page bytes 2008 - 2011) */
117
const
void
*app_entry_point;
/**< Flash vector table address (page bytes 2012 - 2015) */
118
uint8_t lock[32];
/**< Page and debug lock bits (page bytes 2016 - 2047) */
119
} flash_cca_lock_page_t;
120
/** @} */
121
122
#endif
/* FLASH_H_ */
123
124
/**
125
* @}
126
* @}
127
*/
cc2538-dev.h
Header file for the cc2538 devices definitions.
arch
cpu
cc2538
dev
flash.h
Generated on
for Contiki-NG by
1.17.0