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.
21 lines
992 B
Makefile
21 lines
992 B
Makefile
LIBC=$(CONTIKI)/platform/galileo/bsp/libc/i586-elf
|
|
LIBGCC_PATH = /usr/lib/gcc/$(shell gcc -dumpmachine)/$(shell gcc -dumpversion)
|
|
|
|
CONTIKI_TARGET_DIRS = .
|
|
CONTIKI_TARGET_MAIN = ${addprefix $(OBJECTDIR)/,contiki-main.o}
|
|
CONTIKI_SOURCEFILES += contiki-main.c newlib-syscalls.c loader.S clock.c rtimer-arch.c
|
|
|
|
LINKERSCRIPT = $(CONTIKI)/platform/galileo/galileo.ld
|
|
|
|
CONTIKI_CPU=$(CONTIKI)/cpu/x86
|
|
include $(CONTIKI)/cpu/x86/Makefile.x86
|
|
|
|
CFLAGS += -m32 -march=i586 -nostdinc -isystem $(LIBC)/include -isystem $(LIBGCC_PATH)/include -isystem $(LIBGCC_PATH)/include-fixed
|
|
LDFLAGS += -m32 -nostdlib -T $(LINKERSCRIPT)
|
|
ASFLAGS += --32 -march=i586 -mtune=i586
|
|
|
|
# Ideally, this should be part of LDFLAGS (-lc -lm etc). However, we found out that archive
|
|
# static files (.a) must be linked after our own object files, otherwise the linker gets lost
|
|
# and we get undefined references only.
|
|
TARGET_LIBFILES = $(OBJECTDIR)/newlib-syscalls.o $(LIBC)/lib/libm.a $(LIBC)/lib/libc.a $(LIBGCC_PATH)/32/libgcc.a
|