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:
71
applications/applications.mk
Normal file
71
applications/applications.mk
Normal 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
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
};
|
||||
|
@@ -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);
|
||||
}
|
Reference in New Issue
Block a user