Target refactoring and cube update (#161)

* Lib: move cube to libs. Firmware: prepare for code base refactoring, detach from cube, port to cmsis_os2.

* Firmware, target f2: regenerate project with latest cube package, tim17 for os ticks.

* Firmware: unified codebase.

* Core: do not include semaphore on old targets. Firmware: dfu uplaod target.

* CI: submodules, add firmware build.

* CI: proper submodule config.

* refactor build system

* CI: update chain to use new targets. Documentation: update to match current structure.

* CI: clean before rebuild.

* Add local test

docker-compose exec dev make -C firmware TARGET=local TEST=1 run

* Makefile: target specific build directory. CI: updated artifacts path.

* Makefile: init git submodules if they don't exists.

* Makefile: debug rule now doesn't reset MCU, prevent SIGINT propagation to st-util.

* Makefile: proper rebuild sequence in zz and zzz

* Makefile: timestamp tracking for flash and upload commands.

* Apps: modular build. Input: fix flipper hal inline.

* Wiki: proper bootloader link.

* Applications: fix broken build for local targets.

* add st-flash to docker

* fix build

* force rebuild app

* move app force to firmware part

* fix build deps

* qrcode build ok

* fix example display

* add testing routine

* update build instruction

Co-authored-by: Aleksandr Kutuzov <aku@plooks.com>
Co-authored-by: aanper <mail@s3f.ru>
This commit is contained in:
あく
2020-10-07 12:37:43 +03:00
committed by GitHub
parent 04bf049612
commit 3c2711102c
2232 changed files with 5937 additions and 2060599 deletions

View File

@@ -0,0 +1,71 @@
APP_DIR = $(PROJECT_ROOT)/applications
LIB_DIR = $(PROJECT_ROOT)/lib
CFLAGS += -I$(APP_DIR)
APP_RELEASE ?= 0
ifeq ($(APP_RELEASE), 1)
APP_DISPLAY = 1
APP_INPUT = 1
endif
APP_TEST ?= 0
ifeq ($(APP_TEST), 1)
CFLAGS += -DAPP_TEST
C_SOURCES += $(APP_DIR)/tests/furiac_test.c
C_SOURCES += $(APP_DIR)/tests/furi_record_test.c
C_SOURCES += $(APP_DIR)/tests/test_index.c
endif
APP_EXAMPLE_BLINK ?= 0
ifeq ($(APP_EXAMPLE_BLINK), 1)
CFLAGS += -DAPP_EXAMPLE_BLINK
C_SOURCES += $(APP_DIR)/examples/blink.c
endif
APP_EXAMPLE_UART_WRITE ?= 0
ifeq ($(APP_EXAMPLE_UART_WRITE), 1)
CFLAGS += -DAPP_EXAMPLE_UART_WRITE
C_SOURCES += $(APP_DIR)/examples/uart_write.c
endif
APP_EXAMPLE_IPC ?= 0
ifeq ($(APP_EXAMPLE_IPC), 1)
CFLAGS += -DAPP_EXAMPLE_IPC
C_SOURCES += $(APP_DIR)/examples/ipc.c
endif
APP_EXAMPLE_INPUT_DUMP ?= 0
ifeq ($(APP_EXAMPLE_INPUT_DUMP), 1)
CFLAGS += -DAPP_EXAMPLE_INPUT_DUMP
C_SOURCES += $(APP_DIR)/examples/input_dump.c
APP_INPUT = 1
endif
APP_EXAMPLE_QRCODE ?= 0
ifeq ($(APP_EXAMPLE_QRCODE), 1)
CFLAGS += -DAPP_EXAMPLE_QRCODE
C_SOURCES += $(APP_DIR)/examples/u8g2_qrcode.c
C_SOURCES += $(LIB_DIR)/qrcode/qrcode.c
APP_DISPLAY = 1
endif
APP_EXAMPLE_DISPLAY ?= 0
ifeq ($(APP_EXAMPLE_DISPLAY), 1)
CFLAGS += -DAPP_EXAMPLE_DISPLAY
C_SOURCES += $(APP_DIR)/examples/u8g2_example.c
APP_DISPLAY = 1
endif
# device drivers
ifeq ($(APP_DISPLAY), 1)
CFLAGS += -DAPP_DISPLAY
C_SOURCES += $(APP_DIR)/display-u8g2/display-u8g2.c
endif
APP_INPUT ?= 0
ifeq ($(APP_INPUT), 1)
CFLAGS += -DAPP_INPUT
C_SOURCES += $(APP_DIR)/input/input.c
endif

View File

@@ -3,7 +3,10 @@
extern SPI_HandleTypeDef hspi1;
// #define DEBUG 1
// TODO: fix log
#ifdef DEBUG
#undef DEBUG
#endif
// TODO rewrite u8g2 to pass thread-local context in this handlers

View File

@@ -8,7 +8,7 @@ typedef struct {
const char* libs;
} FlipperStartupApp;
#ifdef TEST
#ifdef APP_TEST
void flipper_test_app(void* p);
#endif
@@ -23,42 +23,50 @@ void display_u8g2(void* p);
void u8g2_example(void* p);
void input_task(void* p);
void menu_task(void* p);
void coreglitch_demo_0(void* p);
void u8g2_qrcode(void* p);
const FlipperStartupApp FLIPPER_STARTUP[] = {
#ifndef TEST
#ifdef APP_DISPLAY
{.app = display_u8g2, .name = "display_u8g2", .libs = ""},
{.app = u8g2_example, .name = "u8g2_example", .libs = "display_u8g2"},
#endif
#ifdef USE_INPUT
#ifdef APP_INPUT
{.app = input_task, .name = "input_task", .libs = ""},
#endif
// {.app = coreglitch_demo_0, .name = "coreglitch_demo_0", .libs = ""},
#ifdef TEST
#ifdef APP_TEST
{.app = flipper_test_app, .name = "test app", .libs = ""},
#endif
#ifdef EXAMPLE_BLINK
#ifdef APP_EXAMPLE_BLINK
{.app = application_blink, .name = "blink", .libs = ""},
#endif
#ifdef EXAMPLE_UART_WRITE
#ifdef APP_EXAMPLE_UART_WRITE
{.app = application_uart_write, .name = "uart write", .libs = ""},
#endif
#ifdef EXAMPLE_IPC
#ifdef APP_EXAMPLE_IPC
{.app = application_ipc_display, .name = "ipc display", .libs = ""},
{.app = application_ipc_widget, .name = "ipc widget", .libs = ""},
#endif
#ifdef EXAMPLE_INPUT_DUMP
#ifdef APP_EXAMPLE_INPUT_DUMP
{.app = application_input_dump, .name = "input dump", .libs = "input_task"},
#endif
#ifdef EXAMPLE_QRCODE
#ifdef APP_EXAMPLE_QRCODE
{.app = u8g2_qrcode, .name = "u8g2_qrcode", .libs = "display_u8g2"},
#endif
#ifdef APP_EXAMPLE_DISPLAY
{.app = u8g2_example, .name = "u8g2_example", .libs = "display_u8g2"},
#endif
};

View File

@@ -2,7 +2,7 @@
#include "flipper.h"
#include "log.h"
#include "flipper-core.h"
// #include "flipper-core.h" TODO: Rust build disabled
bool test_furi_ac_create_kill(FuriRecordSubscriber* log);
bool test_furi_ac_switch_exit(FuriRecordSubscriber* log);
@@ -58,6 +58,8 @@ void flipper_test_app(void* p) {
fuprintf(log, "[TEST] test_furi_mute_algorithm FAILED\n");
}
/*
TODO: Rust build disabled
if(add(1, 2) == 3) {
fuprintf(log, "[TEST] Rust add PASSED\n");
} else {
@@ -65,6 +67,7 @@ void flipper_test_app(void* p) {
}
rust_uart_write();
*/
furiac_exit(NULL);
}