* msba2: updated pttu port, refactored common code into msba2-common
This commit is contained in:
parent
6a950320ae
commit
5a5d083e50
6
board/msba2-common/Jamfile
Normal file
6
board/msba2-common/Jamfile
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
SubDir TOP board msba2-common ;
|
||||||
|
|
||||||
|
Module board_common : board_common_init.c ;
|
||||||
|
|
||||||
|
SubInclude TOP board msba2-common drivers ;
|
||||||
|
|
||||||
@ -25,7 +25,6 @@
|
|||||||
# ******************************************************************************
|
# ******************************************************************************
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
#LinkLibraries $(BOARD).elf : sys-drivers.a net_mm.a sys-lib.a fat-lib.a
|
Module msba2_common : board_init.c ;
|
||||||
# cpu_drivers.a board_drivers.a cc110x.a hal.a hal_drivers.a lpc2387_hal.a ;
|
|
||||||
|
|
||||||
include [ FPath $(TOP) cpu arm_common Jamfile.arm_common ] ;
|
include [ FPath $(TOP) cpu arm_common Jamfile.arm_common ] ;
|
||||||
34
board/msba2-common/Jamrules.msba2
Normal file
34
board/msba2-common/Jamrules.msba2
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# ******************************************************************************
|
||||||
|
# Copyright 2009, Freie Universitaet Berlin (FUB). All rights reserved.
|
||||||
|
#
|
||||||
|
# These sources were developed at the Freie Universitaet Berlin, Computer
|
||||||
|
# Systems and Telematics group (http://cst.mi.fu-berlin.de).
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# This file is part of FeuerWare.
|
||||||
|
#
|
||||||
|
# This program 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.
|
||||||
|
#
|
||||||
|
# FeuerWare 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 http://www.gnu.org/licenses/ .
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# For further information and questions please use the web site
|
||||||
|
# http://scatterweb.mi.fu-berlin.de
|
||||||
|
# and the mailinglist (subscription via web site)
|
||||||
|
# scatterweb@lists.spline.inf.fu-berlin.de
|
||||||
|
# ******************************************************************************
|
||||||
|
# $Id$
|
||||||
|
|
||||||
|
CPU = lpc2387 ;
|
||||||
|
|
||||||
|
HDRS += [ FPath $(TOP) board msba2-common include ] ;
|
||||||
|
HDRS += [ FPath $(TOP) board msba2-common drivers include ] ;
|
||||||
|
|
||||||
|
FLASHER ?= $(POSIXSHELL) lpc2k_pgm ;
|
||||||
|
FLASHFLAGS ?= "$(PORT)" ;
|
||||||
160
board/msba2-common/board_common_init.c
Normal file
160
board/msba2-common/board_common_init.c
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
Copyright 2008-2009, Freie Universitaet Berlin (FUB). All rights reserved.
|
||||||
|
|
||||||
|
These sources were developed at the Freie Universitaet Berlin, Computer Systems
|
||||||
|
and Telematics group (http://cst.mi.fu-berlin.de).
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
This file is part of FeuerWare.
|
||||||
|
|
||||||
|
This program 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.
|
||||||
|
|
||||||
|
FeuerWare 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 http://www.gnu.org/licenses/ .
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
For further information and questions please use the web site
|
||||||
|
http://scatterweb.mi.fu-berlin.de
|
||||||
|
and the mailinglist (subscription via web site)
|
||||||
|
scatterweb@lists.spline.inf.fu-berlin.de
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ingroup msba2
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @brief MSB-A2 board initialization
|
||||||
|
*
|
||||||
|
* @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project
|
||||||
|
* @author Heiko Will
|
||||||
|
* @author Kaspar Schleiser
|
||||||
|
* @author Michael Baar <baar@inf.fu-berlin.de>
|
||||||
|
*
|
||||||
|
* @note $Id$
|
||||||
|
*/
|
||||||
|
#include <board.h>
|
||||||
|
#include <lpc23xx.h>
|
||||||
|
#include <VIC.h>
|
||||||
|
#include <cpu.h>
|
||||||
|
#include <config.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <flashrom.h>
|
||||||
|
|
||||||
|
#define PCRTC BIT9
|
||||||
|
#define CL_CPU_DIV 4
|
||||||
|
|
||||||
|
config_t sysconfig = {
|
||||||
|
0, ///< default ID
|
||||||
|
0, ///< default radio address
|
||||||
|
0, ///< default radio channel
|
||||||
|
};
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* @brief Enabling MAM and setting number of clocks used for Flash memory fetch
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
init_mam(void)
|
||||||
|
{
|
||||||
|
MAMCR = 0x0000;
|
||||||
|
MAMTIM = 0x0003;
|
||||||
|
MAMCR = 0x0002;
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static inline void
|
||||||
|
pllfeed(void)
|
||||||
|
{
|
||||||
|
PLLFEED = 0xAA;
|
||||||
|
PLLFEED = 0x55;
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
void init_clks1(void)
|
||||||
|
{
|
||||||
|
// Disconnect PLL
|
||||||
|
PLLCON &= ~0x0002;
|
||||||
|
pllfeed();
|
||||||
|
|
||||||
|
// Disable PLL
|
||||||
|
PLLCON &= ~0x0001;
|
||||||
|
pllfeed();
|
||||||
|
|
||||||
|
SCS |= 0x20; // Enable main OSC
|
||||||
|
while( !(SCS & 0x40) ); // Wait until main OSC is usable
|
||||||
|
|
||||||
|
/* select main OSC, 16MHz, as the PLL clock source */
|
||||||
|
CLKSRCSEL = 0x0001;
|
||||||
|
|
||||||
|
// Setting Multiplier and Divider values
|
||||||
|
PLLCFG = 0x0008; // M=9 N=1 Fcco = 288 MHz
|
||||||
|
pllfeed();
|
||||||
|
|
||||||
|
// Enabling the PLL */
|
||||||
|
PLLCON = 0x0001;
|
||||||
|
pllfeed();
|
||||||
|
|
||||||
|
/* Set clock divider to 4 (value+1) */
|
||||||
|
CCLKCFG = CL_CPU_DIV - 1; // Fcpu = 72 MHz
|
||||||
|
|
||||||
|
#if USE_USB
|
||||||
|
USBCLKCFG = USBCLKDivValue; /* usbclk = 288 MHz/6 = 48 MHz */
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void init_clks2(void){
|
||||||
|
// Wait for the PLL to lock to set frequency
|
||||||
|
while(!(PLLSTAT & BIT26));
|
||||||
|
|
||||||
|
// Connect the PLL as the clock source
|
||||||
|
PLLCON = 0x0003;
|
||||||
|
pllfeed();
|
||||||
|
|
||||||
|
/* Check connect bit status */
|
||||||
|
while (!(PLLSTAT & BIT25));
|
||||||
|
}
|
||||||
|
|
||||||
|
void bl_init_clks(void)
|
||||||
|
{
|
||||||
|
PCONP = PCRTC; // switch off everything except RTC
|
||||||
|
init_clks1();
|
||||||
|
init_clks2();
|
||||||
|
init_mam();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop_delay(void) {
|
||||||
|
volatile uint16_t i, j;
|
||||||
|
for (i = 1; i < 30; i++) {
|
||||||
|
for (j = 1; j != 0; j++) {
|
||||||
|
asm volatile (" nop ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*void bl_blink(void) {
|
||||||
|
LED_RED_ON;
|
||||||
|
LED_GREEN_ON;
|
||||||
|
|
||||||
|
loop_delay();
|
||||||
|
|
||||||
|
LED_RED_OFF;
|
||||||
|
LED_GREEN_OFF;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
// void bl_config_init(void) {
|
||||||
|
// extern char configmem[];
|
||||||
|
// if (*((uint16_t*) configmem) == CONFIG_KEY) {
|
||||||
|
// memcpy(&sysconfig, (configmem + sizeof(CONFIG_KEY)), sizeof(sysconfig));
|
||||||
|
// LED_GREEN_TOGGLE;
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// config_save();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
5
board/msba2-common/drivers/Jamfile
Normal file
5
board/msba2-common/drivers/Jamfile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
SubDir TOP board msba2-common drivers ;
|
||||||
|
|
||||||
|
Module board_cc1100 : msba2-cc1100.c ;
|
||||||
|
Module board_ltc4150 : msba2-ltc4150.c : gpioint ;
|
||||||
|
Module board_uart : msba2-uart0.c : chardev_thread ringbuffer ;
|
||||||
@ -24,45 +24,28 @@ and the mailinglist (subscription via web site)
|
|||||||
scatterweb@lists.spline.inf.fu-berlin.de
|
scatterweb@lists.spline.inf.fu-berlin.de
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
#ifndef HALPLATFORM_H_
|
#ifndef __BOARD_H
|
||||||
#define HALPLATFORM_H_
|
#define __BOARD_H
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup msba2
|
* @ingroup msb_a2
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file
|
* @file
|
||||||
* @brief
|
* @brief MSB-A2 Common Board Definitions
|
||||||
*
|
*
|
||||||
* @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project
|
* @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project
|
||||||
* @author baar
|
* @author Kaspar Schleiser <kaspar@schleiser.de>
|
||||||
* @version $Revision$
|
* @version $Revision$
|
||||||
*
|
*
|
||||||
* @note $Id$
|
* @note $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "vdevice.h"
|
#include <lpc2387.h>
|
||||||
#include "device-gpio.h"
|
|
||||||
#include "device-rs232.h"
|
|
||||||
#include "device-serial.h"
|
|
||||||
|
|
||||||
VDEVICE_NAME(vdevice_gpio, gpio_led_green);
|
#define VICIntEnClear VICIntEnClr
|
||||||
VDEVICE_NAME(vdevice_gpio, gpio_led_red);
|
|
||||||
VDEVICE_NAME(vdevice_gpio, gpio_led_usb);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var tty0
|
|
||||||
* @brief RS232 TTY0 device on UART0
|
|
||||||
*/
|
|
||||||
VDEVICE_NAME(vdevice_rs232, tty0);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var console0
|
|
||||||
* @brief console device on tty0
|
|
||||||
*/
|
|
||||||
VDEVICE_NAME(vdevice_serial, console0);
|
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
#endif /* HALPLATFORM_H_ */
|
#endif // __BOARD_H
|
||||||
@ -25,12 +25,12 @@
|
|||||||
# ******************************************************************************
|
# ******************************************************************************
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
SubDir TOP board msba2 ;
|
SubDir TOP board $(BOARD) ;
|
||||||
|
|
||||||
Module board : board_init.c ;
|
Module board : board_init.c : board_common board_uart ;
|
||||||
Module config : config.c ;
|
|
||||||
UseModule board ;
|
UseModule board ;
|
||||||
UseModule board_common ;
|
|
||||||
|
|
||||||
SubInclude TOP board $(BOARD) drivers ;
|
Module config : config.c ;
|
||||||
|
|
||||||
|
SubInclude TOP board $(BOARD)-common ;
|
||||||
SubInclude TOP cpu $(CPU) ;
|
SubInclude TOP cpu $(CPU) ;
|
||||||
|
|||||||
@ -1,33 +1 @@
|
|||||||
# ******************************************************************************
|
include board/msba2-common/Jamrules.msba2 ;
|
||||||
# Copyright 2009, Freie Universitaet Berlin (FUB). All rights reserved.
|
|
||||||
#
|
|
||||||
# These sources were developed at the Freie Universitaet Berlin, Computer
|
|
||||||
# Systems and Telematics group (http://cst.mi.fu-berlin.de).
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# This file is part of FeuerWare.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# FeuerWare 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 http://www.gnu.org/licenses/ .
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# For further information and questions please use the web site
|
|
||||||
# http://scatterweb.mi.fu-berlin.de
|
|
||||||
# and the mailinglist (subscription via web site)
|
|
||||||
# scatterweb@lists.spline.inf.fu-berlin.de
|
|
||||||
# ******************************************************************************
|
|
||||||
# $Id$
|
|
||||||
|
|
||||||
CPU = lpc2387 ;
|
|
||||||
|
|
||||||
HDRS += [ FPath $(TOP) board $(BOARD) drivers include ] ;
|
|
||||||
|
|
||||||
FLASHER ?= $(POSIXSHELL) lpc2k_pgm ;
|
|
||||||
FLASHFLAGS ?= "$(PORT)" ;
|
|
||||||
|
|||||||
@ -1,140 +1,6 @@
|
|||||||
/******************************************************************************
|
|
||||||
Copyright 2008-2009, Freie Universitaet Berlin (FUB). All rights reserved.
|
|
||||||
|
|
||||||
These sources were developed at the Freie Universitaet Berlin, Computer Systems
|
|
||||||
and Telematics group (http://cst.mi.fu-berlin.de).
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
This file is part of FeuerWare.
|
|
||||||
|
|
||||||
This program 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.
|
|
||||||
|
|
||||||
FeuerWare 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 http://www.gnu.org/licenses/ .
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
For further information and questions please use the web site
|
|
||||||
http://scatterweb.mi.fu-berlin.de
|
|
||||||
and the mailinglist (subscription via web site)
|
|
||||||
scatterweb@lists.spline.inf.fu-berlin.de
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ingroup msba2
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file
|
|
||||||
* @brief MSB-A2 board initialization
|
|
||||||
*
|
|
||||||
* @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project
|
|
||||||
* @author Heiko Will
|
|
||||||
* @author Kaspar Schleiser
|
|
||||||
* @author Michael Baar <baar@inf.fu-berlin.de>
|
|
||||||
*
|
|
||||||
* @note $Id$
|
|
||||||
*/
|
|
||||||
#include <board.h>
|
#include <board.h>
|
||||||
#include <lpc23xx.h>
|
|
||||||
#include <VIC.h>
|
|
||||||
#include <cpu.h>
|
#include <cpu.h>
|
||||||
|
|
||||||
#define PCRTC BIT9
|
|
||||||
#define CL_CPU_DIV 4
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
|
||||||
/**
|
|
||||||
* @brief Enabling MAM and setting number of clocks used for Flash memory fetch
|
|
||||||
* @internal
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
init_mam(void)
|
|
||||||
{
|
|
||||||
MAMCR = 0x0000;
|
|
||||||
MAMTIM = 0x0003;
|
|
||||||
MAMCR = 0x0002;
|
|
||||||
}
|
|
||||||
/*---------------------------------------------------------------------------*/
|
|
||||||
static inline void
|
|
||||||
pllfeed(void)
|
|
||||||
{
|
|
||||||
PLLFEED = 0xAA;
|
|
||||||
PLLFEED = 0x55;
|
|
||||||
}
|
|
||||||
/*---------------------------------------------------------------------------*/
|
|
||||||
void init_clks1(void)
|
|
||||||
{
|
|
||||||
// Disconnect PLL
|
|
||||||
PLLCON &= ~0x0002;
|
|
||||||
pllfeed();
|
|
||||||
|
|
||||||
// Disable PLL
|
|
||||||
PLLCON &= ~0x0001;
|
|
||||||
pllfeed();
|
|
||||||
|
|
||||||
SCS |= 0x20; // Enable main OSC
|
|
||||||
while( !(SCS & 0x40) ); // Wait until main OSC is usable
|
|
||||||
|
|
||||||
/* select main OSC, 16MHz, as the PLL clock source */
|
|
||||||
CLKSRCSEL = 0x0001;
|
|
||||||
|
|
||||||
// Setting Multiplier and Divider values
|
|
||||||
PLLCFG = 0x0008; // M=9 N=1 Fcco = 288 MHz
|
|
||||||
pllfeed();
|
|
||||||
|
|
||||||
// Enabling the PLL */
|
|
||||||
PLLCON = 0x0001;
|
|
||||||
pllfeed();
|
|
||||||
|
|
||||||
/* Set clock divider to 4 (value+1) */
|
|
||||||
CCLKCFG = CL_CPU_DIV - 1; // Fcpu = 72 MHz
|
|
||||||
|
|
||||||
#if USE_USB
|
|
||||||
USBCLKCFG = USBCLKDivValue; /* usbclk = 288 MHz/6 = 48 MHz */
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void init_clks2(void){
|
|
||||||
// Wait for the PLL to lock to set frequency
|
|
||||||
while(!(PLLSTAT & BIT26));
|
|
||||||
|
|
||||||
// Connect the PLL as the clock source
|
|
||||||
PLLCON = 0x0003;
|
|
||||||
pllfeed();
|
|
||||||
|
|
||||||
/* Check connect bit status */
|
|
||||||
while (!(PLLSTAT & BIT25));
|
|
||||||
}
|
|
||||||
|
|
||||||
void bl_init_clks(void)
|
|
||||||
{
|
|
||||||
PCONP = PCRTC; // switch off everything except RTC
|
|
||||||
init_clks1();
|
|
||||||
init_clks2();
|
|
||||||
init_mam();
|
|
||||||
}
|
|
||||||
|
|
||||||
void bl_init_ports(void)
|
|
||||||
{
|
|
||||||
SCS |= BIT0; // Set IO Ports to fast switching mode
|
|
||||||
|
|
||||||
/* UART0 */
|
|
||||||
PINSEL0 |= BIT4 + BIT6; // RxD0 and TxD0
|
|
||||||
PINSEL0 &= ~(BIT5 + BIT7);
|
|
||||||
|
|
||||||
/* LEDS */
|
|
||||||
FIO3DIR |= LED_RED_PIN;
|
|
||||||
FIO3DIR |= LED_GREEN_PIN;
|
|
||||||
LED_RED_OFF;
|
|
||||||
LED_GREEN_OFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop_delay(void) {
|
void loop_delay(void) {
|
||||||
volatile uint16_t i, j;
|
volatile uint16_t i, j;
|
||||||
for (i = 1; i < 30; i++) {
|
for (i = 1; i < 30; i++) {
|
||||||
@ -153,3 +19,22 @@ void bl_blink(void) {
|
|||||||
LED_RED_OFF;
|
LED_RED_OFF;
|
||||||
LED_GREEN_OFF;
|
LED_GREEN_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void bl_init_ports(void)
|
||||||
|
{
|
||||||
|
SCS |= BIT0; // Set IO Ports to fast switching mode
|
||||||
|
|
||||||
|
/* UART0 */
|
||||||
|
PINSEL0 |= BIT4 + BIT6; // RxD0 and TxD0
|
||||||
|
PINSEL0 &= ~(BIT5 + BIT7);
|
||||||
|
|
||||||
|
/* LEDS */
|
||||||
|
FIO3DIR |= LED_RED_PIN;
|
||||||
|
FIO3DIR |= LED_GREEN_PIN;
|
||||||
|
LED_RED_OFF;
|
||||||
|
LED_GREEN_OFF;
|
||||||
|
|
||||||
|
/* short blinking of both of the LEDs on startup */
|
||||||
|
bl_blink();
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +0,0 @@
|
|||||||
SubDir TOP board msba2 drivers ;
|
|
||||||
|
|
||||||
Module board_cc1100 : msba2-cc1100.c : gpioint cc110x_spi ;
|
|
||||||
Module board_hal : msba2-hal.c ;
|
|
||||||
Module board_ltc4150 : msba2-ltc4150.c : gpioint ;
|
|
||||||
Module board_common : msba2-uart0.c : ringbuffer ;
|
|
||||||
Module board_uart : msba2-uart0_thread.c : chardev_thread ringbuffer ;
|
|
||||||
@ -1,68 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
Copyright 2008, Freie Universitaet Berlin (FUB). All rights reserved.
|
|
||||||
|
|
||||||
These sources were developed at the Freie Universitaet Berlin, Computer Systems
|
|
||||||
and Telematics group (http://cst.mi.fu-berlin.de).
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
This file is part of FeuerWare.
|
|
||||||
|
|
||||||
This program 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.
|
|
||||||
|
|
||||||
FeuerWare 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 http://www.gnu.org/licenses/ .
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
For further information and questions please use the web site
|
|
||||||
http://scatterweb.mi.fu-berlin.de
|
|
||||||
and the mailinglist (subscription via web site)
|
|
||||||
scatterweb@lists.spline.inf.fu-berlin.de
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
#ifndef BOARDCONF_H_
|
|
||||||
#define BOARDCONF_H_
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ingroup conf
|
|
||||||
* @ingroup msba2
|
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file
|
|
||||||
* @brief MSB-A2 board configuration
|
|
||||||
*
|
|
||||||
* @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project
|
|
||||||
* @author baar
|
|
||||||
* @version $Revision$
|
|
||||||
*
|
|
||||||
* @note $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define FEUERWARE_CONF_BOARD_NAME "FU Berlin MSB-A2"
|
|
||||||
|
|
||||||
#ifdef MODULE_CC110X
|
|
||||||
#define FEUERWARE_CONF_NUM_RADIOS 1
|
|
||||||
#else
|
|
||||||
#define FEUERWARE_CONF_NUM_RADIOS 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// if FAT is enabled this board supports files
|
|
||||||
#define FEUERWARE_CONF_CORE_SUPPORTS_FILES defined(MODULE_FAT)
|
|
||||||
|
|
||||||
#ifdef MODULE_FAT
|
|
||||||
#define CFG_CONF_MEM_SIZE 0x7FFFFFFF
|
|
||||||
#define SYSLOG_CONF_NUM_INTERFACES 2
|
|
||||||
#else
|
|
||||||
#define SYSLOG_CONF_NUM_INTERFACES 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/** @} */
|
|
||||||
#endif /* BOARDCONF_H_ */
|
|
||||||
@ -1,51 +1,7 @@
|
|||||||
/******************************************************************************
|
|
||||||
Copyright 2008, Freie Universitaet Berlin (FUB). All rights reserved.
|
|
||||||
|
|
||||||
These sources were developed at the Freie Universitaet Berlin, Computer Systems
|
|
||||||
and Telematics group (http://cst.mi.fu-berlin.de).
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
This file is part of FeuerWare.
|
|
||||||
|
|
||||||
This program 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.
|
|
||||||
|
|
||||||
FeuerWare 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 http://www.gnu.org/licenses/ .
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
For further information and questions please use the web site
|
|
||||||
http://scatterweb.mi.fu-berlin.de
|
|
||||||
and the mailinglist (subscription via web site)
|
|
||||||
scatterweb@lists.spline.inf.fu-berlin.de
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
#ifndef __BOARD_H
|
#ifndef __BOARD_H
|
||||||
#define __BOARD_H
|
#define __BOARD_H
|
||||||
|
|
||||||
/**
|
#include <msba2_common.h>
|
||||||
* @ingroup msb_a2
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file
|
|
||||||
* @brief MSB-A2 Board
|
|
||||||
*
|
|
||||||
* @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project
|
|
||||||
* @author Kaspar Schleiser <kaspar@schleiser.de>
|
|
||||||
* @version $Revision$
|
|
||||||
*
|
|
||||||
* @note $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <lpc2387.h>
|
|
||||||
|
|
||||||
#define VICIntEnClear VICIntEnClr
|
|
||||||
|
|
||||||
#define LED_RED_PIN (BIT25)
|
#define LED_RED_PIN (BIT25)
|
||||||
#define LED_GREEN_PIN (BIT26)
|
#define LED_GREEN_PIN (BIT26)
|
||||||
@ -58,5 +14,4 @@ and the mailinglist (subscription via web site)
|
|||||||
#define LED_RED_ON (FIO3CLR = LED_RED_PIN)
|
#define LED_RED_ON (FIO3CLR = LED_RED_PIN)
|
||||||
#define LED_RED_TOGGLE (FIO3PIN ^= LED_RED_PIN)
|
#define LED_RED_TOGGLE (FIO3PIN ^= LED_RED_PIN)
|
||||||
|
|
||||||
/** @} */
|
#endif /* __BOARD_H */
|
||||||
#endif // __BOARD_H
|
|
||||||
|
|||||||
@ -23,13 +23,12 @@
|
|||||||
# and the mailinglist (subscription via web site)
|
# and the mailinglist (subscription via web site)
|
||||||
# scatterweb@lists.spline.inf.fu-berlin.de
|
# scatterweb@lists.spline.inf.fu-berlin.de
|
||||||
# ******************************************************************************
|
# ******************************************************************************
|
||||||
# $Id: Jamfile 922 2009-03-26 12:52:27Z baar $
|
# $Id$
|
||||||
|
|
||||||
SubDir TOP board pttu ;
|
SubDir TOP board $(BOARD) ;
|
||||||
|
|
||||||
Module board : board_init.c ;
|
Module board : board_init.c : board_common board_uart ;
|
||||||
UseModule board ;
|
UseModule board ;
|
||||||
UseModule board_common ;
|
|
||||||
|
|
||||||
SubInclude TOP board $(BOARD) drivers ;
|
SubInclude TOP board msba2-common ;
|
||||||
SubInclude TOP cpu $(CPU) ;
|
SubInclude TOP cpu $(CPU) ;
|
||||||
|
|||||||
@ -25,13 +25,10 @@
|
|||||||
# ******************************************************************************
|
# ******************************************************************************
|
||||||
# $Id: Jamrules.msba2 881 2009-03-20 12:24:58Z kaspar $
|
# $Id: Jamrules.msba2 881 2009-03-20 12:24:58Z kaspar $
|
||||||
|
|
||||||
CPU = lpc2387 ;
|
include board/msba2-common/Jamrules.msba2 ;
|
||||||
|
|
||||||
HDRS += [ FPath $(TOP) board $(BOARD) drivers include ] ;
|
HDRS += [ FPath $(TOP) board $(BOARD) drivers include ] ;
|
||||||
|
|
||||||
FLASHER = $(POSIXSHELL) $(TOP)/board/msba2/tools/flashutil.sh ;
|
|
||||||
FLASHFLAGS = --basedir $(TOP)/board/msba2/tools --id PTTU --ports "$(PORT)" --openocd $(TOP)/board/pttu/tools/openocd-pttu.sh --openocd-if $(OPENOCD_IF) ;
|
|
||||||
|
|
||||||
GDB = arm-elf-gdb ;
|
GDB = arm-elf-gdb ;
|
||||||
GDBFLAGS = -x board/pttu/tools/pttu_debug.gdb ;
|
GDBFLAGS = -x board/pttu/tools/pttu_debug.gdb ;
|
||||||
|
|
||||||
|
|||||||
@ -33,94 +33,18 @@ and the mailinglist (subscription via web site)
|
|||||||
* @file
|
* @file
|
||||||
* @brief PTTU board initialization
|
* @brief PTTU board initialization
|
||||||
*
|
*
|
||||||
* @author Freie Universit<EFBFBD>t Berlin, Computer Systems & Telematics, FeuerWhere project
|
* @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project
|
||||||
* @author Heiko Will
|
* @author Heiko Will
|
||||||
* @author Kaspar Schleise
|
* @author Kaspar Schleiser
|
||||||
* @author Michael Baar <baar@inf.fu-berlin.de>
|
|
||||||
*
|
*
|
||||||
* @note $Id: cmdengine-out.c 971 2009-04-07 13:41:36Z baar $
|
|
||||||
*/
|
*/
|
||||||
#include "lpc23xx.h"
|
#include <board.h>
|
||||||
#include "VIC.h"
|
#include <VIC.h>
|
||||||
#include "cpu.h"
|
#include <cpu.h>
|
||||||
|
|
||||||
#define PCRTC BIT9
|
#define PCRTC BIT9
|
||||||
#define CL_CPU_DIV 4
|
#define CL_CPU_DIV 4
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
|
||||||
/**
|
|
||||||
* @brief Enabling MAM and setting number of clocks used for Flash memory fetch
|
|
||||||
* @internal
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
init_mam(void)
|
|
||||||
{
|
|
||||||
MAMCR = 0x0000;
|
|
||||||
MAMTIM = 0x0003;
|
|
||||||
MAMCR = 0x0002;
|
|
||||||
}
|
|
||||||
/*---------------------------------------------------------------------------*/
|
|
||||||
static inline void
|
|
||||||
pllfeed(void)
|
|
||||||
{
|
|
||||||
PLLFEED = 0xAA;
|
|
||||||
PLLFEED = 0x55;
|
|
||||||
}
|
|
||||||
/*---------------------------------------------------------------------------*/
|
|
||||||
void init_clks1(void)
|
|
||||||
{
|
|
||||||
// Disconnect PLL
|
|
||||||
PLLCON &= ~0x0002;
|
|
||||||
pllfeed();
|
|
||||||
|
|
||||||
// Disable PLL
|
|
||||||
PLLCON &= ~0x0001;
|
|
||||||
pllfeed();
|
|
||||||
|
|
||||||
SCS |= 0x20; // Enable main OSC
|
|
||||||
while( !(SCS & 0x40) ); // Wait until main OSC is usable
|
|
||||||
|
|
||||||
/* select main OSC, 16MHz, as the PLL clock source */
|
|
||||||
CLKSRCSEL = 0x0001;
|
|
||||||
|
|
||||||
// Setting Multiplier and Divider values
|
|
||||||
PLLCFG = 0x0008; // M=9 N=1 Fcco = 288 MHz
|
|
||||||
pllfeed();
|
|
||||||
|
|
||||||
// Enabling the PLL */
|
|
||||||
PLLCON = 0x0001;
|
|
||||||
pllfeed();
|
|
||||||
|
|
||||||
/* Set clock divider to 4 (value+1) */
|
|
||||||
CCLKCFG = CL_CPU_DIV - 1; // Fcpu = 72 MHz
|
|
||||||
|
|
||||||
#if USE_USB
|
|
||||||
USBCLKCFG = USBCLKDivValue; /* usbclk = 288 MHz/6 = 48 MHz */
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void init_clks2(void){
|
|
||||||
// Wait for the PLL to lock to set frequency
|
|
||||||
while(!(PLLSTAT & BIT26));
|
|
||||||
|
|
||||||
// Connect the PLL as the clock source
|
|
||||||
PLLCON = 0x0003;
|
|
||||||
pllfeed();
|
|
||||||
|
|
||||||
/* Check connect bit status */
|
|
||||||
while (!(PLLSTAT & BIT25));
|
|
||||||
}
|
|
||||||
|
|
||||||
void bl_init_clks(void)
|
|
||||||
{
|
|
||||||
PCONP = PCRTC; // switch off everything except RTC
|
|
||||||
init_clks1();
|
|
||||||
init_clks2();
|
|
||||||
init_mam();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Michael, Do not change anything here! even not the redundant parts!
|
|
||||||
void bl_init_ports(void)
|
void bl_init_ports(void)
|
||||||
{
|
{
|
||||||
SCS |= BIT0; // Set IO Ports to fast switching mode
|
SCS |= BIT0; // Set IO Ports to fast switching mode
|
||||||
|
|||||||
@ -1,4 +1,2 @@
|
|||||||
SubDir TOP board pttu drivers ;
|
SubDir TOP board pttu drivers ;
|
||||||
|
|
||||||
Module board_common : pttu-uart0.c ;
|
|
||||||
|
|
||||||
|
|||||||
@ -1,204 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
Copyright 2008-2009, Freie Universitaet Berlin (FUB). All rights reserved.
|
|
||||||
|
|
||||||
These sources were developed at the Freie Universitaet Berlin, Computer Systems
|
|
||||||
and Telematics group (http://cst.mi.fu-berlin.de).
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
This file is part of FeuerWare.
|
|
||||||
|
|
||||||
This program 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.
|
|
||||||
|
|
||||||
FeuerWare 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 http://www.gnu.org/licenses/ .
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
For further information and questions please use the web site
|
|
||||||
http://scatterweb.mi.fu-berlin.de
|
|
||||||
and the mailinglist (subscription via web site)
|
|
||||||
scatterweb@lists.spline.inf.fu-berlin.de
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* debug_uart.c: provides initial serial debug output
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008, 2009 Kaspar Schleiser <kaspar@schleiser.de>
|
|
||||||
* Heiko Will <hwill@inf.fu-berlin.de>
|
|
||||||
*/
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "lpc23xx.h"
|
|
||||||
#include "VIC.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file
|
|
||||||
* @ingroup lpc2387
|
|
||||||
*
|
|
||||||
* @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project
|
|
||||||
* @version $Revision$
|
|
||||||
*
|
|
||||||
* @note $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct toprint {
|
|
||||||
unsigned int len;
|
|
||||||
char content[];
|
|
||||||
}toprint;
|
|
||||||
|
|
||||||
#define QUEUESIZE 255
|
|
||||||
static volatile toprint* queue[QUEUESIZE];
|
|
||||||
static volatile unsigned char queue_head = 0;
|
|
||||||
static volatile unsigned char queue_tail = 0;
|
|
||||||
static volatile unsigned char queue_items = 0;
|
|
||||||
|
|
||||||
static volatile unsigned int actual_pos = 0;
|
|
||||||
static volatile unsigned int running = 0;
|
|
||||||
static volatile unsigned int fifo = 0;
|
|
||||||
|
|
||||||
static volatile toprint* actual = NULL;
|
|
||||||
void (*uart0_callback)(int);
|
|
||||||
|
|
||||||
static inline void enqueue(void) {
|
|
||||||
queue_items++;
|
|
||||||
queue_tail++;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void dequeue(void) {
|
|
||||||
actual = (queue[queue_head]);
|
|
||||||
queue_items--;
|
|
||||||
queue_head++;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void push_queue(void) {
|
|
||||||
running = 1;
|
|
||||||
start:
|
|
||||||
if (!actual) {
|
|
||||||
if (queue_items) {
|
|
||||||
dequeue();
|
|
||||||
} else {
|
|
||||||
running = 0;
|
|
||||||
if (!fifo)
|
|
||||||
while(!(U0LSR & BIT6)){};
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while ((actual_pos < actual->len) && (fifo++ < 16)){
|
|
||||||
U0THR = actual->content[actual_pos++];
|
|
||||||
}
|
|
||||||
if (actual_pos == actual->len) {
|
|
||||||
free((void*)actual);
|
|
||||||
actual = NULL;
|
|
||||||
actual_pos = 0;
|
|
||||||
goto start;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int uart_active(void){
|
|
||||||
return (running || fifo);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void receive(int c)
|
|
||||||
{
|
|
||||||
if (uart0_callback != NULL) uart0_callback(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
void stdio_flush(void)
|
|
||||||
{
|
|
||||||
U0IER &= ~BIT1; // disable THRE interrupt
|
|
||||||
while(running) {
|
|
||||||
while(!(U0LSR & (BIT5|BIT6))){}; // transmit fifo
|
|
||||||
fifo=0;
|
|
||||||
push_queue(); // dequeue to fifo
|
|
||||||
}
|
|
||||||
U0IER |= BIT1; // enable THRE interrupt
|
|
||||||
}
|
|
||||||
|
|
||||||
void UART0_IRQHandler(void) __attribute__((interrupt("IRQ")));
|
|
||||||
void UART0_IRQHandler(void)
|
|
||||||
{
|
|
||||||
int iir;
|
|
||||||
iir = U0IIR;
|
|
||||||
|
|
||||||
switch(iir & UIIR_ID_MASK) {
|
|
||||||
case UIIR_THRE_INT: // Transmit Holding Register Empty
|
|
||||||
fifo=0;
|
|
||||||
push_queue();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case UIIR_CTI_INT: // Character Timeout Indicator
|
|
||||||
case UIIR_RDA_INT: // Receive Data Available
|
|
||||||
do {
|
|
||||||
int c = U0RBR;
|
|
||||||
receive(c);
|
|
||||||
} while (U0LSR & ULSR_RDR);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
U0LSR;
|
|
||||||
U0RBR;
|
|
||||||
break;
|
|
||||||
} // switch
|
|
||||||
VICVectAddr = 0; // Acknowledge Interrupt
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int uart0_puts(char *astring,int length)
|
|
||||||
{
|
|
||||||
while (queue_items == (QUEUESIZE-1)) {} ;
|
|
||||||
U0IER = 0;
|
|
||||||
queue[queue_tail] = malloc(length+sizeof(unsigned int));
|
|
||||||
queue[queue_tail]->len = length;
|
|
||||||
memcpy(&queue[queue_tail]->content,astring,length);
|
|
||||||
enqueue();
|
|
||||||
if (!running)
|
|
||||||
push_queue();
|
|
||||||
U0IER |= BIT0 | BIT1; // enable RX irq
|
|
||||||
|
|
||||||
// alternative without queue:
|
|
||||||
// int i;
|
|
||||||
// for (i=0;i<length;i++) {
|
|
||||||
// while (!(U0LSR & BIT5));
|
|
||||||
// U0THR = astring[i];
|
|
||||||
// }
|
|
||||||
|
|
||||||
return length;
|
|
||||||
}
|
|
||||||
|
|
||||||
int fw_puts(char *astring,int length)
|
|
||||||
{
|
|
||||||
return uart0_puts(astring, length);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
bl_uart_init(void)
|
|
||||||
{
|
|
||||||
PCONP |= PCUART0; // power on
|
|
||||||
|
|
||||||
// UART0 clock divider is CCLK/8
|
|
||||||
PCLKSEL0 |= BIT6 + BIT7;
|
|
||||||
|
|
||||||
U0LCR = 0x83; // 8 bits, no Parity, 1 Stop bit
|
|
||||||
|
|
||||||
// TODO: UART Baudrate calculation using uart->config->speed
|
|
||||||
/*
|
|
||||||
* Baudrate calculation
|
|
||||||
* BR = PCLK (9 MHz) / (16 x 256 x DLM + DLL) x (1/(DIVADDVAL/MULVAL))
|
|
||||||
*/
|
|
||||||
U0FDR = 0x92; // DIVADDVAL = 0010 = 2, MULVAL = 1001 = 9
|
|
||||||
U0DLM = 0x00;
|
|
||||||
U0DLL = 0x04;
|
|
||||||
|
|
||||||
U0LCR = 0x03; // DLAB = 0
|
|
||||||
U0FCR = 0x07; // Enable and reset TX and RX FIFO
|
|
||||||
|
|
||||||
/* irq */
|
|
||||||
install_irq(UART0_INT, UART0_IRQHandler, 6);
|
|
||||||
U0IER |= BIT0 | BIT1; // enable RX+TX irq
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user