diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000000000000000000000000000000000..406e479123c939a62fba407a98c9fd2e22c2d61e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "board"] + path = board + url = git@github.com:RIOT-OS/boards.git diff --git a/board b/board new file mode 160000 index 0000000000000000000000000000000000000000..182151f46326e9eb6c0c48bd2ac6438c66302a13 --- /dev/null +++ b/board @@ -0,0 +1 @@ +Subproject commit 182151f46326e9eb6c0c48bd2ac6438c66302a13 diff --git a/board/Jamfile b/board/Jamfile deleted file mode 100644 index ad37fbe5b6bc064be343270f374785389e295b3e..0000000000000000000000000000000000000000 --- a/board/Jamfile +++ /dev/null @@ -1,3 +0,0 @@ -SubDir TOP board ; - -SubInclude TOP board $(BOARD) ; diff --git a/board/chronos/Jamfile b/board/chronos/Jamfile deleted file mode 100644 index 0899e4631bbf9c86c08d1d396b15af90298f2b66..0000000000000000000000000000000000000000 --- a/board/chronos/Jamfile +++ /dev/null @@ -1,10 +0,0 @@ -SubDir TOP board chronos ; - -HDRS += $(TOP)/board/$(CPU)/include ; - -Module board : putchar.c board_init.c ; -UseModule board ; - -SubInclude TOP board $(BOARD) drivers ; -SubInclude TOP cpu $(CPU) ; - diff --git a/board/chronos/Jamrules.chronos b/board/chronos/Jamrules.chronos deleted file mode 100644 index 4c17a9a9ae3eb95d97e6a392f2acfc17d1c4ab2d..0000000000000000000000000000000000000000 --- a/board/chronos/Jamrules.chronos +++ /dev/null @@ -1,14 +0,0 @@ -# ****************************************************************************** -# Copyright 2010, Freie Universitaet Berlin (FUB). All rights reserved. -# ****************************************************************************** -# $Id$ - -BOARD = chronos ; -CPU = cc430 ; -MCU = cc430x6137 ; - -HDRS += [ FPath $(TOP) board chronos drivers include ] ; - -FLASHER ?= mspdebug ; -FLASHFLAGS ?= rf2500 ; - diff --git a/board/chronos/board_init.c b/board/chronos/board_init.c deleted file mode 100644 index 74799abace063124b8223b2c55e83050ec8a990e..0000000000000000000000000000000000000000 --- a/board/chronos/board_init.c +++ /dev/null @@ -1,74 +0,0 @@ -#include <stdint.h> -#include <board.h> -#include <cpu.h> -#include <irq.h> - -void cc430_cpu_init(void) { - volatile uint16_t i; - volatile unsigned char *ptr; - - /* disable watchdog */ - WDTCTL = WDTPW + WDTHOLD; - - // --------------------------------------------------------------------- - // Enable 32kHz ACLK - P5SEL |= 0x03; // Select XIN, XOUT on P5.0 and P5.1 - UCSCTL6 &= ~XT1OFF; // XT1 On, Highest drive strength - UCSCTL6 |= XCAP_3; // Internal load cap - - UCSCTL3 = SELA__XT1CLK; // Select XT1 as FLL reference - UCSCTL4 = SELA__XT1CLK | SELS__DCOCLKDIV | SELM__DCOCLKDIV; - - // --------------------------------------------------------------------- - // Configure CPU clock for 12MHz - _BIS_SR(SCG0); // Disable the FLL control loop - UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx - UCSCTL1 = DCORSEL_5; // Select suitable range - UCSCTL2 = FLLD_1 + 0x16E; // Set DCO Multiplier - _BIC_SR(SCG0); // Enable the FLL control loop - - // Worst-case settling time for the DCO when the DCO range bits have been - // changed is n x 32 x 32 x f_MCLK / f_FLL_reference. See UCS chapter in 5xx - // UG for optimization. - // 32 x 32 x 8 MHz / 32,768 Hz = 250000 = MCLK cycles for DCO to settle - for (i = 0xFF; i > 0; i--); // Time for flag to set - - // Loop until XT1 & DCO stabilizes, use do-while to insure that - // body is executed at least once - do - { - UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); - SFRIFG1 &= ~OFIFG; // Clear fault flags - } while ((SFRIFG1 & OFIFG)); - - // Disable all interrupts - __disable_interrupt(); - // Get write-access to port mapping registers: - PMAPPWD = 0x02D52; - // Allow reconfiguration during runtime: - PMAPCTL = PMAPRECFG; - - // P2.7 = TA0CCR1A or TA1CCR0A output (buzzer output) - ptr = &P2MAP0; - *(ptr+7) = PM_TA1CCR0A; - P2OUT &= ~BIT7; - P2DIR |= BIT7; - - // P1.5 = SPI MISO input - ptr = &P1MAP0; - *(ptr+5) = PM_UCA0SOMI; - // P1.6 = SPI MOSI output - *(ptr+6) = PM_UCA0SIMO; - // P1.7 = SPI CLK output - *(ptr+7) = PM_UCA0CLK; - - // Disable write-access to port mapping registers: - PMAPPWD = 0; - // Re-enable all interrupts - enableIRQ(); - -} - -void board_init() { - cc430_cpu_init(); -} diff --git a/board/chronos/drivers/Jamfile b/board/chronos/drivers/Jamfile deleted file mode 100644 index 71ee1c982c3de085b497fbb4ae91644d9607e869..0000000000000000000000000000000000000000 --- a/board/chronos/drivers/Jamfile +++ /dev/null @@ -1,11 +0,0 @@ -SubDir TOP board chronos drivers ; - -HDRS += $(TOP)/board/$(CPU)/drivers/include ; - -Module board_display : display.c display1.c ; -Module board_cc110x : cc430-cc110x.c : cc110x_cc430 ; -Module board_buzzer : buzzer.c : hwtimer ; -Module battery : battery.c : adc hwtimer ; -Module vti_ps_twi : vti_ps_twi.c : hwtimer ; - -Module display_putchar : display_putchar.c : board_display ; diff --git a/board/chronos/drivers/battery.c b/board/chronos/drivers/battery.c deleted file mode 100644 index bae37d329540f3dd69ea9b614ec5f6319b5d699a..0000000000000000000000000000000000000000 --- a/board/chronos/drivers/battery.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <stdint.h> -#include <cc430x613x.h> -#include <cc430-adc.h> - -uint32_t battery_get_voltage(void) { - uint32_t voltage; - voltage = adc12_single_conversion(REFVSEL_1, ADC12SHT0_10, ADC12INCH_11); - - /* Ideally we have A11=0->AVCC=0V ... A11=4095(2^12-1)->AVCC=4V - * --> (A11/4095)*4V=AVCC --> AVCC=(A11*4)/4095 */ - voltage = (voltage * 2 * 2 * 1000) / 4095; - return voltage; -} diff --git a/board/chronos/drivers/buzzer.c b/board/chronos/drivers/buzzer.c deleted file mode 100644 index 5e0bc2ca34f38e48a310bd5dba5af56a634ce7c6..0000000000000000000000000000000000000000 --- a/board/chronos/drivers/buzzer.c +++ /dev/null @@ -1,28 +0,0 @@ -#include <stdint.h> -#include <buzzer.h> -#include <hwtimer.h> -#include <cc430x613x.h> - -void buzzer_beep(uint8_t pitch, uint16_t duration) { - // Reset TA1R, set up mode, TA1 runs from 32768Hz ACLK - TA1CTL = TACLR | MC_1 | TASSEL__ACLK; - - // Set PWM frequency - TA1CCR0 = pitch; - - // Enable IRQ, set output mode "toggle" - TA1CCTL0 = OUTMOD_4; - - // Allow buzzer PWM output on P2.7 - P2SEL |= BIT7; - - hwtimer_wait(duration); - - // Stop PWM timer - TA1CTL &= ~(BIT4 | BIT5); - - // Reset and disable buzzer PWM output - P2OUT &= ~BIT7; - P2SEL &= ~BIT7; - TA1CCTL0 &= ~CCIE; -} diff --git a/board/chronos/drivers/cc430-cc110x.c b/board/chronos/drivers/cc430-cc110x.c deleted file mode 100644 index 78380c4ca4df6cb0faadadfc3096b5b23e98f848..0000000000000000000000000000000000000000 --- a/board/chronos/drivers/cc430-cc110x.c +++ /dev/null @@ -1,81 +0,0 @@ -#include <stdint.h> - -#include <cpu.h> -#include <irq.h> -#include <cc110x_ng.h> -#include <cc110x-arch.h> - -//#include <cc430_.h> -#include <cc430x613x.h> -//#include <msp430/rf1a.h> - -#define CC1100_GDO0 (RF1AIN & BIT0) -#define CC1100_GDO1 (RF1AIN & BIT1) -#define CC1100_GDO2 (RF1AIN & BIT2) - -int cc110x_get_gdo0(void) { - return CC1100_GDO0; -} - -int cc110x_get_gdo1(void) { - return CC1100_GDO1; -} - -int cc110x_get_gdo2(void) { - return CC1100_GDO2; -} - -void cc110x_before_send(void) -{ - // Disable GDO2 interrupt before sending packet - cc110x_gdo2_disable(); -} - -void cc110x_after_send(void) -{ - // Enable GDO2 interrupt after sending packet - cc110x_gdo2_enable(); -} - -void cc110x_gdo0_enable(void) { - RF1AIFG &= ~BIT0; - RF1AIE |= BIT0; -} - -void cc110x_gdo0_disable(void) { - RF1AIE &= ~BIT0; - RF1AIFG &= ~BIT0; -} - -void cc110x_gdo2_disable(void) { - RF1AIFG &= ~BIT2; // Clear a pending interrupt - RF1AIE &= ~BIT2; // Disable the interrupt -} - -void cc110x_gdo2_enable(void) { - RF1AIFG &= ~BIT2; // Clear a pending interrupt - RF1AIE |= BIT2; // Enable the interrupt -} - -void cc110x_init_interrupts(void) { - uint8_t state = disableIRQ(); /* Disable all interrupts */ - cc110x_gdo2_enable(); - cc110x_gdo0_disable(); - restoreIRQ(state); /* Enable all interrupts */ -} - -interrupt (CC1101_VECTOR) __attribute__ ((naked)) cc110x_isr(void){ - __enter_isr(); - /* Check IFG */ - if (RF1AIV == RF1AIV_RFIFG2) { - while (RF1AIN & BIT2); - /* discard all further interrupts */ - RF1AIV = 0; - cc110x_gdo2_irq(); - } - if (RF1AIV == RF1AIV_RFIFG0) { - cc110x_gdo0_irq(); - RF1AIE &= ~BIT0; - } - __exit_isr(); -} diff --git a/board/chronos/drivers/display.c b/board/chronos/drivers/display.c deleted file mode 100644 index 063ade5855f952d747f72950976b1dce7293733f..0000000000000000000000000000000000000000 --- a/board/chronos/drivers/display.c +++ /dev/null @@ -1,383 +0,0 @@ -/* ************************************************************************************************* - * - * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the - * distribution. - * - * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ************************************************************************************************* - * Basic display functions. - * ************************************************************************************************/ - -/* ************************************************************************************************* - * Include section - */ - -/* system */ -#include <string.h> - -/* driver */ -#include <cc430x613x.h> -#include <display.h> - - -/************************************************************************************************** - * Prototypes section */ -void write_lcd_mem(uint8_t *lcdmem, uint8_t bits, uint8_t bitmask, uint8_t state); -void clear_line(uint8_t line); -void display_symbol(uint8_t symbol, uint8_t mode); - -/* ************************************************************************************************* - * Global Variable section */ - -/* Display flags */ -volatile s_display_flags_t display; - -/* Global return string for itoa function */ -char itoa_str[8]; - -void lcd_init(void) { - /* Clear entire display memory */ - LCDBMEMCTL |= LCDCLRBM + LCDCLRM; - - /* LCD_FREQ = ACLK/16/8 = 256Hz */ - /* Frame frequency = 256Hz/4 = 64Hz, LCD mux 4, LCD on */ - LCDBCTL0 = (LCDDIV0 + LCDDIV1 + LCDDIV2 + LCDDIV3) | (LCDPRE0 + LCDPRE1) | LCD4MUX | LCDON; - - /* LCB_BLK_FREQ = ACLK/8/4096 = 1Hz */ - LCDBBLKCTL = LCDBLKPRE0 | LCDBLKPRE1 | LCDBLKDIV0 | LCDBLKDIV1 | LCDBLKDIV2 | LCDBLKMOD0; - - /* I/O to COM outputs */ - P5SEL |= (BIT5 | BIT6 | BIT7); - P5DIR |= (BIT5 | BIT6 | BIT7); - - /* Activate LCD output */ - LCDBPCTL0 = 0xFFFF; /* Select LCD segments S0-S15 */ - LCDBPCTL1 = 0x00FF; /* Select LCD segments S16-S22 */ - -#ifdef USE_LCD_CHARGE_PUMP - /* Charge pump voltage generated internally, internal bias (V2-V4) generation */ - LCDBVCTL = LCDCPEN | VLCD_2_72; -#endif -} - -void clear_display_all(void) { - // Clear generic content - clear_line(LINE1); - clear_line(LINE2); -} - -void clear_display(void) { - clear_line(LINE1); - clear_line(LINE2); -} - -void clear_line(uint8_t line) { - display_chars(switch_seg(line, LCD_SEG_L1_3_0, LCD_SEG_L2_5_0), NULL, SEG_OFF); - if (line == LINE1) { - display_symbol(LCD_SEG_L1_DP1, SEG_OFF); - display_symbol(LCD_SEG_L1_DP0, SEG_OFF); - display_symbol(LCD_SEG_L1_COL, SEG_OFF); - } - /* line == LINE2 */ - else { - display_symbol(LCD_SEG_L2_DP, SEG_OFF); - display_symbol(LCD_SEG_L2_COL1, SEG_OFF); - display_symbol(LCD_SEG_L2_COL0, SEG_OFF); - } -} - -void write_lcd_mem(uint8_t *lcdmem, uint8_t bits, uint8_t bitmask, uint8_t state) { - if (state == SEG_ON) { - /* Clear segments before writing */ - *lcdmem = (uint8_t)(*lcdmem & ~bitmask); - - /* Set visible segments */ - *lcdmem = (uint8_t)(*lcdmem | bits); - } - else if (state == SEG_OFF) { - /* Clear segments */ - *lcdmem = (uint8_t)(*lcdmem & ~bitmask); - } - else if (state == SEG_ON_BLINK_ON) { - /* Clear visible / blink segments before writing */ - *lcdmem = (uint8_t)(*lcdmem & ~bitmask); - *(lcdmem+0x20) = (uint8_t)(*(lcdmem+0x20) & ~bitmask); - - /* Set visible / blink segments */ - *lcdmem = (uint8_t)(*lcdmem | bits); - *(lcdmem+0x20) = (uint8_t)(*(lcdmem+0x20) | bits); - } - else if (state == SEG_ON_BLINK_OFF) { - /* Clear visible segments before writing */ - *lcdmem = (uint8_t)(*lcdmem & ~bitmask); - - /* Set visible segments */ - *lcdmem = (uint8_t)(*lcdmem | bits); - - /* Clear blink segments */ - *(lcdmem+0x20) = (uint8_t)(*(lcdmem+0x20) & ~bitmask); - } - else if (state == SEG_OFF_BLINK_OFF) { - /* Clear segments */ - *lcdmem = (uint8_t)(*lcdmem & ~bitmask); - - /* Clear blink segments */ - *(lcdmem+0x20) = (uint8_t)(*(lcdmem+0x20) & ~bitmask); - } -} - -char *itoa(uint32_t n, uint8_t digits, uint8_t blanks) { - uint8_t i; - uint8_t digits1 = digits; - - /* Preset result string */ - memcpy(itoa_str, "0000000", 7); - - /* Return empty string if number of digits is invalid (valid range for digits: 1-7) */ - if ((digits == 0) || (digits > 7)) { - return (itoa_str); - } - - /* Numbers 0 .. 180 can be copied from itoa_conversion_table without conversion */ - if (n <= 180) { - if (digits >= 3) { - memcpy(itoa_str+(digits-3), itoa_conversion_table[n], 3); - } - /* digits == 1 || 2 */ - else { - memcpy(itoa_str, itoa_conversion_table[n]+(3-digits), digits); - } - } - /* For n > 180 need to calculate string content */ - else { - /* Calculate digits from least to most significant number */ - do { - itoa_str[digits-1] = n % 10 + '0'; - n /= 10; - } while (--digits > 0); - } - - /* Remove specified number of leading '0', always keep last one */ - i = 0; - while ((itoa_str[i] == '0') && (i < digits1-1)) { - if (blanks > 0) { - /* Convert only specified number of leading '0' */ - itoa_str[i]=' '; - blanks--; - } - i++; - } - return (itoa_str); -} - -void display_value1(uint8_t segments, uint32_t value, uint8_t digits, uint8_t blanks, uint8_t disp_mode) { - char *str; - - str = itoa(value, digits, blanks); - - /* Display string in blink mode */ - display_chars(segments, str, disp_mode); -} - -void display_symbol(uint8_t symbol, uint8_t mode) { - uint8_t *lcdmem; - uint8_t bits; - uint8_t bitmask; - - if (symbol <= LCD_SEG_L2_DP) { - /* Get LCD memory address for symbol from table */ - lcdmem = (uint8_t*)segments_lcdmem[symbol]; - - /* Get bits for symbol from table */ - bits = segments_bitmask[symbol]; - - /* Bitmask for symbols equals bits */ - bitmask = bits; - - /* Write LCD memory */ - write_lcd_mem(lcdmem, bits, bitmask, mode); - } -} - -void display_char(uint8_t segment, char chr, uint8_t mode) { - uint8_t *lcdmem; /* Pointer to LCD memory */ - uint8_t bitmask; /* Bitmask for character */ - uint8_t bits, bits1; /* Bits to write */ - - /* Write to single 7-segment character */ - if ((segment >= LCD_SEG_L1_3) && (segment <= LCD_SEG_L2_DP)) { - /* Get LCD memory address for segment from table */ - lcdmem = (uint8_t*)segments_lcdmem[segment]; - - /* Get bitmask for character from table */ - bitmask = segments_bitmask[segment]; - - /* Get bits from font set */ - if ((chr >= 0x30) && (chr <= 0x5A)) { - /* Use font set */ - bits = lcd_font[chr-0x30]; - } - else if (chr == 0x2D) { - /* '-' not in font set */ - bits = BIT1; - } - else { - /* Other characters map to ' ' (blank) */ - bits = 0; - } - - /* When addressing LINE2 7-segment characters need to swap high- and low-nibble, */ - /* because LCD COM/SEG assignment is mirrored against LINE1 */ - if (segment >= LCD_SEG_L2_5) { - bits1 = ((bits << 4) & 0xF0) | ((bits >> 4) & 0x0F); - bits = bits1; - - /* When addressing LCD_SEG_L2_5, need to convert ASCII '1' and 'L' to 1 bit, */ - /* because LCD COM/SEG assignment is special for this incomplete character */ - if (segment == LCD_SEG_L2_5) { - if ((chr == '1') || (chr == 'L')) bits = BIT7; - } - } - - /* Physically write to LCD memory */ - write_lcd_mem(lcdmem, bits, bitmask, mode); - } -} - -void display_chars(uint8_t segments, char *str, uint8_t mode) { - uint8_t i; - uint8_t length = 0; /* Write length */ - uint8_t char_start = 0; /* Starting point for consecutive write */ - - switch (segments) { - /* LINE1 */ - case LCD_SEG_L1_3_0: - length=4; - char_start=LCD_SEG_L1_3; - break; - case LCD_SEG_L1_2_0: - length=3; - char_start=LCD_SEG_L1_2; - break; - case LCD_SEG_L1_1_0: - length=2; - char_start=LCD_SEG_L1_1; - break; - case LCD_SEG_L1_3_1: - length=3; - char_start=LCD_SEG_L1_3; - break; - case LCD_SEG_L1_3_2: - length=2; - char_start=LCD_SEG_L1_3; - break; - - /* LINE2 */ - case LCD_SEG_L2_5_0: - length=6; - char_start=LCD_SEG_L2_5; - break; - case LCD_SEG_L2_4_0: - length=5; - char_start=LCD_SEG_L2_4; - break; - case LCD_SEG_L2_3_0: - length=4; - char_start=LCD_SEG_L2_3; - break; - case LCD_SEG_L2_2_0: - length=3; - char_start=LCD_SEG_L2_2; - break; - case LCD_SEG_L2_1_0: - length=2; - char_start=LCD_SEG_L2_1; - break; - case LCD_SEG_L2_5_4: - length=2; - char_start=LCD_SEG_L2_5; - break; - case LCD_SEG_L2_5_2: - length=4; - char_start=LCD_SEG_L2_5; - break; - case LCD_SEG_L2_3_2: - length=2; - char_start=LCD_SEG_L2_3; - break; - case LCD_SEG_L2_4_2: - length=3; - char_start=LCD_SEG_L2_4; - break; - } - - /* Write to consecutive digits */ - for(i=0; i<length; i++) { - /* Use single character routine to write display memory */ - display_char(char_start+i, *(str+i), mode); - } -} - -uint8_t switch_seg(uint8_t line, uint8_t index1, uint8_t index2) { - if (line == LINE1) { - return index1; - } - /* line == LINE2 */ - else { - return index2; - } -} - -void start_blink(void) { - LCDBBLKCTL |= LCDBLKMOD0; -} - -void stop_blink(void) { - LCDBBLKCTL &= ~LCDBLKMOD0; -} - -void clear_blink_mem(void) { - LCDBMEMCTL |= LCDCLRBM; -} - -void set_blink_rate(uint8_t bits) { - LCDBBLKCTL &= ~(BIT7 | BIT6 | BIT5); - LCDBBLKCTL |= bits; -} - -void display_all_off(void) { - uint8_t *lcdptr = (uint8_t*)0x0A20; - uint8_t i; - - for (i=1; i<=12; i++) { - *lcdptr = 0x00; - lcdptr++; - } -} diff --git a/board/chronos/drivers/display1.c b/board/chronos/drivers/display1.c deleted file mode 100644 index 40795d54bbdee695139e8018ebc3a478f34a8826..0000000000000000000000000000000000000000 --- a/board/chronos/drivers/display1.c +++ /dev/null @@ -1,207 +0,0 @@ -/* ************************************************************************************************* - * - * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the - * distribution. - * - * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ************************************************************************************************/ - -/* Basic display functions. */ -/* ************************************************************************************************* */ - -/* ************************************************************************************************* */ -/* Include section */ -#include <cc430x613x.h> -#include <display.h> - -/* ************************************************************************************************* */ -/* Global Variable section */ - -/* Table with memory bit assignment for digits "0" to "9" and characters "A" to "Z" */ -/* A */ -/* F B */ -/* G */ -/* E C */ -/* D */ -const uint8_t lcd_font[] = { - SEG_A+SEG_B+SEG_C+SEG_D+SEG_E+SEG_F, /* Displays "0" */ - SEG_B+SEG_C, /* Displays "1" */ - SEG_A+SEG_B+ SEG_D+SEG_E+ SEG_G, /* Displays "2" */ - SEG_A+SEG_B+SEG_C+SEG_D+ SEG_G, /* Displays "3" */ - SEG_B+SEG_C+ SEG_F+SEG_G, /* Displays "4" */ - SEG_A+ SEG_C+SEG_D+ SEG_F+SEG_G, /* Displays "5" */ - SEG_A+ SEG_C+SEG_D+SEG_E+SEG_F+SEG_G, /* Displays "6" */ - SEG_A+SEG_B+SEG_C, /* Displays "7" */ - SEG_A+SEG_B+SEG_C+SEG_D+SEG_E+SEG_F+SEG_G, /* Displays "8" */ - SEG_A+SEG_B+SEG_C+SEG_D+ SEG_F+SEG_G, /* Displays "9" */ - 0 , /* Displays " " (:) */ - 0 , /* Displays " " (;) */ - SEG_A+ SEG_F+SEG_G, /* Displays "<" as high c */ - SEG_D+ SEG_G, /* Displays "=" */ - 0 , /* Displays " " (>) */ - SEG_A+SEG_B+ SEG_E+ SEG_G, /* Displays "?" */ - 0 , /* Displays " " (@) */ - SEG_A+SEG_B+SEG_C+ SEG_E+SEG_F+SEG_G, /* Displays "A" */ - SEG_C+SEG_D+SEG_E+SEG_F+SEG_G, /* Displays "b" */ - SEG_D+SEG_E+ SEG_G, /* Displays "c" */ - SEG_B+SEG_C+SEG_D+SEG_E+ SEG_G, /* Displays "d" */ - SEG_A+ +SEG_D+SEG_E+SEG_F+SEG_G, /* Displays "E" */ - SEG_A+ SEG_E+SEG_F+SEG_G, /* Displays "f" */ - SEG_A+SEG_B+SEG_C+SEG_D+ SEG_F+SEG_G, /* Displays "g" same as 9 */ - SEG_C+ SEG_E+SEG_F+SEG_G, /* Displays "h" */ - SEG_E , /* Displays "i" */ - SEG_A+SEG_B+SEG_C+SEG_D , /* Displays "J" */ - SEG_D+ SEG_F+SEG_G, /* Displays "k" */ - SEG_D+SEG_E+SEG_F , /* Displays "L" */ - SEG_A+SEG_B+SEG_C+ SEG_E+SEG_F , /* Displays "M" */ - SEG_C+ SEG_E+ SEG_G, /* Displays "n" */ - SEG_C+SEG_D+SEG_E+ SEG_G, /* Displays "o" */ - SEG_A+SEG_B+ SEG_E+SEG_F+SEG_G, /* Displays "P" */ - SEG_A+SEG_B+SEG_C+ SEG_F+SEG_G, /* Displays "q" */ - SEG_E+ SEG_G, /* Displays "r" */ - SEG_A+ SEG_C+SEG_D+ SEG_F+SEG_G, /* Displays "S" same as 5 */ - SEG_D+SEG_E+SEG_F+SEG_G, /* Displays "t" */ - SEG_C+SEG_D+SEG_E , /* Displays "u" */ - SEG_C+SEG_D+SEG_E , /* Displays "v" same as u */ - SEG_B+SEG_C+SEG_D+SEG_E+SEG_F+SEG_G, /* Displays "W" */ - SEG_B+SEG_C+ +SEG_E+SEG_F+SEG_G, /* Displays "X" as H */ - SEG_B+SEG_C+SEG_D+ SEG_F+SEG_G, /* Displays "Y" */ - SEG_A+SEG_B+ SEG_D+SEG_E+ SEG_G, /* Displays "Z" same as 2 */ -}; - -/* Table with memory address for each display element */ -const uint8_t * segments_lcdmem[] = { - LCD_SYMB_AM_MEM, - LCD_SYMB_PM_MEM, - LCD_SYMB_ARROW_UP_MEM, - LCD_SYMB_ARROW_DOWN_MEM, - LCD_SYMB_PERCENT_MEM, - LCD_SYMB_TOTAL_MEM, - LCD_SYMB_AVERAGE_MEM, - LCD_SYMB_MAX_MEM, - LCD_SYMB_BATTERY_MEM, - LCD_UNIT_L1_FT_MEM, - LCD_UNIT_L1_K_MEM, - LCD_UNIT_L1_M_MEM, - LCD_UNIT_L1_I_MEM, - LCD_UNIT_L1_PER_S_MEM, - LCD_UNIT_L1_PER_H_MEM, - LCD_UNIT_L1_DEGREE_MEM, - LCD_UNIT_L2_KCAL_MEM, - LCD_UNIT_L2_KM_MEM, - LCD_UNIT_L2_MI_MEM, - LCD_ICON_HEART_MEM, - LCD_ICON_STOPWATCH_MEM, - LCD_ICON_RECORD_MEM, - LCD_ICON_ALARM_MEM, - LCD_ICON_BEEPER1_MEM, - LCD_ICON_BEEPER2_MEM, - LCD_ICON_BEEPER3_MEM, - LCD_SEG_L1_3_MEM, - LCD_SEG_L1_2_MEM, - LCD_SEG_L1_1_MEM, - LCD_SEG_L1_0_MEM, - LCD_SEG_L1_COL_MEM, - LCD_SEG_L1_DP1_MEM, - LCD_SEG_L1_DP0_MEM, - LCD_SEG_L2_5_MEM, - LCD_SEG_L2_4_MEM, - LCD_SEG_L2_3_MEM, - LCD_SEG_L2_2_MEM, - LCD_SEG_L2_1_MEM, - LCD_SEG_L2_0_MEM, - LCD_SEG_L2_COL1_MEM, - LCD_SEG_L2_COL0_MEM, - LCD_SEG_L2_DP_MEM, -}; - -/* Table with bit mask for each display element */ -const uint8_t segments_bitmask[] = { - LCD_SYMB_AM_MASK, - LCD_SYMB_PM_MASK, - LCD_SYMB_ARROW_UP_MASK, - LCD_SYMB_ARROW_DOWN_MASK, - LCD_SYMB_PERCENT_MASK, - LCD_SYMB_TOTAL_MASK, - LCD_SYMB_AVERAGE_MASK, - LCD_SYMB_MAX_MASK, - LCD_SYMB_BATTERY_MASK, - LCD_UNIT_L1_FT_MASK, - LCD_UNIT_L1_K_MASK, - LCD_UNIT_L1_M_MASK, - LCD_UNIT_L1_I_MASK, - LCD_UNIT_L1_PER_S_MASK, - LCD_UNIT_L1_PER_H_MASK, - LCD_UNIT_L1_DEGREE_MASK, - LCD_UNIT_L2_KCAL_MASK, - LCD_UNIT_L2_KM_MASK, - LCD_UNIT_L2_MI_MASK, - LCD_ICON_HEART_MASK, - LCD_ICON_STOPWATCH_MASK, - LCD_ICON_RECORD_MASK, - LCD_ICON_ALARM_MASK, - LCD_ICON_BEEPER1_MASK, - LCD_ICON_BEEPER2_MASK, - LCD_ICON_BEEPER3_MASK, - LCD_SEG_L1_3_MASK, - LCD_SEG_L1_2_MASK, - LCD_SEG_L1_1_MASK, - LCD_SEG_L1_0_MASK, - LCD_SEG_L1_COL_MASK, - LCD_SEG_L1_DP1_MASK, - LCD_SEG_L1_DP0_MASK, - LCD_SEG_L2_5_MASK, - LCD_SEG_L2_4_MASK, - LCD_SEG_L2_3_MASK, - LCD_SEG_L2_2_MASK, - LCD_SEG_L2_1_MASK, - LCD_SEG_L2_0_MASK, - LCD_SEG_L2_COL1_MASK, - LCD_SEG_L2_COL0_MASK, - LCD_SEG_L2_DP_MASK, -}; - -/* Quick integer to array conversion table for most common integer values - * discarding this would save aprox. 600 bytes codespace but increase cpu time - * for displaying values */ -const uint8_t itoa_conversion_table[][3] = { - "000", "001", "002", "003", "004", "005", "006", "007", "008", "009", "010", "011", "012", "013", "014", "015", - "016", "017", "018", "019", "020", "021", "022", "023", "024", "025", "026", "027", "028", "029", "030", "031", - "032", "033", "034", "035", "036", "037", "038", "039", "040", "041", "042", "043", "044", "045", "046", "047", - "048", "049", "050", "051", "052", "053", "054", "055", "056", "057", "058", "059", "060", "061", "062", "063", - "064", "065", "066", "067", "068", "069", "070", "071", "072", "073", "074", "075", "076", "077", "078", "079", - "080", "081", "082", "083", "084", "085", "086", "087", "088", "089", "090", "091", "092", "093", "094", "095", - "096", "097", "098", "099", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", - "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", - "128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143", - "144", "145", "146", "147", "148", "149", "150", "151", "152", "153", "154", "155", "156", "157", "158", "159", - "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", - "176", "177", "178", "179", "180", -}; diff --git a/board/chronos/drivers/display_putchar.c b/board/chronos/drivers/display_putchar.c deleted file mode 100644 index 2f1d9468aff27c0a57e00378bdecbc0477f7eb0a..0000000000000000000000000000000000000000 --- a/board/chronos/drivers/display_putchar.c +++ /dev/null @@ -1,42 +0,0 @@ -#include <stdio.h> -#include <display.h> -#include <string.h> - -extern int toupper(int c); -extern void (*_putchar)(int c); - -static char display_buf[11]; - -void putchar_to_display(); - -void init_display_putchar() { - memset(display_buf, '\0', 11); - _putchar = putchar_to_display; -} - -void putchar_to_display(int c) { - if (c == '\n') { - display_buf[4] = 1; - return; - } - - if (display_buf[4]) { - memset(display_buf, '\0', 11); - } else { - display_buf[0] = display_buf[1]; - display_buf[1] = display_buf[2]; - display_buf[2] = display_buf[3]; - display_buf[3] = display_buf[5]; - display_buf[5] = display_buf[6]; - display_buf[6] = display_buf[7]; - display_buf[7] = display_buf[8]; - display_buf[8] = display_buf[9]; - } - - display_buf[9] = toupper(c); - - clear_display_all(); - - display_chars(LCD_SEG_L1_3_0, display_buf, SEG_ON); - display_chars(LCD_SEG_L2_5_0, display_buf+4, SEG_ON); -} diff --git a/board/chronos/drivers/include/battery.h b/board/chronos/drivers/include/battery.h deleted file mode 100644 index c6381b721bd198c86f0788b69b72fc70946bb7f3..0000000000000000000000000000000000000000 --- a/board/chronos/drivers/include/battery.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef BATTERY_H -#define BATTERY_H - -uint32_t battery_get_voltage(void); - -#endif /* BATTERY_H */ diff --git a/board/chronos/drivers/include/buzzer.h b/board/chronos/drivers/include/buzzer.h deleted file mode 100644 index 1786b0c513fb889276c2aa8215ebb2f7b7ce4c37..0000000000000000000000000000000000000000 --- a/board/chronos/drivers/include/buzzer.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef BUZZER_H -#define BUZZER_H - -void buzzer_beep(uint8_t pitch, uint16_t duration); - -#endif /* BUZZER_H */ diff --git a/board/chronos/drivers/include/display.h b/board/chronos/drivers/include/display.h deleted file mode 100644 index 3b7c2e131fc175da1fbde51be1a08506ca64f609..0000000000000000000000000000000000000000 --- a/board/chronos/drivers/include/display.h +++ /dev/null @@ -1,458 +0,0 @@ -/* ************************************************************************************************* - * - * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the - * distribution. - * - * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ************************************************************************************************* - * Basic display functions. - * ************************************************************************************************/ - -#ifndef __DISPLAY_H -#define __DISPLAY_H - -#define CLOCK_24HR (0) -#define CLOCK_AM_PM (1) -#define CLOCK_DISPLAY_SELECT (2) - - -/* ************************************************************************************************* - * Global Variable section */ - -/* Set of display flags */ -typedef union { - struct { - /* Line1 + Line2 + Icons*/ - uint16_t full_update : 1; // 1 = Redraw all content - uint16_t partial_update : 1; // 1 = Update changes - - // Line only - uint16_t line1_full_update : 1; // 1 = Redraw Line1 content - uint16_t line2_full_update : 1; // 1 = Redraw Line2 content - - // Logic module data update flags - uint16_t update_time : 1; // 1 = Time was updated - uint16_t update_stopwatch : 1; // 1 = Stopwatch was updated - uint16_t update_temperature : 1; // 1 = Temperature was updated - uint16_t update_battery_voltage : 1; // 1 = Battery voltage was updated - uint16_t update_date : 1; // 1 = Date was updated - uint16_t update_alarm : 1; // 1 = Alarm time was updated - uint16_t update_acceleration : 1; // 1 = Acceleration data was updated - } flag; - uint16_t all_flags; // Shortcut to all display flags (for reset) -} s_display_flags_t; - -extern volatile s_display_flags_t display; - -// Constants defined in library -extern const uint8_t lcd_font[]; -extern const uint8_t *segments_lcdmem[]; -extern const uint8_t segments_bitmask[]; -extern const uint8_t itoa_conversion_table[][3]; - -// ************************************************************************************************* -// Defines section - -// Display function modes -#define DISPLAY_LINE_UPDATE_FULL (BIT0) -#define DISPLAY_LINE_UPDATE_PARTIAL (BIT1) -#define DISPLAY_LINE_CLEAR (BIT2) - -// Definitions for line view style -#define DISPLAY_DEFAULT_VIEW (0u) -#define DISPLAY_ALTERNATIVE_VIEW (1u) -#define DISPLAY_ALTERNATIVE2_VIEW (2u) - -// Definitions for line access -#define LINE1 (1u) -#define LINE2 (2u) - -// LCD display modes -#define SEG_OFF (0u) -#define SEG_ON (1u) -#define SEG_ON_BLINK_ON (2u) -#define SEG_ON_BLINK_OFF (3u) -#define SEG_OFF_BLINK_OFF (4u) - -// 7-segment character bit assignments -#define SEG_A (BIT4) -#define SEG_B (BIT5) -#define SEG_C (BIT6) -#define SEG_D (BIT7) -#define SEG_E (BIT2) -#define SEG_F (BIT0) -#define SEG_G (BIT1) - -/* ------------------------------------------ - * LCD symbols for easier access - * - * xxx_SEG_xxx = Seven-segment character (sequence 5-4-3-2-1-0) - * xxx_SYMB_xxx = Display symbol, e.g. "AM" for ante meridiem - * xxx_UNIT_xxx = Display unit, e.g. "km/h" for kilometers per hour - * xxx_ICON_xxx = Display icon, e.g. heart to indicate reception of heart rate data - * xxx_L1_xxx = Item is part of Line1 information - * xxx_L2_xxx = Item is part of Line2 information - */ - -//* Symbols for Line1 */ -#define LCD_SYMB_AM 0 -#define LCD_SYMB_PM 1 -#define LCD_SYMB_ARROW_UP 2 -#define LCD_SYMB_ARROW_DOWN 3 -#define LCD_SYMB_PERCENT 4 - -/* Symbols for Line2 */ -#define LCD_SYMB_TOTAL 5 -#define LCD_SYMB_AVERAGE 6 -#define LCD_SYMB_MAX 7 -#define LCD_SYMB_BATTERY 8 - -/* Units for Line1 */ -#define LCD_UNIT_L1_FT 9 -#define LCD_UNIT_L1_K 10 -#define LCD_UNIT_L1_M 11 -#define LCD_UNIT_L1_I 12 -#define LCD_UNIT_L1_PER_S 13 -#define LCD_UNIT_L1_PER_H 14 -#define LCD_UNIT_L1_DEGREE 15 - -/* Units for Line2 */ -#define LCD_UNIT_L2_KCAL 16 -#define LCD_UNIT_L2_KM 17 -#define LCD_UNIT_L2_MI 18 - -/* Icons */ -#define LCD_ICON_HEART 19 -#define LCD_ICON_STOPWATCH 20 -#define LCD_ICON_RECORD 21 -#define LCD_ICON_ALARM 22 -#define LCD_ICON_BEEPER1 23 -#define LCD_ICON_BEEPER2 24 -#define LCD_ICON_BEEPER3 25 - -/* Line1 7-segments */ -#define LCD_SEG_L1_3 26 -#define LCD_SEG_L1_2 27 -#define LCD_SEG_L1_1 28 -#define LCD_SEG_L1_0 29 -#define LCD_SEG_L1_COL 30 -#define LCD_SEG_L1_DP1 31 -#define LCD_SEG_L1_DP0 32 - -/* Line2 7-segments */ -#define LCD_SEG_L2_5 33 -#define LCD_SEG_L2_4 34 -#define LCD_SEG_L2_3 35 -#define LCD_SEG_L2_2 36 -#define LCD_SEG_L2_1 37 -#define LCD_SEG_L2_0 38 -#define LCD_SEG_L2_COL1 39 -#define LCD_SEG_L2_COL0 40 -#define LCD_SEG_L2_DP 41 - -/* Line1 7-segment arrays */ -#define LCD_SEG_L1_3_0 70 -#define LCD_SEG_L1_2_0 71 -#define LCD_SEG_L1_1_0 72 -#define LCD_SEG_L1_3_1 73 -#define LCD_SEG_L1_3_2 74 - -/* Line2 7-segment arrays */ -#define LCD_SEG_L2_5_0 90 -#define LCD_SEG_L2_4_0 91 -#define LCD_SEG_L2_3_0 92 -#define LCD_SEG_L2_2_0 93 -#define LCD_SEG_L2_1_0 94 -#define LCD_SEG_L2_5_2 95 -#define LCD_SEG_L2_3_2 96 -#define LCD_SEG_L2_5_4 97 -#define LCD_SEG_L2_4_2 98 - -/* LCD controller memory map */ -#define LCD_MEM_1 ((uint8_t*)0x0A20) -#define LCD_MEM_2 ((uint8_t*)0x0A21) -#define LCD_MEM_3 ((uint8_t*)0x0A22) -#define LCD_MEM_4 ((uint8_t*)0x0A23) -#define LCD_MEM_5 ((uint8_t*)0x0A24) -#define LCD_MEM_6 ((uint8_t*)0x0A25) -#define LCD_MEM_7 ((uint8_t*)0x0A26) -#define LCD_MEM_8 ((uint8_t*)0x0A27) -#define LCD_MEM_9 ((uint8_t*)0x0A28) -#define LCD_MEM_10 ((uint8_t*)0x0A29) -#define LCD_MEM_11 ((uint8_t*)0x0A2A) -#define LCD_MEM_12 ((uint8_t*)0x0A2B) - -/* Memory assignment */ -#define LCD_SEG_L1_0_MEM (LCD_MEM_6) -#define LCD_SEG_L1_1_MEM (LCD_MEM_4) -#define LCD_SEG_L1_2_MEM (LCD_MEM_3) -#define LCD_SEG_L1_3_MEM (LCD_MEM_2) -#define LCD_SEG_L1_COL_MEM (LCD_MEM_1) -#define LCD_SEG_L1_DP1_MEM (LCD_MEM_1) -#define LCD_SEG_L1_DP0_MEM (LCD_MEM_5) -#define LCD_SEG_L2_0_MEM (LCD_MEM_8) -#define LCD_SEG_L2_1_MEM (LCD_MEM_9) -#define LCD_SEG_L2_2_MEM (LCD_MEM_10) -#define LCD_SEG_L2_3_MEM (LCD_MEM_11) -#define LCD_SEG_L2_4_MEM (LCD_MEM_12) -#define LCD_SEG_L2_5_MEM (LCD_MEM_12) -#define LCD_SEG_L2_COL1_MEM (LCD_MEM_1) -#define LCD_SEG_L2_COL0_MEM (LCD_MEM_5) -#define LCD_SEG_L2_DP_MEM (LCD_MEM_9) -#define LCD_SYMB_AM_MEM (LCD_MEM_1) -#define LCD_SYMB_PM_MEM (LCD_MEM_1) -#define LCD_SYMB_ARROW_UP_MEM (LCD_MEM_1) -#define LCD_SYMB_ARROW_DOWN_MEM (LCD_MEM_1) -#define LCD_SYMB_PERCENT_MEM (LCD_MEM_5) -#define LCD_SYMB_TOTAL_MEM (LCD_MEM_11) -#define LCD_SYMB_AVERAGE_MEM (LCD_MEM_10) -#define LCD_SYMB_MAX_MEM (LCD_MEM_8) -#define LCD_SYMB_BATTERY_MEM (LCD_MEM_7) -#define LCD_UNIT_L1_FT_MEM (LCD_MEM_5) -#define LCD_UNIT_L1_K_MEM (LCD_MEM_5) -#define LCD_UNIT_L1_M_MEM (LCD_MEM_7) -#define LCD_UNIT_L1_I_MEM (LCD_MEM_7) -#define LCD_UNIT_L1_PER_S_MEM (LCD_MEM_5) -#define LCD_UNIT_L1_PER_H_MEM (LCD_MEM_7) -#define LCD_UNIT_L1_DEGREE_MEM (LCD_MEM_5) -#define LCD_UNIT_L2_KCAL_MEM (LCD_MEM_7) -#define LCD_UNIT_L2_KM_MEM (LCD_MEM_7) -#define LCD_UNIT_L2_MI_MEM (LCD_MEM_7) -#define LCD_ICON_HEART_MEM (LCD_MEM_2) -#define LCD_ICON_STOPWATCH_MEM (LCD_MEM_3) -#define LCD_ICON_RECORD_MEM (LCD_MEM_1) -#define LCD_ICON_ALARM_MEM (LCD_MEM_4) -#define LCD_ICON_BEEPER1_MEM (LCD_MEM_5) -#define LCD_ICON_BEEPER2_MEM (LCD_MEM_6) -#define LCD_ICON_BEEPER3_MEM (LCD_MEM_7) - -/* Bit masks for write access */ -#define LCD_SEG_L1_0_MASK (BIT2+BIT1+BIT0+BIT7+BIT6+BIT5+BIT4) -#define LCD_SEG_L1_1_MASK (BIT2+BIT1+BIT0+BIT7+BIT6+BIT5+BIT4) -#define LCD_SEG_L1_2_MASK (BIT2+BIT1+BIT0+BIT7+BIT6+BIT5+BIT4) -#define LCD_SEG_L1_3_MASK (BIT2+BIT1+BIT0+BIT7+BIT6+BIT5+BIT4) -#define LCD_SEG_L1_COL_MASK (BIT5) -#define LCD_SEG_L1_DP1_MASK (BIT6) -#define LCD_SEG_L1_DP0_MASK (BIT2) -#define LCD_SEG_L2_0_MASK (BIT3+BIT2+BIT1+BIT0+BIT6+BIT5+BIT4) -#define LCD_SEG_L2_1_MASK (BIT3+BIT2+BIT1+BIT0+BIT6+BIT5+BIT4) -#define LCD_SEG_L2_2_MASK (BIT3+BIT2+BIT1+BIT0+BIT6+BIT5+BIT4) -#define LCD_SEG_L2_3_MASK (BIT3+BIT2+BIT1+BIT0+BIT6+BIT5+BIT4) -#define LCD_SEG_L2_4_MASK (BIT3+BIT2+BIT1+BIT0+BIT6+BIT5+BIT4) -#define LCD_SEG_L2_5_MASK (BIT7) -#define LCD_SEG_L2_COL1_MASK (BIT4) -#define LCD_SEG_L2_COL0_MASK (BIT0) -#define LCD_SEG_L2_DP_MASK (BIT7) -#define LCD_SYMB_AM_MASK (BIT1+BIT0) -#define LCD_SYMB_PM_MASK (BIT0) -#define LCD_SYMB_ARROW_UP_MASK (BIT2) -#define LCD_SYMB_ARROW_DOWN_MASK (BIT3) -#define LCD_SYMB_PERCENT_MASK (BIT4) -#define LCD_SYMB_TOTAL_MASK (BIT7) -#define LCD_SYMB_AVERAGE_MASK (BIT7) -#define LCD_SYMB_MAX_MASK (BIT7) -#define LCD_SYMB_BATTERY_MASK (BIT7) -#define LCD_UNIT_L1_FT_MASK (BIT5) -#define LCD_UNIT_L1_K_MASK (BIT6) -#define LCD_UNIT_L1_M_MASK (BIT1) -#define LCD_UNIT_L1_I_MASK (BIT0) -#define LCD_UNIT_L1_PER_S_MASK (BIT7) -#define LCD_UNIT_L1_PER_H_MASK (BIT2) -#define LCD_UNIT_L1_DEGREE_MASK (BIT1) -#define LCD_UNIT_L2_KCAL_MASK (BIT4) -#define LCD_UNIT_L2_KM_MASK (BIT5) -#define LCD_UNIT_L2_MI_MASK (BIT6) -#define LCD_ICON_HEART_MASK (BIT3) -#define LCD_ICON_STOPWATCH_MASK (BIT3) -#define LCD_ICON_RECORD_MASK (BIT7) -#define LCD_ICON_ALARM_MASK (BIT3) -#define LCD_ICON_BEEPER1_MASK (BIT3) -#define LCD_ICON_BEEPER2_MASK (BIT3) -#define LCD_ICON_BEEPER3_MASK (BIT3) - - -/* ************************************************************************************************* - * API section - */ - -/* Physical LCD memory write */ -/* ************************************************************************************************* - * @fn write_segment - * @brief Write to one or multiple LCD segments - * @param lcdmem Pointer to LCD byte memory - * bits Segments to address - * bitmask Bitmask for particular display item - * mode On, off or blink segments - * @return - * ************************************************************************************************/ -void write_lcd_mem(uint8_t *lcdmem, uint8_t bits, uint8_t bitmask, uint8_t state); - -/* Display init / clear */ -/* ************************************************************************************************* - * @fn lcd_init - * @brief Erase LCD memory. Init LCD peripheral. - * @param none - * @return none - * ************************************************************************************************/ -void lcd_init(void); - -/* ************************************************************************************************* - * @fn clear_display - * @brief Erase LINE1 and LINE2 segments. Keep icons. - * @param none - * @return none - * ************************************************************************************************/ -void clear_display(void); - -/* ************************************************************************************************* - * @fn clear_display_all - * @brief Erase LINE1 and LINE2 segments. Clear also function-specific content. - * @param none - * @return none - * ************************************************************************************************/ -void clear_display_all(void); - -/* ************************************************************************************************* - * @fn clear_line - * @brief Erase segments of a given line. - * @param uint8_t line LINE1, LINE2 - * @return none - * ************************************************************************************************/ -void clear_line(uint8_t line); - -/* Blinking function */ -/* ************************************************************************************************* - * @fn start_blink - * @brief Start blinking. - * @param none - * @return none - * ************************************************************************************************/ -void start_blink(void); - -/* ************************************************************************************************* - * @fn stop_blink - * @brief Stop blinking. - * @param none - * @return none - * ************************************************************************************************/ -void stop_blink(void); - -/* ************************************************************************************************* - * @fn stop_blink - * @brief Clear blinking memory. - * @param none - * @return none - * ************************************************************************************************/ -void clear_blink_mem(void); - -/* ************************************************************************************************* - * @fn set_blink_rate - * @brief Set blink rate register bits. - * @param none - * @return none - * ************************************************************************************************/ -void set_blink_rate(uint8_t bits); - -/* Character / symbol draw functions */ -/* ************************************************************************************************* - * @fn display_char - * @brief Write to 7-segment characters. - * @param uint8_t segment A valid LCD segment - * uint8_t chr Character to display - * uint8_t mode SEG_ON, SEG_OFF, SEG_BLINK - * @return none - * ************************************************************************************************/ -void display_char(uint8_t segment, char chr, uint8_t mode); - -/* ************************************************************************************************* - * @FN display_chars - * @brief Write to consecutive 7-segment characters. - * @param uint8_t segments LCD segment array - * uint8_t * str Pointer to a string - * uint8_t mode SEG_ON, SEG_OFF, SEG_BLINK - * @return none - * ************************************************************************************************/ -void display_chars(uint8_t segments, char *str, uint8_t mode); - -/* ************************************************************************************************* - * @fn display_symbol - * @brief Switch symbol on or off on LCD. - * @param uint8_t symbol A valid LCD symbol (index 0..42) - * uint8_t state SEG_ON, SEG_OFF, SEG_BLINK - * @return none - * ************************************************************************************************/ -void display_symbol(uint8_t symbol, uint8_t mode); - -/* Set_value display functions */ -/* ************************************************************************************************* - * @fn display_value1 - * @brief Generic decimal display routine. Used exclusively by set_value function. - * @param uint8_t segments LCD segments where value is displayed - * uint32_t value Integer value to be displayed - * uint8_t digits Number of digits to convert - * uint8_t blanks Number of leadings blanks in itoa result string - * @return none - * ************************************************************************************************/ -void display_value1(uint8_t segments, uint32_t value, uint8_t digits, uint8_t blanks, uint8_t disp_mode); - -/* Integer to string conversion */ -/* ************************************************************************************************* - * @fn itoa - * @brief Generic integer to array routine. Converts integer n to string. - * Default conversion result has leading zeros, e.g. "00123" - * Option to convert leading '0' into whitespace (blanks) - * @param uint32_t n integer to convert - * uint8_t digits number of digits - * uint8_t blanks fill up result string with number of whitespaces instead of leading zeros - * @return uint8_t string - * ************************************************************************************************/ -char *itoa(uint32_t n, uint8_t digits, uint8_t blanks); - -/* Segment index helper function */ -/* ************************************************************************************************* - * @fn switch_seg - * @brief Returns index of 7-segment character. Required for display routines that can draw - * information on both lines. - * @param uint8_t line LINE1, LINE2 - * uint8_t index1 Index of LINE1 - * uint8_t index2 Index of LINE2 - * @return uint8 - * ************************************************************************************************/ -uint8_t switch_seg(uint8_t line, uint8_t index1, uint8_t index2); - -/* ************************************************************************************************* - * @fn display_all_off - * @brief Sets everything of on the display - * @param none - * @return none - * ************************************************************************************************/ -void display_all_off(void); - -#endif /* __DISPLAY_ */ diff --git a/board/chronos/drivers/include/display_putchar.h b/board/chronos/drivers/include/display_putchar.h deleted file mode 100644 index 6adbb9c9c0b1bfdbb1d2bc6e0c77602fc6a24aa7..0000000000000000000000000000000000000000 --- a/board/chronos/drivers/include/display_putchar.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __DISPLAY_PUTCHAR_H -#define __DISPLAY_PUTCHAR_H - -void init_display_putchar(); - -#endif /* __DISPLAY_PUTCHAR_H */ diff --git a/board/chronos/include/board.h b/board/chronos/include/board.h deleted file mode 100644 index af0a99b5da4f485a43c2e89eaf0f8c72a44a4d19..0000000000000000000000000000000000000000 --- a/board/chronos/include/board.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef _MSB_BOARD_H -#define _MSB_BOARD_H - -#include <cc430x613x.h> - -#define MSP430_INITIAL_CPU_SPEED 7372800uL -#define MSP430_HAS_DCOR 1 -#define MSP430_HAS_EXTERNAL_CRYSTAL 1 - -#endif // _MSB_BOARD_H diff --git a/board/chronos/include/buttons.h b/board/chronos/include/buttons.h deleted file mode 100644 index 4e7ab28dca4427551d6a6c819cbabb515b2929a7..0000000000000000000000000000000000000000 --- a/board/chronos/include/buttons.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef BUTTONS_H -#define BUTTONS_H - -// Button ports -#define BUTTON_STAR_PIN (BIT2) -#define BUTTON_NUM_PIN (BIT1) -#define BUTTON_UP_PIN (BIT4) -#define BUTTON_DOWN_PIN (BIT0) -#define BUTTON_BACKLIGHT_PIN (BIT3) - -#endif diff --git a/board/chronos/putchar.c b/board/chronos/putchar.c deleted file mode 100644 index 436d350f51dc1fb4c5945cd136c4415ff4d4d6e3..0000000000000000000000000000000000000000 --- a/board/chronos/putchar.c +++ /dev/null @@ -1,11 +0,0 @@ -static void _dummy(int c) { -} - -void (*_putchar)(int c) = _dummy; - -int putchar(int c) -{ - _putchar(c); - return c; -} - diff --git a/board/msb-430-common/Jamfile b/board/msb-430-common/Jamfile deleted file mode 100644 index 78807c1441c1cadefc7b1da26f3b6e41f884f071..0000000000000000000000000000000000000000 --- a/board/msb-430-common/Jamfile +++ /dev/null @@ -1,34 +0,0 @@ -# ****************************************************************************** -# 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$ - -SubDir TOP board msb-430-common ; - -Module board : board_init.c uart1.c ; -Module board_config : board_config.c : flashrom ; -UseModule board ; - -SubInclude TOP cpu $(CPU) ; diff --git a/board/msb-430-common/Jamrules.msb-430-common b/board/msb-430-common/Jamrules.msb-430-common deleted file mode 100644 index 7eee8b088fa50a033ed0ac8368d4c33d762be0ab..0000000000000000000000000000000000000000 --- a/board/msb-430-common/Jamrules.msb-430-common +++ /dev/null @@ -1,38 +0,0 @@ -# ****************************************************************************** -# 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 = msp430x16x ; -MCU = msp430x1612 ; - -FLASH_PORT ?= "$(PORT)" ; -FLASHER ?= mspdebug ; -FLASHFLAGS ?= -d $(FLASH_PORT) -j uif ; - -RESET ?= $(FLASHER) $(FLASHFLAGS) reset ; - -HDRS += [ FPath $(TOP) board msb-430-common include ] ; -HDRS += [ FPath $(TOP) board msb-430-common drivers include ] ; diff --git a/board/msb-430-common/board_config.c b/board/msb-430-common/board_config.c deleted file mode 100644 index f22e513b20b8aa74d748a4d488168bc44165ff36..0000000000000000000000000000000000000000 --- a/board/msb-430-common/board_config.c +++ /dev/null @@ -1,19 +0,0 @@ -#include <stdint.h> -#include <string.h> -#include <board-conf.h> -#include <config.h> -#include <flashrom.h> - -void config_load(void) { - if (*((uint16_t*) INFOMEM) == CONFIG_KEY) { - memcpy(&sysconfig, (char*) (INFOMEM + sizeof(CONFIG_KEY)), sizeof(sysconfig)); - } - else { - config_save(); - } -} - -uint8_t config_save(void) { - configmem_t mem = { CONFIG_KEY, sysconfig }; - return (flashrom_erase((uint8_t*) INFOMEM) && flashrom_write((uint8_t*) INFOMEM, (char*) &mem, sizeof(mem))); -} diff --git a/board/msb-430-common/board_init.c b/board/msb-430-common/board_init.c deleted file mode 100644 index c9037cb521b663db642768a6d71b8038ce02d950..0000000000000000000000000000000000000000 --- a/board/msb-430-common/board_init.c +++ /dev/null @@ -1,208 +0,0 @@ -#include "cpu.h" -#include "board.h" -#include "kernel_intern.h" -#include "msp430.h" -#include "debug.h" -#include <msb430-uart1.h> - -volatile static uint32_t __msp430_cpu_speed = MSP430_INITIAL_CPU_SPEED; - -/*---------------------------------------------------------------------------*/ -static uint8_t calc_umctl(uint16_t br) { - // from TI slaa049 - register uint8_t CMOD = 256 * br - 256 * (br + 1) / 2; - register uint8_t c = 0; - register int i = 0; - register uint8_t a = CMOD; - a <<= 1; - do { - if( a & 0x80 ) { // Overflow to integer? - a = a - 128 + CMOD; // Yes, subtract 1.000000 - c |= 0x80; - } else { - a += CMOD; // No, add fraction - } - if( i == 7 ) - return c; - i++; - c >>= 1; - } while(1); -} - -static void msb_ports_init(void) -{ - // Port 1: Free port, for energy saving all outputs are set to zero. - P1SEL = 0x00; // Port1 Zweitfunktion - P1OUT = 0x00; // Port1 Ausgangsregister: 00000000 = 0x00 - P1DIR = 0xFF; // Port1 Direction: 11111111 = 0xFF - - P2SEL = 0x20; // Port2 Zweitfunktion - P2OUT = 0x00; // Port2 Ausgangsregister: 00000000 = 0x00 - P2DIR = 0x1C; // Port2 Direction: 00011010 = 0x1C - // 0 - P2.0 [IN ] - - // 0 - P2.1 [OUT] - - // 1 - P2.2 [IN ] - - // 1 - P2.3 [OUT] - - // 1 - P2.4 [OUT] - - // 0 - P2.5 [IN ] - - // 0 - P2.6 [IN ] - SD-KARTE Protect - // 0 - P2.7 [IN ] - SD-KARTE Detect - - P3SEL = 0xC0; // Port3 Zweitfunktion - P3OUT = 0x09; // Port3 Ausgangsregister: 00001001 = 0x09 - P3DIR = 0x2B; // Port3 Direction - // 1 - P3.0 - // 1 - P3.1 - // 0 - P3.2 - // 1 - P3.3 - // 0 - P3.4 [IN ] - SHT 11 DATA (OUT/IN) - // 1 - P3.5 [OUT] - SHT 11 CLK - // 0 - P3.6 [2-Funktion] - RS232_RxD - // 0 - P3.7 [2-Funktion] - RS232_TxD - - // Port 4: Free port, for energy saving all outputs are set to zero. - P4SEL = 0x00; // Port4 Zweitfunktion - P4OUT = 0x00; // Port4 Ausgangsregister: 00000000 = 0x00 - P4DIR = 0xFF; // Port4 Direction: 11111111 = 0xFF - // 1 - P4.0 [OUT] - unused - // 1 - P4.1 [OUT] - unused - // 1 - P4.2 [OUT] - unused - // 1 - P4.3 [OUT] - unused - // 1 - P4.4 [OUT] - unused - // 1 - P4.5 [OUT] - unused - // 1 - P4.6 [OUT] - unused - // 1 - P4.7 [OUT] - unused - - P5SEL = 0x00; // Port5 Zweitfunktion: 00000000 = 0x00 - P5OUT = 0x80; // Port5 Ausgangsregister: 00001001 = 0x09 - P5DIR = 0xFF; // Port5 Direction: 11111011 = 0xFB - // 1 - P5.0 [OUT] - SD-KARTE /CS - // 1 - P5.1 [OUT] - SD-KARTE DI - // 0 - P5.2 [IN ] - SD-KARTE DO - // 1 - P5.3 [OUT] - SD-KARTE DCLK - // 1 - P5.4 [OUT] - MMA GS1 - // 1 - P5.5 [OUT] - MMA GS2 - // 1 - P5.6 [OUT] - MMA /SLEEP - // 1 - P5.7 [OUT] - LED_ROT 0-an, 1-aus - - P6SEL = 0x00; // Port6 Zweitfunktion = 0x07 - P6OUT = 0x00; // Port6 Ausgangsregister: 00000000 = 0x00 - P6DIR = 0xFF; // Port6 Direction: 11111000 = 0xF8 - // 0 - P6.0 [AD-IN] - MMA X-Achse - // 0 - P6.1 [AD-IN] - MMA Y-Achse - // 0 - P6.2 [AD-IN] - MMA Z-Achse - // 1 - P6.3 [OUT] - unused - // 1 - P6.4 [OUT] - unused - // 1 - P6.5 [OUT] - unused - // 1 - P6.6 [OUT] - unused - // 1 - P6.7 [OUT] - unused -} - -void msp430_set_cpu_speed(uint32_t speed) -{ - dint(); - __msp430_cpu_speed = speed; - msp430_init_dco(); - uint16_t br; - UCTL1 = SWRST | CHAR; // 8-bit character - UTCTL1 |= SSEL1 | URXSE; // UCLK = MCLK - // activate - U1ME |= UTXE1 | URXE1; // Enable USART1 TXD/RXD - br = (uint16_t)(__msp430_cpu_speed / 115200uL); - UBR01 = br; // set baudrate - UBR11 = br>>8; - UMCTL1 = calc_umctl(br); // set modulation - - UCTL1 &= ~SWRST; - //clock_init(); - eint(); -} - -/*---------------------------------------------------------------------------*/ -void -msp430_init_dco() -{ - #if MSP430_HAS_EXTERNAL_CRYSTAL - /*------------------ use external oszillator -----------------------*/ - uint16_t i; - - // Stop watchdog - WDTCTL = WDTPW + WDTHOLD; - - //Init crystal for mclk - //XT2 = HF XTAL - BCSCTL1 = RSEL2; - - // Wait for xtal to stabilize - do { - IFG1 &= ~OFIFG; // Clear oscillator fault flag - for (i = 0xFF; i > 0; i--); // Time for flag to set - } - while ((IFG1 & OFIFG) != 0); // Oscillator fault flag still set? - BCSCTL2 = SELM_2 + SELS; // MCLK und SMCLK = XT2 (safe) - #else - /* Thdeltais code taken from the FU Berlin sources and reformatted. */ - int delta = __msp430_cpu_speed >> 12; - //#define DELTA 600 - - unsigned int compare, oldcapture = 0; - unsigned int i; - - - BCSCTL1 = 0xa4; /* ACLK is devided by 4. RSEL=6 no division for MCLK - and SSMCLK. XT2 is off. */ - - // Init FLL to desired frequency using the 32762Hz crystal - #if MSP430_HAS_DCOR - BCSCTL2 = 0x01; - #else - BCSCTL2 = 0x00; - #endif - - WDTCTL = WDTPW + WDTHOLD; /* Stop WDT */ - BCSCTL1 |= DIVA1 + DIVA0; /* ACLK = LFXT1CLK/8 */ - for(i = 0xffff; i > 0; i--); /* Delay for XTAL to settle */ - - CCTL2 = CCIS0 + CM0 + CAP; // Define CCR2, CAP, ACLK - TACTL = TASSEL1 + TACLR + MC1; // SMCLK, continous mode - - - while(1) { - - while((CCTL2 & CCIFG) != CCIFG); /* Wait until capture occured! */ - CCTL2 &= ~CCIFG; /* Capture occured, clear flag */ - compare = CCR2; /* Get current captured SMCLK */ - compare = compare - oldcapture; /* SMCLK difference */ - oldcapture = CCR2; /* Save current captured SMCLK */ - - if(delta == compare) { - break; /* if equal, leave "while(1)" */ - } else if(delta < compare) { /* DCO is too fast, slow it down */ - DCOCTL--; - if(DCOCTL == 0xFF) { /* Did DCO role under? */ - BCSCTL1--; - } - } else { /* -> Select next lower RSEL */ - DCOCTL++; - if(DCOCTL == 0x00) { /* Did DCO role over? */ - BCSCTL1++; - } - /* -> Select next higher RSEL */ - } - } - - CCTL2 = 0; /* Stop CCR2 function */ - TACTL = 0; /* Stop Timer_A */ - - BCSCTL1 &= ~(DIVA1 + DIVA0); /* remove /8 divisor from ACLK again */ - #endif -} - -void board_init() { - msp430_cpu_init(); - msb_ports_init(); - - LED_RED_ON; - - msp430_set_cpu_speed(7372800uL); -} diff --git a/board/msb-430-common/drivers/include/sht11-board.h b/board/msb-430-common/drivers/include/sht11-board.h deleted file mode 100644 index a4debd44739a4736a8d29dd56f2c434ed4b1ed2e..0000000000000000000000000000000000000000 --- a/board/msb-430-common/drivers/include/sht11-board.h +++ /dev/null @@ -1,61 +0,0 @@ -/****************************************************************************** -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 -*******************************************************************************/ - -#ifndef SHT11BOARD_H_ -#define SHT11BOARD_H_ - -/** - * @ingroup msb_430h - * @{ - */ - -/** - * @file - * @brief SHT11 Device Driver Configuration For MSB-430 Platform - * - * @author Freie Universität Berlin, Computer Systems & Telematics, µkleos - * @version $Revision$ - * - * @note $Id$ - */ -#include <msp430x16x.h> -#include <bitarithm.h> - -/* SCK = P3B5 - * DATA = P3B4 - */ - -#define SHT11_SCK_LOW P3OUT &= ~(BIT5); /**< serial clock line low */ -#define SHT11_SCK_HIGH P3OUT |= BIT5; /**< serial clock line high */ -#define SHT11_DATA (P3IN & BIT5) /**< read serial I/O */ -#define SHT11_DATA_LOW P3OUT &= ~(BIT5); /**< serial I/O line low */ -#define SHT11_DATA_HIGH P3OUT |= BIT5; /**< serial I/O line high */ -#define SHT11_DATA_IN P3DIR &= ~(BIT5); /**< serial I/O as input */ -#define SHT11_DATA_OUT P3DIR |= BIT5; /**< serial I/O as output */ -#define SHT11_INIT P3DIR |= BIT5; /* FIO1DIR |= BIT25; PINSEL3 &= ~(BIT14|BIT15 | BIT16|BIT17); */ - -/** @} */ -#endif /* SHT11BOARD_H_ */ diff --git a/board/msb-430-common/include/board-conf.h b/board/msb-430-common/include/board-conf.h deleted file mode 100644 index e85c3128f26d3d8f2911e54d2947ec66569904f9..0000000000000000000000000000000000000000 --- a/board/msb-430-common/include/board-conf.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef BOARD_CONF_H -#define BOARD_CONF_H - -#define INFOMEM (0x1000) - -#endif /* BOARD-CONF_H */ diff --git a/board/msb-430-common/putchar.c b/board/msb-430-common/putchar.c deleted file mode 100644 index 4193c0db42734d0bcfc6766d385fdd082ae7ce07..0000000000000000000000000000000000000000 --- a/board/msb-430-common/putchar.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdio.h> - -void (_putchar(int)) = uart1_putchar; - -void putchar(int c) { - _putchar(c); -} diff --git a/board/msb-430-common/uart1.c b/board/msb-430-common/uart1.c deleted file mode 100644 index 7abad1d4e3a8b65e6df443e1a50cb24873b50b49..0000000000000000000000000000000000000000 --- a/board/msb-430-common/uart1.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "board.h" - -#define UART1_TX TXBUF1 -#define UART1_WAIT_TXDONE() while( (UTCTL1 & TXEPT) == 0 ) { _NOP(); } - -#include <stdio.h> - -int putchar(int c) -{ - UART1_TX = c; - UART1_WAIT_TXDONE(); - - if (c == 10) { - UART1_TX = 13; - UART1_WAIT_TXDONE(); - } - - return c; -} - - diff --git a/board/msb-430/Jamfile b/board/msb-430/Jamfile deleted file mode 100644 index f2592c24cfe7b8c8064c880cce0c669d94fb351d..0000000000000000000000000000000000000000 --- a/board/msb-430/Jamfile +++ /dev/null @@ -1,32 +0,0 @@ -# ****************************************************************************** -# 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$ - -SubDir TOP board msb-430 ; - -SubInclude TOP board msb-430-common ; -SubInclude TOP cpu $(CPU) ; - diff --git a/board/msb-430/Jamrules.msb-430 b/board/msb-430/Jamrules.msb-430 deleted file mode 100644 index ae1d28b4443b324a6dba95e573140fd4e5c9f365..0000000000000000000000000000000000000000 --- a/board/msb-430/Jamrules.msb-430 +++ /dev/null @@ -1,3 +0,0 @@ -BOARD = msb-430 ; - -include $(TOP)/board/msb-430-common/Jamrules.msb-430-common ; diff --git a/board/msb-430/include/board.h b/board/msb-430/include/board.h deleted file mode 100644 index 56c24a54617f846b3308bcb4fb28fc2f69f4776b..0000000000000000000000000000000000000000 --- a/board/msb-430/include/board.h +++ /dev/null @@ -1,70 +0,0 @@ -/****************************************************************************** -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 -*******************************************************************************/ - -#ifndef _MSB_BOARD_H -#define _MSB_BOARD_H - -/** - * @defgroup msb_430h ScatterWeb MSB-430H - * @ingroup msp430 - * -<h2>Compontents</h2> -\li MSP430 -\li CC1100 - -* @{ -*/ - -/** - * @file - * @brief MSB-430H Board - * - * @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project - * @version $Revision$ - * - * @note $Id$ - */ - -//MSB430 core -#define MSP430_INITIAL_CPU_SPEED 2457600uL -#define MSP430_HAS_DCOR 1 -#define MSP430_HAS_EXTERNAL_CRYSTAL 0 - -/* LEDs ports MSB430 */ -#define LEDS_PxDIR P5DIR -#define LEDS_PxOUT P5OUT -#define LEDS_CONF_RED 0x80 -#define LEDS_CONF_GREEN 0x00 -#define LEDS_CONF_YELLOW 0x00 - -#define LED_RED_ON LEDS_PxOUT &=~LEDS_CONF_RED -#define LED_RED_OFF LEDS_PxOUT |= LEDS_CONF_RED -#define LED_RED_TOGGLE LEDS_PxOUT ^= LEDS_CONF_RED - -#include <msp430x16x.h> - -/** @} */ -#endif // _MSB_BOARD_H diff --git a/board/msb-430h/Jamfile b/board/msb-430h/Jamfile deleted file mode 100644 index 9f9ee47bf37f2f4fab6f07d1fdb6839dc76f203d..0000000000000000000000000000000000000000 --- a/board/msb-430h/Jamfile +++ /dev/null @@ -1,33 +0,0 @@ -# ****************************************************************************** -# 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$ - -SubDir TOP board msb-430h ; - -Module board_cc110x : driver_cc110x.c : cc110x_spi ; - -SubInclude TOP board msb-430-common ; -SubInclude TOP cpu $(CPU) ; diff --git a/board/msb-430h/Jamrules.msb-430h b/board/msb-430h/Jamrules.msb-430h deleted file mode 100644 index d1913ed5426532fc75cb3f19264f618a971b9104..0000000000000000000000000000000000000000 --- a/board/msb-430h/Jamrules.msb-430h +++ /dev/null @@ -1,3 +0,0 @@ -BOARD = msb-430h ; - -include $(TOP)/board/msb-430-common/Jamrules.msb-430-common ; diff --git a/board/msb-430h/driver_cc110x.c b/board/msb-430h/driver_cc110x.c deleted file mode 100644 index 9316e8bf564f22ab373af045aa295a972d730076..0000000000000000000000000000000000000000 --- a/board/msb-430h/driver_cc110x.c +++ /dev/null @@ -1,342 +0,0 @@ -/* Copyright (C) 2005, 2006, 2007, 2008 by Thomas Hillebrandt and Heiko Will - -This file is part of the Micro-mesh SensorWeb Firmware. - -Micro-Mesh 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, or (at your option) -any later version. - -Micro-Mesh 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 Micro-Mesh; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -#include <stdio.h> - -#include <board.h> -#include <cpu.h> -#include <irq.h> - -#include <cc110x_ng.h> -#include <cc110x-arch.h> - -#define CC1100_GDO0 (P2IN & 0x02) // read serial I/O (GDO0) -#define CC1100_GDO1 (P3IN & 0x04) // read serial I/O (GDO1) -#define CC1100_GDO2 (P2IN & 0x01) // read serial I/O (GDO2) - -#define CC1100_CS_LOW (P3OUT &= ~0x01) -#define CC1100_CS_HIGH (P3OUT |= 0x01) - -#define CC1100_GDO1_LOW_COUNT (2700) // loop count (timeout ~ 500 us) to wait -#define CC1100_GDO1_LOW_RETRY (100) // max. retries for GDO1 to go low - -volatile int abort_count; -volatile int retry_count = 0; - -void cc110x_gdo0_enable(void) -{ - P2IFG &= ~0x02; /* Clear IFG for GDO0 */ - P2IE |= 0x02; /* Enable interrupt for GDO0 */ -} - -void cc110x_gdo0_disable(void) -{ - P2IE &= ~0x02; /* Disable interrupt for GDO0 */ - P2IFG &= ~0x02; /* Clear IFG for GDO0 */ -} - -void cc110x_gdo2_enable(void) -{ - P2IFG &= ~0x01; /* Clear IFG for GDO2 */ - P2IE |= 0x01; /* Enable interrupt for GDO2 */ -} - -void cc110x_gdo2_disable(void) -{ - P2IE &= ~0x01; /* Disable interrupt for GDO2 */ - P2IFG &= ~0x01; /* Clear IFG for GDO2 */ -} - -void cc110x_before_send(void) -{ - // Disable GDO2 interrupt before sending packet - cc110x_gdo2_disable(); -} - -void cc110x_after_send(void) -{ - // Enable GDO2 interrupt after sending packet - cc110x_gdo2_enable(); -} - - -int cc110x_get_gdo0(void) { - return CC1100_GDO0; -} - -int cc110x_get_gdo1(void) { - return CC1100_GDO1; -} - -int cc110x_get_gdo2(void) { - return CC1100_GDO2; -} - -void cc110x_spi_cs(void) -{ - CC1100_CS_LOW; -} - -uint8_t cc110x_txrx(uint8_t data) -{ - /* Ensure TX Buf is empty */ - long c = 0; - IFG1 &= ~UTXIFG0; - IFG1 &= ~URXIFG0; - TXBUF0 = data; - while(!(IFG1 & UTXIFG0)) - { - if (c++ == 1000000) - puts("cc110x_txrx alarm()"); - } - /* Wait for Byte received */ - c = 0; - while(!(IFG1 & URXIFG0)) - { - if (c++ == 1000000) - puts("cc110x_txrx alarm()"); - } - return RXBUF0; -} - - -void cc110x_spi_select(void) -{ - // Switch to GDO mode - P3SEL &= ~0x04; - P3DIR &= ~0x04; - cs_low: - // CS to low - abort_count = 0; - CC1100_CS_LOW; - // Wait for SO to go low (voltage regulator - // has stabilized and the crystal is running) - loop: -// asm volatile ("nop"); - if (CC1100_GDO1) { - abort_count++; - if (abort_count > CC1100_GDO1_LOW_COUNT) { - retry_count++; - if (retry_count > CC1100_GDO1_LOW_RETRY) { - puts("[CC1100 SPI] fatal error\n"); - goto final; - } - CC1100_CS_HIGH; - goto cs_low; // try again - } - goto loop; - } - final: - /* Switch to SPI mode */ - P3SEL |= 0x04; -} - -void cc110x_spi_unselect(void) { - CC1100_CS_HIGH; -} - -void cc110x_init_interrupts(void) -{ - unsigned int state = disableIRQ(); /* Disable all interrupts */ - P2SEL = 0x00; /* must be <> 1 to use interrupts */ - P2IES |= 0x01; /* Enables external interrupt on low edge (for GDO2) */ - P2IE |= 0x01; /* Enable interrupt */ - P2IFG &= ~0x01; /* Clears the interrupt flag */ - P2IE &= ~0x02; /* Disable interrupt for GDO0 */ - P2IFG &= ~0x02; /* Clear IFG for GDO0 */ - restoreIRQ(state); /* Enable all interrupts */ -} - -void cc110x_spi_init(uint8_t clockrate) -{ - // Switch off async UART - while(!(UTCTL0 & TXEPT)); // Wait for empty UxTXBUF register - IE1 &= ~(URXIE0 + UTXIE0); // Disable USART0 receive&transmit interrupt - ME1 &= ~(UTXE0 + URXE0); - P3SEL |= 0x0E; // Set pin as SPI - - // Keep peripheral in reset state - UCTL0 = SWRST; - - // 8-bit SPI Master 3-pin mode, with SMCLK as clock source - // CKPL works also, but not CKPH+CKPL or none of them!! - UCTL0 |= CHAR + SYNC + MM; - UTCTL0 = CKPH + SSEL1 + SSEL0 + STC; - - // Ignore clockrate argument for now, just use clock source/2 - // SMCLK = 7,3728 MHz - UBR00 = 0x02; // Ensure baud rate >= 2 - UBR10 = 0x00; - UMCTL0 = 0x00; // No modulation - URCTL0 = 0x00; // Reset Receive Control Register - - // Enable SPI mode - ME1 |= USPIE0; - - // Release for operation - UCTL0 &= ~SWRST; -} - - -// #include <msp430x16x.h> -// #include <signal.h> -// #include "type.h" -// #include "cc110x_defines.h" -// #include "driver_cc110x.h" -// #include "driver_system.h" -// #include "spi0.h" -// -// static callback_t _paket_cb; -// static callback_t _cs_cb; -// -// //------------------------------------------------------------------------------------------------------- -// // Public CC1100 communication functions (SPI) -// //------------------------------------------------------------------------------------------------------- -// -// //------------------------------------------------------------------------------------------------------- -// // void spiInitTrx(void) -// // -// // DESCRIPTION: -// // This function puts the cc110x into spi mode. You have to call this bevore every spi transaction. -// // -// //------------------------------------------------------------------------------------------------------- -// -// -// void drivercc110x_spiwriteburstreg(uint8_t addr, unsigned char *buffer, uint8_t count) -// { -// uint8_t i; -// long c; -// drivercc110x_spiinittrx(); -// drivercc110x_trxspi(addr | CC1100_WRITE_BURST); -// for (i = 0; i < count; i++) -// { -// c = 0; -// IFG1 &= ~UTXIFG0; -// IFG1 &= ~URXIFG0; -// TXBUF0 = buffer[i]; -// /* Wait for TX to finish */ -// while(!(IFG1 & UTXIFG0)) -// { -// if (c++ == 1000000) -// alarm(); -// } -// } -// /* Wait for Byte received */ -// c = 0; -// while(!(IFG1 & URXIFG0)) -// { -// if (c++ == 1000000) -// alarm(); -// } -// CC1100_CS_HIGH; -// } -// -// void drivercc110x_spireadburstreg(uint8_t addr, char *buffer, uint8_t count) -// { -// uint8_t i; -// drivercc110x_spiinittrx(); -// drivercc110x_trxspi(addr | CC1100_READ_BURST); -// for (i = 0; i < count; i++) -// { -// long c = 0; -// IFG1 &= ~UTXIFG0; -// IFG1 &= ~URXIFG0; -// TXBUF0 = NOBYTE; -// while(!(IFG1 & UTXIFG0)) -// { -// if (c++ == 1000000) -// alarm(); -// } -// /* Wait for Byte received */ -// c = 0; -// while(!(IFG1 & URXIFG0)) -// { -// if (c++ == 1000000) -// alarm(); -// } -// buffer[i] = RXBUF0; -// } -// CC1100_CS_HIGH; -// } -// -// void drivercc110x_load(callback_t cs_cb,callback_t paket_cb) -// { -// _paket_cb = paket_cb; -// _cs_cb = cs_cb; -// spi0_init(0); -// } -// -// void drivercc110x_aftersend(void) -// { -// CLEAR(P2IFG, 0x01); -// SET(P2IE, 0x01); /* Enable interrupts on port 2 pin 0 */ -// CLEAR(P4OUT, 0x08); /* Turn off Sending Led*/ -// } -// -// void drivercc110x_initinterrupts(void) -// { -// _DINT(); /* Disable all interrupts */ -// P2SEL = 0x00; /* must be <> 1 to use interrupts */ -// SET(P2IES, 0x01); /* Enables external interrupt on low edge (for GDO2) */ -// SET(P2IE, 0x01); /* Enable interrupt */ -// CLEAR(P2IFG, 0x01); /* Clears the interrupt flag */ -// CLEAR(P2IE, 0x02); /* Disable interrupt for GDO0 */ -// CLEAR(P2IFG, 0x02); /* Clear IFG for GDO0 */ -// _EINT(); /* Enable all interrupts */ -// } -// -// void drivercc110x_beforesend(void) -// { -// /* Turn on Led while sending paket for debug reasons */ -// SET(P4OUT, 0x08); -// /* Disable interrupts on port 2 pin 0 */ -// CLEAR(P2IE, 0x01); -// } -// -// -// /* -// * Private functions -// */ -// -// - -/* - * CC1100 receive interrupt - */ -interrupt (PORT2_VECTOR) __attribute__ ((naked)) cc110x_isr(void){ - __enter_isr(); -puts("cc110x_isr()"); -// if (system_state.POWERDOWN) SPI_INIT; /* Initialize SPI after wakeup */ - /* Check IFG */ - if ((P2IFG & 0x01) != 0) { - P2IFG &= ~0x01; - cc110x_gdo2_irq(); - } - else if ((P2IFG & 0x02) != 0) { - cc110x_gdo0_irq(); - P2IE &= ~0x02; // Disable interrupt for GDO0 - P2IFG &= ~0x02; // Clear IFG for GDO0 - } else { - puts("cc110x_isr(): unexpected IFG!"); - /* Should not occur - only Port 2 Pin 0 interrupts are enabled */ -// CLEAR(P2IFG, 0xFF); /* Clear all flags */ - } -// if (system_state.POWERDOWN != 0) END_LPM3; - __exit_isr(); -} diff --git a/board/msb-430h/include/board.h b/board/msb-430h/include/board.h deleted file mode 100644 index d9634d6b4d465ec5762ec214f9500d8c2f18dd6c..0000000000000000000000000000000000000000 --- a/board/msb-430h/include/board.h +++ /dev/null @@ -1,70 +0,0 @@ -/****************************************************************************** -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 -*******************************************************************************/ - -#ifndef _MSB_BOARD_H -#define _MSB_BOARD_H - -/** - * @defgroup msb_430h ScatterWeb MSB-430H - * @ingroup msp430 - * -<h2>Compontents</h2> -\li MSP430 -\li CC1100 - -* @{ -*/ - -/** - * @file - * @brief MSB-430H Board - * - * @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project - * @version $Revision$ - * - * @note $Id$ - */ - -//MSB430 core -#define MSP430_INITIAL_CPU_SPEED 7372800uL -#define MSP430_HAS_DCOR 1 -#define MSP430_HAS_EXTERNAL_CRYSTAL 1 - -/* LEDs ports MSB430 */ -#define LEDS_PxDIR P5DIR -#define LEDS_PxOUT P5OUT -#define LEDS_CONF_RED 0x80 -#define LEDS_CONF_GREEN 0x00 -#define LEDS_CONF_YELLOW 0x00 - -#define LED_RED_ON LEDS_PxOUT &=~LEDS_CONF_RED -#define LED_RED_OFF LEDS_PxOUT |= LEDS_CONF_RED -#define LED_RED_TOGGLE LEDS_PxOUT ^= LEDS_CONF_RED - -#include <msp430x16x.h> - -/** @} */ -#endif // _MSB_BOARD_H diff --git a/board/msba2-common/Jamfile b/board/msba2-common/Jamfile deleted file mode 100644 index ff9a8ccd4ce251cbc13064d97036ecc47c0ebb61..0000000000000000000000000000000000000000 --- a/board/msba2-common/Jamfile +++ /dev/null @@ -1,7 +0,0 @@ -SubDir TOP board msba2-common ; - -Module board_common : board_common_init.c ; -Module board_config : board_config.c ; - -SubInclude TOP board msba2-common drivers ; - diff --git a/board/msba2-common/Jamfile.msba2 b/board/msba2-common/Jamfile.msba2 deleted file mode 100644 index e9e291c906e00d647fce3a728d2754405227f558..0000000000000000000000000000000000000000 --- a/board/msba2-common/Jamfile.msba2 +++ /dev/null @@ -1,30 +0,0 @@ -# ****************************************************************************** -# 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$ - -Module msba2_common : board_init.c ; - -include [ FPath $(TOP) cpu arm_common Jamfile.arm_common ] ; diff --git a/board/msba2-common/Jamrules.msba2 b/board/msba2-common/Jamrules.msba2 deleted file mode 100644 index 1bce8075c4459b589937e1274379e1e2eb6276b9..0000000000000000000000000000000000000000 --- a/board/msba2-common/Jamrules.msba2 +++ /dev/null @@ -1,34 +0,0 @@ -# ****************************************************************************** -# 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)" ; diff --git a/board/msba2-common/board_common_init.c b/board/msba2-common/board_common_init.c deleted file mode 100644 index 8d7c35962512919adbf237b54bc140df161e0aba..0000000000000000000000000000000000000000 --- a/board/msba2-common/board_common_init.c +++ /dev/null @@ -1,125 +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 -*******************************************************************************/ - -/** - * @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 - -/*---------------------------------------------------------------------------*/ -/** - * @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(); -} - diff --git a/board/msba2-common/board_config.c b/board/msba2-common/board_config.c deleted file mode 100644 index 496a07796173cd46f5f8d37adf42861c1b219149..0000000000000000000000000000000000000000 --- a/board/msba2-common/board_config.c +++ /dev/null @@ -1,21 +0,0 @@ -#include <stdint.h> -#include <string.h> -#include <config.h> -#include <flashrom.h> - -void config_load(void) { - extern char configmem[]; - /* cast it here for strict-aliasing */ - uint16_t* tmp = (uint16_t*) configmem; - if (*tmp == CONFIG_KEY) { - memcpy(&sysconfig, (configmem + sizeof(CONFIG_KEY)), sizeof(sysconfig)); - } - else { - config_save(); - } -} - -uint8_t config_save(void) { - configmem_t mem = { CONFIG_KEY, sysconfig }; - return (flashrom_erase((uint8_t*) &configmem) && flashrom_write((uint8_t*) &configmem, (char*) &mem, sizeof(mem))); -} diff --git a/board/msba2-common/drivers/Jamfile b/board/msba2-common/drivers/Jamfile deleted file mode 100644 index ed8e73498ac75e5b2080a79139c5d224b55fd2db..0000000000000000000000000000000000000000 --- a/board/msba2-common/drivers/Jamfile +++ /dev/null @@ -1,6 +0,0 @@ -SubDir TOP board msba2-common drivers ; - -Module board_cc110x : msba2-cc110x.c : cc110x_spi gpioint ; -Module board_ltc4150 : msba2-ltc4150.c : gpioint ; -Module board_uart : msba2-uart0.c : chardev_thread ringbuffer ; - diff --git a/board/msba2-common/drivers/include/sht11-board.h b/board/msba2-common/drivers/include/sht11-board.h deleted file mode 100644 index c35fb00788bde78fde1a15b5c1cd99255cdbda7b..0000000000000000000000000000000000000000 --- a/board/msba2-common/drivers/include/sht11-board.h +++ /dev/null @@ -1,58 +0,0 @@ -/****************************************************************************** -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 -*******************************************************************************/ - -#ifndef SHT11BOARD_H_ -#define SHT11BOARD_H_ - -/** - * @ingroup lpc2387 - * @{ - */ - -/** - * @file - * @brief LPC2387 SHT11 Device Driver - * - * @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project - * @version $Revision$ - * - * @note $Id$ - */ - -#include <lpc23xx.h> -#include <board.h> - -#define SHT11_SCK_LOW FIO1CLR = BIT25; // serial clock line low -#define SHT11_SCK_HIGH FIO1SET = BIT25; // serial clock line high -#define SHT11_DATA ((FIO1PIN & BIT26) != 0) // read serial I/O -#define SHT11_DATA_LOW (FIO1CLR = BIT26); // serial I/O line low -#define SHT11_DATA_HIGH (FIO1SET = BIT26); // serial I/O line high -#define SHT11_DATA_IN (FIO1DIR &= ~BIT26) // serial I/O as input -#define SHT11_DATA_OUT (FIO1DIR |= BIT26) // serial I/O as output -#define SHT11_INIT FIO1DIR |= BIT25; PINSEL3 &= ~(BIT14|BIT15 | BIT16|BIT17); - -/** @} */ -#endif /* SHT11BOARD_H_ */ diff --git a/board/msba2-common/drivers/include/uart0.h b/board/msba2-common/drivers/include/uart0.h deleted file mode 100644 index 0c580becc23d9c09da4ac9d830d7ce4e2298658e..0000000000000000000000000000000000000000 --- a/board/msba2-common/drivers/include/uart0.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef __UART0_H -#define __UART0_H - -#define UART0_BUFSIZE 32 - -extern int uart0_handler_pid; - -#endif /* __UART0_H */ diff --git a/board/msba2-common/drivers/msba2-cc110x.c b/board/msba2-common/drivers/msba2-cc110x.c deleted file mode 100644 index b0a58544464e0e5c0df2361d01bfbefd5b73d2c5..0000000000000000000000000000000000000000 --- a/board/msba2-common/drivers/msba2-cc110x.c +++ /dev/null @@ -1,244 +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 -*******************************************************************************/ - -/** - * @file - * @ingroup LPC2387 - * @brief CC1100 LPC2387 dependend functions - * - * @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project - * @author Heiko Will <hwill@inf.fu-berlin.de> - * @author Thomas Hillebrandt <hillebra@inf.fu-berlin.de> - * @version $Revision: 1781 $ - * - * @note $Id: msba2-cc110x.c 1781 2010-01-26 13:39:36Z hillebra $ - */ - -#include <stdio.h> -#include <stddef.h> -// core -#include <cpu.h> -#include <irq.h> -// sys -#include <cc110x_ng.h> -#include <cc110x-arch.h> -#include <cc110x_spi.h> -#include <gpioint.h> - -#define CC1100_GDO0 (FIO0PIN & BIT27) // read serial I/O (GDO0) -#define CC1100_GDO1 (FIO1PIN & BIT23) // read serial I/O (GDO1) -#define CC1100_GDO2 (FIO0PIN & BIT28) // read serial I/O (GDO2) - -#define SPI_TX_EMPTY (SSP0SR & SSPSR_TFE) -#define SPI_BUSY (SSP0SR & SSPSR_BSY) -#define SPI_RX_AVAIL (SSP0SR & SSPSR_RNE) - -#define CC1100_GDO1_LOW_RETRY (100) // max. retries for GDO1 to go low -#define CC1100_GDO1_LOW_COUNT (2700) // loop count (timeout ~ 500 us) to wait - // for GDO1 to go low when CS low - -//#define DEBUG -#ifdef DEBUG - -#include "stdio.h" - -static unsigned long time_value; - -static void set_time(void) { - time_value = 0; -} - -static int test_time(int code) { - time_value++; - if (time_value > 10000000) { - printf("CC1100 SPI alarm: %u!\n", code); - time_value = 0; - return 1; - } - return 0; -} -#endif - -int cc110x_get_gdo0(void) { - return CC1100_GDO0; -} - -int cc110x_get_gdo1(void) { - return CC1100_GDO1; -} - -int cc110x_get_gdo2(void) { - return CC1100_GDO2; -} - -void cc110x_spi_init(void) -{ - // configure chip-select - FIO1DIR |= BIT21; - FIO1SET = BIT21; - - // Power - PCONP |= PCSSP0; // Enable power for SSP0 (default is on) - - // PIN Setup - PINSEL3 |= BIT8 + BIT9; // Set CLK function to SPI - PINSEL3 |= BIT14 + BIT15; // Set MISO function to SPI - PINSEL3 |= BIT16 + BIT17; // Set MOSI function to SPI - - // Interface Setup - SSP0CR0 = 7; - - // Clock Setup - uint32_t pclksel; - uint32_t cpsr; - lpc2387_pclk_scale(F_CPU/1000, 6000, &pclksel, &cpsr); - PCLKSEL1 &= ~(BIT10|BIT11); // CCLK to PCLK divider - PCLKSEL1 |= pclksel << 10; - SSP0CPSR = cpsr; - - // Enable - SSP0CR1 |= BIT1; // SSP-Enable - int dummy; - // Clear RxFIFO: - while( SPI_RX_AVAIL ) { // while RNE (Receive FIFO Not Empty)... - dummy = SSP0DR; // read data - } - /* to suppress unused-but-set-variable */ - (void) dummy; -} - -uint8_t cc110x_txrx(uint8_t c) { - uint8_t result; - SSP0DR = c; -#ifdef DEBUG - set_time(); -#endif - while (!SPI_TX_EMPTY) { -#ifdef DEBUG - test_time(0); -#endif - } -#ifdef DEBUG - set_time(); -#endif - while (SPI_BUSY) { -#ifdef DEBUG - test_time(1); -#endif - } -#ifdef DEBUG - set_time(); -#endif - while (!SPI_RX_AVAIL) { -#ifdef DEBUG - test_time(2); -#endif - } - result = (uint8_t)SSP0DR; - return result; -} - -void cc110x_spi_cs(void) -{ - FIO1CLR = BIT21; -} - -void -cc110x_spi_select(void) -{ - volatile int retry_count = 0; - volatile int abort_count; - // Switch to GDO mode input - PINSEL3 &= ~(BIT14 + BIT15);// Set MISO function to GPIO - FIO1DIR &= ~BIT23; - cs_low: - // CS to low - abort_count = 0; - FIO1CLR = BIT21; - // Wait for SO to go low (voltage regulator - // has stabilized and the crystal is running) - loop: - asm volatile ("nop"); - if (CC1100_GDO1) { - abort_count++; - if (abort_count > CC1100_GDO1_LOW_COUNT) { - retry_count++; - if (retry_count > CC1100_GDO1_LOW_RETRY) { - puts("[CC1100 SPI] fatal error\n"); - goto final; - } - FIO1SET = BIT21; // CS to high - goto cs_low; // try again - } - goto loop; - } - final: - // Switch to SPI mode - PINSEL3 |= (BIT14 + BIT15); // Set MISO function to SPI -} - -void -cc110x_spi_unselect(void) -{ - FIO1SET = BIT21; -} - -void cc110x_before_send(void) -{ - // Disable GDO2 interrupt before sending packet - cc110x_gdo2_disable(); -} - -void cc110x_after_send(void) -{ - // Enable GDO2 interrupt after sending packet - cc110x_gdo2_enable(); -} - -void cc110x_gdo0_enable(void) { - gpioint_set(0, BIT27, GPIOINT_RISING_EDGE, &cc110x_gdo0_irq); -} - -void cc110x_gdo0_disable(void) { - gpioint_set(0, BIT27, GPIOINT_DISABLE, NULL); -} - -void cc110x_gdo2_disable(void) { - gpioint_set(0, BIT28, GPIOINT_DISABLE, NULL); -} - -void cc110x_gdo2_enable(void) { - gpioint_set(0, BIT28, GPIOINT_FALLING_EDGE, &cc110x_gdo2_irq); -} - -void cc110x_init_interrupts(void) -{ - // Enable external interrupt on low edge (for GDO2) - FIO0DIR &= ~BIT28; - cc110x_gdo2_enable(); - // Enable external interrupt on low edge (for GDO0) - FIO0DIR &= ~BIT27; -} diff --git a/board/msba2-common/drivers/msba2-ltc4150.c b/board/msba2-common/drivers/msba2-ltc4150.c deleted file mode 100644 index 4e6534c02230f74a1b3e08e91315c72c4734c2ee..0000000000000000000000000000000000000000 --- a/board/msba2-common/drivers/msba2-ltc4150.c +++ /dev/null @@ -1,65 +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 -*******************************************************************************/ - -/** - * @ingroup msba2 - * @ingroup ltc4150 - * @{ - */ - -/** - * @file - * @brief LTC4150 MSB-A2 specific implemetation - * - * @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project - * @author Heiko Will - * @author Michael Baar - * @author Kaspar Schleiser <kaspar.schleiser@fu-berlin.de> - */ - -#include <stdio.h> -#include "lpc2387.h" -#include "ltc4150_arch.h" -#include "gpioint.h" - -void __attribute__((__no_instrument_function__)) ltc4150_disable_int(void) { - gpioint_set(0, BIT4, GPIOINT_DISABLE, NULL); -} - -void __attribute__((__no_instrument_function__)) ltc4150_enable_int(void) { - gpioint_set(0, BIT4, GPIOINT_FALLING_EDGE, <c4150_interrupt); -} - -void __attribute__((__no_instrument_function__)) ltc4150_sync_blocking(void) { - while(!(FIO0PIN & BIT4)) {}; -} - -void __attribute__((__no_instrument_function__)) ltc4150_arch_init() { - FIO0DIR |= BIT5; - FIO0SET = BIT5; -} - -/** @} */ diff --git a/board/msba2-common/drivers/msba2-uart0.c b/board/msba2-common/drivers/msba2-uart0.c deleted file mode 100644 index ccfc6d8e04cb534c66fef83f5fa16612ab7c9b62..0000000000000000000000000000000000000000 --- a/board/msba2-common/drivers/msba2-uart0.c +++ /dev/null @@ -1,208 +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" -#include <kernel.h> - -#include <board_uart0.h> - -/** - * @file - * @ingroup lpc2387 - * - * @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project - * @version $Revision$ - * - * @note $Id$ - */ - -typedef struct toprint_t { - unsigned int len; - char content[]; -}toprint_t; - -#define QUEUESIZE 255 -static volatile toprint_t* 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_t* actual = NULL; - -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; - lpm_prevent_sleep |= LPM_PREVENT_SLEEP_UART; -start: - if (!actual) { - if (queue_items) { - dequeue(); - } else { - running = 0; - lpm_prevent_sleep &= ~LPM_PREVENT_SLEEP_UART; - 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); -} - -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 -#ifdef MODULE_UART0 - if (uart0_handler_pid) { - do { - int c = U0RBR; - uart0_handle_incoming(c); - } while (U0LSR & ULSR_RDR); - uart0_notify_thread(); - } -#endif - 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; // enable only RX irq - return 1; -} - diff --git a/board/msba2-common/include/msba2_common.h b/board/msba2-common/include/msba2_common.h deleted file mode 100644 index fff12f965d0e95c0d75af51a08d7dfd4ca31be30..0000000000000000000000000000000000000000 --- a/board/msba2-common/include/msba2_common.h +++ /dev/null @@ -1,51 +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 __MSBA2_COMMON_H -#define __MSBA2_COMMON_H - -/** - * @ingroup msb_a2 - * @{ - */ - -/** - * @file - * @brief MSB-A2 Common Board Definitions - * - * @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 - -/** @} */ -#endif // __MSBA2_COMMON_H diff --git a/board/msba2-common/lpc2387-timer3.c b/board/msba2-common/lpc2387-timer3.c deleted file mode 100644 index 8978390e9a9c7e4cdd30385684943b903fd475f0..0000000000000000000000000000000000000000 --- a/board/msba2-common/lpc2387-timer3.c +++ /dev/null @@ -1,37 +0,0 @@ -/* - * lpc2387_timer0.c - * - * Created on: 13.01.2009 - * Author: heiko - */ - -#include <stdint.h> -#include <stdio.h> -#include "lpc2387.h" -#include "benchmark.h" - -void benchmark_init(void) -{ - PCLKSEL1 = (PCLKSEL1 & ~(BIT14|BIT15)) | (1 << 14); // CCLK to PCLK divider - PCONP |= PCTIM3; - T3TCR = 0; // disable timer - T3MCR = 0; // disable interrupt - T3CCR = 0; // capture is disabled. - T3EMR = 0; // no external match output. - T3PR = 0; // set prescaler - T3TC = 0; // reset counter -} - -void benchmark_reset_start(void) -{ - T3TCR = 0; // disable timer - T3TC = 0; // reset counter - T3TCR = BIT0; -} - -unsigned int benchmark_read_stop(void) -{ - T3TCR = 0; // disable timer - return T3TC; -} - diff --git a/board/msba2-common/tools/CHANGES b/board/msba2-common/tools/CHANGES deleted file mode 100644 index dd9e6ec1eaa9f1d0143daf3c7df207124aa1931b..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/CHANGES +++ /dev/null @@ -1,23 +0,0 @@ -(heavily hacked by Heiko Will & Kaspar Schleiser since then) - -1.05 (9-Apr-2007) ------------------ -Added boot jump code specific to 2378 (and similar chips) to -disable the PLL before jumping to the user's code. - -1.04 (19-Dec-2006) ------------------- -Added 2364, 2366, 2368, 2378 & 2468 to list. Untested. - -1.03 (2-Jun-2006) ------------------ -Added 2103 chip to chip list. ID numbers for 2101 and 2102 unknown - -1.02 (31-Jul-2005) ------------------- -Added support for other chips -Added soft boot code -Added user configurable crystal value (for baud sync protocol) - - - diff --git a/board/msba2-common/tools/COPYING b/board/msba2-common/tools/COPYING deleted file mode 100644 index a43ea2126fb6b114bff5f8e003ee118e045dacf1..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) 19yy <name of author> - - 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 2 of the License, or - (at your option) any later version. - - This program 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, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/board/msba2-common/tools/Makefile b/board/msba2-common/tools/Makefile deleted file mode 100644 index 5d4d6b9222e357d7e4cf2cb6f8b04bbeeb771f06..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -CFLAGS = -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -CC = gcc - -all: lpc2k_pgm pseudoterm - -SRC = lpc2k_pgm.c download.c uuencode.c ihex.c serial.c chipinfo.c boot_2xxx.c boot_23xx.c control_2xxx.c -OBJS = ${addprefix obj/,${patsubst %.c,%.o,$(SRC)}} - -PSEUDOTERM_SRC = pseudoterm.c serial.c control_2xxx.c -PSEUDOTERM_OBJS = ${addprefix obj/,${patsubst %.c,%.o,$(PSEUDOTERM_SRC)}} - -TARGETDIR = bin - -lpc2k_pgm: $(OBJS) - mkdir -p $(TARGETDIR) - $(CC) -o $(TARGETDIR)/lpc2k_pgm $(OBJS) - -pseudoterm: $(PSEUDOTERM_OBJS) - mkdir -p $(TARGETDIR) - $(CC) -o $(TARGETDIR)/pseudoterm $(PSEUDOTERM_OBJS) -lpthread - -chipinfo.o: boot_2xxx.h boot_23xx.h - -static: $(OBJS) mkstaticlist - $(CC) -o $(TARGETDIR)/lpc2k_pgm $(OBJS) `./mkstaticlist` - -obj/%.o : src/%.c - $(CC) $(CFLAGS) -c $< -o $@ - -cksum_test: cksum_test.c uuencode.o cksum_test.o - $(CC) $(CFLAGS) -o $(TARGETDIR)/cksum_test obj/cksum_test.o obj/uuencode.o - -boot_2xxx.c boot_2xxx.h: boot_2xxx.armasm mkbootc - arm-elf-as -o boot_2xxx.armobj boot_2xxx.armasm - arm-elf-objdump -d boot_2xxx.armobj | ./mkbootc boot_2xxx - -boot_23xx.c boot_23xx.h: src/boot_23xx.armasm mkbootc - arm-elf-as -o obj/boot_23xx.armobj src/boot_23xx.armasm - arm-elf-objdump -d obj/boot_23xx.armobj | ./mkbootc boot_23xx - -clean: - rm -f bin/lpc2k_pgm cksum_test obj/*.o core core.* obj/*.armobj bin/pseudoterm - -obj/gui.o: src/gui.c - $(CC) $(CFLAGS) `gtk-config --cflags` -c src/gui.c -o obj/gui.o diff --git a/board/msba2-common/tools/README.txt b/board/msba2-common/tools/README.txt deleted file mode 100644 index 8fd6adb012b8ac424c295edecf5a8200c1c8f09f..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/README.txt +++ /dev/null @@ -1,144 +0,0 @@ -This utility downloads code to Philip LPC 2000 series chips, using the -bootloader communication protocol documented in the LPC2106/2105/2104 -User Manual, Sept 2003 revision, pages 177 to 192. This code has also -been tested with LPC2131 and LPC2138 chips (thanks to New Micros for -providing eval boards). It may work with other Philips ARM LPC parts. - - - -Usage: ------ - -When you start the program, it's small control window appears, and a -xterm terminal window is launched. The Xterm window allows you to -simply leave lpc2k_pgm running and interface with the LPC uart using -that window. Most people configure "printf" on in their code to print -to UART0, which will appear in this window. - -This program has 4 settings: - -Firmware: The intel-hex file with your LPC firmware to program. -Port: Which serial device to use. -Baud: The baud rate to communicate. -Crystal: The speed of the crystal on your LPC board. - -Once you have set up these values, simply press the "Program Now" -button to write your firmware to the LPC flash memory, and automatically -run it. If your firmware communicates on UART0, its messages will appear -in the xterm window, and anything you type in that window will be -transmitted to your board. - -The "Reboot" button may be used to reboot your code (assuming you have -connected DTR appropriately). The "Bootloader" button may be used to -stop your code by rebooting into the bootloader, rather than your program. - - - -Hardware Requirements: ---------------------- - -You must have a compatible Philips LPC chip with its UART0 interfaced -to a serial port on your PC. - -You must be able to reset the chip and cause it to enter bootloader mode. -Normally, this is done by connecting the (TTL level translated) DTR signal -to the LPC reset, so that when DTR is high (the TTL version is low), the -Philips chip is in reset mode. Alternately, a pushbutton may be used, -but you will need to manually press the button every time you want to get -back into bootloader mode (while this program attempts to sync baud rates), -rather than letting DTR do it automatically. A few minutes spent wiring -up your circuit so DTR can reset the board will save you much trouble as -you develop code. - -P0.14 must be connected low shortly after reset. Normally, this pin -is just shorted to ground using a jumper. Starting with version 1.02, -you can simply leave this shorted to ground. If your design needs to -use this pin, you may also build a simple circuit that forces this pin -to ground when RTS is high. - - - -Software Requirements: ---------------------- - -You must have a Linux-based system running X Windows. This code has -been tested with Linux kernel 2.4.20 and 2.6.8, and should work with -almost any linux system. - -You must have the "xterm" program installed. Nearly all linux -distrubtions provide this, and it is often installed by default. If -you do not have it, simply install from your linux distribution. - -Your serial port device file (usually /dev/ttyS0 or /dev/ttyS1) must -allow permission for you to use the serial port. - -GTK 1.2 is used for the GUI. Many newer systems only have GTK version -2 (or higher). If you have one of these systems, perhaps you can -install GTK 1.2 (including the development libraries) to allow you to -compile this code. Alternately, you may be able to use the semi-static -build, which includes a copy of this code built into the program. - - - -Building and Installation: -------------------------- - -This software is only provided semi-static binary and source code form. - -To use the semi-static binary, simply copy it to a location where you -can run it, and change the permissions if necessary: - - cp lpc2k_pgm /usr/local/bin - chmod 755 /usr/local/bin/lpc2k_pgm - -The semi-static binary has all of the GTK and X11 libraries statically -linked into it, for maximum compatibility with all linux distributions. -The only disadvantage is, of course, that this uses an extra 1.4 megs -of RAM, with (might) otherwise be shared with other programs. If you -simply want to run this program with minimal work, using the semi-static -binary may be the easiest way. - -If you compile from the source code, the result should be a small -binary that is optimal for your system. - -To build from source, you must have GTK+ 1.2 development libraries -and GCC properly installed. Nearly all linux distributions provide -these as packages, but you may need to install them before you can -compile the code. - -TODO: specific instructions for Debian stable -TODO: specific instructions for Debian testing/unstable -TODO: specific instructions for Fedora -TODO: specific instructions for Suse - -Simply type "make" to build the code. The resulting "lpc2k_pgm" -program can be run from any location. Simply copy to /usr/local/bin, -or where ever you like. - - - -Contact Info: ------------- - -Paul Stoffregen -paul@pjrc.com -http://www.pjrc.com/arm/lpc2k_pgm - -If you discover a bug, you want to request a new feature, or you have -a new Philips LPC chip which is not recognized, please attempt to -provide COMPLETE information in your message. - -If you have problems building from source, please contact me with ALL -of the following: - -1: Complete copy of all messages during the build. -2: Output of "gtk-config --version" -3: Output of "gtk-config --libs" -4: Output of "gtk-config --cflags" -5: Output of "uname -a" -6: Other info... which linux distribution, version, other software - -If you get "Command not found" when trying to run "gtk-config", this -is a sure sign that you do not have GTK+ 1.2 installed. - - diff --git a/board/msba2-common/tools/armtools.txt b/board/msba2-common/tools/armtools.txt deleted file mode 100644 index c91a4853f753bc115887817bc3e57fae63c0d3b2..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/armtools.txt +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains flash & terminal-utilities for use with -the msb_av2 platform used by the FeuerWhere-Project. - -Usage: -Running "./pseudoterm /dev/ttyUSB1" will start the terminal-emulator, -open the specified port and reset the connected msb_av2-board. -If it receives a SIGUSR2, the terminal closes the port an waits. -On reception of a SIGUSR1, it reopens the port and resets the ARM. - -"./lpc2k_pgm /dev/ttyUSB1 /path/to/firmware.ihex" will do what you -expect, but it will additionally run "killall -SIGUSR2 pseudoterm" before -anѕ "killall -SIGUSR1 pseudoterm" after flashing. - -Together, the tools enable you to have a terminal connected to the board -at all times, but let you flash whenever you feel like. diff --git a/board/msba2-common/tools/flash.cmd b/board/msba2-common/tools/flash.cmd deleted file mode 100755 index e957ca2b654438739ca6903b097ac6a0502449e0..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/flash.cmd +++ /dev/null @@ -1,2 +0,0 @@ -fm.exe "COM(%1, 230400) DEVICE(LPC2387, 16.000000) HARDWARE(BOOTEXEC, 50, 100) HIGHSPEED(0, 230400) ERASEUSED(%2, PROTECTISP) HEXFILE(%2, NOCHECKSUMS, NOFILL, PROTECTISP) RESET" -sleep 2 diff --git a/board/msba2-common/tools/flashutil.sh b/board/msba2-common/tools/flashutil.sh deleted file mode 100755 index c97d7c9a6322223137e3e687e546c55f5563f737..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/flashutil.sh +++ /dev/null @@ -1,113 +0,0 @@ -#/bin/bash - -linux_checkid() { - udevinfo -a -n ${1} | grep -q "ATTRS{product}==\"${2}\"" -} - -windows_flash_fm() { - echo "Checking FTDI device on COM${1}" - PORTINFO=`${BASEDIR}/../../../tools/windows/ftdiinfo/bin/Debug/ftdiinfo.exe /l COM${1}` - PORTCHECK=`echo ${PORTINFO} | awk '{ print $1 }'` - BOARDCHECK=`echo ${PORTINFO} | awk '{ print $3 }'` - SERIAL=`echo ${PORTINFO} | awk '{ print $2 }'` - if [ "${PORTCHECK}" != "COM${1}" ]; then - echo " port mismatch / ftdiinfo failed" - exit 1 - fi - if [ "${BOARDCHECK}" != "\"${FTDI_ID}\"" ]; then - echo " target mismatch: target board is \"${FTDI_ID}\", connected is ${BOARDCHECK}" - exit 1 - fi - - echo "Flashing ${HEXFILE} to COM${1} (${BOARDCHECK} serial ${SERIAL})" - # Using FlashMagic on Windows (in separate window) - cmd /C start "FlashMagic ${HEXFILE} to ${BOARDCHECK} on COM${1}" fm.exe "COM(${1}, 230400) DEVICE(LPC2387, 16.000000) HARDWARE(BOOTEXEC, 50, 100) HIGHSPEED(0, 230400) ERASEUSED(${HEXFILE}, PROTECTISP) HEXFILE(${HEXFILE}, NOCHECKSUMS, NOFILL, PROTECTISP) RESET" -} - -windows_flash_openocd() { - echo "Flashing ${HEXFILE} through JTAG" - # Using OpenOcd on Windows - #cmd /C start "OpenOCD ${HEXFILE} to ${BOARDCHECK}" - bash -x ${OPENOCD} ${OPENOCD_IF} "mt_flash ${HEXFILE}; reset run; shutdown" -} - -TEMP=`getopt -a -o b:i:p:f:: --long basedir:,id:,ports:,file:,openocd:,openocd-if:,xxx:: \ - -n 'flashutil.sh' -- "$@"` - -if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi - -# Note the quotes around `$TEMP': they are essential! -eval set -- "$TEMP" - -while true ; do - echo $1: $2 - case "$1" in - -b|--basedir) BASEDIR=$2 ; shift 2 ;; - -i|--id) FTDI_ID=$2; shift 2 ;; - -p|--ports) PORTS=`echo $2 | sed -e 's:,: :g'`; shift 2 ;; - --openocd) OPENOCD=$2; shift 2 ;; - --openocd-if) OPENOCD_IF=$2; shift 2 ;; - - --) HEXFILE=$2 ; shift ; break ;; - *) echo "Internal error!" ; exit 1 ;; - esac -done - -if [ "${OS}" = "Windows_NT" ]; then - WINDOWS=1 -fi - -FLASHUTIL_SHELL=${FLASHUTIL_SHELL:-"xterm -e"} - -if [ "x${WINDOWS}x" = "xx" ]; then - echo Pausing terminal - ${BASEDIR}/termctrl.sh pause -else - HEXFILE=`echo ${HEXFILE} | sed -e 's:/:\\\\:g'` - BASEDIRWIN=`echo ${BASEDIR} | sed -e 's:/:\\\\:g'` -fi - -pids="" - -# -# for OpenOCD let the user verify, that the correct board is connected -# -if [ ${PORTS} = "openocd" ]; then - [ "$OPENOCD" != "" ] || exit 1 - [ "$OPENOCD_IF" != "" ] || exit 1 -# echo -n "Is the board connected to the JTAG a '${FTDI_ID}' (y/n)? " -# read REPLY -# [ "$REPLY" = "y" ] || exit 1 -fi -# -# start a flasher for each port -# -for PORT in $PORTS; do - if [ "x${WINDOWS}x" != "xx" ]; then - if [ "${PORT}" = "openocd" ]; then - windows_flash_openocd - else - windows_flash_fm ${PORT} - fi - else - if [ "${PORT}" = "openocd" ]; then - ${OPENOCD} ${OPENOCD_IF} "mt_flash ${HEXFILE}; reset run; shutdown" - else - echo Flashing ${HEXFILE} to ${PORT} - # using homemade lpc2k_pgm else - ${FLASHUTIL_SHELL} "${BASEDIR}/bin/lpc2k_pgm ${PORT} ${HEXFILE}; sleep 2" & - pids="${pids} $!" - fi - fi -done - -### wait for all flasher processes to finish -echo Waiting until all devices have been programmed... -for pid in "${pids}"; do - wait ${pid} -done - -if [ "x${WINDOWS}x" = "xx" ]; then - echo Resuming terminal - ${BASEDIR}/termctrl.sh continue -fi diff --git a/board/msba2-common/tools/mkbootc b/board/msba2-common/tools/mkbootc deleted file mode 100644 index 4c0d9554dcd7432137a8ac14535b7eb5ac4ecec8..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/mkbootc +++ /dev/null @@ -1,28 +0,0 @@ -#! /usr/bin/perl - -$h = '[0-9A-Fa-f]'; -$n = 1; -while (<stdin>) { - next unless /^\s*$h+:\s+($h{8})/; - $data[$n++] = "0x$1"; -} -$data[0] = $n; -#$size = $ARGV[0]; -#$size =~ tr/a-z/A-Z/; -#$size .= '_SIZE'; - -open H, ">$ARGV[0].h" or die "unable to write boot.h\n"; -print H "/* automatically generated from $ARGV[0].armasm */\n"; -#print H "#define $size $n\n"; -print H "extern const unsigned int ${ARGV[0]}[];\n"; -close H; - -open C, ">$ARGV[0].c" or die "unable to write boot.c\n"; -print C "/* automatically generated from $ARGV[0].armasm */\n"; -print C "#include \"$ARGV[0].h\"\n"; -print C "const unsigned int ${ARGV[0]}[] = {\n"; -print C "\t", join(', ', @data), "\n"; -print C "};\n"; -close C; - - diff --git a/board/msba2-common/tools/mkstaticlist b/board/msba2-common/tools/mkstaticlist deleted file mode 100644 index 4ad31030ca512d89bce250f5fe29d162c0207e90..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/mkstaticlist +++ /dev/null @@ -1,47 +0,0 @@ -#! /usr/bin/perl - -@arg = split(/\s+/, `gtk-config --libs`); - -%liblist = ( - 'libgtk.a', '/usr/lib/libgtk.a', - 'libgdk.a', '/usr/lib/libgdk.a', - 'libgmodule.a', '/usr/lib/libgmodule.a', - 'libglib.a', '/usr/lib/libglib.a', - 'libXi.a', '/usr/X11R6/lib/libXi.a', - 'libXext.a', '/usr/X11R6/lib/libXext.a', - 'libX11.a', '/usr/X11R6/lib/libX11.a' -); - - -for ($i=0; $i<@arg; $i++) { - $a = $arg[$i]; - next if $a eq '-rdynamic'; # always delete -rdynamic - if (($a eq '-lm') || ($a eq '-ldl') || ($a =~ /^-L/)) { - # a few things we never change - print "$a "; - next; - } - if ($a =~ /^-l/) { - $lib = $'; - $lib = 'lib' . $lib . '.a'; - # first check if it's in the known location - if (-f $liblist{$lib}) { - print $liblist{$lib}, " "; - next; - } - # resort to trying whereis to find it - @source = split(/\s+/, `whereis $lib`); - undef($static); - for ($j=0; $j<@source; $j++) { - $static = $source[$j] if $source[$j] =~ /$lib$/; - } - # if we found a static lib, use it. - if ($static) { - print $static, " "; - } else { - print $a, " "; - } - } -} -print "\n"; - diff --git a/board/msba2-common/tools/obj/boot_23xx.d b/board/msba2-common/tools/obj/boot_23xx.d deleted file mode 100644 index e45338d65153e3ecd27597cd6542c67892c1f20d..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/obj/boot_23xx.d +++ /dev/null @@ -1,3 +0,0 @@ -obj/boot_23xx.d: src/boot_23xx.c src/boot_23xx.h - -src/boot_23xx.h: diff --git a/board/msba2-common/tools/obj/boot_2xxx.d b/board/msba2-common/tools/obj/boot_2xxx.d deleted file mode 100644 index e0e9fb40daa6b77ad8f6c2edceaf4021f75c215c..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/obj/boot_2xxx.d +++ /dev/null @@ -1,3 +0,0 @@ -obj/boot_2xxx.d: src/boot_2xxx.c src/boot_2xxx.h - -src/boot_2xxx.h: diff --git a/board/msba2-common/tools/obj/chipinfo.d b/board/msba2-common/tools/obj/chipinfo.d deleted file mode 100644 index b695e68c42cb59fc53d0b13b869d502e02d3c61c..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/obj/chipinfo.d +++ /dev/null @@ -1,8 +0,0 @@ -obj/chipinfo.d: src/chipinfo.c src/chipinfo.h src/boot_2xxx.h \ - src/boot_23xx.h - -src/chipinfo.h: - -src/boot_2xxx.h: - -src/boot_23xx.h: diff --git a/board/msba2-common/tools/obj/control_2xxx.d b/board/msba2-common/tools/obj/control_2xxx.d deleted file mode 100644 index e9ed3f7b1b4b5d054c5ea2d80ff4aa51524fbeda..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/obj/control_2xxx.d +++ /dev/null @@ -1,5 +0,0 @@ -obj/control_2xxx.d: src/control_2xxx.c src/control_2xxx.h src/serial.h - -src/control_2xxx.h: - -src/serial.h: diff --git a/board/msba2-common/tools/obj/download.d b/board/msba2-common/tools/obj/download.d deleted file mode 100644 index 94c10a80c529331fc0a35967d2fcc120455409ce..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/obj/download.d +++ /dev/null @@ -1,19 +0,0 @@ -obj/download.d: src/download.c src/lpc2k_pgm.h src/download.h \ - src/serial.h src/ihex.h src/uuencode.h src/chipinfo.h src/boot.h \ - src/control_2xxx.h - -src/lpc2k_pgm.h: - -src/download.h: - -src/serial.h: - -src/ihex.h: - -src/uuencode.h: - -src/chipinfo.h: - -src/boot.h: - -src/control_2xxx.h: diff --git a/board/msba2-common/tools/obj/ihex.d b/board/msba2-common/tools/obj/ihex.d deleted file mode 100644 index 89b506056afdb04e30550417a430123f3c29f242..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/obj/ihex.d +++ /dev/null @@ -1,3 +0,0 @@ -obj/ihex.d: src/ihex.c src/ihex.h - -src/ihex.h: diff --git a/board/msba2-common/tools/obj/lpc2k_pgm.d b/board/msba2-common/tools/obj/lpc2k_pgm.d deleted file mode 100644 index 98c82eb3289a938a95f3048440da70f9243513b1..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/obj/lpc2k_pgm.d +++ /dev/null @@ -1,8 +0,0 @@ -obj/lpc2k_pgm.d: src/lpc2k_pgm.c src/lpc2k_pgm.h src/serial.h \ - src/download.h - -src/lpc2k_pgm.h: - -src/serial.h: - -src/download.h: diff --git a/board/msba2-common/tools/obj/pseudoterm.d b/board/msba2-common/tools/obj/pseudoterm.d deleted file mode 100644 index 858fa2cba7843132f6ad70eb183404b11fc7e27e..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/obj/pseudoterm.d +++ /dev/null @@ -1,5 +0,0 @@ -obj/pseudoterm.d: src/pseudoterm.c src/serial.h src/download.h - -src/serial.h: - -src/download.h: diff --git a/board/msba2-common/tools/obj/serial.d b/board/msba2-common/tools/obj/serial.d deleted file mode 100644 index ebabf01ecfb88fdf130d46a2803e5a06c7c11957..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/obj/serial.d +++ /dev/null @@ -1,3 +0,0 @@ -obj/serial.d: src/serial.c src/serial.h - -src/serial.h: diff --git a/board/msba2-common/tools/obj/uuencode.d b/board/msba2-common/tools/obj/uuencode.d deleted file mode 100644 index 548a00f642204f08ba47be798af4e35dcde63c14..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/obj/uuencode.d +++ /dev/null @@ -1,3 +0,0 @@ -obj/uuencode.d: src/uuencode.c src/uuencode.h - -src/uuencode.h: diff --git a/board/msba2-common/tools/src/Jamfile b/board/msba2-common/tools/src/Jamfile deleted file mode 100644 index 43ead81f93abe27b9b98848afa009a85737cbc8c..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/Jamfile +++ /dev/null @@ -1,9 +0,0 @@ -Library liblpc2k : download.c uuencode.c ihex.c serial.c chipinfo.c boot_2xxx.c boot_23xx.c control_2xxx.c ; - -LinkLibraries lpc2k_pgm : liblpc2k ; - -LinkLibraries pseudoterm : liblpc2k ; -LINKFLAGS on pseudoterm = -lrt ; - -Main lpc2k_pgm : lpc2k_pgm.c ; -Main pseudoterm : pseudoterm.c ; diff --git a/board/msba2-common/tools/src/boot.h b/board/msba2-common/tools/src/boot.h deleted file mode 100644 index 1560f1038044a0b3afd8be4efac0688c5fa969b0..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/boot.h +++ /dev/null @@ -1,9 +0,0 @@ - -typedef struct { - int size; - const int *prog; -} boot_t; - - - - diff --git a/board/msba2-common/tools/src/boot_23xx.armasm b/board/msba2-common/tools/src/boot_23xx.armasm deleted file mode 100644 index 50e29957ff41a27b43daf1273cce9e61fc009bb9..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/boot_23xx.armasm +++ /dev/null @@ -1,32 +0,0 @@ - /* ARM code to run user code */ - /* on the LPC23xx chips, the bootloader defaults to using the RC */ - /* osciallator and it activates the PLL to create 14.78 MHz, even */ - /* if there is no crystal. However, when we use try to jump to */ - /* the user's code, their startup routine may (incorrectly) assume */ - /* the PLL is not enabled and crash if it is. So in addition to */ - /* remapping the reset vector to flash, we have to shut off the */ - /* PLL so the user's startup code sees the same conditions as it */ - /* would following a hard reset */ -begin: - adr r0, const - ldr r1, [r0] /* r1 points to MEMMAP register */ - ldr r2, [r0,#4] /* r2 points to PLLCON */ - ldr r3, [r0,#8] /* r3 points to PLLFEED */ - mov r0, #1 - str r0, [r1] /* remap interrupt vectors to flash */ - mov r4, #0xAA - mov r5, #0x55 - str r0, [r2] /* disconnect the PLL, PLLCON = 1 */ - str r4, [r3] - str r5, [r3] - mov r0, #0 - str r0, [r2] /* disable the PLL, PLLCON = 0 */ - str r4, [r3] - str r5, [r3] - mov pc, #0 /* and then jump to the user's code */ -const: - .int 0xE01FC040 /* MEMMAP register */ - .int 0xE01FC080 /* PLLCON */ - .int 0xE01FC08C /* PLLFEED */ - - diff --git a/board/msba2-common/tools/src/boot_23xx.c b/board/msba2-common/tools/src/boot_23xx.c deleted file mode 100644 index 9901171cc0bda49cbd51a0f5d05eb9044940e3c3..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/boot_23xx.c +++ /dev/null @@ -1,5 +0,0 @@ -/* automatically generated from boot_23xx.armasm */ -#include "boot_23xx.h" -const unsigned int boot_23xx[] = { - 20, 0xe28f0038, 0xe5901000, 0xe5902004, 0xe5903008, 0xe3a00001, 0xe5810000, 0xe3a040aa, 0xe3a05055, 0xe5820000, 0xe5834000, 0xe5835000, 0xe3a00000, 0xe5820000, 0xe5834000, 0xe5835000, 0xe3a0f000, 0xe01fc040, 0xe01fc080, 0xe01fc08c -}; diff --git a/board/msba2-common/tools/src/boot_23xx.h b/board/msba2-common/tools/src/boot_23xx.h deleted file mode 100644 index 0696a2931223ddbce61cb8f59a01d454b3652eaa..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/boot_23xx.h +++ /dev/null @@ -1,2 +0,0 @@ -/* automatically generated from boot_23xx.armasm */ -extern const unsigned int boot_23xx[]; diff --git a/board/msba2-common/tools/src/boot_2xxx.armasm b/board/msba2-common/tools/src/boot_2xxx.armasm deleted file mode 100644 index 38e171520acd6bd40619fa4e790a5ee8758fd3a6..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/boot_2xxx.armasm +++ /dev/null @@ -1,15 +0,0 @@ - /* ARM code to run user code */ - /* This allows us to jump to the user's code in flash. We have */ - /* to remap the flash before jumping. */ -begin: - adr r0, const - ldr r1, [r0] /* r1 points to MEMMAP register */ - mov r0, #1 - str r0, [r1] /* remap interrupt vectors to flash */ - mov pc, #0 /* and then jump to the user's code */ -const: - .int 0xE01FC040 /* MEMMAP register */ - - - - diff --git a/board/msba2-common/tools/src/boot_2xxx.c b/board/msba2-common/tools/src/boot_2xxx.c deleted file mode 100644 index 4d9b367ebe5fdbcbe0c4b76d4471db8214639313..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/boot_2xxx.c +++ /dev/null @@ -1,5 +0,0 @@ -/* automatically generated from boot_2xxx.armasm */ -#include "boot_2xxx.h" -const unsigned int boot_2xxx[] = { - 7, 0xe28f000c, 0xe5901000, 0xe3a00001, 0xe5810000, 0xe3a0f000, 0xe01fc040 -}; diff --git a/board/msba2-common/tools/src/boot_2xxx.h b/board/msba2-common/tools/src/boot_2xxx.h deleted file mode 100644 index 333188def24e98fd38565ba64b59c176caae802a..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/boot_2xxx.h +++ /dev/null @@ -1,2 +0,0 @@ -/* automatically generated from boot_2xxx.armasm */ -extern const unsigned int boot_2xxx[]; diff --git a/board/msba2-common/tools/src/chipinfo.c b/board/msba2-common/tools/src/chipinfo.c deleted file mode 100644 index 4f3f1a9d7e5b4631a320c6c5c07c99588c016630..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/chipinfo.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * LPC 2000 Loader, http://www.pjrc.com/arm/lpc2k_pgm - * Copyright (c) 2004, PJRC.COM, LLC, <paul@pjrc.com> - * - * 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 2 - * of the License. - * - * This program 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, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -#include <stdio.h> -#include "chipinfo.h" -#include "boot_2xxx.h" -#include "boot_23xx.h" - - -struct sector_info_struct lpc2106_layout[] = { - {0x00000000, 0x2000}, - {0x00002000, 0x2000}, - {0x00004000, 0x2000}, - {0x00006000, 0x2000}, - {0x00008000, 0x2000}, - {0x0000A000, 0x2000}, - {0x0000C000, 0x2000}, - {0x0000E000, 0x2000}, - {0x00010000, 0x2000}, - {0x00012000, 0x2000}, - {0x00014000, 0x2000}, - {0x00016000, 0x2000}, - {0x00018000, 0x2000}, - {0x0001A000, 0x2000}, - {0x0001C000, 0x2000} -}; - -struct sector_info_struct lpc2214_layout[] = { - {0x00000000, 0x2000}, - {0x00002000, 0x2000}, - {0x00004000, 0x2000}, - {0x00006000, 0x2000}, - {0x00008000, 0x2000}, - {0x0000A000, 0x2000}, - {0x0000C000, 0x2000}, - {0x0000E000, 0x2000}, - {0x00010000, 0x10000}, - {0x00020000, 0x10000}, - {0x00030000, 0x2000}, - {0x00032000, 0x2000}, - {0x00034000, 0x2000}, - {0x00036000, 0x2000}, - {0x00038000, 0x2000}, - {0x0003A000, 0x2000}, - {0x0003C000, 0x2000} -}; - -struct sector_info_struct lpc2138_layout[] = { - {0x00000000, 0x1000}, - {0x00001000, 0x1000}, - {0x00002000, 0x1000}, - {0x00003000, 0x1000}, - {0x00004000, 0x1000}, - {0x00005000, 0x1000}, - {0x00006000, 0x1000}, - {0x00007000, 0x1000}, - {0x00008000, 0x8000}, - {0x00010000, 0x8000}, - {0x00018000, 0x8000}, - {0x00020000, 0x8000}, - {0x00028000, 0x8000}, - {0x00030000, 0x8000}, - {0x00038000, 0x8000}, - {0x00040000, 0x8000}, - {0x00048000, 0x8000}, - {0x00050000, 0x8000}, - {0x00058000, 0x8000}, - {0x00060000, 0x8000}, - {0x00068000, 0x8000}, - {0x00070000, 0x8000}, - {0x00078000, 0x1000}, - {0x00079000, 0x1000}, - {0x0007A000, 0x1000}, - {0x0007B000, 0x1000}, - {0x0007C000, 0x1000} -}; - - - -// chunk_size is the number of bytes that will be sent with each -// "C" (Copy RAM to Flash) command. This must be one of the sizes -// supported by that command. Beware that different chips support -// different sets of sizes, so check the user manual specific to -// the chip. You must choose a chunk_size which is an an integer -// multiple of all the sector sizes, and it must be able to fit -// entirely within the RAM (allowing for the bootloader memory and -// stack usage). Currently, all available chunk sizes meet these -// requirements, but who knows what Philips will do in the future? -// -// ram_addr is the location in RAM where the chunks are sent by the -// "W" (Write to RAM) command. - - -struct chip_info_struct chip_info[] = { -// chunk num -//part_number id_string ram_addr _size sec sector layout boot code -{"LPC2104 (120k)", "4293984018", 0x40000200, 0x2000, 15, lpc2106_layout, boot_2xxx}, -{"LPC2105 (120k)", "4293984034", 0x40000200, 0x2000, 15, lpc2106_layout, boot_2xxx}, -{"LPC2106 (120k)", "4293984050", 0x40000200, 0x2000, 15, lpc2106_layout, boot_2xxx}, -{"LPC2114 (120k)", "16908050", 0x40000200, 0x2000, 15, lpc2106_layout, boot_2xxx}, -{"LPC2119 (120k)", "33685266", 0x40000200, 0x2000, 15, lpc2106_layout, boot_2xxx}, -{"LPC2124 (120k)", "16908051", 0x40000200, 0x2000, 15, lpc2106_layout, boot_2xxx}, -{"LPC2129 (248k)", "33685267", 0x40000200, 0x2000, 17, lpc2214_layout, boot_2xxx}, -{"LPC2131 (32k)", "196353", 0x40000200, 0x1000, 8, lpc2138_layout, boot_2xxx}, -{"LPC2132 (64k)", "196369", 0x40000200, 0x1000, 9, lpc2138_layout, boot_2xxx}, -{"LPC2134 (128k)", "196370", 0x40000200, 0x1000, 11, lpc2138_layout, boot_2xxx}, -{"LPC2136 (256k)", "196387", 0x40000200, 0x1000, 15, lpc2138_layout, boot_2xxx}, -{"LPC2138 (500k)", "196389", 0x40000200, 0x1000, 27, lpc2138_layout, boot_2xxx}, -{"LPC2141 (32k)", "67305217", 0x40000200, 0x1000, 8, lpc2138_layout, boot_2xxx}, -{"LPC2142 (64k)", "67305233", 0x40000200, 0x1000, 9, lpc2138_layout, boot_2xxx}, -{"LPC2144 (128k)", "67305234", 0x40000200, 0x1000, 11, lpc2138_layout, boot_2xxx}, -{"LPC2146 (256k)", "67305251", 0x40000200, 0x1000, 15, lpc2138_layout, boot_2xxx}, -{"LPC2148 (500k)", "67305253", 0x40000200, 0x1000, 27, lpc2138_layout, boot_2xxx}, -{"LPC2194 (248k)", "50462483", 0x40000200, 0x2000, 17, lpc2214_layout, boot_2xxx}, -{"LPC2212 (248k)", "67239698", 0x40000200, 0x2000, 17, lpc2214_layout, boot_2xxx}, -{"LPC2214 (248k)", "100794131", 0x40000200, 0x2000, 17, lpc2214_layout, boot_2xxx}, -{"LPC2292 (248k)", "67239699", 0x40000200, 0x2000, 17, lpc2214_layout, boot_2xxx}, -{"LPC2294 (248k)", "84016915", 0x40000200, 0x2000, 17, lpc2214_layout, boot_2xxx}, -//{"LPC2101 (8k)", "??????", 0x40000200, 0x1000, 2, lpc2138_layout, boot_2xxx}, -//{"LPC2102 (16k)", "??????", 0x40000200, 0x1000, 4, lpc2138_layout, boot_2xxx}, -{"LPC2103 (32k)", "327441", 0x40000200, 0x1000, 8, lpc2138_layout, boot_2xxx}, -{"LPC2364 (128k)", "100924162", 0x40000200, 0x1000, 11, lpc2138_layout, boot_23xx}, -{"LPC2366 (256k)", "100924195", 0x40000200, 0x1000, 15, lpc2138_layout, boot_23xx}, -{"LPC2368 (500k)", "100924197", 0x40000200, 0x1000, 27, lpc2138_layout, boot_23xx}, -{"LPC2378 (500k)", "117702437", 0x40000200, 0x1000, 27, lpc2138_layout, boot_23xx}, -{"LPC2387 (500k)", "402716981", 0x40000200, 0x1000, 27, lpc2138_layout, boot_23xx}, -{"LPC2387 (500k)", "385941301", 0x40000200, 0x1000, 27, lpc2138_layout, boot_23xx}, -{"LPC2468 (500k)", "100925237", 0x40000200, 0x1000, 27, lpc2138_layout, boot_23xx}, -{NULL, NULL, 0, 0, 0, NULL} -}; - - - -char *lpc_return_strings[] = { - "CMD_SUCCESS", "INVALID_COMMAND", "SRC_ADDR_ERROR", "DST_ADDR_ERROR", - "SRC_ADDR_NOT_MAPPED", "DST_ADDR_NOT_MAPPED", "COUNT_ERROR", "INVALID_SECTOR", - "SECTOR_NOT_BLANK", "SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION", "COMPARE_ERROR", - "BUSY", "PARAM_ERROR", "ADDR_ERROR", "ADDR_NOT_MAPPED", "CMD_LOCKED", - "INVALID_CODE", "INVALID_BAUD_RATE", "INVALID_STOP_BIT", - "CODE_READ_PROTECTION_ENABLED" -}; - diff --git a/board/msba2-common/tools/src/chipinfo.h b/board/msba2-common/tools/src/chipinfo.h deleted file mode 100644 index 1b12bb366632982a5b59b89c1ad3fba634b5c471..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/chipinfo.h +++ /dev/null @@ -1,20 +0,0 @@ -extern char *lpc_return_strings[]; - -struct sector_info_struct { // an array of - int address; // where each sector is located - int size; // and how big it is -}; - -struct chip_info_struct { - char *part_number; // human readable part number - char *id_string; // id string sent by "J" command - unsigned int ram_addr; // where to download into RAM - int chunk_size; // download to ram chunk size - int num_sector; // number of flash sectors - struct sector_info_struct *layout; // layout of sectors - const unsigned int *bootprog; // code that boots into user program (NULL = DTR/RTS only) -}; - -extern struct chip_info_struct chip_info[]; - - diff --git a/board/msba2-common/tools/src/cksum_test.c b/board/msba2-common/tools/src/cksum_test.c deleted file mode 100644 index 8cff9b55e2fc7f05c5505a679f67d93488f63424..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/cksum_test.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * LPC 2000 Loader, http://www.pjrc.com/arm/lpc2k_pgm - * Copyright (c) 2004, PJRC.COM, LLC, <paul@pjrc.com> - * - * 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 2 - * of the License. - * - * This program 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, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -/* If this code fails to build, please provide at least the following - * information when requesting (free) technical support. - * - * 1: Complete copy of all messages during the build. - * 2: Output of "gtk-config --version" - * 3: Output of "gtk-config --libs" - * 4: Output of "gtk-config --cflags" - * 5: Output of "uname -a" - * 6: Version of GTK installed... eg, type: ls -l /lib/libgtk* - * 7: Other info... which linux distribution, version, other software - */ - - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> - -#include "uuencode.h" - - -unsigned int sum=0; - - - -void cksum(const char *str) -{ - int num, i; - unsigned char data[256]; - - if (str == NULL) return; - num = uudecode(str, data, sizeof(data)); - for (i=0; i<num; i++) { - sum += data[i]; - } - -} - - -int main() -{ - char buf[4096]; - - while (!feof(stdin)) { - fgets(buf, sizeof(buf), stdin); - if (strcmp(buf, "\n") == 0) break; - cksum(buf); - } - printf("sum = %u\n", sum); - - return 0; -} - - - - - diff --git a/board/msba2-common/tools/src/control_2xxx.c b/board/msba2-common/tools/src/control_2xxx.c deleted file mode 100644 index ac0c8ca9759fc441df8ad69a1970fe9d7b8bba57..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/control_2xxx.c +++ /dev/null @@ -1,40 +0,0 @@ -#include "control_2xxx.h" - -#include <stdio.h> -#include <time.h> -#include <unistd.h> - -#include "serial.h" - -void hard_reset_to_bootloader(void) -{ -/* Use this lines for flashing a node with interrupted DTR line */ - /* printf("Press Reset - confirm with anykey\n"); - getchar(); - */ - printf("Reset CPU (into bootloader)\r\n"); - set_rts(0); // RTS (ttl level) connects to P0.14 - /* the next two lines should be commented for the prepared node */ - set_dtr(1); // DTR (ttl level) connects to RST - send_break_signal(); // or break detect circuit to RST - usleep(75000); - /* Use this lines for flashing a node with interrupted DTR line */ - /* printf("Release Reset - confirm with anykey\n"); - getchar(); - */ - set_dtr(0); // allow the CPU to run: - set_baud(baud_rate); - set_rts(0); // set RTS again (as it has been reset by set_baudrate) - usleep(40000); -} - -void hard_reset_to_user_code(void) -{ - printf("Reset CPU (into user code)\r\n"); - set_rts(1); // RTS (ttl level) connects to P0.14 - set_dtr(1); // DTR (ttl level) connects to RST - send_break_signal(); // or break detect circuit to RST - usleep(75000); - set_dtr(0); // allow the CPU to run - usleep(40000); -} diff --git a/board/msba2-common/tools/src/control_2xxx.h b/board/msba2-common/tools/src/control_2xxx.h deleted file mode 100644 index e37e2e29d506b8ee4303ff6b391467b94d973130..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/control_2xxx.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef CONTROL_2XXXX_H -#define CONTROL_2XXXX_H - -void hard_reset_to_bootloader(void); -void hard_reset_to_user_code(void); - -#endif // ..._H - diff --git a/board/msba2-common/tools/src/download.c b/board/msba2-common/tools/src/download.c deleted file mode 100644 index 5494661dfd55b2cb6c08c9e24fff67a48bc04d91..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/download.c +++ /dev/null @@ -1,972 +0,0 @@ -/* - * LPC 2000 Loader, http://www.pjrc.com/arm/lpc2k_pgm - * Copyright (c) 2004, PJRC.COM, LLC, <paul@pjrc.com> - * - * 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 2 - * of the License. - * - * This program 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, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -/* If this code fails to build, please provide at least the following - * information when requesting (free) technical support. - * - * 1: Complete copy of all messages during the build. - * 2: Output of "gtk-config --version" - * 3: Output of "gtk-config --libs" - * 4: Output of "gtk-config --cflags" - * 5: Output of "uname -a" - * 6: Version of GTK installed... eg, type: ls -l /lib/libgtk* - * 7: Other info... which linux distribution, version, other software - */ - -#include <stdio.h> -#include <stdarg.h> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> -#include <unistd.h> - -#include "lpc2k_pgm.h" -#include "download.h" -#include "serial.h" -#include "ihex.h" -#include "uuencode.h" -//#include "gui.h" -#include "chipinfo.h" -#include "boot.h" -#include "control_2xxx.h" - - -// This will cause all bytes send and received to be printed as hex. -// It's a LOT of extra output, but useful for difficult debugging -// of what's _really_ being sent and received. -//#define PRINT_TX_RX_BYTES - - -static void download_main(int event); -static void xmit_cmd(const char *cmd, int max_time); -static void mk_valid_code_vector(void); -static unsigned int sum(unsigned char *data, int num); - - -static int state=0; -static int reboot_only=0; -static char expected_echo_buf[4096]; -static char *expected_echo_ptr=NULL; -static char parsed_response_buf[4096]; -static char *parsed_response_ptr=NULL; -static int response_timer=0; - -extern int programming_done; -extern int done_program(int); - - -char* port_name = "/dev/ttyUSB1"; -char* file_name = ""; -char* crystal = "16"; - -/****************************************************************/ -/* */ -/* Main Download Section */ -/* */ -/****************************************************************/ - -// possible states -#define SYNC_1 1 -#define SYNC_2 2 -#define SYNC_3 3 -#define CHIP_ID 4 -#define UNLOCK 5 -#define BLANK_CHECK_SECTOR 6 -#define ERASE_PREPARE 7 -#define ERASE_SECTOR 8 -#define DOWNLOAD_CODE 9 -#define XMIT_DATA 10 -#define XMIT_CKSUM 11 -#define WRITE_PREPARE 12 -#define WRITE_SECTOR 13 -#define BOOT_HARD 14 -#define BOOT_SOFT 15 -#define BOOT_XMIT_DATA 16 -#define BOOT_XMIT_CKSUM 17 -#define BOOT_RUN_CODE 18 - - -// possible input values for "event" -#define BEGIN 1 -#define RESPONSE 2 -#define TIMEOUT 3 -#define RETRY 4 - - - - -int download_begin(char* file) -{ - int r; - - file_name = file; - - printf("\r\nEntering Bootloader Mode\r\n"); - hard_reset_to_bootloader(); - printf("Read \"%s\"", file_name); - r = read_intel_hex(file_name); - if (r < 0) { - /* abort on ioerror */ - return 0; - } - printf(": %d bytes\r\n", r); - mk_valid_code_vector(); - state = SYNC_1; - reboot_only = 0; - download_main(BEGIN); - return 1; -} - - -void soft_reboot_begin(void) -{ - printf("\r\nEntering Bootloader Mode\r\n"); - hard_reset_to_bootloader(); - state = SYNC_1; - reboot_only = 1; - download_main(BEGIN); -} - -static void mk_valid_code_vector(void) -{ - unsigned char b[4]; - unsigned int sum=0; - int addr; - - for (addr=0; addr<0x20; addr+=4) { - if (addr != 0x14) { - get_ihex_data(addr, 4, b); - sum += (b[0] | (b[1] << 8) | (b[2] << 16) | (b[3] << 24)); - } - } - sum ^= 0xFFFFFFFF; - sum++; - b[0] = (sum >> 0) & 255; - b[1] = (sum >> 8) & 255; - b[2] = (sum >> 16) & 255; - b[3] = (sum >> 24) & 255; - put_ihex_data(0x14, 4, b); -} - - -static unsigned int sum(unsigned char *data, int num) -{ - unsigned int sum=0; - - while (num > 0) { - sum += *data++; - num--; - } - return sum; -} - - -static int num_lines(const char *buf) -{ - const char *p; - int count=0; - - p = buf; - while (p != NULL) { - p = strstr(p, "\r\n"); - if (p != NULL) { - count++; - p += 2; - } - } - return count; -} - -void trim_crlf(char *str) -{ - char *p; - p = strstr(str, "\r\n"); - if (p != NULL) *p = '\0'; -} - -void copy_boot_code_to_memory(struct chip_info_struct *chip) -{ - int i; - unsigned char c[4]; - - for (i=0; i < chip->bootprog[0]; i++) { - c[3] = (chip->bootprog[i+1] >> 24) & 255; - c[2] = (chip->bootprog[i+1] >> 16) & 255; - c[1] = (chip->bootprog[i+1] >> 8) & 255; - c[0] = (chip->bootprog[i+1]) & 255; - put_ihex_data(i * 4, 4, c); - } -} - - -#define NO_SYNC_ERR "\r\n\ -ERROR: Unable to sync to baud rate.\r\n\ -This probably means the LPC2xxx chip is not connected\r\n\ -or it is not being reset, or P0.14 is not low after\r\n\ -reset to cause it to enter the bootloader mode.\r\n\r\n\ -Please check the serial port connection, make sure\r\n\ -pin P0.14 is low (or tied to RTS via RS-232 level\r\n\ -translator), and the chip has been reset (or reset\r\n\ -is tied to DTR via RS-232 level translator).\r\n" - -#define UNKNOWN_CHIP_ERROR "\r\n\ -Unknown chip ID: \"%s\".\r\n\r\n\ -Perhaps you have a new Philips LPC chip which does not\r\n\ -have its ID string and sector map defined in this program?\r\n\ -Please contact paul@pjrc.com. Please include an exact copy\r\n\ -of this message and any info about the chip and other\r\n\ -hardware you may be using. Thanks :-)\r\n" - - -static void download_main(int event) -{ - char buf[4096]; - unsigned char bytes[256]; - double xtal; - int n; - static unsigned int cksum; - static int retry=0; - static int sector; // current sector we're doing - static int sector_offset; - static struct chip_info_struct *chip; // which chip - static int current_addr, num_to_xmit, linecount; - - - while (1) { - switch (state) { - case SYNC_1: - switch (event) { - case BEGIN: - printf("Attempting baud sync"); - retry = 0; - case RETRY: - printf("."); - fflush(stdout); - xmit_cmd("?", 2); - return; - case RESPONSE: - if (strcmp(parsed_response_buf, "Synchronized\r\n") == 0) { - //printf("response: sync'd\n"); - state = SYNC_2; - event = BEGIN; - break; - } - if (strcmp(parsed_response_buf, "?") == 0) { - //printf("response: echo only\n"); - retry++; - if (retry > 150) { - download_cancel(NO_SYNC_ERR); return; - } - event = RETRY; - usleep(30000); - break; - } - snprintf(buf, sizeof(buf), "Unexpected response to sync, \"%s\"", - parsed_response_buf); - download_cancel(buf); return; - case TIMEOUT: - if (retry < 100) { - retry++; - event = RETRY; - break; - } - download_cancel(NO_SYNC_ERR); - return; - } - break; - - - case SYNC_2: - switch(event) { - case BEGIN: - xmit_cmd("Synchronized\r\n", 3); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) != 1) return; - if (strcmp(parsed_response_buf, "OK\r\n") == 0) { - state = SYNC_3; - event = BEGIN; - break; - } else { - snprintf(buf, sizeof(buf), "Unable to complete baud sync, %s", - parsed_response_buf); - download_cancel(buf); return; - } - return; - case TIMEOUT: - download_cancel("No response to complete baud sync"); return; - } - break; - - - case SYNC_3: - switch(event) { - case BEGIN: - if (sscanf(crystal, "%lf", &xtal) != 1) { - printf("\r\n"); - download_cancel("Crystal frequency is required for 3rd step of baud rate sync"); - return; - } - if (xtal < 10.0 || xtal > 25.0) { - printf("\r\n"); - printf("Warning: crystal frequency out of range (10.0 to 25.0), continuing anyway! (hope you know what you're doing)\r\n"); - } - snprintf(buf, sizeof(buf), "%d\r\n", (int)(xtal * 1000.0 + 0.5)); - xmit_cmd(buf, 3); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) != 1) return; - if (strcmp(parsed_response_buf, "OK\r\n") == 0) { - printf("Baud sync sucessful\r\n"); - state = CHIP_ID; - event = BEGIN; - break; - } else { - snprintf(buf, sizeof(buf), "wrong response to crystal: %s", - parsed_response_buf); - download_cancel(buf); return; - } - return; - case TIMEOUT: - download_cancel("No response to crystal speed"); return; - } - break; - - - case CHIP_ID: - switch(event) { - case BEGIN: - xmit_cmd("J\r\n", 3); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) < 2) return; - if (strncmp(parsed_response_buf, "0\r\n", 3) == 0) { - trim_crlf(parsed_response_buf+3); - for (chip=chip_info; chip->part_number != NULL; chip++) { - if (strcmp(parsed_response_buf+3, chip->id_string) == 0) - break; - } - if (chip->part_number == NULL) { - snprintf(buf, sizeof(buf), UNKNOWN_CHIP_ERROR, - parsed_response_buf+3); - download_cancel(buf); - break; - } - printf("Found chip: \"%s\"\r\n", chip->part_number); - //download_cancel("stop here, remove this later"); - state = UNLOCK; - event = BEGIN; - break; - } else { - snprintf(buf, sizeof(buf), "wrong response to ID: %s", - parsed_response_buf); - download_cancel(buf); return; - } - return; - case TIMEOUT: - download_cancel("No response to unlock command"); return; - } - break; - - - case UNLOCK: - switch(event) { - case BEGIN: - xmit_cmd("U 23130\r\n", 3); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) != 1) return; - if (strcmp(parsed_response_buf, "0\r\n") == 0) { - printf("Device Unlocked\r\n"); - if (reboot_only) { - state = BOOT_SOFT; - } else { - state = BLANK_CHECK_SECTOR; - printf("Erasing....\r\n"); - sector = 0; - } - event = BEGIN; - break; - } else { - snprintf(buf, sizeof(buf), "wrong response unlock: %s", - parsed_response_buf); - download_cancel(buf); return; - } - return; - case TIMEOUT: - download_cancel("No response to unlock command"); return; - } - break; - - - case BLANK_CHECK_SECTOR: - switch(event) { - case BEGIN: - if (sector >= chip->num_sector) { - printf("Programming....\r\n"); - state = DOWNLOAD_CODE; - sector = sector_offset = 0; - event = BEGIN; - break; - } - printf(" Sector %2d: ", sector); - fflush(stdout); - if (!bytes_within_range(chip->layout[sector].address, - chip->layout[sector].address + chip->layout[sector].size - 1)) { - printf("not used\r\n"); - sector++; - break; - } - if (sector == 0) { - // can't blank check sector 0, so always erase it - state = ERASE_PREPARE; - break; - } - snprintf(buf, sizeof(buf), "I %d %d\r\n", sector, sector); - xmit_cmd(buf, 5); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) == 1 && - strcmp(parsed_response_buf, "0\r\n") == 0) { - printf("already blank\r\n"); - sector++; - event = BEGIN; - break; - } else { - if (num_lines(parsed_response_buf) < 3) return; - state = ERASE_PREPARE; - event = BEGIN; - break; - } - case TIMEOUT: - download_cancel("No response to blank check"); return; - } - break; - - - - case ERASE_PREPARE: - switch(event) { - case BEGIN: - printf("prep, "); - fflush(stdout); - snprintf(buf, sizeof(buf), "P %d %d\r\n", sector, sector); - xmit_cmd(buf, 8); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) != 1) return; - if (strcmp(parsed_response_buf, "0\r\n") == 0) { - state = ERASE_SECTOR; - event = BEGIN; - break; - } else { - download_cancel("Unable to prep for write"); return; - } - case TIMEOUT: - download_cancel("No response"); return; - } - break; - - - - case ERASE_SECTOR: - switch(event) { - case BEGIN: - printf("erase... "); - fflush(stdout); - snprintf(buf, sizeof(buf), "E %d %d\r\n", sector, sector); - xmit_cmd(buf, 25); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) < 1) return; - if (strcmp(parsed_response_buf, "0\r\n") == 0) { - printf("Ok\r\n"); - sector++; - state = BLANK_CHECK_SECTOR; - event = BEGIN; - break; - } else { - printf("Error\r\n"); - download_cancel("Unable to erase flash"); return; - } - case TIMEOUT: - download_cancel("No response"); return; - } - break; - - - - case DOWNLOAD_CODE: - switch(event) { - case BEGIN: - if (sector >= chip->num_sector) { - state = BOOT_HARD; - sector = 0; - event = BEGIN; - break; - } - printf(" Sector %2d (0x%08X-0x%08X): ", sector, - chip->layout[sector].address + sector_offset, - chip->layout[sector].address + sector_offset + chip->chunk_size - 1); - fflush(stdout); - if (!bytes_within_range(chip->layout[sector].address + sector_offset, - chip->layout[sector].address + sector_offset + chip->chunk_size - 1)) { - printf("not used\r\n"); - sector_offset += chip->chunk_size; - if (sector_offset >= chip->layout[sector].size) { - sector_offset = 0; - sector++; - } - break; - } - snprintf(buf, sizeof(buf), "W %d %d\r\n", chip->ram_addr, chip->chunk_size); - xmit_cmd(buf, 4); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) != 1) return; - if (strcmp(parsed_response_buf, "0\r\n") == 0) { - state = XMIT_DATA; - printf("xmit"); - current_addr = chip->layout[sector].address + sector_offset; - num_to_xmit = chip->chunk_size; - linecount = 0; - cksum = 0; - event = BEGIN; - break; - } else { - download_cancel("can't xmit to ram"); return; - } - case TIMEOUT: - download_cancel("No response"); return; - } - break; - - - case XMIT_DATA: - switch(event) { - case BEGIN: - n = num_to_xmit; - if (n > 45) n = 45; - get_ihex_data(current_addr, n, bytes); - cksum += sum(bytes, n); - uuencode(buf, bytes, n); - current_addr += n; - num_to_xmit -= n; - linecount++; - xmit_cmd(buf, 5); - write_serial_port("\r\n", 2); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) != 1) return; - if (strcmp(parsed_response_buf, "\r\n") == 0) { - if (linecount >= 20 || num_to_xmit <= 0) { - state = XMIT_CKSUM; - } - event = BEGIN; - break; - } else { - download_cancel("data xmit did not echo"); return; - } - case TIMEOUT: - download_cancel("No response"); return; - } - break; - - - case XMIT_CKSUM: - switch(event) { - case BEGIN: - snprintf(buf, sizeof(buf), "%d\r\n", cksum); - xmit_cmd(buf, 3); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) != 1) return; - if (strcmp(parsed_response_buf, "OK\r\n") == 0) { - if (num_to_xmit > 0) { - printf("."); - fflush(stdout); - state = XMIT_DATA; - event = BEGIN; - linecount = 0; - cksum = 0; - break; - } - state = WRITE_PREPARE; - event = BEGIN; - break; - } else { - download_cancel("bad checksum"); return; - } - case TIMEOUT: - download_cancel("No response"); return; - } - break; - - - case WRITE_PREPARE: - switch(event) { - case BEGIN: - printf("prep, "); - fflush(stdout); - snprintf(buf, sizeof(buf), "P %d %d\r\n", sector, sector); - xmit_cmd(buf, 5); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) != 1) return; - if (strcmp(parsed_response_buf, "0\r\n") == 0) { - state = WRITE_SECTOR; - event = BEGIN; - break; - } else { - download_cancel("Unable to prep for write"); return; - } - case TIMEOUT: - download_cancel("No response"); return; - } - break; - - - case WRITE_SECTOR: - switch(event) { - case BEGIN: - printf("write, "); - fflush(stdout); - snprintf(buf, sizeof(buf), "C %d %d %d\r\n", - chip->layout[sector].address + sector_offset, - chip->ram_addr, chip->chunk_size); - xmit_cmd(buf, 5); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) != 1) return; - if (strcmp(parsed_response_buf, "0\r\n") == 0) { - printf("Ok\r\n"); - sector_offset += chip->chunk_size; - if (sector_offset >= chip->layout[sector].size) { - sector_offset = 0; - sector++; - } - state = DOWNLOAD_CODE; - event = BEGIN; - } else { - download_cancel("Unable to prep for write"); return; - } - break; - case TIMEOUT: - download_cancel("No response"); return; - } - break; - - - case BOOT_HARD: - // if (chip->bootprog) { - // state = BOOT_SOFT; - // break; - // } else { - printf("Booting (hardware reset)...\r\n\r\n"); - hard_reset_to_user_code(); - done_program(0); - return; - // } - - case BOOT_SOFT: - switch(event) { - case BEGIN: - printf("Booting (soft jump)...\r\n"); - printf("loading jump code\r\n"); - // would be nice if we could simply jump to the user's code, but - // Philips didn't think of that. The interrupt vector table stays - // mapped to the bootloader, so jumping to zero only runs the - // bootloader again. Intead, we need to download a tiny ARM - // program that reconfigures the hardware and then jumps to zero. - //snprintf(buf, sizeof(buf), "G %d A\r\n", 0); - snprintf(buf, sizeof(buf), "W %d %d\r\n", chip->ram_addr, chip->bootprog[0] * 4); - xmit_cmd(buf, 4); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) < 1) return; - if (strcmp(parsed_response_buf, "0\r\n") == 0) { - current_addr = 0; - num_to_xmit = chip->bootprog[0] * 4; - copy_boot_code_to_memory(chip); - linecount = 0; - cksum = 0; - state = BOOT_XMIT_DATA; - event = BEGIN; - } else { - download_cancel("can't xmit to ram"); return; - } - break; - case TIMEOUT: - download_cancel("No response"); return; - } - break; - - - case BOOT_XMIT_DATA: - switch(event) { - case BEGIN: - n = num_to_xmit; - if (n > 45) n = 45; - get_ihex_data(current_addr, n, bytes); - cksum += sum(bytes, n); - uuencode(buf, bytes, n); - current_addr += n; - num_to_xmit -= n; - linecount++; - //printf("send: %s\r\n", buf); - xmit_cmd(buf, 5); - write_serial_port("\r\n", 2); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) != 1) return; - if (strcmp(parsed_response_buf, "\r\n") == 0) { - if (linecount >= 20 || num_to_xmit <= 0) { - state = BOOT_XMIT_CKSUM; - } - event = BEGIN; - break; - } else { - download_cancel("data xmit did not echo"); return; - } - case TIMEOUT: - download_cancel("No response"); return; - } - break; - - - case BOOT_XMIT_CKSUM: - switch(event) { - case BEGIN: - snprintf(buf, sizeof(buf), "%d\r\n", cksum); - //printf("send: %s", buf); - xmit_cmd(buf, 3); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) != 1) return; - if (strcmp(parsed_response_buf, "OK\r\n") == 0) { - if (num_to_xmit > 0) { - printf("."); - fflush(stdout); - state = BOOT_XMIT_DATA; - event = BEGIN; - linecount = 0; - cksum = 0; - break; - } - state = BOOT_RUN_CODE; - event = BEGIN; - break; - } else { - download_cancel("bad checksum"); return; - } - case TIMEOUT: - download_cancel("No response"); return; - } - break; - - - case BOOT_RUN_CODE: - switch(event) { - case BEGIN: - printf("jumping now!\r\n"); - snprintf(buf, sizeof(buf), "G %d A\r\n", chip->ram_addr); - xmit_cmd(buf, 4); - return; - case RESPONSE: - if (num_lines(parsed_response_buf) < 1) return; - if (strcmp(parsed_response_buf, "0\r\n") == 0) { - done_program(0); - return; - } else { - printf("response = %s", parsed_response_buf); - download_cancel("couldn't run program"); return; - } - break; - case TIMEOUT: - done_program(0); - return; - // Philips user name says it responds, but it does not. - // It seems to just immediately jump to the code without - // any "0" response. - //download_cancel("No response"); return; - } - break; - - - - default: - snprintf(buf, sizeof(buf), "unknown state %d\r\n", state); - download_cancel(buf); - return; - } - } -} - - -void download_cancel(const char *mesg) -{ - printf("\r\nDownload Canceled"); - if (mesg && *mesg) printf(": %s", mesg); - printf("\r\n"); - // need to do some cleanup for various states??? - done_program(1); -} - - -/****************************************************************/ -/* */ -/* Transmit Commands to Bootloader */ -/* */ -/****************************************************************/ - - - -static void xmit_cmd(const char *cmd, int max_time) -{ - int len; - - if (cmd == NULL || *cmd == '\0') return; - len = strlen(cmd); - -#ifdef PRINT_TX_RX_BYTES - printf("tx %d bytes: %s\n", len, cmd); -#endif - - input_flush_serial_port(); - - write_serial_port(cmd, len); - - snprintf(expected_echo_buf, sizeof(expected_echo_buf), "%s", cmd); - if (state == SYNC_1) { - // special case, baud sync doesn't echo - expected_echo_buf[0] = '\0'; - } - expected_echo_ptr = expected_echo_buf; - parsed_response_ptr = parsed_response_buf; - - response_timer = max_time; -} - - - -/****************************************************************/ -/* */ -/* Handlers that respond to input */ -/* */ -/****************************************************************/ - - -/* -Whenever the main gtk event loop detects more input has arrived from the -serial port, and we're in the process of a download, it calls here to -hand off the data. We're supposed to match it up to the echo buffer, -and then store it into the parsed response buffer and if it looks like -this might be a complete response, call download_main with a response -event. -*/ -void download_rx_port(const unsigned char *buf, int num) -{ - int i=0; - - if (num <= 0) return; - - // echo the data - //write(term_fd, buf, num); - -#ifdef PRINT_TX_RX_BYTES - printf("rx %d bytes:", num); - for (i=0; i<num; i++) { - printf(" %02X", *(buf + i)); - } - printf("\r\n"); -#endif - - // ignore extra incoming garbage we didn't expect - if (expected_echo_ptr == NULL) return; - - // special case, echo of '?' during unsuccessful sync - if (state == SYNC_1 && num == 1 && buf[0] == '?') { - *parsed_response_ptr++ = '?'; - *parsed_response_ptr = '\0'; - response_timer = 0; - download_main(RESPONSE); - return; - } - - // parse it - for (i=0; i<num; i++) { - // if we're still expecting the echo, gobble it up - if (*expected_echo_ptr) { - if (buf[i] != *expected_echo_ptr) { -#ifdef PRINT_TX_RX_BYTES - printf(" <echo_err> "); -#endif - // ignore incorrect echo (will timeout) - expected_echo_ptr = NULL; - return; - } - expected_echo_ptr++; - continue; - } - // store this into a parsed response buffer - *parsed_response_ptr++ = buf[i]; - } - - // if the last two characters of the response are "\r\n", - // then it's likely we've got a complete response. - *parsed_response_ptr = '\0'; - if (parsed_response_ptr > parsed_response_buf + 1 - && *(parsed_response_ptr - 2) == '\r' - && *(parsed_response_ptr - 1) == '\n') { - //response_timer = 0; - download_main(RESPONSE); - } -} - - - -/* -During a download, this is supposed to get called at 100 Hz. Whenever -something is transmitted and we expect a response, the response_timer -is initialized to the maximum time we will wait. -*/ -void download_timer(void) -{ - if (response_timer > 0) { - response_timer--; - if (response_timer == 0) { - expected_echo_ptr = NULL; - download_main(TIMEOUT); - } - } -} - -/* -During a download, all input the user types into the terminal is sent -to this function, instead of passing it to xterm for display -*/ -void download_rx_term(const unsigned char *buf, int num) -{ - // discard anything the user types into the terminal - // while we are in the middle of downloading. Maybe - // we should look for CTRL-C and abort?? -} - - diff --git a/board/msba2-common/tools/src/download.h b/board/msba2-common/tools/src/download.h deleted file mode 100644 index 4d57bfa5d05f91dc859947237ed2a344ed49b6df..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/download.h +++ /dev/null @@ -1,8 +0,0 @@ -extern int download_begin(char* file); -extern void soft_reboot_begin(void); -extern void hard_reset_to_bootloader(void); -extern void hard_reset_to_user_code(void); -extern void download_cancel(const char *mesg); -extern void download_rx_term(const unsigned char *buf, int num); -extern void download_rx_port(const unsigned char *buf, int num); -extern void download_timer(void); diff --git a/board/msba2-common/tools/src/gui.c b/board/msba2-common/tools/src/gui.c deleted file mode 100644 index ce6d13c96e68d11d9a6222d10a9e4f74d64d2c19..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/gui.c +++ /dev/null @@ -1,387 +0,0 @@ -/* - * LPC 2000 Loader, http://www.pjrc.com/arm/lpc2k_pgm - * Copyright (c) 2004, PJRC.COM, LLC, <paul@pjrc.com> - * - * 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 2 - * of the License. - * - * This program 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, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -/* If this code fails to build, please provide at least the following - * information when requesting (free) technical support. - * - * 1: Complete copy of all messages during the build. - * 2: Output of "gtk-config --version" - * 3: Output of "gtk-config --libs" - * 4: Output of "gtk-config --cflags" - * 5: Output of "uname -a" - * 6: Version of GTK installed... eg, type: ls -l /lib/libgtk* - * 7: Other info... which linux distribution, version, other software - */ - - -#include <stdio.h> -#include <stdarg.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <fcntl.h> -#include <gtk/gtk.h> -#include <sys/types.h> -#include <sys/stat.h> - -#include "gui.h" -#include "settings.h" -#include "serial.h" -#include "lpc2k_pgm.h" -#include "download.h" - - -static GtkWidget *firmware_label, *firmware_entry, *program_button; -static GtkWidget *port_label, *port_entry, *baud_label, *baud_combo; -static GtkWidget *crystal_label, *crystal_entry, *mhz_label; -static GtkWidget *reboot_button, *bootloader_button, *quit_button; -static GtkWidget *line1_hbox, *line2_hbox, *line3_hbox, *line4_hbox; -static GtkWidget *main_vbox, *main_window; - -static int port_timeout=0; -static int baud_timeout=0; -static int download_in_progress=0; - -gint do_quit(GtkWidget *widget, gpointer *data) -{ - gtk_main_quit(); - return FALSE; -} - -gint do_program(GtkWidget *widget, gpointer *data) -{ - if (download_in_progress) { - // error... not supposed to get here - gtk_widget_set_sensitive(program_button, FALSE); - return FALSE; - } - download_in_progress = 1; - gtk_widget_set_sensitive(program_button, FALSE); - gtk_widget_set_sensitive(reboot_button, FALSE); - gtk_widget_set_sensitive(bootloader_button, TRUE); - download_begin(); - return FALSE; -} - -int file_exists(const char *filename) -{ - struct stat file_stats; - int r; - - r = stat(filename, &file_stats); - if (r != 0) return 0; - if (!S_ISREG(file_stats.st_mode)) return 0; - return 1; -} - -void done_program(int still_in_bootloader) -{ - download_in_progress = 0; - - if (file_exists(gtk_entry_get_text(GTK_ENTRY(firmware_entry)))) { - gtk_widget_set_sensitive(program_button, TRUE); - } else { - gtk_widget_set_sensitive(program_button, FALSE); - } - gtk_widget_set_sensitive(bootloader_button, TRUE); - gtk_widget_set_sensitive(reboot_button, TRUE); -} - -gint do_reboot(GtkWidget *widget, gpointer *data) -{ - if (download_in_progress) { - download_cancel(NULL); - gtk_widget_set_sensitive(program_button, FALSE); - gtk_widget_set_sensitive(reboot_button, FALSE); - gtk_widget_set_sensitive(bootloader_button, FALSE); - } - gtk_widget_set_sensitive(program_button, FALSE); - gtk_widget_set_sensitive(reboot_button, FALSE); - gtk_widget_set_sensitive(bootloader_button, FALSE); - - hard_reset_to_user_code(); - -#if 0 - download_in_progress = 1; - soft_reboot_begin(); -#endif - if (file_exists(gtk_entry_get_text(GTK_ENTRY(firmware_entry)))) { - gtk_widget_set_sensitive(program_button, TRUE); - } else { - gtk_widget_set_sensitive(program_button, FALSE); - } - gtk_widget_set_sensitive(bootloader_button, TRUE); - return FALSE; -} - -gint do_bootloader(GtkWidget *widget, gpointer *data) -{ - if (download_in_progress) { - download_cancel(NULL); - gtk_widget_set_sensitive(program_button, FALSE); - gtk_widget_set_sensitive(reboot_button, FALSE); - gtk_widget_set_sensitive(bootloader_button, FALSE); - } - - hard_reset_to_bootloader(); - - if (file_exists(gtk_entry_get_text(GTK_ENTRY(firmware_entry)))) { - gtk_widget_set_sensitive(program_button, TRUE); - } else { - gtk_widget_set_sensitive(program_button, FALSE); - } - gtk_widget_set_sensitive(reboot_button, TRUE); - gtk_widget_set_sensitive(bootloader_button, TRUE); - return FALSE; -} - -gint do_new_port(GtkWidget *widget, gpointer *data) -{ - port_timeout = 12; - return FALSE; -} - -gint do_new_baud(GtkWidget *widget, gpointer *data) -{ - baud_timeout = 7; - return FALSE; -} - -gint do_new_file(GtkWidget *widget, gpointer *data) -{ - const char *filename; - - filename = gtk_entry_get_text(GTK_ENTRY(firmware_entry)); - if (file_exists(filename)) { - new_file_setting(filename); - if (download_in_progress) { - gtk_widget_set_sensitive(program_button, FALSE); - } else { - gtk_widget_set_sensitive(program_button, TRUE); - } - } else { - gtk_widget_set_sensitive(program_button, FALSE); - } - return FALSE; -} - -gint do_new_crystal(GtkWidget *widget, gpointer *data) -{ - const char *xtal; - - xtal = gtk_entry_get_text(GTK_ENTRY(crystal_entry)); - new_crystal_setting(xtal); - return FALSE; -} - - -gint do_timer(gpointer data) -{ - if (port_timeout && --port_timeout == 0) { - open_serial_port(gtk_entry_get_text(GTK_ENTRY(port_entry))); - } - if (baud_timeout && --baud_timeout == 0) { - change_baud(gtk_entry_get_text(GTK_ENTRY( - GTK_COMBO(baud_combo)->entry))); - } - if (download_in_progress) { - download_timer(); - } - return TRUE; -} - -void do_term_input(gpointer data, int fd, GdkInputCondition cond) -{ - char buf[256]; - int num, flags; - - flags = fcntl(term_fd, F_GETFL); - fcntl(term_fd, F_SETFL, flags | O_NONBLOCK); - num = read(term_fd, buf, sizeof(buf)); - fcntl(term_fd, F_SETFL, flags); - if (num > 0) { - if (download_in_progress) { - download_rx_term(buf, num); - } else { - write_serial_port(buf, num); - } - } -} - -void do_port_input(gpointer data, int fd, GdkInputCondition cond) -{ - char buf[256]; - int num; - - num = read_serial_port_nb((unsigned char *)buf, sizeof(buf)); - if (num > 0) { - if (download_in_progress) { - download_rx_port(buf, num); - } else { - write(term_fd, buf, num); - } - } -} - - -void run_gui(void) -{ - gtk_signal_connect(GTK_OBJECT(main_window), "delete_event", - GTK_SIGNAL_FUNC(do_quit), NULL); - gtk_signal_connect(GTK_OBJECT(quit_button), "pressed", - GTK_SIGNAL_FUNC(do_quit), NULL); - gtk_signal_connect(GTK_OBJECT(port_entry), "changed", - GTK_SIGNAL_FUNC(do_new_port), NULL); - gtk_signal_connect(GTK_OBJECT(GTK_COMBO(baud_combo)->entry), "changed", - GTK_SIGNAL_FUNC(do_new_baud), NULL); - gtk_signal_connect(GTK_OBJECT(firmware_entry), "changed", - GTK_SIGNAL_FUNC(do_new_file), NULL); - gtk_signal_connect(GTK_OBJECT(crystal_entry), "changed", - GTK_SIGNAL_FUNC(do_new_crystal), NULL); - gtk_signal_connect(GTK_OBJECT(program_button), "pressed", - GTK_SIGNAL_FUNC(do_program), NULL); - gtk_signal_connect(GTK_OBJECT(reboot_button), "pressed", - GTK_SIGNAL_FUNC(do_reboot), NULL); - gtk_signal_connect(GTK_OBJECT(bootloader_button), "pressed", - GTK_SIGNAL_FUNC(do_bootloader), NULL); - - gtk_timeout_add(100, do_timer, NULL); - gdk_input_add(term_fd, GDK_INPUT_READ, do_term_input, NULL); - gdk_input_add(serial_port_fd(), GDK_INPUT_READ, do_port_input, NULL); - - gtk_main(); -} - - -void create_window(int *argc, char ***argv) -{ - GList *gtk_baud_list=NULL; - int i; - - gtk_init(argc, argv); - - firmware_label = gtk_label_new("Firmware:"); - gtk_label_set_justify(GTK_LABEL(firmware_label), GTK_JUSTIFY_RIGHT); - gtk_widget_show(firmware_label); - - firmware_entry = gtk_entry_new(); - gtk_widget_set_usize(firmware_entry, 110, 0); - gtk_entry_set_text(GTK_ENTRY(firmware_entry), file_setting()); - gtk_widget_show(firmware_entry); - - program_button = gtk_button_new_with_label("Program Now"); - if (file_exists(file_setting())) { - gtk_widget_set_sensitive(program_button, TRUE); - } else { - gtk_widget_set_sensitive(program_button, FALSE); - } - gtk_widget_show(program_button); - - line1_hbox = gtk_hbox_new(FALSE, 2); - gtk_box_pack_start(GTK_BOX(line1_hbox), firmware_label, FALSE, FALSE, 2); - gtk_box_pack_start(GTK_BOX(line1_hbox), firmware_entry, TRUE, TRUE, 2); - gtk_box_pack_start(GTK_BOX(line1_hbox), program_button, FALSE, FALSE, 2); - gtk_widget_show(line1_hbox); - - - port_label = gtk_label_new("Port:"); - gtk_label_set_justify(GTK_LABEL(port_label), GTK_JUSTIFY_RIGHT); - gtk_widget_show(port_label); - - port_entry = gtk_entry_new(); - gtk_widget_set_usize(port_entry, 80, 0); - gtk_entry_set_text(GTK_ENTRY(port_entry), port_setting()); - open_serial_port(port_setting()); - gtk_widget_show(port_entry); - - baud_label = gtk_label_new("Baud:"); - gtk_label_set_justify(GTK_LABEL(baud_label), GTK_JUSTIFY_RIGHT); - gtk_widget_show(baud_label); - - baud_combo = gtk_combo_new(); - for (i=0; baud_list[i] != NULL; i++) { - gtk_baud_list = g_list_append(gtk_baud_list, baud_list[i]); - } - gtk_combo_set_popdown_strings(GTK_COMBO(baud_combo), gtk_baud_list); - gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(baud_combo)->entry), FALSE); - gtk_widget_set_usize(baud_combo, 75, 0); - for (i=0; baud_list[i] != NULL; i++) { - if (strcmp(baud_list[i], baud_setting()) == 0) { - gtk_list_select_item(GTK_LIST(GTK_COMBO(baud_combo)->list), i); - break; - } - } - gtk_widget_show(baud_combo); - - line2_hbox = gtk_hbox_new(FALSE, 2); - gtk_box_pack_start(GTK_BOX(line2_hbox), port_label, FALSE, FALSE, 2); - gtk_box_pack_start(GTK_BOX(line2_hbox), port_entry, TRUE, TRUE, 2); - gtk_box_pack_start(GTK_BOX(line2_hbox), baud_label, FALSE, FALSE, 2); - gtk_box_pack_start(GTK_BOX(line2_hbox), baud_combo, FALSE, FALSE, 2); - gtk_widget_show(line2_hbox); - - - crystal_label = gtk_label_new("Crystal:"); - gtk_label_set_justify(GTK_LABEL(crystal_label), GTK_JUSTIFY_RIGHT); - gtk_widget_show(crystal_label); - - crystal_entry = gtk_entry_new(); - gtk_widget_set_usize(crystal_entry, 80, 0); - gtk_entry_set_text(GTK_ENTRY(crystal_entry), crystal_setting()); - gtk_widget_show(crystal_entry); - - mhz_label = gtk_label_new("(MHz)"); - gtk_label_set_justify(GTK_LABEL(mhz_label), GTK_JUSTIFY_LEFT); - gtk_widget_show(mhz_label); - - line3_hbox = gtk_hbox_new(FALSE, 2); - gtk_box_pack_start(GTK_BOX(line3_hbox), crystal_label, FALSE, FALSE, 2); - gtk_box_pack_start(GTK_BOX(line3_hbox), crystal_entry, TRUE, TRUE, 2); - gtk_box_pack_start(GTK_BOX(line3_hbox), mhz_label, FALSE, FALSE, 2); - gtk_widget_show(line3_hbox); - - - reboot_button = gtk_button_new_with_label("Reboot"); - gtk_widget_set_sensitive(reboot_button, TRUE); - gtk_widget_show(reboot_button); - - bootloader_button = gtk_button_new_with_label("Booloader"); - gtk_widget_show(bootloader_button); - - quit_button = gtk_button_new_with_label("Quit"); - gtk_widget_show(quit_button); - - line4_hbox = gtk_hbox_new(TRUE, 2); - gtk_box_pack_start(GTK_BOX(line4_hbox), reboot_button, TRUE, TRUE, 2); - gtk_box_pack_start(GTK_BOX(line4_hbox), bootloader_button, TRUE, TRUE, 2); - gtk_box_pack_start(GTK_BOX(line4_hbox), quit_button, TRUE, TRUE, 2); - gtk_widget_show(line4_hbox); - - main_vbox = gtk_vbox_new(FALSE, 2); - gtk_box_pack_start(GTK_BOX(main_vbox), line1_hbox, TRUE, TRUE, 2); - gtk_box_pack_start(GTK_BOX(main_vbox), line2_hbox, TRUE, TRUE, 2); - gtk_box_pack_start(GTK_BOX(main_vbox), line3_hbox, TRUE, TRUE, 2); - gtk_box_pack_start(GTK_BOX(main_vbox), line4_hbox, TRUE, TRUE, 2); - gtk_widget_show(main_vbox); - - main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_container_add(GTK_CONTAINER(main_window), main_vbox); - gtk_widget_show(main_window); -} diff --git a/board/msba2-common/tools/src/gui.h b/board/msba2-common/tools/src/gui.h deleted file mode 100644 index fadde6db6d99bfa9cde2b8f9aabf8ab31d68d67a..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/gui.h +++ /dev/null @@ -1,3 +0,0 @@ -extern void create_window(int *argc, char ***argv); -extern void run_gui(void); -extern void done_program(int still_in_bootloader); diff --git a/board/msba2-common/tools/src/ihex.c b/board/msba2-common/tools/src/ihex.c deleted file mode 100644 index cda37af66cfdeb558b05c500f9f6d2c5cc05057d..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/ihex.c +++ /dev/null @@ -1,229 +0,0 @@ -/* - * LPC 2000 Loader, http://www.pjrc.com/arm/lpc2k_pgm - * Copyright (c) 2004, PJRC.COM, LLC, <paul@pjrc.com> - * - * 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 2 - * of the License. - * - * This program 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, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -/* If this code fails to build, please provide at least the following - * information when requesting (free) technical support. - * - * 1: Complete copy of all messages during the build. - * 2: Output of "gtk-config --version" - * 3: Output of "gtk-config --libs" - * 4: Output of "gtk-config --cflags" - * 5: Output of "uname -a" - * 6: Version of GTK installed... eg, type: ls -l /lib/libgtk* - * 7: Other info... which linux distribution, version, other software - */ - -#include <stdio.h> -#include <string.h> - - -// the maximum flash image size we can support -// chips with larger memory may be used, but only this -// much intel-hex data can be loaded into memory! -#define MAX_MEMORY_SIZE 0x80000 - - -#include "ihex.h" - - -static unsigned char firmware_image[MAX_MEMORY_SIZE]; -static unsigned char firmware_mask[MAX_MEMORY_SIZE]; -static int end_record_seen=0; -static int byte_count; -static unsigned int extended_addr = 0; - - -static int parse_hex_line(char *line); - - -/****************************************************************/ -/* */ -/* Read Intel Hex File */ -/* */ -/****************************************************************/ - - - -int read_intel_hex(const char *filename) -{ - FILE *fp; - int i, lineno=0; - char buf[1024]; - - byte_count = 0; - end_record_seen = 0; - for (i=0; i<MAX_MEMORY_SIZE; i++) { - firmware_image[i] = 0xFF; - firmware_mask[i] = 0; - } - extended_addr = 0; - - fp = fopen(filename, "r"); - if (fp == NULL) { - printf("Unable to read file %s\n", filename); - return -1; - } - while (!feof(fp)) { - *buf = '\0'; - fgets(buf, sizeof(buf), fp); - lineno++; - if (*buf) { - if (parse_hex_line(buf) == 0) { - printf("Warning, parse error line %d\n", lineno); - return -2; - } - } - if (end_record_seen) break; - if (feof(stdin)) break; - } - fclose(fp); - return byte_count; -} - - -/* from ihex.c, at http://www.pjrc.com/tech/8051/pm2_docs/intel-hex.html */ - -/* parses a line of intel hex code, stores the data in bytes[] */ -/* and the beginning address in addr, and returns a 1 if the */ -/* line was valid, or a 0 if an error occured. The variable */ -/* num gets the number of bytes that were stored into bytes[] */ - - -int -parse_hex_line(char *line) -{ - int addr, code, num; - int sum, len, cksum, i; - char *ptr; - - num = 0; - if (line[0] != ':') return 0; - if (strlen(line) < 11) return 0; - ptr = line+1; - if (!sscanf(ptr, "%02x", &len)) return 0; - ptr += 2; - if (strlen(line) < (11 + (len * 2)) ) return 0; - if (!sscanf(ptr, "%04x", &addr)) return 0; - ptr += 4; - /* printf("Line: length=%d Addr=%d\n", len, addr); */ - if (!sscanf(ptr, "%02x", &code)) return 0; - if (addr + extended_addr + len >= MAX_MEMORY_SIZE) return 0; - ptr += 2; - sum = (len & 255) + ((addr >> 8) & 255) + (addr & 255) + (code & 255); - if (code != 0) { - if (code == 1) { - end_record_seen = 1; - return 1; - } - if (code == 2 && len == 2) { - if (!sscanf(ptr, "%04x", &i)) return 1; - ptr += 4; - sum += ((i >> 8) & 255) + (i & 255); - if (!sscanf(ptr, "%02x", &cksum)) return 1; - if (((sum & 255) + (cksum & 255)) & 255) return 1; - extended_addr = i << 4; - //printf("ext addr = %05X\n", extended_addr); - } - if (code == 4 && len == 2) { - if (!sscanf(ptr, "%04x", &i)) return 1; - ptr += 4; - sum += ((i >> 8) & 255) + (i & 255); - if (!sscanf(ptr, "%02x", &cksum)) return 1; - if (((sum & 255) + (cksum & 255)) & 255) return 1; - extended_addr = i << 16; - //printf("ext addr = %08X\n", extended_addr); - } - return 1; // non-data line - } - byte_count += len; - while (num != len) { - if (sscanf(ptr, "%02x", &i) != 1) return 0; - i &= 255; - firmware_image[addr + extended_addr + num] = i; - firmware_mask[addr + extended_addr + num] = 1; - ptr += 2; - sum += i; - (num)++; - if (num >= 256) return 0; - } - if (!sscanf(ptr, "%02x", &cksum)) return 0; - if (((sum & 255) + (cksum & 255)) & 255) return 0; /* checksum error */ - return 1; -} - - -int bytes_within_range(int begin, int end) -{ - int i; - - if (begin < 0 || begin >= MAX_MEMORY_SIZE || - end < 0 || end >= MAX_MEMORY_SIZE) { - return 0; - } - for (i=begin; i<=end; i++) { - if (firmware_mask[i]) return 1; - } - return 0; -} - -void get_ihex_data(int addr, int len, unsigned char *bytes) -{ - int i; - - if (addr < 0 || len < 0 || addr + len >= MAX_MEMORY_SIZE) { - for (i=0; i<len; i++) { - bytes[i] = 255; - } - return; - } - for (i=0; i<len; i++) { - if (firmware_mask[addr]) { - bytes[i] = firmware_image[addr]; - } else { - bytes[i] = 255; - } - addr++; - } -} - -void put_ihex_data(int addr, int len, const unsigned char *bytes) -{ - int i; - - if (addr < 0 || len < 0 || addr + len >= MAX_MEMORY_SIZE) { - return; - } - for (i=0; i<len; i++) { - firmware_image[addr] = bytes[i]; - firmware_mask[addr] = 1; - addr++; - } -} - - - - - - - - - - - diff --git a/board/msba2-common/tools/src/ihex.h b/board/msba2-common/tools/src/ihex.h deleted file mode 100644 index f6892381f519ffa44d5c439c3afc65243d02fd2c..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/ihex.h +++ /dev/null @@ -1,7 +0,0 @@ -extern int read_intel_hex(const char *filename); -extern int bytes_within_range(int begin, int end); -extern void get_ihex_data(int addr, int len, unsigned char *bytes); -extern void put_ihex_data(int addr, int len, const unsigned char *bytes); - - - diff --git a/board/msba2-common/tools/src/lpc2k_pgm.c b/board/msba2-common/tools/src/lpc2k_pgm.c deleted file mode 100644 index 4891c55946b02e40e21fbaa485076749f0b18ce0..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/lpc2k_pgm.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - * LPC 2000 Loader, http://www.pjrc.com/arm/lpc2k_pgm - * Copyright (c) 2004, PJRC.COM, LLC, <paul@pjrc.com> - * - * 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 2 - * of the License. - * - * This program 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, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -/* If this code fails to build, please provide at least the following - * information when requesting (free) technical support. - * - * 1: Complete copy of all messages during the build. - * 2: Output of "gtk-config --version" - * 3: Output of "gtk-config --libs" - * 4: Output of "gtk-config --cflags" - * 5: Output of "uname -a" - * 6: Version of GTK installed... eg, type: ls -l /lib/libgtk* - * 7: Other info... which linux distribution, version, other software - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <string.h> -#include <ctype.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <termios.h> -#include <sys/ioctl.h> - -#include "lpc2k_pgm.h" -#include "serial.h" -#include "download.h" - -int programming_done = 0; - -int done_program(int i) { - printf("Programming done.\n"); - programming_done = 1; - return 0; -} - -void handle_port_input() { - unsigned char buf[256]; - int num; - - num = read_serial_port(buf, sizeof(buf)); - if (num > 0) { - download_rx_port(buf, num); - } -} - -void usage() { - printf("usage: lpc2k_pgm <port> <ihex-file>\n"); -} - -int main(int argc, char **argv) -{ - if (argc < 3 ) { - usage(); - exit(1); - } - - char* port_name = argv[1]; - char* file_name = argv[2]; - - if (open_serial_port(port_name) < 0) { - return(1); - } - - if (!download_begin(file_name)) { - return 1; - } - while (!programming_done) { - handle_port_input(); - } - - close_serial_port(); - - return 0; -} - diff --git a/board/msba2-common/tools/src/lpc2k_pgm.h b/board/msba2-common/tools/src/lpc2k_pgm.h deleted file mode 100644 index 0a5f5a7eebc3032eba5b1e74bf0a6118b25690b1..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/lpc2k_pgm.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef LPC2K_PGM -#define LPC2K_PGM - -/* gets a name like "115200", sets baudrate accordingly. */ -void change_baud(const char *baud_name); - -/* called before/after using serial device, used to have terminal - * close the device. -*/ -void signal_terminal(); - -#endif // LPC2K_PGM diff --git a/board/msba2-common/tools/src/pseudoterm.c b/board/msba2-common/tools/src/pseudoterm.c deleted file mode 100644 index cf17d99703aed4b110ae2f0faa6b616d91537d60..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/pseudoterm.c +++ /dev/null @@ -1,156 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <string.h> -#include <ctype.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <termios.h> -#include <sys/ioctl.h> -#include <signal.h> - -#include "serial.h" -#include "pthread.h" -#include "download.h" - -int tty_fd; -int stopped = 0; -char* port_name = "/dev/ttyUSB1"; -pthread_t serial_reader; - -void* serial_reader_func(void* arg) { - unsigned char buf[255]; - while(1) { - int n = read_serial_port(buf, sizeof(buf)); - if (n > 0) { - write(tty_fd, buf, n); - } - } -} - -int init() { - int result = open_serial_port(port_name); - pthread_create(&serial_reader, NULL, serial_reader_func, NULL); - hard_reset_to_user_code(); - return result; -} - -struct termios old_term_setting; - -void close_tty() { - tcsetattr(tty_fd, TCSANOW, &old_term_setting); -} - -void sig_handler(int signal) { - if (signal == SIGUSR1) { - if (stopped) { - stopped = 0; - printf("\nSignal received, opening port.\r\n"); - if (init() < 0) { - printf("Cannot open port.\r\n"); - close_tty(); - exit(1); - } - } - } else if (signal == SIGUSR2) { - if (!stopped) { - stopped = 1; - printf("\nSignal received, closing port. \r\n"); - pthread_cancel(serial_reader); - close_serial_port(); - } - } else if (signal == SIGINT) { - printf("SIGINT received, exiting...\n"); - pthread_cancel(serial_reader); - close_serial_port(); - close_tty(); - exit(0); - } -} - -int open_tty(void) -{ - int r, fd; - struct termios term_setting; - - fd = open("/dev/tty", O_RDWR); - if (fd < 0) return -1; - r = tcgetattr(fd, &term_setting); - if (r != 0) return -2; - - old_term_setting = term_setting; - - term_setting.c_oflag |= ( ONLRET ); - term_setting.c_iflag |= (/*IGNBRK |*/ BRKINT | IGNPAR); - term_setting.c_iflag &= ~(ISTRIP); - term_setting.c_lflag &= ~(ICANON |/* ISIG |*/ ECHO); - term_setting.c_lflag |= ( ISIG ); - term_setting.c_cflag |= CREAD; - term_setting.c_cc[VMIN] = 1; - term_setting.c_cc[VTIME] = 1; - r = tcsetattr(fd, TCSANOW, &term_setting); - if (r != 0) return -3; - return fd; -} - -void install_sighandler() { - struct sigaction action; - sigemptyset (&action.sa_mask); - sigaddset( &action.sa_mask, SIGINT ); - sigaddset( &action.sa_mask, SIGUSR1 ); - sigaddset( &action.sa_mask, SIGUSR2 ); - action.sa_flags = 0; - action.sa_handler = sig_handler; - sigaction(SIGINT, &action, NULL); - sigaction(SIGUSR1, &action, NULL); - sigaction(SIGUSR2, &action, NULL); -} - -int main(int argc, char** argv) { - if (argc == 2) { - port_name = argv[1]; - } - - printf("Using %s as serial device.\n", port_name); - - char ttybuf[255]; - tty_fd = open_tty(); - if (tty_fd < 0) { - printf("Error opening terminal.\n"); - return(1); - } - - install_sighandler(); - - if (init() < 0) { - printf("Cannot open port.\r\n"); - exit(1); - } - - while (1) { - int n = read(tty_fd, ttybuf, sizeof(ttybuf)); - int i; - - /* check for 0x3 (ctrl-c), clean exit */ - for (i = 0; i < n; i++) { - if (ttybuf[i] == 0x3) { - if (i > 0) { - write_serial_port(ttybuf, i); - } - close_serial_port(); - close_tty(); - system("tset -c"); - return 0; - } - - } - write_serial_port(ttybuf,n); - } - - close_tty(); - close_serial_port(); - return 0; -} - - diff --git a/board/msba2-common/tools/src/serial.c b/board/msba2-common/tools/src/serial.c deleted file mode 100644 index cd51e1cc5c790a05251e84c03f77dd548311561f..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/serial.c +++ /dev/null @@ -1,350 +0,0 @@ -/* - * LPC 2000 Loader, http://www.pjrc.com/arm/lpc2k_pgm - * Copyright (c) 2004, PJRC.COM, LLC, <paul@pjrc.com> - * - * 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 2 - * of the License. - * - * This program 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, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -/* If this code fails to build, please provide at least the following - * information when requesting (free) technical support. - * - * 1: Complete copy of all messages during the build. - * 2: Output of "gtk-config --version" - * 3: Output of "gtk-config --libs" - * 4: Output of "gtk-config --cflags" - * 5: Output of "uname -a" - * 6: Version of GTK installed... eg, type: ls -l /lib/libgtk* - * 7: Other info... which linux distribution, version, other software - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <string.h> -#include <errno.h> -#include <ctype.h> -#include <pwd.h> -#include <grp.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <termios.h> -#include <sys/ioctl.h> -#ifdef LINUX -#include <linux/serial.h> -#endif - -#include "serial.h" - -static int port_fd=-1; - -static tcflag_t baud_name_to_flags(const char *baud_name); -static void report_open_error(const char *filename, int err); - -char* baud_rate = "115200"; - -int open_serial_port(const char *port_name) -{ - int r; - - if (port_fd >= 0) { - close(port_fd); - } - port_fd = open(port_name, O_RDWR); - if (port_fd < 0) { - report_open_error(port_name, errno); - return -1; - } - r = set_baud(baud_rate); - if (r == 0) { - printf("Port \"%s\" opened at %s baud\r\n", - port_name, baud_rate); - } else { - printf("Port \"%s\" opened, unable to set baud to %s\r\n", - port_name, baud_rate); - } - #ifdef LINUX - { - struct serial_struct kernel_serial_settings; - /* attempt to set low latency mode, but don't worry if we can't */ - r = ioctl(port_fd, TIOCGSERIAL, &kernel_serial_settings); - if (r < 0) return 0; - kernel_serial_settings.flags |= ASYNC_LOW_LATENCY; - ioctl(port_fd, TIOCSSERIAL, &kernel_serial_settings); - } - #endif - return 0; -} - - -/* if the port can't be opened, try to print as much info as - * possible, so the problem can be resolved (usually permissions) - */ -static void report_open_error(const char *filename, int err) -{ - struct stat info; - uid_t my_uid; - gid_t my_gid; - char my_uname[64], my_gname[64], file_uname[64], file_gname[64]; - struct passwd *p; - struct group *g; - mode_t perm; - int r, perm_ok=0; - - printf("\r\n"); - printf("Unable to open \"%s\"\r\n", filename); - if (err == EACCES) { - printf("You don't have permission to access %s\r\n", filename); - } - //printf("Attemping to find more information about %s....\r\n", filename); - r = stat(filename, &info); - if (r < 0) { - if (errno == ENOENT) { - printf("file %s does not exist\r\n", filename); - } else if (errno == ELOOP) { - printf("too many symbolic links\r\n"); - } else if (errno == EACCES) { - printf("permission denied to get file status\r\n"); - } else { - printf("Unable to get file status, err%d\r\n", errno); - } - return; - } - my_uid = getuid(); - my_gid = getgid(); - - p = getpwuid(my_uid); - if (p) { - snprintf(my_uname, sizeof(my_uname), - "\"%s\" (gid=%d)", p->pw_name, (int)my_uid); - } else { - snprintf(my_uname, sizeof(my_uname), - "(gid=%d)", (int)my_uid); - } - - p = getpwuid(info.st_uid); - if (p) { - snprintf(file_uname, sizeof(file_uname), - "\"%s\" (uid=%d)", p->pw_name, (int)info.st_uid); - } else { - snprintf(file_uname, sizeof(file_uname), - "(uid=%d)", (int)info.st_uid); - } - - g = getgrgid(my_gid); - if (g) { - snprintf(my_gname, sizeof(my_gname), - "\"%s\" (gid=%d)", g->gr_name, (int)my_gid); - } else { - snprintf(my_gname, sizeof(my_gname), - "(gid=%d)", (int)my_gid); - } - - g = getgrgid(info.st_gid); - if (g) { - snprintf(file_gname, sizeof(file_gname), - "\"%s\" (uid=%d)", g->gr_name, (int)info.st_gid); - } else { - snprintf(file_gname, sizeof(file_gname), - "(uid=%d)", (int)info.st_gid); - } - - /* printf("%s is owned by: user %s, group %s\r\n", - filename, file_uname, file_gname); */ - - perm = info.st_mode; - - if ((perm & S_IROTH) && (perm & S_IWOTH)) { - printf("%s has read/write permission for everybody\r\n", - filename); - } else { - printf("%s is not read/write for everybody, so\r\n", filename); - printf(" you must match either user or group permission\r\n"); - if ((perm & S_IRUSR) && (perm & S_IWUSR)) { - printf("%s has read/write permission for user %s\r\n", - filename, file_uname); - perm_ok = 1; - } - if ((perm & S_IRGRP) && (perm & S_IWGRP)) { - printf("%s has read/write permission for group %s\r\n", - filename, file_gname); - perm_ok = 1; - } - if (perm_ok == 0) { - printf("%s does not read/write permission for user or group!\r\n", - filename); - } else { - printf("Your access privs: user %s, group %s\r\n", - my_uname, my_gname); - } - } - printf("\r\n"); -} - - - -int write_serial_port(const void *buf, int num) -{ - return(write(port_fd, buf, num)); -} - - -void input_flush_serial_port(void) -{ - tcflush(port_fd, TCIFLUSH); -} - - -int read_serial_port_nb(unsigned char *buf, int bufsize) -{ - int num, flags; - - flags = fcntl(port_fd, F_GETFL); - fcntl(port_fd, F_SETFL, flags | O_NONBLOCK); - num = read(port_fd, buf, bufsize); - fcntl(port_fd, F_SETFL, flags); - return num; -} - -int read_serial_port(unsigned char *buf, int bufsize) -{ - int num; - - num = read(port_fd, buf, bufsize); - - return num; -} - - -void send_break_signal(void) -{ - tcsendbreak(port_fd, 0); -} - - -void close_serial_port(void) -{ - if (port_fd >= 0) { - close(port_fd); - port_fd = -1; - } -} - - -tcflag_t baud_name_to_flags(const char *baud_name) -{ - if (strcmp(baud_name, "230400") == 0) return B230400; - if (strcmp(baud_name, "115200") == 0) return B115200; - if (strcmp(baud_name, "57600") == 0) return B57600; - if (strcmp(baud_name, "38400") == 0) return B38400; - if (strcmp(baud_name, "19200") == 0) return B19200; - if (strcmp(baud_name, "9600") == 0) return B9600; - if (strcmp(baud_name, "4800") == 0) return B4800; - if (strcmp(baud_name, "2400") == 0) return B2400; - if (strcmp(baud_name, "1200") == 0) return B1200; - if (strcmp(baud_name, "300") == 0) return B300; - return B0; -} - - -int set_baud(const char *baud_name) -{ - struct termios port_setting; - tcflag_t baud; - int r; - - if (port_fd < 0) return -1; - baud = baud_name_to_flags(baud_name); - if (baud == B0) return -2; - r = tcgetattr(port_fd, &port_setting); - if (r != 0) return -3; - //port_setting.c_iflag = IGNBRK | IGNPAR | IXANY | IXON; - port_setting.c_iflag = IGNBRK | IGNPAR; - port_setting.c_cflag = baud | CS8 | CREAD | HUPCL | CLOCAL; - port_setting.c_oflag = 0; - port_setting.c_lflag = 0; - r = tcsetattr(port_fd, TCSAFLUSH, &port_setting); - if (r != 0) return -4; - return 0; -} - - -// Normally this should never be used... except to pass the port -// file descriptor to the GTK event monitoring loop. All other -// use of the serial port is supposed to happen in the file. -int serial_port_fd(void) -{ - return port_fd; -} - - - -void set_rts(int val) -{ - int flags; - int result; - - result = ioctl(port_fd, TIOCMGET, &flags); - if( result == -1 ) { - printf("Error %i while reading port io flags\n", errno); - return; - } - - if (val) { - flags |= TIOCM_RTS; - } else { - flags &= ~(TIOCM_RTS); - } - - result = ioctl(port_fd, TIOCMSET, &flags); - if( result == -1 ) - printf("Error %i while setting port io flags\n", errno); -} - - - - - - - -void set_dtr(int val) -{ - int flags; - int result; - - result = ioctl(port_fd, TIOCMGET, &flags); - if( result == -1 ) { - printf("Error %i while reading port io flags\n", errno); - return; - } - - if (val) { - flags |= TIOCM_DTR; - } else { - flags &= ~(TIOCM_DTR); - } - - result = ioctl(port_fd, TIOCMSET, &flags); - if( result == -1 ) - printf("Error %i while setting port io flags\n", errno); -} - - - - - - diff --git a/board/msba2-common/tools/src/serial.h b/board/msba2-common/tools/src/serial.h deleted file mode 100644 index 4ef9a82e5bc151404d3f0ed23785ccadc4032bc3..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/serial.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef SERIAL_H -#define SERIAL_H - -extern char* baud_rate; - -int open_serial_port(const char *port_name); -int write_serial_port(const void *buf, int num); -void input_flush_serial_port(void); -int read_serial_port_nb(unsigned char *buf, int bufsize); -int read_serial_port(unsigned char *buf, int bufsize); -void close_serial_port(void); -void send_break_signal(void); -int set_baud(const char *baud_name); -int serial_port_fd(void); -void set_rts(int val); -void set_dtr(int val); -void change_baud(const char *baud_name); - -#endif // SERIAL_H diff --git a/board/msba2-common/tools/src/settings.c b/board/msba2-common/tools/src/settings.c deleted file mode 100644 index d52e24a03f5ccfba5a2b682e5062aa218ed916c2..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/settings.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * LPC 2000 Loader, http://www.pjrc.com/arm/lpc2k_pgm - * Copyright (c) 2004, PJRC.COM, LLC, <paul@pjrc.com> - * - * 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 2 - * of the License. - * - * This program 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, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -/* If this code fails to build, please provide at least the following - * information when requesting (free) technical support. - * - * 1: Complete copy of all messages during the build. - * 2: Output of "gtk-config --version" - * 3: Output of "gtk-config --libs" - * 4: Output of "gtk-config --cflags" - * 5: Output of "uname -a" - * 6: Version of GTK installed... eg, type: ls -l /lib/libgtk* - * 7: Other info... which linux distribution, version, other software - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> - -#include "settings.h" - -#define DEFAULT_FILE "" -#define DEFAULT_PORT "/dev/ttyS0" -#define DEFAULT_BAUD "115200" -#define DEFAULT_CRYSTAL "16" - -char *baud_list[]={"115200", "57600", "38400", - "19200", "9600", "4800", "2400", "1200", "300", NULL}; - -static char file[128]={DEFAULT_FILE}; -static char port[64]={DEFAULT_PORT}; -static char baud[64]={DEFAULT_BAUD}; -static char crystal[64]={DEFAULT_CRYSTAL}; - -static char settings_file[256]={'\0'}; - - -void init_settings(void) -{ - const char *home_dir; - FILE *fp; - char buf[1024], *p, *q; - - home_dir = getenv("HOME"); - if (home_dir && *home_dir) { - snprintf(settings_file, sizeof(settings_file), - "%s/.lpc2k_pgm", home_dir); - fp = fopen(settings_file, "r"); - if (fp == NULL) return; - while (!feof(fp)) { - buf[0] = '\0'; - fgets(buf, sizeof(buf), fp); - if (strncmp(buf, "file:", 5) == 0) { - for (p=buf+5; isspace(*p); p++) ; - q = rindex(p, '\n'); if (q) *q = '\0'; - q = rindex(p, '\r'); if (q) *q = '\0'; - snprintf(file, sizeof(file), "%s", p); - } - if (strncmp(buf, "port:", 5) == 0) { - for (p=buf+5; isspace(*p); p++) ; - q = rindex(p, '\n'); if (q) *q = '\0'; - q = rindex(p, '\r'); if (q) *q = '\0'; - snprintf(port, sizeof(port), "%s", p); - } - if (strncmp(buf, "baud:", 5) == 0) { - for (p=buf+5; isspace(*p); p++) ; - q = rindex(p, '\n'); if (q) *q = '\0'; - q = rindex(p, '\r'); if (q) *q = '\0'; - snprintf(baud, sizeof(baud), "%s", p); - } - if (strncmp(buf, "xtal:", 5) == 0) { - for (p=buf+5; isspace(*p); p++) ; - q = rindex(p, '\n'); if (q) *q = '\0'; - q = rindex(p, '\r'); if (q) *q = '\0'; - snprintf(crystal, sizeof(crystal), "%s", p); - } - } - fclose(fp); - } -} - -void write_settings_file(void) -{ - FILE *fp; - - if (settings_file[0] == '\0') return; - fp = fopen(settings_file, "w"); - if (fp == NULL) return; - fprintf(fp, "file: %s\n", file); - fprintf(fp, "port: %s\n", port); - fprintf(fp, "baud: %s\n", baud); - fprintf(fp, "xtal: %s\n", crystal); - fflush(fp); - fclose(fp); -} - -const char * file_setting(void) -{ - return file; -} - -const char * port_setting(void) -{ - return port; -} - -const char * baud_setting(void) -{ - return baud; -} - -const char * crystal_setting(void) -{ - return crystal; -} - -void new_file_setting(const char *new_file) -{ - if (strcmp(file, new_file)) { - snprintf(file, sizeof(file), "%s", new_file); - write_settings_file(); - } -} - -void new_port_setting(const char *new_port) -{ - if (strcmp(port, new_port)) { - snprintf(port, sizeof(port), "%s", new_port); - write_settings_file(); - } -} - -void new_baud_setting(const char *new_baud) -{ - if (strcmp(baud, new_baud)) { - snprintf(baud, sizeof(baud), "%s", new_baud); - write_settings_file(); - } -} - -void new_crystal_setting(const char *new_xtal) -{ - if (strcmp(crystal, new_xtal)) { - snprintf(crystal, sizeof(crystal), "%s", new_xtal); - write_settings_file(); - } -} - - - - - - diff --git a/board/msba2-common/tools/src/settings.h b/board/msba2-common/tools/src/settings.h deleted file mode 100644 index 20686821a4bc69bbc7e55124c1c39b31a93f3cf0..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/settings.h +++ /dev/null @@ -1,12 +0,0 @@ - -extern void init_settings(void); -extern const char * file_setting(void); -extern const char * port_setting(void); -extern const char * baud_setting(void); -extern const char * crystal_setting(void); -extern void new_file_setting(const char *new_file); -extern void new_port_setting(const char *new_port); -extern void new_baud_setting(const char *new_baud); -extern void new_crystal_setting(const char *new_xtal); - -extern char *baud_list[]; diff --git a/board/msba2-common/tools/src/uuencode.c b/board/msba2-common/tools/src/uuencode.c deleted file mode 100644 index 5cc76e796c6ece3203030aaa9dca1506b532a370..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/uuencode.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * LPC 2000 Loader, http://www.pjrc.com/arm/lpc2k_pgm - * Copyright (c) 2004, PJRC.COM, LLC, <paul@pjrc.com> - * - * 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 2 - * of the License. - * - * This program 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, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -/* If this code fails to build, please provide at least the following - * information when requesting (free) technical support. - * - * 1: Complete copy of all messages during the build. - * 2: Output of "gtk-config --version" - * 3: Output of "gtk-config --libs" - * 4: Output of "gtk-config --cflags" - * 5: Output of "uname -a" - * 6: Version of GTK installed... eg, type: ls -l /lib/libgtk* - * 7: Other info... which linux distribution, version, other software - */ - -#include "uuencode.h" - -static char uuchar(unsigned int val); - - -void uuencode(char *str, const unsigned char *data, int num) -{ - int i, n; - unsigned int val; - - *str++ = uuchar(num); - - n = (num + 2) / 3; - for (i=0; i<n; i++) { - val = ((data[0] & 0xFF) << 16) - | ((data[1] & 0xFF) << 8) - | ((data[2] & 0xFF) << 0); - *str++ = uuchar(val >> 18); - *str++ = uuchar(val >> 12); - *str++ = uuchar(val >> 6); - *str++ = uuchar(val >> 0); - data += 3; - } - *str = '\0'; -} - -int uudecode(const char *str, unsigned char *data, int max) -{ - int num=0; - int i, n; - unsigned int val; - - if (*str == '\0') return 0; - - num = *str++ - 32; - if (num < 1 || num > 45) return 0; - - n = (num + 2) / 3; - for (i=0; i<n; i++) { - if (str[0] < 32 || str[0] > 96) return 0; - if (str[1] < 32 || str[1] > 96) return 0; - if (str[2] < 32 || str[2] > 96) return 0; - if (str[3] < 32 || str[3] > 96) return 0; - val = (((str[0] - 32) & 0x3F) << 18) - | (((str[1] - 32) & 0x3F) << 12) - | (((str[2] - 32) & 0x3F) << 6) - | (((str[3] - 32) & 0x3F) << 0); - *data++ = (val >> 16) & 0xFF; - *data++ = (val >> 8) & 0xFF; - *data++ = (val >> 0) & 0xFF; - str += 4; - } - return num; -} - - -static char uuchar(unsigned int val) -{ - val &= 0x3F; - val += 0x20; - if (val == 0x20) val = 0x60; - return val; -} - - - diff --git a/board/msba2-common/tools/src/uuencode.h b/board/msba2-common/tools/src/uuencode.h deleted file mode 100644 index 92fecb7d33c3f391f9e9724436396cf89ff2c5ad..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/src/uuencode.h +++ /dev/null @@ -1,3 +0,0 @@ -extern void uuencode(char *str, const unsigned char *data, int num); -extern int uudecode(const char *str, unsigned char *data, int max); - diff --git a/board/msba2-common/tools/termctrl.sh b/board/msba2-common/tools/termctrl.sh deleted file mode 100755 index 75e87ab21e336d0562e7dd4aaa8caa9abf0bce43..0000000000000000000000000000000000000000 --- a/board/msba2-common/tools/termctrl.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -pid=`pgrep pseudoterm` - -if test "$pid" = "" ; then - - echo " Pseudoterm not running." - -else - - if test "$1" = "continue" ; then - kill -s USR1 $pid; - elif test "$1" = "pause" ; then - kill -s USR2 $pid ; - elif test "$1" = "stop" ; then - kill $pid ; - else - echo "Usage:"; - echo "termctrl.sh continue/pause/stop"; - fi - -fi diff --git a/board/msba2/Jamfile b/board/msba2/Jamfile deleted file mode 100644 index 6e74471b63f0400046225682f171d15e53095a31..0000000000000000000000000000000000000000 --- a/board/msba2/Jamfile +++ /dev/null @@ -1,34 +0,0 @@ -# ****************************************************************************** -# 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$ - -SubDir TOP board $(BOARD) ; - -Module board : board_init.c : board_common board_uart ; -UseModule board ; - -SubInclude TOP board $(BOARD)-common ; -SubInclude TOP cpu $(CPU) ; diff --git a/board/msba2/Jamrules.msba2 b/board/msba2/Jamrules.msba2 deleted file mode 100644 index 22c8a880606d8fc47e6b251f7ceef4038698ce32..0000000000000000000000000000000000000000 --- a/board/msba2/Jamrules.msba2 +++ /dev/null @@ -1 +0,0 @@ -include board/msba2-common/Jamrules.msba2 ; diff --git a/board/msba2/board_init.c b/board/msba2/board_init.c deleted file mode 100644 index f250109c088efa568b75cce74b31d1d18fa55797..0000000000000000000000000000000000000000 --- a/board/msba2/board_init.c +++ /dev/null @@ -1,40 +0,0 @@ -#include <board.h> -#include <cpu.h> - -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_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(); -} - diff --git a/board/msba2/include/board.h b/board/msba2/include/board.h deleted file mode 100644 index 2b1f28fd2a622c4fdcb8ae9619b8e1bbf6aebbc2..0000000000000000000000000000000000000000 --- a/board/msba2/include/board.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef __BOARD_H -#define __BOARD_H - -#include <msba2_common.h> -#include <bitarithm.h> - -#define LED_RED_PIN (BIT25) -#define LED_GREEN_PIN (BIT26) - -#define LED_GREEN_OFF (FIO3SET = LED_GREEN_PIN) -#define LED_GREEN_ON (FIO3CLR = LED_GREEN_PIN) -#define LED_GREEN_TOGGLE (FIO3PIN ^= LED_GREEN_PIN) - -#define LED_RED_OFF (FIO3SET = LED_RED_PIN) -#define LED_RED_ON (FIO3CLR = LED_RED_PIN) -#define LED_RED_TOGGLE (FIO3PIN ^= LED_RED_PIN) - -#endif /* __BOARD_H */ diff --git a/board/olimex_lpc2148/Jamfile b/board/olimex_lpc2148/Jamfile deleted file mode 100644 index 43ad7d1baf54452c25c51814b2477498fc632a05..0000000000000000000000000000000000000000 --- a/board/olimex_lpc2148/Jamfile +++ /dev/null @@ -1,10 +0,0 @@ -SubDir TOP board olimex_lpc2148 ; - -CPU = lpc214x ; - -HDRS += $(TOP)/board/olimex_lpc2148/include ; - -Module board : board_init.c debug_uart.c rs232.c ; -UseModule board ; - -SubInclude TOP cpu lpc214x ; diff --git a/board/olimex_lpc2148/Jamfile.olimex_lpc2148 b/board/olimex_lpc2148/Jamfile.olimex_lpc2148 deleted file mode 100644 index 057aa7b322832092346e463e6d23659a30bb7877..0000000000000000000000000000000000000000 --- a/board/olimex_lpc2148/Jamfile.olimex_lpc2148 +++ /dev/null @@ -1,4 +0,0 @@ -################## - -include $(TOP)/Jamfile.arm_common ; - diff --git a/board/olimex_lpc2148/Jamrules.olimex_lpc2148 b/board/olimex_lpc2148/Jamrules.olimex_lpc2148 deleted file mode 100644 index 7a7086d5bca4e07e7acaceecf243325b5cacfff2..0000000000000000000000000000000000000000 --- a/board/olimex_lpc2148/Jamrules.olimex_lpc2148 +++ /dev/null @@ -1,9 +0,0 @@ -############################ - -BOARD = olimex_lpc2148 ; -CPU = lpc214x ; - -GDB = arm-elf-gdb ; -GDBFLAGS = -x board/olimex_lpc2148/tools/lpc2148_flash.gdb ; - -include $(TOP)/Jamrules.arm_common ; diff --git a/board/olimex_lpc2148/board_init.c b/board/olimex_lpc2148/board_init.c deleted file mode 100644 index 874feb88120a0da24985d99c951bbf5d487f5da8..0000000000000000000000000000000000000000 --- a/board/olimex_lpc2148/board_init.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * bl_board_init.c - * - * Created on: 19.08.2008 - * Author: heiko, kaspar - */ - -#include "cpu.h" -#include "bits.h" -#include "VIC.h" - -#define PLOCK 0x400 - -static void feed(void) -{ - PLL0FEED = 0xAA; - PLL0FEED = 0x55; -} - -void bl_init_clks(void) -{ - - // Setting the Phased Lock Loop (PLL) - // ---------------------------------- - // - // Olimex LPC-P2148 has a 12.0000 mhz crystal - // - // We'd like the LPC2148 to run at 60 mhz (has to be an even multiple of crystal) - // - // According to the Philips LPC2148 manual: M = cclk / Fosc where: M = PLL multiplier (bits 0-4 of PLLCFG) - // cclk = 60000000 hz - // Fosc = 12000000 hz - // - // Solving: M = 60000000 / 12000000 = 5 - // - // Note: M - 1 must be entered into bits 0-4 of PLLCFG (assign 4 to these bits) - // - // - // The Current Controlled Oscilator (CCO) must operate in the range 156 mhz to 320 mhz - // - // According to the Philips LPC2148 manual: Fcco = cclk * 2 * P where: Fcco = CCO frequency - // cclk = 60000000 hz - // P = PLL divisor (bits 5-6 of PLLCFG) - // - // Solving: Fcco = 60000000 * 2 * P - // P = 2 (trial value) - // Fcco = 60000000 * 2 * 2 - // Fcc0 = 240000000 hz (good choice for P since it's within the 156 mhz to 320 mhz range) - // - // From Table 22 (page 34) of Philips LPC2148 manual P = 2, PLLCFG bits 5-6 = 1 (assign 1 to these bits) - // - // Finally: PLLCFG = 0 01 00100 = 0x24 - // - // Final note: to load PLLCFG register, we must use the 0xAA followed 0x55 write sequence to the PLLFEED register - // this is done in the short function feed() below - // - - // Setting Multiplier and Divider values - PLL0CFG = 0x24; - feed(); - - // Enabling the PLL */ - PLL0CON = 0x1; - feed(); - - // Wait for the PLL to lock to set frequency - while(!(PLL0STAT & PLOCK)) ; - - // Connect the PLL as the clock source - PLL0CON = 0x3; - feed(); - - // Enabling MAM and setting number of clocks used for Flash memory fetch - MAMTIM = 0x3; - MAMCR = 0x2; - - // Setting peripheral Clock (pclk) to 1/2 System Clock (cclk) - VPBDIV = PCLK_DIV; -} - - - - -void bl_init_ports(void) -{ - -} - diff --git a/board/olimex_lpc2148/debug_uart.c b/board/olimex_lpc2148/debug_uart.c deleted file mode 100644 index 90f5144dfefb70e413c15967157d0027b69eea94..0000000000000000000000000000000000000000 --- a/board/olimex_lpc2148/debug_uart.c +++ /dev/null @@ -1,14 +0,0 @@ -#include "lpc214x.h" -#include "bits.h" - -#include "rs232.h" - -void debug_putchar(int character) -{ - UART1WriteChar(character); -} - -void bl_uart_init(void) -{ - UART1Initialize(115200U); -} diff --git a/board/olimex_lpc2148/include/board.h b/board/olimex_lpc2148/include/board.h deleted file mode 100644 index eaf536b005b495c6135ff2f66538d7c169023f5d..0000000000000000000000000000000000000000 --- a/board/olimex_lpc2148/include/board.h +++ /dev/null @@ -1 +0,0 @@ -#include <lpc2148.h> diff --git a/board/olimex_lpc2148/include/rs232.h b/board/olimex_lpc2148/include/rs232.h deleted file mode 100644 index 9fe0bf2c872b85df85d0587f0bb8d4025e8fb1cd..0000000000000000000000000000000000000000 --- a/board/olimex_lpc2148/include/rs232.h +++ /dev/null @@ -1,40 +0,0 @@ -//rs232.h -//#include <iolpc2138.h> - -#include "lpc214x.h" - -//#define OSCILLATOR_CLOCK_FREQUENCY 14745600 //in MHz -#define OSCILLATOR_CLOCK_FREQUENCY 12000000 //in MHz - -//get real processor clock frequency -unsigned int processorClockFrequency(void); -//get peripheral clock frequency -unsigned int peripheralClockFrequency(void); - -/**** UART0 ****/ -//initialize UART0 interface -void UART0Initialize(unsigned int baud); -//write char to UART0 (RS232); -void UART0WriteChar(int ch0); -//read char from RS232 -unsigned char UART0ReadChar(void); - -//this function read/write char from RS232, -//but they not wait to read/write -unsigned char UART0ReadChar_nostop(void); -void UART0WriteChar_nostop(unsigned char ch0); - - -/**** UART1 ****/ -//initialize UART0 interface -void UART1Initialize(unsigned int baud); -//write char to UART0 (RS232); -void UART1WriteChar(int ch0); -//read char from RS232 -unsigned char UART0ReadChar(void); - -//this function read/write char from RS232, -//but they not wait to read/write -unsigned char UART1ReadChar_nostop(void); -void UART1WriteChar_nostop(unsigned char ch0); - diff --git a/board/olimex_lpc2148/rs232.c b/board/olimex_lpc2148/rs232.c deleted file mode 100644 index 43e70a00f21cf76d20e530490b663615087d0e5b..0000000000000000000000000000000000000000 --- a/board/olimex_lpc2148/rs232.c +++ /dev/null @@ -1,65 +0,0 @@ -//rs232.c -#include "rs232.h" - -unsigned int processorClockFrequency(void) -{ - //return real processor clock speed - return OSCILLATOR_CLOCK_FREQUENCY * (PLL0CON & 1 ? (PLL0CFG & 0xF) + 1 : 1); -} - -unsigned int peripheralClockFrequency(void) -{ - //VPBDIV - determines the relationship between the processor clock (cclk) - //and the clock used by peripheral devices (pclk). - unsigned int divider = 0; - switch (VPBDIV & 3) - { - case 0: divider = 4; break; - case 1: divider = 1; break; - case 2: divider = 2; break; - } - return processorClockFrequency() / divider; -} - -/**** UART0 ****/ -void UART1Initialize(unsigned int baud) -{ - unsigned int divisor = peripheralClockFrequency() / (16 * baud); - - //set Line Control Register (8 bit, 1 stop bit, no parity, enable DLAB) -// U0LCR_bit.WLS = 0x3; //8 bit -// U0LCR_bit.SBS = 0x0; //1 stop bit -// U0LCR_bit.PE = 0x0; //no parity -// U0LCR_bit.DLAB = 0x1; //enable DLAB - //with one row - U1LCR = 0x83; - - - //devisor - U1DLL = divisor & 0xFF; - U1DLM = (divisor >> 8) & 0xFF; - U1LCR &= ~0x80; - - //set functionalite to pins: port0.0 -> TX0, port0.1 -> RXD0 -// PINSEL0_bit.P0_0 = 0x1; -// PINSEL0_bit.P0_1 = 0x1; - //with one row - PINSEL0 |= BIT16; - PINSEL0 &= ~BIT17; - -} - -void UART1WriteChar(int ch0) -{ - while (!(U1LSR & BIT5)); - U1THR = ch0; -} - -unsigned char UART0ReadChar(void) -{ - //when U0LSR_bit.DR is 1 - U0RBR contains valid data -// while (U0LSR_bit.DR == 0); - return U0RBR; -} - - diff --git a/board/olimex_lpc2148/tick.c b/board/olimex_lpc2148/tick.c deleted file mode 100644 index 4b8912607b4c3f7514e72cc4e979296f42291269..0000000000000000000000000000000000000000 --- a/board/olimex_lpc2148/tick.c +++ /dev/null @@ -1,63 +0,0 @@ -/* Copyright (C) 2005, 2006, 2007, 2008 by Thomas Hillebrandt and Heiko Will - -This file is part of the Micro-mesh SensorWeb Firmware. - -Micro-Mesh 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, or (at your option) -any later version. - -Micro-Mesh 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 Micro-Mesh; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -#include "lpc214x.h" -#include "bits.h" -//#include "tick.h" -#include "minimal_dbg_console.h" -#include "VIC.h" - -void Timer0_IRQHandler (void) __attribute__((interrupt("IRQ"))); - -extern void eINT(); -extern void dINT(); - - -void driver_timer_load(void) -{ - T0TCR = 0; // Disable timer 0. - T0PR = 3000; // Prescaler is set to relevant pclk , counter is incremented every T0PR tact. - T0CCR = 0; // Capture is disabled. - T0EMR = 0; // No external match output. - T0TC= 0; - T0MR0= 1000; - T0MCR|= BIT0 + BIT1; - T0TCR = BIT0; // Enable timer 0. - - dINT(); // Disable all interrupts - VICIntEnable = BIT4; // Enable Interrupthandling for Timer0 - VICVectCntl3 = 4 + BIT5; // Assign Timer0 to IRQ Slot 3 - VICVectAddr3 = (unsigned int)Timer0_IRQHandler; // Assign Isr Address - eINT(); -} - -int counter = 0; - -void Timer0_IRQHandler (void) -{ - extern unsigned int sched_context_switch_request; - counter++; - T0IR |= 0xff; // reset timer1 interrupt flag - sl_printf("#"); - - sched_context_switch_request = 1; - - VICVectAddr = 0; // acknowledge interrupt (if using VIC IRQ) -} - diff --git a/board/olimex_lpc2148/tools/lpc2148_flash.gdb b/board/olimex_lpc2148/tools/lpc2148_flash.gdb deleted file mode 100644 index cb308752aecedf4af6232dd52bb479692fd9eddd..0000000000000000000000000000000000000000 --- a/board/olimex_lpc2148/tools/lpc2148_flash.gdb +++ /dev/null @@ -1,22 +0,0 @@ -#winheight regs 11 -set history save on -set history size 1000 -target remote localhost:3333 -monitor reset -monitor sleep 100 -monitor halt -monitor poll -#monitor arm7_9 sw_bkpts disable -#monitor arm7_9 force_hw_bkpts enable -monitor mww 0xE01FC040 0x0001 -monitor mdw 0xE01FC040 -monitor flash erase_sector 0 0 14 -#monitor flash auto_erase on -monitor flash erase_check 0 -#monitor flash write_image /home/kaspar/FeuerWhere/src/x/bin/arm.elf -set remote hardware-watchpoint-limit 2 -load -break bootloader -mon soft_reset_halt -continue -d b 1 diff --git a/board/pttu/Jamfile b/board/pttu/Jamfile deleted file mode 100644 index 11b4a77e7e4217978b7438105473ec2264009cb5..0000000000000000000000000000000000000000 --- a/board/pttu/Jamfile +++ /dev/null @@ -1,34 +0,0 @@ -# ****************************************************************************** -# 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$ - -SubDir TOP board $(BOARD) ; - -Module board : board_init.c : board_common board_uart ; -UseModule board ; - -SubInclude TOP board msba2-common ; -SubInclude TOP cpu $(CPU) ; diff --git a/board/pttu/Jamfile.pttu b/board/pttu/Jamfile.pttu deleted file mode 100644 index 1bce8934fe48dfe1ffb3ee3ab74444741dbab18a..0000000000000000000000000000000000000000 --- a/board/pttu/Jamfile.pttu +++ /dev/null @@ -1,28 +0,0 @@ -# ****************************************************************************** -# 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: Jamfile.msba2 832 2009-03-13 16:45:41Z kaspar $ - -include [ FPath $(TOP) cpu arm_common Jamfile.arm_common ] ; diff --git a/board/pttu/Jamrules.pttu b/board/pttu/Jamrules.pttu deleted file mode 100644 index 53e71c71f17f23c4c4adb56684bb2a640d702680..0000000000000000000000000000000000000000 --- a/board/pttu/Jamrules.pttu +++ /dev/null @@ -1,34 +0,0 @@ -# ****************************************************************************** -# 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: Jamrules.msba2 881 2009-03-20 12:24:58Z kaspar $ - -include board/msba2-common/Jamrules.msba2 ; - -HDRS += [ FPath $(TOP) board $(BOARD) drivers include ] ; - -GDB = arm-elf-gdb ; -GDBFLAGS = -x board/pttu/tools/pttu_debug.gdb ; - diff --git a/board/pttu/board_init.c b/board/pttu/board_init.c deleted file mode 100644 index b5b78bde252621393a597df4613276d10e07d6b3..0000000000000000000000000000000000000000 --- a/board/pttu/board_init.c +++ /dev/null @@ -1,163 +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 -*******************************************************************************/ - -/** - * @ingroup pttu - * @{ - */ - -/** - * @file - * @brief PTTU board initialization - * - * @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project - * @author Heiko Will - * @author Kaspar Schleiser - * - */ -#include <board.h> -#include <VIC.h> -#include <cpu.h> - -#define PCRTC BIT9 -#define CL_CPU_DIV 4 - -void bl_init_ports(void) -{ - SCS |= BIT0; // Set IO Ports to fast switching mode - - /* UART0 */ - PINSEL0 |= BIT4 + BIT6; // RxD0 and TxD0 - PINSEL0 &= ~(BIT5 + BIT7); - - /*Turn Board on*/ - PINMODE0 |= BIT1; - FIO0DIR |= BIT27; - FIO0CLR = BIT27; - - /* 5V*/ - FIO1DIR |= BIT28; // Synch - FIO1SET = BIT28; // No Powersave - - FIO1DIR |= BIT27; // 5V off - FIO1CLR = BIT27; - - /* Disable Resistors on Buttons */ - PINMODE4 |= BIT9 + BIT11; - - /* Disable Resistors on LED - and Ports to output*/ - PINMODE7 |= BIT19 + BIT21; - PINMODE2 |= BIT1; - FIO1DIR |= BIT0; - FIO3DIR |= BIT25 + BIT26; - FIO1SET = BIT0; - FIO3SET = BIT25 + BIT26; - - // Config and Disable PA - FIO1DIR |= BIT25 + BIT26 + BIT22; - FIO1SET = BIT26; - FIO1CLR = BIT25; - FIO1CLR = BIT22; // PA /Shutdown - FIO0DIR |= BIT26; // ** // Important: First put this Port as DA 2.0V and then turn on PA!! - FIO0SET = BIT26; // ** - - // Configure GPS - PINMODE3 |= BIT3 + BIT7; // No Pullup on 1.17 & 1.19 - PINMODE9 |= BIT27 + BIT25; // No Pullup for Uart - FIO1DIR |= BIT17; - FIO1CLR = BIT17; // Turn off GPS - FIO1DIR |= BIT19; - FIO1CLR = BIT19; // Hold in Reset - PINSEL9 |= BIT24 + BIT25 + BIT26 + BIT27; //4.28 & 4.29 as Uart3 - - // Nanotron - FIO2DIR &= ~BIT8; // nanotron uC IRQ as input - FIO1DIR |= BIT15; // nanotron power on reset - FIO1DIR &= ~BIT14; // nanotron uC RESET as input - FIO1DIR &= ~BIT10; // nanotron uC Vcc as input - FIO1DIR |= BIT9; // nanotron ENABLE as output - FIO1DIR &= ~BIT4; // nanotron Rx/Tx as input - - FIO1CLR = BIT15; - FIO1CLR = BIT9; // Enable power - - PINMODE1 |= BIT1; // No Pullup for CS - FIO0DIR |= BIT16; // CS as output - FIO0SET = BIT16; // drive cs inactive - FIO0DIR |= BIT18 + BIT15; // SPi Output - - // RFID - FIO1DIR |= BIT1; // RFID Power - FIO1CLR = BIT1; // - - FIO0DIR |= BIT1; // RFID Reset - FIO0SET = BIT1; // Hold in Reset - - FIO0DIR &= ~BIT10; // LED as INPUT - FIO0DIR &= ~BIT11; // DATA as INPUT - PINMODE0 |= BIT19 + BIT21; // No Pullups - - // LTC4150 ARM - FIO0DIR |= BIT5; - FIO0CLR = BIT5; - - // LTC4150 System - FIO0DIR |= BIT24; - FIO0CLR = BIT24; - - // Battery Voltage (AD) - PINMODE1 |= BIT19; - PINSEL1 &= ~BIT19; - PINSEL1 |= BIT18; - - //cc1100 - FIO0DIR |= BIT6 + BIT7 + BIT9; - FIO0SET = BIT6; - FIO0SET = BIT7 + BIT9; - - //SD - FIO2DIR |= BIT12 + BIT13 + BIT11; - FIO0DIR |= BIT20 + BIT22 + BIT21; - - //Tetra - FIO2DIR |= BIT0 + BIT7; - - - // No Pullups on any port - int nopullup = BIT1 + BIT3 + BIT5 + BIT7 + BIT9 + BIT11 + BIT13 + BIT15 + BIT17 + BIT19 + BIT21 + BIT23 + BIT25 + BIT27 + BIT29 + BIT31; - PINMODE0 = nopullup - BIT13 - BIT15 - BIT17 - BIT19; - PINMODE1 = BIT1 + BIT3 + BIT5 + BIT7 + BIT9 + BIT11 + BIT13 + BIT15 + BIT17 + BIT19 + BIT21; - PINMODE2 = nopullup; - PINMODE3 = nopullup; - PINMODE4 = nopullup; - PINMODE5 = nopullup; - PINMODE6 = nopullup; - PINMODE7 = nopullup; - PINMODE8 = nopullup; - PINMODE9 = nopullup; -} - -/** @} */ diff --git a/board/pttu/drivers/Jamfile b/board/pttu/drivers/Jamfile deleted file mode 100644 index 31d6db1d6d3a69cf8445801ae5163f957599adcc..0000000000000000000000000000000000000000 --- a/board/pttu/drivers/Jamfile +++ /dev/null @@ -1,2 +0,0 @@ -SubDir TOP board pttu drivers ; - diff --git a/board/pttu/include/board.h b/board/pttu/include/board.h deleted file mode 100644 index 850f8d1d1766c7863cb199c631bedfce8223b061..0000000000000000000000000000000000000000 --- a/board/pttu/include/board.h +++ /dev/null @@ -1,56 +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 -*******************************************************************************/ - -#ifndef __BOARD_H -#define __BOARD_H - -/** - * @ingroup pttu - * @{ - */ - -/** - * @file - * @brief PTTU Board - * - * @author Freie Universität Berlin, Computer Systems & Telematics, FeuerWhere project - * @author Kaspar Schleiser <kaspar@schleiser.de> - * @version $Revision$ - * - * @note $Id: board.h 664 2009-02-19 10:54:44Z baar $ - */ - -#include <lpc2387.h> -#include <cpu-conf.h> - -#define VICIntEnClear VICIntEnClr - -void init_clks1(void); -void init_clks2(void); -void bl_init_clks(void); - -/** @} */ -#endif // __BOARD_H diff --git a/board/pttu/tools/jtag.txt b/board/pttu/tools/jtag.txt deleted file mode 100644 index 586eea6745c66fdf7719e9e782ad8f84553b897d..0000000000000000000000000000000000000000 --- a/board/pttu/tools/jtag.txt +++ /dev/null @@ -1,14 +0,0 @@ -compile openocd release v0.1: -[extract to somewhere] -./configure --prefix=CHANGEMEtowhatever --enable-ft2232_libftdi -make -make install - -to flash run from within board/pttu/tools: -./openocd-pttu.sh olimex-usb-jtag-tiny-a "mt_flash CHANGEME/absolute/path/to/hexfile/pttu.hex;shutdown" - - -to debug, first start the following from within board/pttu/tools: -./openocd-pttu.sh olimex-usb-jtag-tiny-a - -then just run "jam debug". this will flash bin/pttu.hex, run it and stop at the bootloader. diff --git a/board/pttu/tools/olimex-arm-usb-ocd.cfg b/board/pttu/tools/olimex-arm-usb-ocd.cfg deleted file mode 100644 index 0aaba1d2bb57975b7f58b40d5ee1923282d06e6b..0000000000000000000000000000000000000000 --- a/board/pttu/tools/olimex-arm-usb-ocd.cfg +++ /dev/null @@ -1,9 +0,0 @@ -# -set CPUTAPID 0x4f1f0f0f - -jtag_speed 100 - -source [find interface/olimex-arm-usb-ocd.cfg] -#source [find target/lpc2148.cfg] -source lpc2378.cfg - diff --git a/board/pttu/tools/openocd-pttu.cfg b/board/pttu/tools/openocd-pttu.cfg deleted file mode 100644 index b58392f1ee7ee95bad83af8e4ac2549d0d1d4125..0000000000000000000000000000000000000000 --- a/board/pttu/tools/openocd-pttu.cfg +++ /dev/null @@ -1,75 +0,0 @@ -###### -# parts taken from Martin Thomas -# http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/openocd_intro/index.html -# - -set CPUTAPID 0x4f1f0f0f -jtag_speed 100 - -source [find cpu/lpc2387/tools/openocd-lpc2387.cfg] - -fast disable - -# -# scipts/macros/user commands - this is TCL (variant JIM): -# -proc mt_internal_rc {} { - jtag_khz 100 - reset run - sleep 100 - reset - halt - wait_halt 2 - # PLL disconnect PLLCON - mww 0xE01FC080 0x01 - mww 0xE01FC08C 0xAA - mww 0xE01FC08C 0x55 - # PLL disable PLLCON - mww 0xE01FC080 0x00 - mww 0xE01FC08C 0xAA - mww 0xE01FC08C 0x55 - # no prescaler CCLKCFG - mww 0xE01FC104 0x00 - # internal RC CLKSRCSEL - mww 0xE01FC10C 0x00 - #### main oscil. CLKSRCSEL - #### mww 0xE01FC10C 0x01 - # remap to internal flash - mww 0xE01FC040 0x01 - sleep 100 - jtag_khz 500 - flash probe 0 -} - -proc mt_flash_bin {IMGFILE OFFSET} { - mt_internal_rc - flash write_image erase $IMGFILE $OFFSET - sleep 100 - verify_image $IMGFILE $OFFSET - sleep 100 -} - -proc mt_flash_v {IMGFILE} { - mt_internal_rc - flash write_image erase $IMGFILE - sleep 100 - verify_image $IMGFILE - sleep 100 -} - -proc mt_flash {IMGFILE} { - mt_internal_rc - flash write_image erase $IMGFILE -} - -flash bank lpc2000 0x0 0x7d000 0 0 0 lpc2000_v2 4000 calc_checksum - -arm7_9 dcc_downloads enable - -gdb_flash_program enable - -init - -fast enable -jtag_khz 500 -debug_level 1 diff --git a/board/pttu/tools/openocd-pttu.sh b/board/pttu/tools/openocd-pttu.sh deleted file mode 100755 index 95f11fa14818e62fde70a3c5d78c9ff601224817..0000000000000000000000000000000000000000 --- a/board/pttu/tools/openocd-pttu.sh +++ /dev/null @@ -1,30 +0,0 @@ -#/bin/bash - -if [ $# -le 0 ]; then - echo "usage: $0 [openocd interface name] [openocd args]" >&2 - echo " common interfaces: olimex-arm-usb-ocd olimex-jtag-tiny olimex-jtag-tiny-a" - echo "" - echo "using default olimex-jtag-tiny-a" - INTERFACE=olimex-jtag-tiny-a -else - INTERFACE=$1 - shift -fi - -if [ $# -ge 1 ]; then - COMMAND=$@ -else - COMMAND="debug_level 1" -fi - -if [ "${OS}" = "Windows_NT" ]; then - WINDOWS=1 -fi - -if [ "x${WINDOWS}x" = "xx" ]; then - xterm -e "openocd -s ../../.. -f interface/${INTERFACE}.cfg -f board/pttu/tools/openocd-pttu.cfg -c \"${COMMAND}\"|| read" & -else - echo ${COMMAND} - #cmd /C start "OpenOCD PTTU using ${INTERFACE}" - openocd-ftd2xx.exe -s ../../.. -f interface/${INTERFACE}.cfg -f board/pttu/tools/openocd-pttu.cfg -c "${COMMAND}" -fi diff --git a/board/pttu/tools/pttu_debug.gdb b/board/pttu/tools/pttu_debug.gdb deleted file mode 100644 index 2c8ec0df14c97ddb740387d196037cdb66ce7242..0000000000000000000000000000000000000000 --- a/board/pttu/tools/pttu_debug.gdb +++ /dev/null @@ -1,15 +0,0 @@ -#winheight regs 11 -set history save on -set history size 1000 -target remote localhost:3333 -monitor mt_internal_rc -load -compare-sections -monitor soft_reset_halt -set mem inaccessible-by-default off -monitor debug_level 0 - -break bootloader -continue -d b 1 -