From a5e0616537530926193d73c2e41bf780d4a55f05 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 29 May 2010 06:09:11 +0000 Subject: Added AT91SAM7S256 demo. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1961 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- boards/OLIMEX_SAM7_P256/board.c | 100 +++++++++++++++++++++++++++++++++++++++ boards/OLIMEX_SAM7_P256/board.h | 72 ++++++++++++++++++++++++++++ boards/OLIMEX_SAM7_P256/board.mk | 5 ++ 3 files changed, 177 insertions(+) create mode 100644 boards/OLIMEX_SAM7_P256/board.c create mode 100644 boards/OLIMEX_SAM7_P256/board.h create mode 100644 boards/OLIMEX_SAM7_P256/board.mk (limited to 'boards/OLIMEX_SAM7_P256') diff --git a/boards/OLIMEX_SAM7_P256/board.c b/boards/OLIMEX_SAM7_P256/board.c new file mode 100644 index 000000000..0090353fa --- /dev/null +++ b/boards/OLIMEX_SAM7_P256/board.c @@ -0,0 +1,100 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "ch.h" +#include "hal.h" + +/* + * SYS IRQ handling here. + */ +static CH_IRQ_HANDLER(SYSIrqHandler) { + + CH_IRQ_PROLOGUE(); + + if (AT91C_BASE_PITC->PITC_PISR & AT91C_PITC_PITS) { + (void) AT91C_BASE_PITC->PITC_PIVR; + chSysLockFromIsr(); + chSysTimerHandlerI(); + chSysUnlockFromIsr(); + } + AT91C_BASE_AIC->AIC_EOICR = 0; + + CH_IRQ_EPILOGUE(); +} + +/* + * Early initialization code. + * This initialization is performed just after reset before BSS and DATA + * segments initialization. + */ +void hwinit0(void) { + + /* Watchdog disabled.*/ + AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS; + + at91sam7_clock_init(); +} + +/* + * Late initialization code. + * This initialization is performed after BSS and DATA segments initialization + * and before invoking the main() function. + */ +void hwinit1(void) { + + /* + * HAL initialization. + */ + halInit(); + + /* + * LED pins setup. + */ + palClearPad(IOPORT1, PIOA_LED1); + palSetPadMode(IOPORT1, PIOA_LED1, PAL_MODE_OUTPUT_PUSHPULL); + palClearPad(IOPORT1, PIOA_LED2); + palSetPadMode(IOPORT1, PIOA_LED2, PAL_MODE_OUTPUT_PUSHPULL); + + /* + * buttons setup. + */ + palSetGroupMode(IOPORT1, PIOA_B1_MASK | PIOA_B2_MASK, PAL_MODE_INPUT); + + /* + * MMC/SD slot setup. + */ + palSetGroupMode(IOPORT1, + PIOA_MMC_WP_MASK | PIOA_MMC_CP_MASK, + PAL_MODE_INPUT); + + /* + * PIT Initialization. + */ + AIC_ConfigureIT(AT91C_ID_SYS, + AT91C_AIC_SRCTYPE_HIGH_LEVEL | (AT91C_AIC_PRIOR_HIGHEST - 1), + SYSIrqHandler); + AIC_EnableIT(AT91C_ID_SYS); + AT91C_BASE_PITC->PITC_PIMR = (MCK / 16 / CH_FREQUENCY) - 1; + AT91C_BASE_PITC->PITC_PIMR |= AT91C_PITC_PITEN | AT91C_PITC_PITIEN; + + /* + * ChibiOS/RT initialization. + */ + chSysInit(); +} diff --git a/boards/OLIMEX_SAM7_P256/board.h b/boards/OLIMEX_SAM7_P256/board.h new file mode 100644 index 000000000..ac8e74c18 --- /dev/null +++ b/boards/OLIMEX_SAM7_P256/board.h @@ -0,0 +1,72 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef _BOARD_H_ +#define _BOARD_H_ + +/* + * Setup for the Olimex SAM7-P256 development board. + */ + +/* + * Board identifier. + */ +#define BOARD_OLIMEX_SAM7_P256 + +/* + * Select your platform by modifying the following line. + */ +#if !defined(SAM7_PLATFORM) +#define SAM7_PLATFORM SAM7S256 +#endif + +#include "at91sam7.h" + +#define CLK 18432000 +#define MCK 48054857 + +/* + * Initial I/O setup. + */ +#define VAL_PIOA_ODSR 0x00000000 /* Output data. */ +#define VAL_PIOA_OSR 0x00000000 /* Direction. */ +#define VAL_PIOA_PUSR 0xFFFFFFFF /* Pull-up. */ + +/* + * I/O definitions. + */ +#define PIOA_LED1 18 +#define PIOA_LED1_MASK (1 << PIOA_LED1_MASK) +#define PIOA_LED2 17 +#define PIOA_LED2_MASK (1 << PIOA_LED2_MASK) +#define PIOA_B1 19 +#define PIOA_B1_MASK (1 << PIOA_B1) +#define PIOA_B2 20 +#define PIOA_B2_MASK (1 << PIOA_B2) +#define PIOA_DP_PUP 25 +#define PIOA_DD_PUP_MASK (1 << PIOA_DP_PUP) +#define PIOA_USB_D 26 +#define PIOA_USB_D_MASK (1 << PIOA_USB_D) + +#define PIOA_MMC_WP 16 +#define PIOA_MMC_WP_MASK (1 << PIOA_MMC_WP) +#define PIOA_MMC_CP 15 +#define PIOA_MMC_CP_MASK (1 << PIOA_MMC_CP) + +#endif /* _BOARD_H_ */ diff --git a/boards/OLIMEX_SAM7_P256/board.mk b/boards/OLIMEX_SAM7_P256/board.mk new file mode 100644 index 000000000..e9fb6691a --- /dev/null +++ b/boards/OLIMEX_SAM7_P256/board.mk @@ -0,0 +1,5 @@ +# List of all the board related files. +BOARDSRC = ${CHIBIOS}/boards/OLIMEX_SAM7_P256/board.c + +# Required include directories +BOARDINC = ${CHIBIOS}/boards/OLIMEX_SAM7_P256 -- cgit v1.2.3