Add support for FreeRTOS into make system
This commit is contained in:
parent
3348128fe2
commit
211254ed6c
@ -3,43 +3,23 @@
|
|||||||
|
|
||||||
#include "Drivers/interrupts.h"
|
#include "Drivers/interrupts.h"
|
||||||
|
|
||||||
#include "gfx.h"
|
extern int main(void);
|
||||||
|
|
||||||
static void displayTask(void *pvParameters) {
|
static void mainTask(void *pvParameters) {
|
||||||
coord_t width, height;
|
(void) pvParameters;
|
||||||
// Get the screen size
|
main();
|
||||||
width = gdispGetWidth();
|
|
||||||
height = gdispGetHeight();
|
|
||||||
|
|
||||||
// Code Here
|
|
||||||
gdispDrawBox(10, 10, width/2, height/2, Yellow);
|
|
||||||
gdispFillArea(width/2, height/2, width/2-10, height/2-10, Blue);
|
|
||||||
gdispDrawLine(5, 30, width-50, height-40, Red);
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
vTaskDelay(1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the systems main entry, some call it a boot thread.
|
* This is the systems main entry, some call it a boot thread.
|
||||||
*
|
|
||||||
* -- Absolutely nothing wrong with this being called main(), just it doesn't have
|
|
||||||
* -- the same prototype as you'd see in a linux program.
|
|
||||||
**/
|
**/
|
||||||
int main(void) {
|
int FreeRTOS_Main(void) {
|
||||||
|
|
||||||
DisableInterrupts();
|
DisableInterrupts();
|
||||||
InitInterruptController();
|
InitInterruptController();
|
||||||
|
|
||||||
// Initialize and clear the display
|
xTaskCreate(mainTask,
|
||||||
gfxInit();
|
(portCHAR *)"Main Task",
|
||||||
|
|
||||||
xTaskCreate(displayTask,
|
|
||||||
(portCHAR *)"Display Task",
|
|
||||||
128,
|
128,
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
@ -4,7 +4,7 @@
|
|||||||
.extern vFreeRTOS_ISR
|
.extern vFreeRTOS_ISR
|
||||||
.extern vPortYieldProcessor
|
.extern vPortYieldProcessor
|
||||||
.extern DisableInterrupts
|
.extern DisableInterrupts
|
||||||
.extern main
|
.extern FreeRTOS_Main
|
||||||
.section .init
|
.section .init
|
||||||
.globl _start
|
.globl _start
|
||||||
;;
|
;;
|
||||||
@ -79,7 +79,7 @@ zero_loop:
|
|||||||
|
|
||||||
|
|
||||||
;@ mov sp,#0x1000000
|
;@ mov sp,#0x1000000
|
||||||
b main ;@ We're ready?? Lets start main execution!
|
b FreeRTOS_Main ;@ We're ready?? Lets start main execution!
|
||||||
.section .text
|
.section .text
|
||||||
|
|
||||||
undefined_instruction:
|
undefined_instruction:
|
@ -1,73 +1,55 @@
|
|||||||
# build environment
|
# Possible Targets: all clean Debug cleanDebug Release cleanRelease
|
||||||
PREFIX ?= /your compiler path/gcc-arm-none-eabi-4_8-2014q1
|
|
||||||
ARCH ?= $(PREFIX)/bin/arm-none-eabi
|
|
||||||
|
|
||||||
CC = ${ARCH}-gcc
|
##############################################################################################
|
||||||
CPP = ${ARCH}-g++
|
# Settings
|
||||||
AS = ${ARCH}-as
|
#
|
||||||
LD = ${ARCH}-ld
|
|
||||||
AR = ${ARCH}-ar
|
|
||||||
OBJCOPY = ${ARCH}-objcopy
|
|
||||||
|
|
||||||
PLATFORM = raspi
|
# General settings
|
||||||
LINKER_SCRIPT = raspberrypi.ld
|
# See $(GFXLIB)/tools/gmake_scripts/readme.txt for the list of variables
|
||||||
|
OPT_OS = freertos
|
||||||
|
OPT_THUMB = yes
|
||||||
|
OPT_LINK_OPTIMIZE = yes
|
||||||
|
# For the raspberry pi we can either use the generic armv6 cpu or the highly optimized raspberrypi settings
|
||||||
|
OPT_CPU = raspberrypi
|
||||||
|
|
||||||
CFLAGS = -march=armv6z -g -Wall -Wextra
|
# uGFX settings
|
||||||
ASFLAGS = -g
|
# See $(GFXLIB)/tools/gmake_scripts/library_ugfx.mk for the list of variables
|
||||||
|
GFXLIB = ../uGFX
|
||||||
|
GFXBOARD = RaspberryPi
|
||||||
|
GFXDEMO = modules/gdisp/basics
|
||||||
|
|
||||||
CFLAGS_FOR_TARGET = #-mcpu=arm1176jzf-s
|
# FreeRTOS settings
|
||||||
ASFLAGS_FOR_TARGET = #-mcpu=arm1176jzf-s
|
ifeq ($(OPT_OS),freertos)
|
||||||
LDFLAGS = #--error-unresolved-symbols
|
# See $(GFXLIB)/tools/gmake_scripts/os_freertos.mk for the list of variables
|
||||||
|
FREERTOS = ../FreeRTOS
|
||||||
|
FREERTOS_BOARD = RaspberryPi
|
||||||
|
FREERTOS_MODULES = $(GFXLIB)/boards/base/RaspberryPi/FreeRTOS
|
||||||
|
FREERTOS_LDSCRIPT = $(GFXLIB)/boards/base/RaspberryPi/FreeRTOS/raspberrypi.ld
|
||||||
|
endif
|
||||||
|
|
||||||
GFXLIB := ../uGFX
|
##############################################################################################
|
||||||
include $(GFXLIB)/gfx.mk
|
# Set these for your project
|
||||||
include $(GFXLIB)/drivers/gdisp/framebuffer/driver.mk
|
#
|
||||||
|
|
||||||
OSLIB := ../FreeRTOS
|
ARCH = arm-none-eabi-
|
||||||
MODULES := $(OSLIB)/Source/portable/GCC/RaspberryPi
|
SRCFLAGS = -ggdb -O0
|
||||||
MODULES += $(OSLIB)/Source/portable/MemMang
|
CFLAGS =
|
||||||
MODULES += $(OSLIB)/Source
|
CXXFLAGS = -fno-rtti
|
||||||
MODULES += Drivers
|
ASFLAGS =
|
||||||
|
LDFLAGS =
|
||||||
SRC_DIR := $(MODULES)
|
|
||||||
INC_DIR := $(addsuffix /include,$(SRC_DIR))
|
|
||||||
BUILD_DIR := $(addsuffix /build,$(SRC_DIR))
|
|
||||||
|
|
||||||
INCLUDEDIRS := $(OSLIB)/Source/portable/GCC/RaspberryPi
|
|
||||||
INCLUDEDIRS += $(OSLIB)/Source/include
|
|
||||||
INCLUDEDIRS += Drivers
|
|
||||||
INCLUDEDIRS += $(GFXINC)
|
|
||||||
|
|
||||||
INCLUDES := $(addprefix -I,$(INCLUDEDIRS))
|
|
||||||
|
|
||||||
ASRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.s))
|
|
||||||
AOBJ := $(ASRC:.s=.o)
|
|
||||||
CSRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.c))
|
|
||||||
CSRC += $(GFXSRC)
|
|
||||||
COBJ := $(CSRC:.c=.o)
|
|
||||||
|
|
||||||
vpath %.c $(SRC_DIR)
|
|
||||||
vpath %.cpp $(SRC_DIR)
|
|
||||||
vpath %.s $(SRC_DIR)
|
|
||||||
|
|
||||||
%.o: %.c
|
|
||||||
$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c -o $*.o $<
|
|
||||||
|
|
||||||
%.o: %.s
|
|
||||||
$(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $<
|
|
||||||
|
|
||||||
OBJ = $(AOBJ) $(COBJ)
|
|
||||||
|
|
||||||
bin/kernel.img: bin/kernel.elf
|
|
||||||
${OBJCOPY} -O binary $< $@
|
|
||||||
|
|
||||||
bin/kernel.elf: LDFLAGS += -L "$(PREFIX)/lib/gcc/arm-none-eabi/4.8.3" -lgcc
|
|
||||||
bin/kernel.elf: LDFLAGS += -L "$(PREFIX)/arm-none-eabi/lib" -lc
|
|
||||||
bin/kernel.elf: $(OBJ)
|
|
||||||
${LD} $(OBJ) -Map bin/kernel.map -o $@ -T $(LINKER_SCRIPT) ${LDFLAGS}
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f bin/*.elf bin/*.img bin/*.map $(OBJ)
|
|
||||||
|
|
||||||
|
SRC =
|
||||||
|
OBJS =
|
||||||
|
DEFS =
|
||||||
|
LIBS =
|
||||||
|
INCPATH =
|
||||||
|
LIBPATH =
|
||||||
|
|
||||||
|
##############################################################################################
|
||||||
|
# These should be at the end
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(GFXLIB)/tools/gmake_scripts/library_ugfx.mk
|
||||||
|
include $(GFXLIB)/tools/gmake_scripts/os_$(OPT_OS).mk
|
||||||
|
include $(GFXLIB)/tools/gmake_scripts/compiler_gcc.mk
|
||||||
|
# *** EOF ***
|
||||||
|
18
tools/gmake_scripts/cpu_armv6.mk
Normal file
18
tools/gmake_scripts/cpu_armv6.mk
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#
|
||||||
|
# This file is subject to the terms of the GFX License. If a copy of
|
||||||
|
# the license was not distributed with this file, you can obtain one at:
|
||||||
|
#
|
||||||
|
# http://ugfx.org/license.html
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# See readme.txt for the make API
|
||||||
|
#
|
||||||
|
|
||||||
|
# Requirements:
|
||||||
|
#
|
||||||
|
# NONE
|
||||||
|
#
|
||||||
|
|
||||||
|
SRCFLAGS += -march=armv6 -mfpu=vfp -mfloat-abi=hard
|
||||||
|
LDFLAGS += -march=armv6 -mfpu=vfp -mfloat-abi=hard
|
18
tools/gmake_scripts/cpu_raspberrypi.mk
Normal file
18
tools/gmake_scripts/cpu_raspberrypi.mk
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#
|
||||||
|
# This file is subject to the terms of the GFX License. If a copy of
|
||||||
|
# the license was not distributed with this file, you can obtain one at:
|
||||||
|
#
|
||||||
|
# http://ugfx.org/license.html
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# See readme.txt for the make API
|
||||||
|
#
|
||||||
|
|
||||||
|
# Requirements:
|
||||||
|
#
|
||||||
|
# NONE
|
||||||
|
#
|
||||||
|
|
||||||
|
SRCFLAGS += -march=armv6zk -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard
|
||||||
|
LDFLAGS += -march=armv6zk -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard
|
36
tools/gmake_scripts/os_freertos.mk
Normal file
36
tools/gmake_scripts/os_freertos.mk
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#
|
||||||
|
# This file is subject to the terms of the GFX License. If a copy of
|
||||||
|
# the license was not distributed with this file, you can obtain one at:
|
||||||
|
#
|
||||||
|
# http://ugfx.org/license.html
|
||||||
|
#
|
||||||
|
|
||||||
|
# See readme.txt for the make API
|
||||||
|
|
||||||
|
# Requirements:
|
||||||
|
#
|
||||||
|
# FREERTOS: The location of the FreeRTOS code eg FREERTOS=../FreeRTOS
|
||||||
|
# FREERTOS_BOARD The board name eg FREERTOS_BOARD=RaspberryPi
|
||||||
|
#
|
||||||
|
|
||||||
|
# Optional:
|
||||||
|
#
|
||||||
|
# FREERTOS_MODULES A list of directories containing FreeRTOS source (eg drivers, startup etc) - default is ""
|
||||||
|
# FREERTOS_LDSCRIPT The loader script - default is ""
|
||||||
|
#
|
||||||
|
|
||||||
|
PATHLIST += FREERTOS
|
||||||
|
|
||||||
|
FREERTOS_MODULES += $(FREERTOS)/Source/portable/GCC/$(FREERTOS_BOARD)
|
||||||
|
FREERTOS_MODULES += $(FREERTOS)/Source/portable/MemMang
|
||||||
|
FREERTOS_MODULES += $(FREERTOS)/Source
|
||||||
|
|
||||||
|
INCPATH += $(FREERTOS)/Source/portable/GCC/$(FREERTOS_BOARD) \
|
||||||
|
$(FREERTOS)/Source/include
|
||||||
|
|
||||||
|
SRC += $(foreach sdir,$(FREERTOS_MODULES),$(wildcard $(sdir)/*.s))
|
||||||
|
SRC += $(foreach sdir,$(FREERTOS_MODULES),$(wildcard $(sdir)/*.c))
|
||||||
|
|
||||||
|
ifeq ($(LDSCRIPT),)
|
||||||
|
LDSCRIPT= $(FREERTOS_LDSCRIPT)
|
||||||
|
endif
|
@ -16,7 +16,7 @@ OPT_COPY_EXE=no|yes - Copy the final program to the local project directory -
|
|||||||
OPT_NONSTANDARD_FLAGS=no - Turn off adding the standard compiler language flags - default no
|
OPT_NONSTANDARD_FLAGS=no - Turn off adding the standard compiler language flags - default no
|
||||||
OPT_LINK_OPTIMIZE=no - Remove unused code/data during link - default no
|
OPT_LINK_OPTIMIZE=no - Remove unused code/data during link - default no
|
||||||
OPT_OS=win32|win32.chibios|linux|osx|chibios|freertos|ecos|raw32|rawrtos - Mandatory: The operating system
|
OPT_OS=win32|win32.chibios|linux|osx|chibios|freertos|ecos|raw32|rawrtos - Mandatory: The operating system
|
||||||
OPT_CPU=x86|x64|stm32m4|at91sam7 - Add some cpu dependant flags
|
OPT_CPU=x86|x64|stm32m4|at91sam7|armv6|raspberrypi - Add some cpu dependant flags
|
||||||
|
|
||||||
BUILDDIR - Build Directory - default is ".build" or "bin/Debug" or "bin/Release" depending on the target
|
BUILDDIR - Build Directory - default is ".build" or "bin/Debug" or "bin/Release" depending on the target
|
||||||
PROJECT - Project Name - default is the name of the project directory
|
PROJECT - Project Name - default is the name of the project directory
|
||||||
|
Loading…
Reference in New Issue
Block a user