boards: remove support for qemu-i386

This commit is contained in:
Hauke Petersen 2017-11-15 11:27:42 +01:00
parent 8bf59b80c2
commit 99009af25e
8 changed files with 0 additions and 353 deletions

View File

@ -1,5 +0,0 @@
MODULE = board
DIRS = $(RIOTBOARD)/x86-multiboot-common
include $(RIOTBASE)/Makefile.base

View File

@ -1,8 +0,0 @@
# Put defined MCU peripherals here (in alphabetical order)
# Various other features (if any)
# The board MPU family (used for grouping by the CI system)
FEATURES_MCU_GROUP = x86
-include $(RIOTCPU)/x86/Makefile.features

View File

@ -1,27 +0,0 @@
USEMODULE += x86-multiboot-common
CFLAGS += -march=i686 -mtune=i686
TERMPROG = exec $(RIOTBOARD)/qemu-i386/dist/term.py qemu-system-i386 $(BINDIRBASE) $(HEXFILE)
FLASHER = true
DEBUGGER = $(TERMPROG)
all:
debug-kdbg: DEBUGGER_FLAGS="kdbg -r :1234 -- $(ELFFILE)"
debug-kdbg: debug
debug-ddd: DEBUGGER_FLAGS="ddd --eval-command='target remote :1234' $(ELFFILE)"
debug-ddd: debug
debug-tui: DEBUGGER_FLAGS="x-terminal-emulator -e gdb -ex 'target remote :1234' -tui --args $(ELFFILE)"
debug-tui: debug
debug-gdb: debug
DEBUGGER_FLAGS = "x-terminal-emulator -e gdb -ex 'target remote :1234' --args $(ELFFILE)"
debug:
include $(RIOTBOARD)/x86-multiboot-common/Makefile.include

View File

@ -1,151 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2014 René Kijewski <rene.kijewski@fu-berlin.de>
#
# 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.
#
# 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, see <http://www.gnu.org/licenses/>.
import atexit
import os
import re
import readline
import socket
import signal
import subprocess
import sys
import termios
import threading
from datetime import datetime
from shlex import split
from time import time
try:
from shlex import quote
except ImportError:
from pipes import quote
def join_quoted(args):
return ' '.join(quote(arg) for arg in args)
_null = open(os.devnull, 'wb', 0)
def get_timestamp():
return datetime.fromtimestamp(time()).strftime('%Y-%m-%d %H:%M:%S.%f')
def popen(args, **kw):
return subprocess.Popen(args, stdin=_null, stdout=_null, stderr=_null, **kw)
def main(QEMU, BINDIRBASE, HEXFILE, DEBUGGER=None):
def run_shell():
nonlocal result
while 1:
try:
line = input()
if line == 'quit':
result = 0
raise EOFError()
except EOFError:
qemu.kill()
return
client_file.write((line + '\r\n').encode('UTF-8'))
def read_terminal():
for line in client_file:
sys.stderr.write(get_timestamp() + ': ')
sys.stderr.flush()
sys.stdout.write(line.decode('UTF-8', 'replace').rstrip('\r\n') + '\n')
sys.stdout.flush()
if isinstance(QEMU, str):
QEMU = split(QEMU)
if DEBUGGER and isinstance(DEBUGGER, str):
DEBUGGER = split(DEBUGGER)
qemu_version = subprocess.check_output(QEMU + ['-version'], stdin=_null, stderr=_null)
qemu_version = re.match(br'.*version ((?:\d+\.?)+).*', qemu_version).group(1).split(b'.')
qemu_version = list(int(v) for v in qemu_version)
histfile = os.path.join(BINDIRBASE, '.qemu-term.hist')
try:
readline.read_history_file(histfile)
except IOError:
pass
result = 1
try:
sock = socket.socket()
sock.settimeout(60)
sock.bind(('', 0))
sock.listen(1)
host, port = sock.getsockname()
args = QEMU + [
'-serial', 'tcp:{}:{}'.format(host, port),
'-nographic',
'-monitor', '/dev/null',
'-kernel', HEXFILE,
]
if qemu_version >= [2, 1]:
args += ['-m', 'size=512']
else:
args += ['-m', '512m']
if DEBUGGER:
args += ['-s', '-S']
try:
sys.stderr.write('Starting QEMU: {}\n\n'.format(join_quoted(args)))
qemu = popen(args)
if DEBUGGER:
ignore_sig_int = lambda: signal.signal(signal.SIGINT, signal.SIG_IGN)
popen(DEBUGGER, preexec_fn=ignore_sig_int)
client_sock, _ = sock.accept()
client_file = client_sock.makefile('rwb', 1)
sock.close()
threading.Thread(target=run_shell, daemon=True).start()
threading.Thread(target=read_terminal, daemon=True).start()
try:
result = qemu.wait() and result
except KeyboardInterrupt:
sys.stderr.write('\nInterrupted ...\n')
result = 0
finally:
try:
qemu.kill()
except:
pass
finally:
try:
readline.write_history_file(histfile)
except:
pass
try:
client_sock.close()
except:
pass
return result
if __name__ == '__main__':
sys.stderr.write("Type 'exit' to exit.\n")
atexit.register(termios.tcsetattr, 0, termios.TCSAFLUSH, termios.tcgetattr(0))
sys.exit(main(*sys.argv[1:]))

View File

@ -1,44 +0,0 @@
/*
* Copyright (C) 2014 René Kijewski <rene.kijewski@fu-berlin.de>
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @defgroup boards_qemu-i386 qemu-i386
* @ingroup boards
* @brief Dummy board to run x86 port in QEMU
* @{
*
* @file
* @brief Board specific defines for qemu-i386.
*
* @author René Kijewski <rene.kijewski@fu-berlin.de>
*/
#ifndef BOARD_H
#define BOARD_H
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name Serial port configuration
* @{
*/
#define UART_PORT (COM1_PORT) /* IO port to use for UART */
#define UART_IRQ (COM1_IRQ) /* IRQ line to use for UART */
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* BOARD_H */
/**
* @}
*/

View File

@ -1,40 +0,0 @@
/*
* Copyright (C) 2014 René Kijewski <rene.kijewski@fu-berlin.de>
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup boards_qemu-i386
* @{
*
* @file
* @brief CPU-specific defines for qemu-i386
*
* @author René Kijewski <rene.kijewski@fu-berlin.de>
*/
#ifndef CPU_CONF_H
#define CPU_CONF_H
#ifdef __cplusplus
extern "C" {
#endif
/* FIXME: This file is just a filler. The numbers are entirely random ... */
#define THREAD_STACKSIZE_DEFAULT (8192)
#define THREAD_STACKSIZE_IDLE (8192)
#define THREAD_EXTRA_STACKSIZE_PRINTF (8192)
#define THREAD_EXTRA_STACKSIZE_PRINTF_FLOAT (8192)
#define THREAD_STACKSIZE_MINIMUM (8192)
#ifdef __cplusplus
}
#endif
#endif /* CPU_CONF_H */
/** @} */

View File

@ -1,33 +0,0 @@
/*
* Copyright (C) 2016 Freie Universität Berlin
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup boards_qemu-i386
* @{
*
* @file
* @brief Peripheral configuration for the qemu-i386
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
*/
#ifndef PERIPH_CONF_H
#define PERIPH_CONF_H
#ifdef __cplusplus
extern "C" {
#endif
/* nothing to define here, yet */
#ifdef __cplusplus
}
#endif
#endif /* PERIPH_CONF_H */
/** @} */

View File

@ -1,45 +0,0 @@
/*
* Copyright (C) 2014 René Kijewski <rene.kijewski@fu-berlin.de>
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup boards_qemu-i386
* @{
*
* @file
* @brief Initialization code for the qemu-i386 board
*
* @author René Kijewski <rene.kijewski@fu-berlin.de>
*
* @}
*/
#include "cpu.h"
#include "x86_ports.h"
#include "x86_reboot.h"
#define ENABLE_DEBUG (0)
#include "debug.h"
static bool qemu_shutdown(void)
{
unsigned old_state = irq_disable();
DEBUG("SHUTTING DOWN.\n");
/* (phony) ACPI shutdown (http://forum.osdev.org/viewtopic.php?t=16990) */
/* Works for qemu and bochs. */
outw(0xB004, 0x2000);
irq_restore(old_state);
return false;
}
void x86_init_board(void)
{
x86_set_shutdown_fun(qemu_shutdown);
}