aboutsummaryrefslogtreecommitdiffstats
path: root/wirish/boards.h
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2011-03-24 17:27:38 -0400
committerMarti Bolivar <mbolivar@leaflabs.com>2011-03-24 17:31:47 -0400
commit63ea7464925b8cbeb8623d08a2bde0b1d2044047 (patch)
treec1e0291202084d8d8011b0b66715a711108cbef4 /wirish/boards.h
parentbc246609ccd44601a0564fea8da407cc500ad471 (diff)
downloadlibrambutan-63ea7464925b8cbeb8623d08a2bde0b1d2044047.tar.gz
librambutan-63ea7464925b8cbeb8623d08a2bde0b1d2044047.zip
Adding /wirish/boards/ for easier porting; shrank PIN_MAPs.
/wirish/boards/ contains xxx.h and xxx.cpp (for xxx=maple, maple_native, maple_mini, maple_RET6). The headers contain the board-specific #defines that used to live in boards.h (except BOARD_INIT, which was removed). The CPP files contain the PIN_MAP definitions that used to live in boards.cpp, and a proper boardInit() function to replace the old BOARD_INIT macro. This will make it easier to add new boards in the future. struct PinMapping was renamed struct stm32_pin_info, and was moved into a new wirish_types.h. Its external interrupt field was moved into struct gpio_dev, which saves memory by storing an afio_exti_port per port, rather than one per pin. Also rearranged the stm32_pin_info fields to improve packing. Maple's PIN_MAP is now down to below 500 bytes.
Diffstat (limited to 'wirish/boards.h')
-rw-r--r--wirish/boards.h144
1 files changed, 47 insertions, 97 deletions
diff --git a/wirish/boards.h b/wirish/boards.h
index d186dc4..b72609d 100644
--- a/wirish/boards.h
+++ b/wirish/boards.h
@@ -3,29 +3,37 @@
*
* Copyright (c) 2010 Bryan Newbold.
*
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
*
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
*****************************************************************************/
-/* This file contains board-specific pin mapping tables. To add a new board
- * type, copy the "BOARD_maple" section below and edit it as needed, then
- * update your build toolchain with a new "BOARD" type. This must match the
- * separate MCU type (which determines the ../libmaple configuration).
+/**
+ * @file boards.h
+ * @author Bryan Newbold <bnewbold@leaflabs.com>,
+ * Marti Bolivar <mbolivar@leaflabs.com>
+ * @brief Board-specific pin information.
+ *
+ * To add a new board type, add a new pair of files to
+ * /wirish/boards/, update the section below with a new "BOARD" type,
+ * and update /wirish/rules.mk to include your boards/your_board.cpp
+ * file in the top-level Makefile build.
*/
#ifndef _BOARDS_H_
@@ -34,12 +42,13 @@
#include "libmaple.h"
#include "gpio.h"
#include "timer.h"
-#include "native_sram.h"
+
+#include "wirish_types.h"
/* Set of all possible pin names; not all boards have all these (note
- that we use the Dx convention since all of the Maple's pins are
- "digital" pins (e.g. can be used with digitalRead() and
- digitalWrite()), but not all of them are connected to ADCs. */
+ * that we use the Dx convention since all of the Maple's pins are
+ * "digital" pins (e.g. can be used with digitalRead() and
+ * digitalWrite()), but not all of them are connected to ADCs. */
enum {
D0, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16,
D17, D18, D19, D20, D21, D22, D23, D24, D25, D26, D27, D28, D29, D30, D31,
@@ -50,89 +59,30 @@ enum {
D92, D93, D94, D95, D96, D97, D98, D99, D100, D101, D102, D103, D104, D105,
D106, D107, D108, D109, D110, D111, };
-#define ADC_INVALID 0xFFFFFFFF
-
-/* Pin mapping: pin number -> STM32 info */
-typedef struct PinMapping {
- gpio_dev *gpio_device;
- uint32 pin;
- uint32 adc_channel;
- timer_dev* timer_device;
- uint8 timer_chan;
- afio_exti_port ext_port;
-} PinMapping;
+/**
+ * @brief Maps each pin to a corresponding struct stm32_pin_info.
+ * @see struct stm32_pin_info
+ */
+extern stm32_pin_info PIN_MAP[];
-/* Maps every digital pin to a PinMapping */
-extern PinMapping PIN_MAP[];
+/** Board-specific initialization function. */
+extern void boardInit(void);
-/* LeafLabs Maple rev3, rev5 */
#ifdef BOARD_maple
-
- #define CYCLES_PER_MICROSECOND 72
- #define SYSTICK_RELOAD_VAL 71999 /* takes a cycle to reload */
-
- #define BOARD_BUTTON_PIN 38
- #define BOARD_LED_PIN 13
-
- /* Total number of GPIO pins that are broken out to headers and
- intended for general use. */
- #define NR_GPIO_PINS 39
-
- #define BOARD_INIT do { \
- } while(0)
-
+#include "boards/maple.h"
#elif defined(BOARD_maple_native)
-
- /* LeafLabs Maple Native (prototype) */
-
- #define CYCLES_PER_MICROSECOND 72
- #define SYSTICK_RELOAD_VAL 71999 /* takes a cycle to reload */
-
- #define BOARD_LED_PIN D21
- #define BOARD_BUTTON_PIN D18
-
- #define NR_GPIO_PINS 100
-
- #define BOARD_INIT do { \
- initNativeSRAM();
- } while(0)
-
+#include "boards/maple_native.h"
#elif defined(BOARD_maple_mini)
-
- #define CYCLES_PER_MICROSECOND 72
- #define SYSTICK_RELOAD_VAL 71999 /* takes a cycle to reload */
-
- #define BOARD_BUTTON_PIN 32
- #define BOARD_LED_PIN 33
-
- #define NR_GPIO_PINS 34
-
- /* Since we want the Serial Wire/JTAG pins as GPIOs, disable both
- * SW and JTAG debug support */
- #define BOARD_INIT \
- do { \
- afio_mapr_swj_config(AFIO_MAPR_SWJ_NO_JTAG_NO_SW); \
- } while (0)
-
+#include "boards/maple_mini.h"
#elif defined(BOARD_maple_RET6)
-
- #define CYCLES_PER_MICROSECOND 72
- #define SYSTICK_RELOAD_VAL 71999 /* takes a cycle to reload */
-
- #define BOARD_BUTTON_PIN 38
- #define BOARD_LED_PIN 13
-
- /* Total number of GPIO pins that are broken out to headers and
- intended for general use. */
- #define NR_GPIO_PINS 39
-
- #define BOARD_INIT do { \
- } while(0)
-
+/*
+ * **NOT** MAPLE REV6. This the **Maple RET6 EDITION**, which is a
+ * Maple with an STM32F103RET6 (...RET6) instead of an STM32F103RBT6
+ * (...RBT6) on it. Maple Rev6 (as of March 2011) DOES NOT EXIST.
+ */
+#include "boards/maple_RET6.h"
#else
-
#error "Board type has not been selected correctly."
-
#endif
#endif