e4ff61ff6c
This patch adds support for rtimer library on Galileo's platform. We use the PIT to implement the rtimer platform dependent functionalities. We chose the PIT for mainly two reason: I) its configuration is very simple II) it has a high frequency which provides us a good clock resolution (requirement from rtimer library). Since we keep track of the number of ticks in software, we define rtimer_clock_t type as uint64_t. This gives us a good amount of time til the variable overflows. For instance, a 32-bit type would overflow in about one hour for high clock resolution (~ 1us). The rtimer clock frequency (RTIMER_ARCH_SECOND) is setup to 1 kHz. There is no technical matter regarding this value. It is just an initial guess. Just for the record, we might want to use HPET in future to implement the rtimer library since it seems to be more appropriate. The reason why we don't use it at this moment is that, in order to configure it, we need support for ACPI 2.0 which we don't. Once we have use-cases for the rtimer library we'll probably replace PIT by HPET or any other timer more suitable for the job.
55 lines
1.9 KiB
C
55 lines
1.9 KiB
C
/*
|
|
* Copyright (C) 2015, Intel Corporation. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. 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.
|
|
*
|
|
* 3. Neither the name of the copyright holder 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 HOLDER 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.
|
|
*/
|
|
|
|
#include "contiki.h"
|
|
#include "cpu.h"
|
|
#include "interrupt.h"
|
|
|
|
int
|
|
main(void)
|
|
{
|
|
cpu_init();
|
|
clock_init();
|
|
rtimer_init();
|
|
|
|
ENABLE_IRQ();
|
|
|
|
process_init();
|
|
process_start(&etimer_process, NULL);
|
|
ctimer_init();
|
|
autostart_start(autostart_processes);
|
|
|
|
while(1) {
|
|
process_run();
|
|
}
|
|
|
|
return 0;
|
|
}
|