summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authorssslady <[email protected]>2009-10-14 05:30:39 +0000
committerssslady <[email protected]>2009-10-14 05:30:39 +0000
commit7794b165ae904b71c9cf3d15cffc9b77e1978407 (patch)
tree6abf95c94779527b75b5c99d5d88a603d5a2b6eb /bsp
parentcdf794cc3a0cf6a65e12031a94115023f3bcb56f (diff)
create project for qemu
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@95 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'bsp')
-rw-r--r--bsp/qemu/build/Makefile59
-rw-r--r--bsp/qemu/build/bsp/Makefile9
-rw-r--r--bsp/qemu/build/bsp/qemu/Makefile39
-rwxr-xr-xbsp/qemu/build/clean-link18
-rw-r--r--bsp/qemu/build/config.local38
-rw-r--r--bsp/qemu/build/config.mk140
-rw-r--r--bsp/qemu/build/config.target59
-rwxr-xr-xbsp/qemu/build/create-link24
-rw-r--r--bsp/qemu/build/finsh/Makefile29
-rw-r--r--bsp/qemu/build/libcpu/Makefile9
-rw-r--r--bsp/qemu/build/libcpu/ia32/Makefile33
-rw-r--r--bsp/qemu/build/src/Makefile25
12 files changed, 482 insertions, 0 deletions
diff --git a/bsp/qemu/build/Makefile b/bsp/qemu/build/Makefile
new file mode 100644
index 0000000000..a5cc611799
--- /dev/null
+++ b/bsp/qemu/build/Makefile
@@ -0,0 +1,59 @@
+KERNEL_ROOT=.
+
+include $(KERNEL_ROOT)/config.mk
+
+SRC_DIR = src libcpu
+MAKE_CMD=
+
+ifeq ($(RT_USING_FINSH), 1)
+SRC_DIR += finsh
+MAKE_CMD+= RT_USING_FINSH=1
+endif
+
+ifeq ($(RT_USING_LWIP), 1)
+SRC_DIR += net
+MAKE_CMD+= RT_USING_LWIP=1
+endif
+
+ifeq ($(RT_USING_EFSL), 1)
+SRC_DIR += filesystem
+MAKE_CMD+= RT_USING_EFSL=1
+endif
+
+ifeq ($(RT_USING_RTGUI), 1)
+SRC_DIR += rtgui
+MAKE_CMD+= RT_USING_RTGUI=1
+endif
+
+ifeq ($(RT_USING_CPLUSPLUS), 1)
+SRC_DIR += cplusplus
+endif
+
+ifeq ($(RT_USING_NEWLIB), 1)
+SRC_DIR += libc
+else
+ifeq ($(RT_USING_MINILIBC), 1)
+SRC_DIR += libc
+endif
+endif
+
+SRC_DIR += bsp
+
+all:
+ for dir in $(SRC_DIR); do \
+ make -C $$dir $(MAKE_CMD); \
+ done
+
+clean :
+ for dir in $(SRC_DIR); do \
+ make -C $$dir clean $(MAKE_CMD); \
+ done
+
+test:
+ make -C testsuite
+
+docs:
+ $(DOXYGEN) Doxyfile
+
+dist-clean: clean
+ make -C testsuite clean
diff --git a/bsp/qemu/build/bsp/Makefile b/bsp/qemu/build/bsp/Makefile
new file mode 100644
index 0000000000..20099682bc
--- /dev/null
+++ b/bsp/qemu/build/bsp/Makefile
@@ -0,0 +1,9 @@
+KERNEL_ROOT=..
+
+include $(KERNEL_ROOT)/config.mk
+
+all:
+ make -C $(BOARD)
+
+clean:
+ make -C $(BOARD) clean \ No newline at end of file
diff --git a/bsp/qemu/build/bsp/qemu/Makefile b/bsp/qemu/build/bsp/qemu/Makefile
new file mode 100644
index 0000000000..346c319157
--- /dev/null
+++ b/bsp/qemu/build/bsp/qemu/Makefile
@@ -0,0 +1,39 @@
+KERNEL_ROOT=../..
+
+include $(KERNEL_ROOT)/config.mk
+
+SRC = board.c startup.c keyboard.c console.c serial.c
+APP = application.o
+OBJ = $(SRC:.c=.o)
+BIN = rtthread-$(BOARD)
+IMG = $(KERNEL_ROOT)/lib/$(BIN).img
+
+#LFALGS = -nostdlib -Bstatic -T $(LDSCRIPT) -Ttext $(TEXTBASE)
+LFALGS = -nostdlib -Bstatic -T $(LDSCRIPT)
+CFLAGS += -I$(KERNEL_ROOT)/libcpu/$(ARCH)/include
+
+all: $(BIN) $(LIBBSP)
+
+$(IMG): $(BIN) $(KERNEL_ROOT)/lib/boot
+ dd if=/dev/zero of=$(IMG)~ count=1000 2>/dev/null
+ dd if=$(KERNEL_ROOT)/lib/boot of=$(IMG)~ conv=notrunc 2>/dev/null
+ dd if=$(BIN) of=$(IMG)~ seek=1 conv=notrunc 2>/dev/null
+
+$(LIBBSP): $(OBJ)
+ $(AR) r $@ $?
+ $(RANLIB) $@
+
+$(BIN): $(OBJ) $(APP) $(LIBFINSH) $(LIBCPU) $(KERNEL)
+ $(LD) $(LFALGS) $(STARTOBJ) $(OBJ) $(APP) $(LIBFINSH) $(KERNEL) $(LIBCPU) -o $(BIN).elf
+ $(SIZE) $(BIN).elf
+
+clean :
+ $(RM) $(BIN).elf *.o *~ *.bak *.bin $(LIBBSP)
+ $(RM) .depend
+
+dep : .depend
+
+include .depend
+
+.depend: $(SRC)
+ $(CC) $(CFLAGS) -M $^ > $@
diff --git a/bsp/qemu/build/clean-link b/bsp/qemu/build/clean-link
new file mode 100755
index 0000000000..33d5058788
--- /dev/null
+++ b/bsp/qemu/build/clean-link
@@ -0,0 +1,18 @@
+#!/bin/bash
+rm lib -rf
+rm include -f
+rm src/*.c -f
+rm src/*.h -f
+rm src/*.o -f
+rm bsp/qemu/*.c -f
+rm bsp/qemu/*.h -f
+rm bsp/qemu/*.S -f
+rm bsp/qemu/*.o -f
+rm bsp/qemu/*.lds -f
+rm libcpu/ia32/*.c -f
+rm libcpu/ia32/*.S -f
+rm libcpu/ia32/*.o -f
+rm libcpu/ia32/include -f
+rm finsh/*.c -f
+rm finsh/*.h -f
+rm finsh/*.o -f
diff --git a/bsp/qemu/build/config.local b/bsp/qemu/build/config.local
new file mode 100644
index 0000000000..74004109c1
--- /dev/null
+++ b/bsp/qemu/build/config.local
@@ -0,0 +1,38 @@
+# RT-Thread build config file
+# Platform
+PLATFORM=qemu
+
+# Platform Prefix
+PREFIX=
+
+# C flags
+CFLAGS=-Wall
+
+# Linker flags
+LDFLAGS=-nostdlib
+
+# ASM Flags
+ASFLAGS=
+
+# Build Type
+BUILDTYPE=RAM
+
+# Release Type
+RELEASETYPE=Release
+
+# Text Base
+TEXTBASE=0x108000
+
+# SECTION: RT-Thread Component
+# finsh, shell of RT-Thread
+RT_USING_FINSH=1
+
+# a mini libc
+#RT_USING_MINILIBC=1
+
+# Using C++ support
+# RT_USING_CPLUSPLUS=1
+
+# LwIP, light weight TCP/IP stack for RT-Thread
+# RT_USING_LWIP=1
+
diff --git a/bsp/qemu/build/config.mk b/bsp/qemu/build/config.mk
new file mode 100644
index 0000000000..6a3adc5d93
--- /dev/null
+++ b/bsp/qemu/build/config.mk
@@ -0,0 +1,140 @@
+#
+# RT-Thread Makefile
+# CFLAGS for C compiler flags
+# CPPFLAGS for C++ compiler flags
+# LDFLAGS for ld link flags
+# LDLIBS for libraries should be linked
+# AFLAGS for assemble flags
+#
+
+include $(KERNEL_ROOT)/config.local
+include $(KERNEL_ROOT)/config.target
+
+#
+# toolchain variables
+#
+CC = $(PREFIX)gcc
+CXX = $(PREFIX)g++
+LD = $(PREFIX)ld
+AR = $(PREFIX)ar
+AS = $(PREFIX)as
+RANLIB = $(PREFIX)ranlib
+NM = $(PREFIX)nm
+OBJCOPY = $(PREFIX)objcopy
+OBJDUMP = $(PREFIX)objdump
+STRIP = $(PREFIX)strip
+SIZE = $(PREFIX)size
+RM = rm -rf
+MKDIR = mkdir -p
+
+#
+# start object and library
+#
+STARTOBJ = $(KERNEL_ROOT)/lib/start_$(CPU).o
+LIBCPU = $(KERNEL_ROOT)/lib/libcpu_$(CPU).a
+KERNEL = $(KERNEL_ROOT)/lib/libkernel_$(ARCH).a
+LIBBSP = $(KERNEL_ROOT)/lib/libbsp_$(BOARD).a
+LIBFINSH = $(KERNEL_ROOT)/lib/libfinsh_$(ARCH).a
+LIBEFSL = $(KERNEL_ROOT)/lib/libefsl-fs-vfat.a \
+ $(KERNEL_ROOT)/lib/libefsl-base.a
+LIBRTGUI = $(KERNEL_ROOT)/lib/librtgui_widgets.a \
+ $(KERNEL_ROOT)/lib/librtgui_server.a \
+ $(KERNEL_ROOT)/lib/librtgui_common.a \
+ $(KERNEL_ROOT)/lib/librtgui_app.a
+LIBLWIP = $(KERNEL_ROOT)/lib/liblwip_$(ARCH).a
+LIBCPP = $(KERNEL_ROOT)/lib/librtt++_$(ARCH).a
+LIBMINIC = $(KERNEL_ROOT)/lib/libminilibc_$(ARCH).a
+
+LDLIBS = -lcpu_$(CPU) -lkernel_$(ARCH) -lbsp_$(BOARD)
+
+#
+# ld script, according to build type, RAM or ROM
+#
+ifeq ($(BUILDTYPE), RAM)
+LDSCRIPT= $(KERNEL_ROOT)/bsp/$(BOARD)/$(BOARD)_ram.lds
+else
+LDSCRIPT= $(KERNEL_ROOT)/bsp/$(BOARD)/$(BOARD)_rom.lds
+endif
+
+#
+# RT-Thread component
+#
+ifeq ($(RT_USING_FINSH), 1)
+CFLAGS += -I$(KERNEL_ROOT)/finsh
+LDLIBS += -lfinsh_$(ARCH)
+endif
+
+ifeq ($(RT_USING_RTGUI), 1)
+CFLAGS += -I$(KERNEL_ROOT)/rtgui/include
+LDLIBS += -lrtgui_server -lrtgui_common -lrtgui_widgets -lrtgui_app
+endif
+
+ifeq ($(RT_USING_LWIP), 1)
+CFLAGS += -I$(KERNEL_ROOT)/net/lwip/src \
+ -I$(KERNEL_ROOT)/net/lwip/src/include \
+ -I$(KERNEL_ROOT)/net/lwip/src/include/ipv4 \
+ -I$(KERNEL_ROOT)/net/lwip/src/arch/include
+LDLIBS += -llwip_$(ARCH)
+endif
+
+ifeq ($(RT_USING_EFSL), 1)
+CFLAGS += -I$(KERNEL_ROOT)/filesystem/efsl/src/fs/vfat/include \
+ -I$(KERNEL_ROOT)/filesystem/efsl/src/base/include \
+ -I$(KERNEL_ROOT)/filesystem/efsl/src/include \
+ -I$(KERNEL_ROOT)/filesystem/efsl/conf
+LDLIBS += -lefsl-base -lefsl-fs-vfat
+endif
+
+ifeq ($(RT_USING_CPLUSPLUS), 1)
+CFLAGS +=
+LDLIBS += -lrtt++_$(ARCH)
+endif
+
+ifeq ($(RT_USING_NEWLIB), 1)
+CFLAGS += -I$(KERNEL_ROOT)/newlib/libc/include
+LDLIBS += -lnewlib_$(ARCH)
+else
+ifeq ($(RT_USING_MINILIBC), 1)
+CFLAGS += -I$(KERNEL_ROOT)/libc/minilibc
+LDLIBS += -lminilibc_$(ARCH)
+endif
+endif
+
+#
+# compiler, assemble and ld link flag
+#
+CFLAGS += -I$(KERNEL_ROOT)/include -I$(KERNEL_ROOT)/bsp/$(BOARD) -Wall -nostdinc -fno-builtin
+
+ifeq ($(RELEASETYPE), DEBUG)
+CFLAGS += -ggdb
+AFLAGS += -ggdb
+else
+CFLAGS += -O2
+CFLAGS +=
+AFLAGS +=
+endif
+
+ifeq ($(BUILDTYPE), RAM)
+#AFLAGS +=
+#AFLAGS += -x assembler-with-cpp -DTEXT_BASE=$(TEXTBASE)
+#AFLAGS += -x assembler-with-cpp
+else
+#AFLAGS +=
+#AFLAGS += -x assembler-with-cpp -DTEXT_BASE=$(TEXTBASE) -D__FLASH_BUILD__
+endif
+
+LDFLAGS += -L$(KERNEL_ROOT)/lib --start-group $(LDLIBS) --end-group
+
+CPPFLAGS = $(CFLAGS) -fno-rtti
+
+#
+# Common rules
+#
+.c.o:
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+.cpp.o:
+ $(CXX) -c $(CPPFLAGS) -o $@ $<
+
+.S.o:
+ $(CC) -c $(AFLAGS) -o $@ $<
diff --git a/bsp/qemu/build/config.target b/bsp/qemu/build/config.target
new file mode 100644
index 0000000000..872a4a9c1e
--- /dev/null
+++ b/bsp/qemu/build/config.target
@@ -0,0 +1,59 @@
+ifeq ($(PLATFORM), lumit4510)
+ARCH = arm
+CPU = s3c4510
+BOARD = lumit4510
+endif
+
+ifeq ($(PLATFORM), wh44b0)
+ARCH = arm
+CPU = s3c44b0
+BOARD = wh44b0
+endif
+
+ifeq ($(PLATFORM), s3ceb2410)
+ARCH = arm
+CPU = s3c2410
+BOARD = s3ceb2410
+endif
+
+ifeq ($(PLATFORM), sam7s)
+ARCH = arm
+CPU = AT91SAM7S
+BOARD = sam7s
+endif
+
+ifeq ($(PLATFORM), sam7x)
+ARCH = arm
+CPU = AT91SAM7X
+BOARD = sam7x
+endif
+
+ifeq ($(PLATFORM), zaurusc1k)
+ARCH = arm
+CPU = pxa270
+BOARD = zaurusc1k
+endif
+
+ifeq ($(PLATFORM), qemu_akita)
+ARCH = arm
+CPU = pxa270
+BOARD = qemu_akita
+endif
+
+ifeq ($(PLATFORM), nds)
+ARCH = arm
+CPU = nds
+BOARD = nds
+endif
+
+ifeq ($(PLATFORM), qemu)
+ARCH = ia32
+CPU = ia32
+BOARD = qemu
+endif
+
+ifeq ($(PLATFORM), at9200)
+ARCH = arm
+CPU = AT9200
+BOARD = AT9200
+endif
diff --git a/bsp/qemu/build/create-link b/bsp/qemu/build/create-link
new file mode 100755
index 0000000000..6131198931
--- /dev/null
+++ b/bsp/qemu/build/create-link
@@ -0,0 +1,24 @@
+#!/bin/bash
+mkdir lib
+ln -s ../../../include include
+
+for m_file in `ls ../../../src`
+do
+ ln -s ../../../../src/$m_file src/$m_file
+done
+
+for m_file in `ls ../`
+do
+ ln -s ../../../$m_file bsp/qemu/$m_file
+done
+rm bsp/qemu/build -f
+
+for m_file in `ls ../../../libcpu/ia32`
+do
+ ln -s ../../../../../libcpu/ia32/$m_file libcpu/ia32/$m_file
+done
+
+for m_file in `ls ../../../finsh`
+do
+ ln -s ../../../../finsh/$m_file finsh/$m_file
+done
diff --git a/bsp/qemu/build/finsh/Makefile b/bsp/qemu/build/finsh/Makefile
new file mode 100644
index 0000000000..5b56504fae
--- /dev/null
+++ b/bsp/qemu/build/finsh/Makefile
@@ -0,0 +1,29 @@
+KERNEL_ROOT=..
+
+include $(KERNEL_ROOT)/config.mk
+
+SRC = cmd.c shell.c symbol.c finsh_error.c finsh_node.c finsh_token.c \
+ finsh_heap.c finsh_ops.c finsh_var.c finsh_compiler.c finsh_init.c\
+ finsh_parser.c finsh_vm.c
+OBJ = $(SRC:.c=.o)
+
+CFLAGS += -I.
+
+
+all: $(LIBFINSH)
+
+$(LIBFINSH): $(OBJ)
+ $(AR) -r $@ $?
+ $(RANLIB) $@
+
+clean :
+ $(RM) *.o *~ *.bak
+ $(RM) $(LIBFINSH)
+ $(RM) .depend
+
+dep : .depend
+
+include .depend
+
+.depend: $(SRC)
+ $(CC) $(CFLAGS) -M $^ > $@
diff --git a/bsp/qemu/build/libcpu/Makefile b/bsp/qemu/build/libcpu/Makefile
new file mode 100644
index 0000000000..a3a541ce74
--- /dev/null
+++ b/bsp/qemu/build/libcpu/Makefile
@@ -0,0 +1,9 @@
+KERNEL_ROOT=..
+
+include $(KERNEL_ROOT)/config.mk
+
+all:
+ make -C $(ARCH)
+
+clean:
+ make -C $(ARCH) clean
diff --git a/bsp/qemu/build/libcpu/ia32/Makefile b/bsp/qemu/build/libcpu/ia32/Makefile
new file mode 100644
index 0000000000..90becda7d5
--- /dev/null
+++ b/bsp/qemu/build/libcpu/ia32/Makefile
@@ -0,0 +1,33 @@
+KERNEL_ROOT=../..
+
+include $(KERNEL_ROOT)/config.mk
+
+SRC = interrupt.c trap.c stack.c backtrace.c showmem.c __udivsi3.c __umodsi3.c
+CPU_OBJ = $(SRC:.c=.o) context.o trapisr.o hdisr.o
+
+#AFLAGS += -DTEXT_BASE=$(TEXTBASE) -I$(KERNEL_ROOT)/libcpu/$(ARCH)/include
+AFLAGS += -I$(KERNEL_ROOT)/libcpu/$(ARCH)/include
+CFLAGS += -I$(KERNEL_ROOT)/libcpu/$(ARCH)/include
+
+all: $(LIBCPU) $(STARTOBJ)
+
+$(STARTOBJ): start.S
+# $(CC) $(AFLAGS) -c start.S -ggdb -o $(STARTOBJ)
+ $(CC) $(AFLAGS) -c start.S -o $(STARTOBJ)
+
+$(LIBCPU): $(CPU_OBJ)
+ $(AR) r $(LIBCPU) $?
+ $(RANLIB) $(LIBCPU)
+
+clean :
+ $(RM) *.o *~ *.bak
+ $(RM) $(LIBCPU)
+ $(RM) $(STARTOBJ)
+ $(RM) .depend
+
+dep : .depend
+
+include .depend
+
+.depend: $(SRC)
+ $(CC) $(CFLAGS) -M $^ > $@
diff --git a/bsp/qemu/build/src/Makefile b/bsp/qemu/build/src/Makefile
new file mode 100644
index 0000000000..ad51ea4608
--- /dev/null
+++ b/bsp/qemu/build/src/Makefile
@@ -0,0 +1,25 @@
+KERNEL_ROOT=..
+
+include $(KERNEL_ROOT)/config.mk
+
+SRC = kservice.c clock.c object.c ipc.c timer.c irq.c scheduler.c \
+ thread.c idle.c mempool.c mem.c slab.c device.c
+OBJ = $(SRC:.c=.o)
+
+all: $(KERNEL)
+
+$(KERNEL): $(OBJ)
+ $(AR) r $@ $?
+ $(RANLIB) $@
+
+clean :
+ $(RM) *.o *~ *.bak
+ $(RM) $(KERNEL)
+ $(RM) .depend
+
+dep : .depend
+
+include .depend
+
+.depend: $(SRC)
+ $(CC) $(CFLAGS) -M $^ > $@