diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a0b7974..7a51c27 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: SW_KERNEL: "0" SW_MAJOR: "1" - SW_MINOR: "1" + SW_MINOR: "2" before_script: - "echo $CI_BUILD_ID" diff --git a/source/firmware/arch/stm32f4xx/lib/system/src/newlib/_startup.c b/source/firmware/arch/stm32f4xx/lib/system/src/newlib/_startup.c index b5e4e31..169538c 100644 --- a/source/firmware/arch/stm32f4xx/lib/system/src/newlib/_startup.c +++ b/source/firmware/arch/stm32f4xx/lib/system/src/newlib/_startup.c @@ -76,7 +76,7 @@ __initialize_args (int*, char***); // by redefining __initialize_args(), which is done when the // semihosting configurations are used. extern int -main (int argc, char* argv[]); +start_application (int argc, char* argv[]); // The implementation for the exit routine; for embedded // applications, a system reset will be performed. @@ -311,7 +311,7 @@ _start (void) __run_init_array (); // Call the main entry point, and save the exit code. - int code = main (argc, argv); + int code = start_application (argc, argv); // Run the C++ static destructors. __run_fini_array (); diff --git a/source/firmware/kernel/application.c b/source/firmware/kernel/application.c new file mode 100644 index 0000000..8a61d0d --- /dev/null +++ b/source/firmware/kernel/application.c @@ -0,0 +1,31 @@ +/* + * application.c + * + * Created on: Aug 20, 2016 + * Author: tkl + */ + +#include +#include + +#include "board.h" +#include "queue.h" +#include "stack.h" +#include "kernel.h" + +static struct thread_context main_task; +static stack_t main_stack[0xFF]; + +extern void main(void *arg); + +int start_application (int argc, char* argv[]) +{ + board_init(); + + thread_create(&main_task, main_stack, 0xFF, main, NULL, THREAD_PRIO_IDLE); + schedule_start(); + + return 0; +} + + diff --git a/source/test/pwm/main.c b/source/test/pwm/main.c index d3b8ebd..01371b0 100644 --- a/source/test/pwm/main.c +++ b/source/test/pwm/main.c @@ -16,10 +16,7 @@ #include "list.h" #include "shell.h" -#define TH_STACK_SIZE 256 -stack_t th_stack[TH_STACK_SIZE]; -struct thread_context th_ctx; -static void th_func(void *arg) +int main(void) { drv_open(&pwm_1); drv_open(&pwm_2); @@ -41,13 +38,6 @@ static void th_func(void *arg) sleep_ms(10); } } -} - -int main(void) -{ - board_init(); - thread_create(&th_ctx, th_stack, TH_STACK_SIZE, th_func, NULL, THREAD_PRIO_LOW); - schedule_start(); return 0; } diff --git a/source/test/shell/main.c b/source/test/shell/main.c index 1a7bb3c..e0ad942 100644 --- a/source/test/shell/main.c +++ b/source/test/shell/main.c @@ -33,10 +33,12 @@ static struct command cmd = { int main(void) { - board_init(); shell_init(&uart_1); shell_add_command(&cmd); - schedule_start(); + + while(1) { + sleep_ms(1000); + } return 0; } diff --git a/source/test/uart/main.c b/source/test/uart/main.c index fe17ca3..fb42f0f 100644 --- a/source/test/uart/main.c +++ b/source/test/uart/main.c @@ -20,26 +20,13 @@ #pragma GCC diagnostic ignored "-Wmissing-declarations" #pragma GCC diagnostic ignored "-Wreturn-type" -#define TH_STACK_SIZE 256 -stack_t th_stack[TH_STACK_SIZE]; -struct thread_context th_ctx; -static void th_func(void *arg) +int main(int argc, char* argv[]) { drv_open(&uart_1); while(1) { drv_write(&uart_1, "test\r\n", 6); sleep_ms(1000); } -} - - -int main(int argc, char* argv[]) -{ - board_init(); - timer_open(&timer_1); - thread_create(&th_ctx, th_stack, TH_STACK_SIZE, th_func, NULL, THREAD_PRIO_LOW); - - schedule_start(); return 0; }