From ce9fe96187534a8d43b6380738a3e4e49276ddc4 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Tue, 8 Dec 2009 19:11:39 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1399 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/platforms/Win32/hal_lld.c | 100 +++++++++++++++++++++++++++++++++++++ os/hal/platforms/Win32/hal_lld.h | 64 ++++++++++++++++++++++++ os/hal/platforms/Win32/platform.mk | 6 +++ 3 files changed, 170 insertions(+) create mode 100644 os/hal/platforms/Win32/hal_lld.c create mode 100644 os/hal/platforms/Win32/hal_lld.h create mode 100644 os/hal/platforms/Win32/platform.mk (limited to 'os/hal/platforms/Win32') diff --git a/os/hal/platforms/Win32/hal_lld.c b/os/hal/platforms/Win32/hal_lld.c new file mode 100644 index 000000000..9051e90dc --- /dev/null +++ b/os/hal/platforms/Win32/hal_lld.c @@ -0,0 +1,100 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file templates/hal_lld.c + * @brief HAL Driver subsystem low level driver source template. + * @addtogroup HAL_LLD + * @{ + */ + +#include "ch.h" +#include "hal.h" + +/*===========================================================================*/ +/* Low Level Driver exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver local variables. */ +/*===========================================================================*/ + +static LARGE_INTEGER nextcnt; +static LARGE_INTEGER slice; + +/*===========================================================================*/ +/* Low Level Driver local functions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver interrupt handlers. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver exported functions. */ +/*===========================================================================*/ + +/** + * @brief Low level HAL driver initialization. + */ +void hal_lld_init(void) { + WSADATA wsaData; + + /* Initialization.*/ + if (WSAStartup(2, &wsaData) != 0) { + printf("Unable to locate a winsock DLL\n"); + exit(1); + } + + printf("Win32 ChibiOS/RT simulator\n\n"); + if (!QueryPerformanceFrequency(&slice)) { + printf("QueryPerformanceFrequency() error"); + exit(1); + } + printf("Core Frequency %u Hz\n", (int)slice.LowPart); + slice.QuadPart /= CH_FREQUENCY; + QueryPerformanceCounter(&nextcnt); + nextcnt.QuadPart += slice.QuadPart; + + fflush(stdout); +} + +/** + * @brief Interrupt simulation. + */ +void ChkIntSources(void) { + LARGE_INTEGER n; + + if (sd_lld_interrupt_pending()) { + if (chSchIsRescRequiredExI()) + chSchDoRescheduleI(); + return; + } + + // Interrupt Timer simulation (10ms interval). + QueryPerformanceCounter(&n); + if (n.QuadPart > nextcnt.QuadPart) { + nextcnt.QuadPart += slice.QuadPart; + chSysTimerHandlerI(); + if (chSchIsRescRequiredExI()) + chSchDoRescheduleI(); + } +} + +/** @} */ diff --git a/os/hal/platforms/Win32/hal_lld.h b/os/hal/platforms/Win32/hal_lld.h new file mode 100644 index 000000000..5a895ce95 --- /dev/null +++ b/os/hal/platforms/Win32/hal_lld.h @@ -0,0 +1,64 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file Win32/hal_lld.h + * @brief WIN32 simulator HAL subsystem low level driver header. + * @addtogroup WIN32_HAL + * @{ + */ + +#ifndef _HAL_LLD_H_ +#define _HAL_LLD_H_ + +#include +#include + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + void hal_lld_init(void); + void ChkIntSources(void); +#ifdef __cplusplus +} +#endif + +#endif /* _HAL_LLD_H_ */ + +/** @} */ diff --git a/os/hal/platforms/Win32/platform.mk b/os/hal/platforms/Win32/platform.mk new file mode 100644 index 000000000..a35edc669 --- /dev/null +++ b/os/hal/platforms/Win32/platform.mk @@ -0,0 +1,6 @@ +# List of all the Win32 platform files. +PLATFORMSRC = ${CHIBIOS}/os/hal/platforms/Win32/hal_lld.c \ + ${CHIBIOS}/os/hal/platforms/Win32/serial_lld.c + +# Required include directories +PLATFORMINC = ${CHIBIOS}/os/hal/platforms/Win32 -- cgit v1.2.3