summaryrefslogtreecommitdiff
path: root/avr/bootc.c
diff options
context:
space:
mode:
authorLeo C2014-08-14 16:27:17 +0200
committerLeo C2014-08-14 16:27:17 +0200
commit534e1dfcb2f6cdfa1cd62913045b832f2189b7aa (patch)
treebfd0f2693160aeae7aa1788f1b3903ac843b9e45 /avr/bootc.c
parent72f5882239bb88b8a68f305802e0dde37a975604 (diff)
downloadz180-stamp-534e1dfcb2f6cdfa1cd62913045b832f2189b7aa.zip
Add commands: loadf, go, reset restarthexrel-1
Diffstat (limited to 'avr/bootc.c')
-rw-r--r--avr/bootc.c175
1 files changed, 0 insertions, 175 deletions
diff --git a/avr/bootc.c b/avr/bootc.c
deleted file mode 100644
index 6dbcdef..0000000
--- a/avr/bootc.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- */
-
-
-#include "common.h"
-
-#include <util/delay.h>
-//#include <avr/power.h>
-//#include <avr/pgmspace.h>
-#include <avr/interrupt.h>
-//#include <util/atomic.h>
-//#include <avr/sleep.h>
-//#include <string.h>
-
-#include <util/delay.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-
-
-#include "config.h"
-#include "debug.h"
-#include "z80-if.h"
-#include "con-utils.h"
-#include "serial.h"
-#include "timer.h"
-#include "cli.h"
-#include "env.h"
-
-/*--------------------------------------------------------------------------*/
-
-void setup_avr(void)
-{
- /* WD */
-
- /* CPU */
-
- /* Disable JTAG Interface regardless of the JTAGEN fuse setting. */
- MCUCR = _BV(JTD);
- MCUCR = _BV(JTD);
-
- /* disable unused periphels */
- PRR0 = _BV(PRTIM2) | _BV(PRTIM0) | _BV(PRADC);
- PRR1 = _BV(PRTIM5) | _BV(PRTIM4) | _BV(PRTIM3) |
- _BV(PRUSART3) | _BV(PRUSART2) | _BV(PRUSART1);
-
- /* disable analog comparator */
- ACSR = _BV(ACD);
- /* Ports */
-
- /* Clock */
- CLKPR = _BV(CLKPCE);
- CLKPR = 0;
-
- /* Timer */
-
- OCR1A = F_CPU / 8 / 1000 - 1; // Timer1: 1000Hz interval (OC1A)
- TCCR1B = 0b00001010;
- TIMSK1 = _BV(OCIE1A); // Enable TC1.oca interrupt
-}
-
-
-
-/*******************************************************************************/
-/*******************************************************************************/
-
-#define udelay(n) _delay_us(n)
-
-
-/* Stored value of bootdelay, used by autoboot_command() */
-static int stored_bootdelay;
-
-
-/***************************************************************************
- * Watch for 'delay' seconds for autoboot stop.
- * returns: 0 - no key, allow autoboot
- * 1 - got key, abort
- */
-
-static int abortboot(int bootdelay)
-{
- int abort = 0;
- uint32_t ts;
-
- if (bootdelay >= 0)
- printf_P(PSTR("Hit any key to stop autoboot: %2d "), bootdelay);
-
-#if defined CONFIG_ZERO_BOOTDELAY_CHECK
- /*
- * Check if key already pressed
- * Don't check if bootdelay < 0
- */
- if (bootdelay >= 0) {
- if (tstc()) { /* we got a key press */
- (void) my_getchar(); /* consume input */
- my_puts_P(PSTR("\b\b\b 0"));
- abort = 1; /* don't auto boot */
- }
- }
-#endif
-
- while ((bootdelay > 0) && (!abort)) {
- --bootdelay;
- /* delay 1000 ms */
- ts = get_timer(0);
- do {
- if (tstc()) { /* we got a key press */
- abort = 1; /* don't auto boot */
- bootdelay = 0; /* no more delay */
- break;
- }
- udelay(10000);
- } while (!abort && get_timer(ts) < 1000);
-
- printf_P(PSTR("\b\b\b%2d "), bootdelay);
- }
-
- putchar('\n');
-
- return abort;
-}
-
-const char *bootdelay_process(void)
-{
- char *s;
- int bootdelay;
-
- s = getenv("bootdelay");
- bootdelay = s ? atoi(s) : CONFIG_BOOTDELAY;
-
-
- debug("### main_loop entered: bootdelay=%d\n\n", bootdelay);
- _delay_ms(20);
-
- s = getenv("bootcmd");
- stored_bootdelay = bootdelay;
- return s;
-}
-
-void autoboot_command(const char *s)
-{
- debug("### main_loop: bootcmd=\"%s\"\n", s ? s : PSTR("<UNDEFINED>"));
- _delay_ms(20);
-
- if (stored_bootdelay != -1 && s && !abortboot(stored_bootdelay)) {
- run_command_list(s, -1);
- }
-}
-
-
-void main_loop(void)
-{
- const char *s;
-
- s = bootdelay_process();
- autoboot_command(s);
- cli_loop();
-}
-
-int main(void)
-{
- setup_avr();
- z80_setup_bus();
-
- serial_setup();
- sei();
-
- if (env_check() == 0)
- set_default_env();
- env_init();
-
- printf_P(PSTR("\n(ATMEGA1281+HD64180)_stamp Tester\n"));
-
- main_loop();
-}