From 7e6ce005e6bb6a65a9d4b017e57eb98e49637b9e Mon Sep 17 00:00:00 2001 From: daishengdong Date: Tue, 3 Mar 2020 18:27:24 +0800 Subject: [PATCH] support avr architecture based on ATMega32 1. IAR project, see TencentOS-tiny\board\ATMega32\IAR, both 4.12 and 7.20 is supplied. --- .../iccarm => avr/ATMega32/iccavr}/port.h | 0 .../iccarm => avr/ATMega32/iccavr}/port_c.c | 0 .../ATMega32/iccavr}/port_config.h | 0 arch/avr/ATMega32/iccavr/port_s.asm | 157 ++ arch/avr/common/include/tos_cpu.h | 155 ++ arch/avr/common/include/tos_cpu_def.h | 30 + arch/avr/common/include/tos_cpu_types.h | 56 + arch/avr/common/include/tos_fault.h | 206 ++ arch/avr/common/tos_cpu.c | 306 +++ arch/avr/common/tos_fault.c | 205 ++ arch/stm8/iccstm8/port.h | 70 + arch/stm8/iccstm8/port_c.c | 296 +++ arch/stm8/iccstm8/port_config.h | 30 + arch/stm8/{iccarm => iccstm8}/port_s.S | 2 +- board/ATMega32/ATmega16_MINI_BOARD_SCH.pdf | Bin 0 -> 269615 bytes board/ATMega32/BSP/include/tim.h | 7 + board/ATMega32/BSP/include/uart.h | 13 + board/ATMega32/BSP/src/hal_uart.c | 20 + board/ATMega32/BSP/src/tim.c | 12 + board/ATMega32/BSP/src/uart.c | 47 + .../hello_world-iar4.12/TencentOS_tiny.ewd | 1275 +++++++++ .../hello_world-iar4.12/TencentOS_tiny.ewp | 2081 +++++++++++++++ .../hello_world-iar4.12/TencentOS_tiny.eww | 10 + .../settings/TencentOS_tiny.dbgdt | 176 ++ .../settings/TencentOS_tiny.dni | 18 + .../settings/TencentOS_tiny.wsdt | 76 + .../hello_world-iar7.20/TencentOS_tiny.ewd | 2058 +++++++++++++++ .../hello_world-iar7.20/TencentOS_tiny.ewp | 2259 ++++++++++++++++ .../hello_world-iar7.20/TencentOS_tiny.ewt | 2312 +++++++++++++++++ .../hello_world-iar7.20/TencentOS_tiny.eww | 10 + .../settings/TencentOS_tiny.Debug.cspy.bat | 40 + .../settings/TencentOS_tiny.Debug.cspy.ps1 | 31 + .../settings/TencentOS_tiny.Debug.driver.xcl | 15 + .../settings/TencentOS_tiny.Debug.general.xcl | 11 + .../settings/TencentOS_tiny.dbgdt | 229 ++ .../settings/TencentOS_tiny.dni | 15 + .../settings/TencentOS_tiny.dnx | 52 + .../settings/TencentOS_tiny.wsdt | 533 ++++ board/ATMega32/LIB/inc/stdint.h | 17 + board/ATMega32/TOS-CONFIG/tos_config.h | 53 + board/ATMega32/USER/main.c | 88 + board/STM8L052R8T6/BSP/include/tim.h | 2 +- board/STM8L052R8T6/BSP/src/uart.c | 138 +- .../IAR/hello_world/stm8_project.ewp | 10 +- .../IAR/hello_world/stm8_project.ewt | 8 +- board/STM8L052R8T6/IAR/shell/stm8_project.ewp | 10 +- board/STM8L052R8T6/IAR/shell/stm8_project.ewt | 8 +- kernel/core/include/tos_compiler.h | 2 +- kernel/core/include/tos_klib.h | 53 +- kernel/core/include/tos_sched.h | 6 +- kernel/core/tos_rwlock.c | 2 +- kernel/core/tos_task.c | 6 +- kernel/pm/tos_tickless.c | 12 +- osal/posix/include/private/pthread.h | 238 +- osal/posix/mqueue_prv.c | 1 - osal/posix/pthread.c | 2 +- 56 files changed, 13225 insertions(+), 244 deletions(-) rename arch/{stm8/iccarm => avr/ATMega32/iccavr}/port.h (100%) rename arch/{stm8/iccarm => avr/ATMega32/iccavr}/port_c.c (100%) rename arch/{stm8/iccarm => avr/ATMega32/iccavr}/port_config.h (100%) create mode 100644 arch/avr/ATMega32/iccavr/port_s.asm create mode 100644 arch/avr/common/include/tos_cpu.h create mode 100644 arch/avr/common/include/tos_cpu_def.h create mode 100644 arch/avr/common/include/tos_cpu_types.h create mode 100644 arch/avr/common/include/tos_fault.h create mode 100644 arch/avr/common/tos_cpu.c create mode 100644 arch/avr/common/tos_fault.c create mode 100644 arch/stm8/iccstm8/port.h create mode 100644 arch/stm8/iccstm8/port_c.c create mode 100644 arch/stm8/iccstm8/port_config.h rename arch/stm8/{iccarm => iccstm8}/port_s.S (97%) create mode 100644 board/ATMega32/ATmega16_MINI_BOARD_SCH.pdf create mode 100644 board/ATMega32/BSP/include/tim.h create mode 100644 board/ATMega32/BSP/include/uart.h create mode 100644 board/ATMega32/BSP/src/hal_uart.c create mode 100644 board/ATMega32/BSP/src/tim.c create mode 100644 board/ATMega32/BSP/src/uart.c create mode 100644 board/ATMega32/IAR/hello_world-iar4.12/TencentOS_tiny.ewd create mode 100644 board/ATMega32/IAR/hello_world-iar4.12/TencentOS_tiny.ewp create mode 100644 board/ATMega32/IAR/hello_world-iar4.12/TencentOS_tiny.eww create mode 100644 board/ATMega32/IAR/hello_world-iar4.12/settings/TencentOS_tiny.dbgdt create mode 100644 board/ATMega32/IAR/hello_world-iar4.12/settings/TencentOS_tiny.dni create mode 100644 board/ATMega32/IAR/hello_world-iar4.12/settings/TencentOS_tiny.wsdt create mode 100644 board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.ewd create mode 100644 board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.ewp create mode 100644 board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.ewt create mode 100644 board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.eww create mode 100644 board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.cspy.bat create mode 100644 board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.cspy.ps1 create mode 100644 board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.driver.xcl create mode 100644 board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.general.xcl create mode 100644 board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.dbgdt create mode 100644 board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.dni create mode 100644 board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.dnx create mode 100644 board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.wsdt create mode 100644 board/ATMega32/LIB/inc/stdint.h create mode 100644 board/ATMega32/TOS-CONFIG/tos_config.h create mode 100644 board/ATMega32/USER/main.c diff --git a/arch/stm8/iccarm/port.h b/arch/avr/ATMega32/iccavr/port.h similarity index 100% rename from arch/stm8/iccarm/port.h rename to arch/avr/ATMega32/iccavr/port.h diff --git a/arch/stm8/iccarm/port_c.c b/arch/avr/ATMega32/iccavr/port_c.c similarity index 100% rename from arch/stm8/iccarm/port_c.c rename to arch/avr/ATMega32/iccavr/port_c.c diff --git a/arch/stm8/iccarm/port_config.h b/arch/avr/ATMega32/iccavr/port_config.h similarity index 100% rename from arch/stm8/iccarm/port_config.h rename to arch/avr/ATMega32/iccavr/port_config.h diff --git a/arch/avr/ATMega32/iccavr/port_s.asm b/arch/avr/ATMega32/iccavr/port_s.asm new file mode 100644 index 00000000..bb0e52c7 --- /dev/null +++ b/arch/avr/ATMega32/iccavr/port_s.asm @@ -0,0 +1,157 @@ +#include + + RSEG CODE + + EXTERN k_curr_task + EXTERN k_next_task + + PUBLIC port_int_disable + PUBLIC port_int_enable + PUBLIC port_cpsr_save + PUBLIC port_cpsr_restore + PUBLIC port_sched_start + PUBLIC port_irq_context_switch + PUBLIC port_context_switch + +port_int_disable: + CLI + RET + + +port_int_enable: + SEI + RET + + +port_cpsr_save: + IN R16, SREG + CLI + RET + + +port_cpsr_restore: + OUT SREG, R16 + RET + + +port_sched_start: + JMP _context_restore + + +port_irq_context_switch: +port_context_switch: +_context_save: + PUSH R0 + + /* save SREG */ + IN R0, SREG + CLI + PUSH R0 + + PUSH R1 + PUSH R2 + PUSH R3 + PUSH R4 + PUSH R5 + PUSH R6 + PUSH R7 + PUSH R8 + PUSH R9 + PUSH R10 + PUSH R11 + PUSH R12 + PUSH R13 + PUSH R14 + PUSH R15 + PUSH R16 + PUSH R17 + PUSH R18 + PUSH R19 + PUSH R20 + PUSH R21 + PUSH R22 + PUSH R23 + PUSH R24 + PUSH R25 + PUSH R26 + PUSH R27 + PUSH R28 + PUSH R29 + PUSH R30 + PUSH R31 + + /* k_curr_task->sp = SP */ + LDS R30, k_curr_task + LDS R31, k_curr_task + 1 + + IN R0, SPL + IN R1, SPH + + ST Z, R0 + STD Z + 1, R1 + +_context_restore: + /* k_curr_task = k_next_task */ + LDI R28, low(k_curr_task) + LDI R29, high(k_curr_task) + + LDI R30, low(k_next_task) + LDI R31, high(k_next_task) + + LD R0, Z + LDD R1, Z + 1 + + ST Y, R0 + STD Y + 1, R1 + + /* SP = k_next_task->sp */ + LDS R30, k_next_task + LDS R31, k_next_task + 1 + + LD R0, Z + LDD R1, Z + 1 + + OUT SPL, R0 + OUT SPH, R1 + + /* do restore */ + POP R31 + POP R30 + POP R29 + POP R28 + POP R27 + POP R26 + POP R25 + POP R24 + POP R23 + POP R22 + POP R21 + POP R20 + POP R19 + POP R18 + POP R17 + POP R16 + POP R15 + POP R14 + POP R13 + POP R12 + POP R11 + POP R10 + POP R9 + POP R8 + POP R7 + POP R6 + POP R5 + POP R4 + POP R3 + POP R2 + POP R1 + + POP R0 + OUT SREG, R0 + POP R0 + + RET + + END + diff --git a/arch/avr/common/include/tos_cpu.h b/arch/avr/common/include/tos_cpu.h new file mode 100644 index 00000000..232e2162 --- /dev/null +++ b/arch/avr/common/include/tos_cpu.h @@ -0,0 +1,155 @@ +/*---------------------------------------------------------------------------- + * Tencent is pleased to support the open source community by making TencentOS + * available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * If you have downloaded a copy of the TencentOS binary from Tencent, please + * note that the TencentOS binary is licensed under the BSD 3-Clause License. + * + * If you have downloaded a copy of the TencentOS source code from Tencent, + * please note that TencentOS source code is licensed under the BSD 3-Clause + * License, except for the third-party components listed below which are + * subject to different license terms. Your integration of TencentOS into your + * own projects may require compliance with the BSD 3-Clause License, as well + * as the other licenses applicable to the third-party components included + * within TencentOS. + *---------------------------------------------------------------------------*/ + +#ifndef _TOS_CPU_H_ +#define _TOS_CPU_H_ + +typedef struct cpu_context_st { + cpu_data_t R31; + cpu_data_t R30; + cpu_data_t R29; + cpu_data_t R28; + cpu_data_t R27; + cpu_data_t R26; + cpu_data_t R25; + cpu_data_t R24; + cpu_data_t R23; + cpu_data_t R22; + cpu_data_t R21; + cpu_data_t R20; + cpu_data_t R19; + cpu_data_t R18; + cpu_data_t R17; + cpu_data_t R16; + cpu_data_t R15; + cpu_data_t R14; + cpu_data_t R13; + cpu_data_t R12; + cpu_data_t R11; + cpu_data_t R10; + cpu_data_t R9; + cpu_data_t R8; + cpu_data_t R7; + cpu_data_t R6; + cpu_data_t R5; + cpu_data_t R4; + cpu_data_t R3; + cpu_data_t R2; + cpu_data_t R1; + + cpu_data_t SREG; + cpu_data_t R0; + + cpu_data_t PCH; + cpu_data_t PCL; + cpu_data_t LRH; + cpu_data_t LRL; +} cpu_context_t; + +__API__ uint32_t tos_cpu_clz(uint32_t val); + +__API__ void tos_cpu_int_disable(void); + +__API__ void tos_cpu_int_enable(void); + +__API__ cpu_cpsr_t tos_cpu_cpsr_save(void); + +__API__ void tos_cpu_cpsr_restore(cpu_cpsr_t cpsr); + +#if (TOS_CFG_CPU_HRTIMER_EN > 0u) + +__API__ void tos_cpu_hrtimer_init(void); + +__API__ cpu_hrtimer_t tos_cpu_hrtimer_read(void); + +#endif + +__KNL__ void cpu_init(void); + +__KNL__ void cpu_reset(void); + +__KNL__ void cpu_systick_init(k_cycle_t cycle_per_tick); + +__KNL__ void cpu_sched_start(void); + +__KNL__ void cpu_context_switch(void); + +__KNL__ void cpu_irq_context_switch(void); + +#if TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN > 0u + +__KNL__ k_err_t cpu_task_stack_draught_depth(k_stack_t *stk_base, size_t stk_size, int *depth); + +#endif + +__KNL__ k_stack_t *cpu_task_stk_init(void *entry, + void *arg, + void *exit, + k_stack_t *stk_base, + size_t stk_size); + +#if TOS_CFG_TICKLESS_EN > 0u + +__KNL__ void cpu_systick_resume(void); + +__KNL__ void cpu_systick_suspend(void); + +__KNL__ void cpu_systick_reload_reset(void); + +__KNL__ void cpu_systick_pending_reset(void); + +__KNL__ k_time_t cpu_systick_max_delay_millisecond(void); + +__KNL__ void cpu_systick_expires_set(k_time_t millisecond); + +__KNL__ void cpu_systick_reset(void); + +#endif + +#if TOS_CFG_PWR_MGR_EN > 0u + +__KNL__ void cpu_sleep_mode_enter(void); + +__KNL__ void cpu_stop_mode_enter(void); + +__KNL__ void cpu_standby_mode_enter(void); + +#endif + +#if TOS_CFG_FAULT_BACKTRACE_EN > 0u + +__KNL__ void cpu_fault_diagnosis(void); + +#endif + +/* Allocates CPU status register word. */ +#define TOS_CPU_CPSR_ALLOC() cpu_cpsr_t cpu_cpsr = (cpu_cpsr_t)0u + +/* Save CPU status word & disable interrupts.*/ +#define TOS_CPU_INT_DISABLE() \ + do { \ + cpu_cpsr = tos_cpu_cpsr_save(); \ + } while (0) + +/* Restore CPU status word. */ +#define TOS_CPU_INT_ENABLE() \ + do { \ + tos_cpu_cpsr_restore(cpu_cpsr); \ + } while (0) + +#endif /* _TOS_CPU_H_ */ + diff --git a/arch/avr/common/include/tos_cpu_def.h b/arch/avr/common/include/tos_cpu_def.h new file mode 100644 index 00000000..50d0d838 --- /dev/null +++ b/arch/avr/common/include/tos_cpu_def.h @@ -0,0 +1,30 @@ +/*---------------------------------------------------------------------------- + * Tencent is pleased to support the open source community by making TencentOS + * available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * If you have downloaded a copy of the TencentOS binary from Tencent, please + * note that the TencentOS binary is licensed under the BSD 3-Clause License. + * + * If you have downloaded a copy of the TencentOS source code from Tencent, + * please note that TencentOS source code is licensed under the BSD 3-Clause + * License, except for the third-party components listed below which are + * subject to different license terms. Your integration of TencentOS into your + * own projects may require compliance with the BSD 3-Clause License, as well + * as the other licenses applicable to the third-party components included + * within TencentOS. + *---------------------------------------------------------------------------*/ + +#ifndef _TOS_CPU_DEF_H_ +#define _TOS_CPU_DEF_H_ + +#define CPU_WORD_SIZE_08 1 +#define CPU_WORD_SIZE_16 2 +#define CPU_WORD_SIZE_32 3 +#define CPU_WORD_SIZE_64 4 + +#define CPU_STK_GROWTH_ASCENDING 1 +#define CPU_STK_GROWTH_DESCENDING 2 + +#endif /* _TOS_CPU_DEF_H_ */ + diff --git a/arch/avr/common/include/tos_cpu_types.h b/arch/avr/common/include/tos_cpu_types.h new file mode 100644 index 00000000..8ee05361 --- /dev/null +++ b/arch/avr/common/include/tos_cpu_types.h @@ -0,0 +1,56 @@ +/*---------------------------------------------------------------------------- + * Tencent is pleased to support the open source community by making TencentOS + * available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * If you have downloaded a copy of the TencentOS binary from Tencent, please + * note that the TencentOS binary is licensed under the BSD 3-Clause License. + * + * If you have downloaded a copy of the TencentOS source code from Tencent, + * please note that TencentOS source code is licensed under the BSD 3-Clause + * License, except for the third-party components listed below which are + * subject to different license terms. Your integration of TencentOS into your + * own projects may require compliance with the BSD 3-Clause License, as well + * as the other licenses applicable to the third-party components included + * within TencentOS. + *---------------------------------------------------------------------------*/ + +#ifndef _TOS_CPU_TYPES_H_ +#define _TOS_CPU_TYPES_H_ + +/* CPU address type based on address bus size. */ +#if (TOS_CFG_CPU_ADDR_SIZE == CPU_WORD_SIZE_32) +typedef uint32_t cpu_addr_t; +#elif (TOS_CFG_CPU_ADDR_SIZE == CPU_WORD_SIZE_16) +typedef uint16_t cpu_addr_t; +#else +typedef uint8_t cpu_addr_t; +#endif + +/* CPU data type based on data bus size. */ +#if (TOS_CFG_CPU_DATA_SIZE == CPU_WORD_SIZE_32) +typedef uint32_t cpu_data_t; +#elif (TOS_CFG_CPU_DATA_SIZE == CPU_WORD_SIZE_16) +typedef uint16_t cpu_data_t; +#else +typedef uint8_t cpu_data_t; +#endif + +#if (TOS_CFG_CPU_HRTIMER_EN > 0) +#if (TOS_CFG_CPU_HRTIMER_SIZE == CPU_WORD_SIZE_08) +typedef uint8_t cpu_hrtimer_t; +#elif (TOS_CFG_CPU_HRTIMER_SIZE == CPU_WORD_SIZE_16) +typedef uint16_t cpu_hrtimer_t; +#elif (TOS_CFG_CPU_HRTIMER_SIZE == CPU_WORD_SIZE_64) +typedef uint64_t cpu_hrtimer_t; +#else +typedef uint32_t cpu_hrtimer_t; +#endif +#else +typedef uint32_t cpu_hrtimer_t; +#endif + +typedef cpu_addr_t cpu_cpsr_t; + +#endif + diff --git a/arch/avr/common/include/tos_fault.h b/arch/avr/common/include/tos_fault.h new file mode 100644 index 00000000..e0fc0781 --- /dev/null +++ b/arch/avr/common/include/tos_fault.h @@ -0,0 +1,206 @@ +/*---------------------------------------------------------------------------- + * Tencent is pleased to support the open source community by making TencentOS + * available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * If you have downloaded a copy of the TencentOS binary from Tencent, please + * note that the TencentOS binary is licensed under the BSD 3-Clause License. + * + * If you have downloaded a copy of the TencentOS source code from Tencent, + * please note that TencentOS source code is licensed under the BSD 3-Clause + * License, except for the third-party components listed below which are + * subject to different license terms. Your integration of TencentOS into your + * own projects may require compliance with the BSD 3-Clause License, as well + * as the other licenses applicable to the third-party components included + * within TencentOS. + *---------------------------------------------------------------------------*/ + +#ifndef _TOS_FAULT_H_ +#define _TOS_FAULT_H_ + +#if TOS_CFG_FAULT_BACKTRACE_EN > 0u + +typedef int (*k_fault_log_writer_t)(const char *format, ...); + +#define K_FAULT_STACK_DUMP_DEPTH 10u + +#define K_FAULT_CALL_STACK_BACKTRACE_DEPTH 5u + +typedef struct fault_cpu_frame_st { + cpu_data_t r0; + cpu_data_t r1; + cpu_data_t r2; + cpu_data_t r3; + cpu_data_t r12; + cpu_data_t lr; + cpu_data_t pc; + cpu_data_t spsr; +} fault_cpu_frame_t; + +typedef struct fault_exc_frame_st { + fault_cpu_frame_t cpu_frame; +} fault_exc_frame_t; + +/** + * information we need to do fault backtrace + */ +typedef struct fault_information_st { + int is_thumb : 1; /**< whether it is thumb we use when we fall into fault? */ + int is_on_task : 1; /**< whether we are on a task when fall into fault? */ + int is_stk_ovrf : 1; /**< whether we get a stack overflow */ + + cpu_addr_t pc; /**< just where fault happens */ + + cpu_addr_t sp_before_fault; /**< original sp just before the cpu push the fault exception frame */ + + /** + * we need main_stack_start & main_stack_limit to do call stack backtrace + * when we fall into fault during a task, we should do the call stack backtrace on the task's stack + * but if not, which means we are in kernel, we should do the call stack backtrace on the main stack + * in arm v7-m, this should be the MSP's start and limit + * in arm v7-a, call stack backtrace is another story(much more elegant because we have FP). + */ + cpu_addr_t stack_start; /**< current sp start address we use. if on task, it'll be the task's stack, otherwise it'll be the msp */ + cpu_addr_t stack_limit; /**< current sp limit address */ + cpu_addr_t code_start; /**< current code start address */ + cpu_addr_t code_limit; /**< current code limit address */ +} fault_info_t; + +#if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) + +#define DEFAULT_CODE_SECTION_NAME ER_IROM1 +#define DEFAULT_CSTACK_SECTION_NAME STACK + +#define SECTION_START(_name_) _name_##$$Base +#define SECTION_END(_name_) _name_##$$Limit +#define IMAGE_SECTION_START(_name_) Image$$##_name_##$$Base +#define IMAGE_SECTION_END(_name_) Image$$##_name_##$$Limit +#define CSTACK_BLOCK_START(_name_) SECTION_START(_name_) +#define CSTACK_BLOCK_END(_name_) SECTION_END(_name_) +#define CODE_SECTION_START(_name_) IMAGE_SECTION_START(_name_) +#define CODE_SECTION_END(_name_) IMAGE_SECTION_END(_name_) + +extern const int CSTACK_BLOCK_START(DEFAULT_CSTACK_SECTION_NAME); +extern const int CSTACK_BLOCK_END(DEFAULT_CSTACK_SECTION_NAME); +extern const int CODE_SECTION_START(DEFAULT_CODE_SECTION_NAME); +extern const int CODE_SECTION_END(DEFAULT_CODE_SECTION_NAME); + +__STATIC_INLINE__ cpu_addr_t fault_code_start(void) +{ + return (cpu_addr_t)&CODE_SECTION_START(DEFAULT_CODE_SECTION_NAME); +} + +__STATIC_INLINE__ cpu_addr_t fault_code_limit(void) +{ + return (cpu_addr_t)&CODE_SECTION_END(DEFAULT_CODE_SECTION_NAME); +} + +__STATIC_INLINE__ cpu_addr_t fault_msp_start(void) +{ + return (cpu_addr_t)&CSTACK_BLOCK_START(DEFAULT_CSTACK_SECTION_NAME); +} + +__STATIC_INLINE__ cpu_addr_t fault_msp_limit(void) +{ + return (cpu_addr_t)&CSTACK_BLOCK_END(DEFAULT_CSTACK_SECTION_NAME); +} + +#elif defined(__ICCARM__) + +#define DEFAULT_CODE_SECTION_NAME ".text" +#define DEFAULT_CSTACK_SECTION_NAME "CSTACK" + +#pragma section=DEFAULT_CSTACK_SECTION_NAME +#pragma section=DEFAULT_CODE_SECTION_NAME + +__STATIC_INLINE__ cpu_addr_t fault_code_start(void) +{ + return (cpu_addr_t)__section_begin(DEFAULT_CODE_SECTION_NAME); +} + +__STATIC_INLINE__ cpu_addr_t fault_code_limit(void) +{ + return (cpu_addr_t)__section_end(DEFAULT_CODE_SECTION_NAME); +} + +__STATIC_INLINE__ cpu_addr_t fault_msp_start(void) +{ + return (cpu_addr_t)__section_begin(DEFAULT_CSTACK_SECTION_NAME); +} + +__STATIC_INLINE__ cpu_addr_t fault_msp_limit(void) +{ + return (cpu_addr_t)__section_end(DEFAULT_CSTACK_SECTION_NAME); +} + +#elif defined(__GNUC__) + +/** + * if we are using keil(armcc) or mdk(iccarm), we probably use the defult link script supplied by the IDE. + * the way to locate the text/stack section start and limit is to find them in default link script. + * but if we build our project by makefile(or something like scons, cmake, etc), we probably need to write + * our own link scrpit, if so, we should do like this(just a demo): + * + _stext = .; + .text : { + *(.text.startup) + *(.text) + *(.text.*) + } + _etext = .; + + __bss_start = .; + .bss : { + *(.bss) + *(.bss.*) + *(COMMON) + _sstack = .; + *(.cstack) + _estack = .; + } + __bss_end = .; + * by this, we can locate text/stack section start and limit by _stext/_etext and _sstack/_estack + */ +#define DEFAULT_CODE_SECTION_START _stext +#define DEFAULT_CODE_SECTION_END _etext +#define DEFAULT_CSTACK_SECTION_START _sstack +#define DEFAULT_CSTACK_SECTION_END _estack + +extern const int DEFAULT_CODE_SECTION_START; +extern const int DEFAULT_CODE_SECTION_END; + +extern const int DEFAULT_CSTACK_SECTION_START; +extern const int DEFAULT_CSTACK_SECTION_END; + +__STATIC_INLINE__ cpu_addr_t fault_code_start(void) +{ + return (cpu_addr_t)(&(DEFAULT_CODE_SECTION_START)); +} + +__STATIC_INLINE__ cpu_addr_t fault_code_limit(void) +{ + return (cpu_addr_t)(&(DEFAULT_CODE_SECTION_END)); +} + +__STATIC_INLINE__ cpu_addr_t fault_msp_start(void) +{ + return (cpu_addr_t)(&(DEFAULT_CSTACK_SECTION_START)); +} + +__STATIC_INLINE__ cpu_addr_t fault_msp_limit(void) +{ + return (cpu_addr_t)(&(DEFAULT_CSTACK_SECTION_END)); +} + +#endif + +__API__ void tos_fault_log_writer_set(k_fault_log_writer_t log_writer); + +__KNL__ int fault_default_log_writer(const char *format, ...); + +__KNL__ void fault_backtrace(cpu_addr_t lr, fault_exc_frame_t *frame); + +#endif + +#endif /* _TOS_FAULT_H_ */ + diff --git a/arch/avr/common/tos_cpu.c b/arch/avr/common/tos_cpu.c new file mode 100644 index 00000000..0c072394 --- /dev/null +++ b/arch/avr/common/tos_cpu.c @@ -0,0 +1,306 @@ +/*---------------------------------------------------------------------------- + * Tencent is pleased to support the open source community by making TencentOS + * available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * If you have downloaded a copy of the TencentOS binary from Tencent, please + * note that the TencentOS binary is licensed under the BSD 3-Clause License. + * + * If you have downloaded a copy of the TencentOS source code from Tencent, + * please note that TencentOS source code is licensed under the BSD 3-Clause + * License, except for the third-party components listed below which are + * subject to different license terms. Your integration of TencentOS into your + * own projects may require compliance with the BSD 3-Clause License, as well + * as the other licenses applicable to the third-party components included + * within TencentOS. + *---------------------------------------------------------------------------*/ + +#include "tos_k.h" + +__API__ uint32_t tos_cpu_clz(uint32_t val) +{ +#if defined(TOS_CFG_CPU_LEAD_ZEROS_ASM_PRESENT) && (TOS_CFG_CPU_LEAD_ZEROS_ASM_PRESENT == 0u) + uint32_t nbr_lead_zeros = 0; + + if (!(val & 0XFFFF0000)) { + val <<= 16; + nbr_lead_zeros += 16; + } + + if (!(val & 0XFF000000)) { + val <<= 8; + nbr_lead_zeros += 8; + } + + if (!(val & 0XF0000000)) { + val <<= 4; + nbr_lead_zeros += 4; + } + + if (!(val & 0XC0000000)) { + val <<= 2; + nbr_lead_zeros += 2; + } + + if (!(val & 0X80000000)) { + nbr_lead_zeros += 1; + } + + if (!val) { + nbr_lead_zeros += 1; + } + + return (nbr_lead_zeros); +#else + return port_clz(val); +#endif +} + +__API__ void tos_cpu_int_disable(void) +{ + port_int_disable(); +} + +__API__ void tos_cpu_int_enable(void) +{ + port_int_enable(); +} + +__API__ cpu_cpsr_t tos_cpu_cpsr_save(void) +{ + return port_cpsr_save(); +} + +__API__ void tos_cpu_cpsr_restore(cpu_cpsr_t cpsr) +{ + port_cpsr_restore(cpsr); +} + +__KNL__ void cpu_init(void) +{ + k_cpu_cycle_per_tick = TOS_CFG_CPU_CLOCK / k_cpu_tick_per_second; + cpu_systick_init(k_cpu_cycle_per_tick); + +#if (TOS_CFG_CPU_HRTIMER_EN > 0) + tos_cpu_hrtimer_init(); +#endif +} + +__KNL__ void cpu_reset(void) +{ + port_cpu_reset(); +} + +__KNL__ void cpu_sched_start(void) +{ + port_sched_start(); +} + +__KNL__ void cpu_context_switch(void) +{ + port_context_switch(); +} + +__KNL__ void cpu_irq_context_switch(void) +{ + port_irq_context_switch(); +} + +__KNL__ void cpu_systick_init(k_cycle_t cycle_per_tick) +{ +#if 0 + port_systick_priority_set(TOS_CFG_CPU_SYSTICK_PRIO); + port_systick_config(cycle_per_tick); +#endif +} + +#if TOS_CFG_TICKLESS_EN > 0u + +/** + * @brief Set value to systick reload value register + * + * @param cycles The value set to register + * + * @return None + */ +__STATIC_INLINE__ void cpu_systick_reload(k_cycle_t cycle_per_tick) +{ + port_systick_reload(cycle_per_tick); +} + +/** + * @brief Enable systick interrupt + * + * @return None + */ +__KNL__ void cpu_systick_resume(void) +{ + port_systick_resume(); +} + +/** + * @brief Disable systick interrupt + * + * @return None + */ +__KNL__ void cpu_systick_suspend(void) +{ + port_systick_suspend(); +} + +__KNL__ k_time_t cpu_systick_max_delay_millisecond(void) +{ + return port_systick_max_delay_millisecond(); +} + +__KNL__ void cpu_systick_expires_set(k_time_t millisecond) +{ + k_cycle_t cycles; + + cycles = (k_cycle_t)((uint64_t)millisecond * TOS_CFG_CPU_CLOCK / K_TIME_MILLISEC_PER_SEC); /* CLOCK means cycle per second */ + + cpu_systick_reload(cycles - 12); /* interrupt delay */ +} + +__KNL__ void cpu_systick_pending_reset(void) +{ + port_systick_pending_reset(); +} + +__KNL__ void cpu_systick_reset(void) +{ + cpu_systick_reload(k_cpu_cycle_per_tick); +} + +#endif /* TOS_CFG_TICKLESS_EN */ + +#if TOS_CFG_PWR_MGR_EN > 0u + +__KNL__ void cpu_sleep_mode_enter(void) +{ + port_sleep_mode_enter(); +} + +__KNL__ void cpu_stop_mode_enter(void) +{ + port_stop_mode_enter(); +} + +__KNL__ void cpu_standby_mode_enter(void) +{ + port_standby_mode_enter(); +} + +#endif /* TOS_CFG_PWR_MGR_EN */ + +__KNL__ k_stack_t *cpu_task_stk_init(void *entry, + void *arg, + void *exit, + k_stack_t *stk_base, + size_t stk_size) +{ + cpu_data_t *sp; + + sp = (cpu_data_t *)&stk_base[stk_size]; + +#if TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN > 0u + uint8_t *slot = (uint8_t *)&stk_base[0]; + for (; slot < (uint8_t *)sp; ++slot) { + *slot = 0xCC; + } +#endif + + *--sp = (cpu_data_t)((uint16_t)exit & 0xFF); /* LRL */ + *--sp = (cpu_data_t)(((uint16_t)exit >> 8) & 0xFF); /* LRH */ + + *--sp = (cpu_data_t)((uint16_t)entry & 0xFF); /* PCL */ + *--sp = (cpu_data_t)(((uint16_t)entry >> 8) & 0xFF); /* PCH */ + + *--sp = 0x00; /* R0 */ + + /* SREG: + --------------------------------- + | I | T | H | S | V | N | Z | C | + |-------------------------------- + | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + --------------------------------- + */ + *--sp = 0x80; /* SREG */ + + *--sp = 0x01; /* R1 */ + *--sp = 0x02; /* R2 */ + *--sp = 0x03; /* R3 */ + *--sp = 0x04; /* R4 */ + *--sp = 0x05; /* R5 */ + *--sp = 0x06; /* R6 */ + *--sp = 0x07; /* R7 */ + *--sp = 0x08; /* R8 */ + *--sp = 0x09; /* R9 */ + *--sp = 0x10; /* R10 */ + *--sp = 0x11; /* R11 */ + *--sp = 0x12; /* R12 */ + *--sp = 0x13; /* R13 */ + *--sp = 0x14; /* R14 */ + *--sp = 0x15; /* R15 */ + *--sp = 0x16; /* R16 */ + *--sp = 0x17; /* R17 */ + *--sp = 0x18; /* R18 */ + *--sp = 0x19; /* R19 */ + *--sp = 0x20; /* R20 */ + *--sp = 0x21; /* R21 */ + *--sp = 0x22; /* R22 */ + *--sp = 0x23; /* R23 */ + + *--sp = (cpu_data_t)((uint16_t)arg & 0xFF); /* R24 */ + *--sp = (cpu_data_t)(((uint16_t)arg >> 8) & 0xFF); /* R25 */ + + *--sp = 0x26; /* R26 X */ + *--sp = 0x27; /* R27 */ + *--sp = 0x28; /* R28 Y */ + *--sp = 0x29; /* R29 */ + *--sp = 0x30; /* R30 Z */ + *--sp = 0x31; /* R31 */ + + /* ATTENTION: + must do a sp decrease here in AVR + */ + return (k_stack_t *)(--sp); +} + +#if TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN > 0u + +__KNL__ k_err_t cpu_task_stack_draught_depth(k_stack_t *stk_base, size_t stk_size, int *depth) +{ + uint8_t *slot; + uint8_t *sp, *bp; + int the_depth = 0; + + bp = (uint8_t *)&stk_base[0]; + + sp = &stk_base[stk_size]; + + for (slot = sp - 1; slot >= bp; --slot) { + if (*slot != 0xCC) { + the_depth = sp - slot; + } + } + + *depth = the_depth; + if (the_depth == stk_size) { + return K_ERR_TASK_STK_OVERFLOW; + } + + return K_ERR_NONE; +} + +#endif + +#if TOS_CFG_FAULT_BACKTRACE_EN > 0u + +__KNL__ void cpu_fault_diagnosis(void) +{ + port_fault_diagnosis(); +} + +#endif /* TOS_CFG_FAULT_BACKTRACE_EN */ + diff --git a/arch/avr/common/tos_fault.c b/arch/avr/common/tos_fault.c new file mode 100644 index 00000000..1bdbd215 --- /dev/null +++ b/arch/avr/common/tos_fault.c @@ -0,0 +1,205 @@ +/*---------------------------------------------------------------------------- + * Tencent is pleased to support the open source community by making TencentOS + * available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * If you have downloaded a copy of the TencentOS binary from Tencent, please + * note that the TencentOS binary is licensed under the BSD 3-Clause License. + * + * If you have downloaded a copy of the TencentOS source code from Tencent, + * please note that TencentOS source code is licensed under the BSD 3-Clause + * License, except for the third-party components listed below which are + * subject to different license terms. Your integration of TencentOS into your + * own projects may require compliance with the BSD 3-Clause License, as well + * as the other licenses applicable to the third-party components included + * within TencentOS. + *---------------------------------------------------------------------------*/ + +#include "tos_k.h" + +#if TOS_CFG_FAULT_BACKTRACE_EN > 0u + +__STATIC_INLINE__ void fault_spin(void) +{ + tos_knl_sched_lock(); + tos_cpu_int_disable(); + while (K_TRUE) { + ; + } +} + +/* EXC_RETURN: + 31 - 28 : EXC_RETURN flag + 27 - 5 : reserved + 4 : 1, basic stack frame; 0, extended stack frame + 3 : 1, return to Thread mode; 0, return to Handler mode + 2 : 1, return to PSP; 0, return to MSP + 1 : reserved, 0 + 0 : reserved, 1 + */ +__STATIC_INLINE__ int fault_is_on_task(cpu_data_t lr) +{ + return (lr & (1u << 2)) != 0; +} + +__STATIC_INLINE__ int fault_is_thumb(cpu_data_t psr) +{ + return (psr & (1u << 24)) != 0; +} + +__STATIC_INLINE__ int fault_is_code(fault_info_t *info, cpu_data_t value) +{ + return value >= info->code_start && value <= info->code_limit; +} + +__STATIC__ void fault_dump_cpu_frame(fault_cpu_frame_t *cpu_frame) +{ + k_fault_log_writer("\n\n====================== CPU Registers =======================\n"); + k_fault_log_writer(" %s: %08x %s: %08x %s: %08x %s: %08x\n", + "R0 ", cpu_frame->r0, + "R1 ", cpu_frame->r1, + "R2 ", cpu_frame->r2, + "R3 ", cpu_frame->r3); + k_fault_log_writer(" %s: %08x %s: %08x %s: %08x %s: %08x\n", + "R12", cpu_frame->r12, + "LR ", cpu_frame->lr, + "PC ", cpu_frame->pc, + "PSR", cpu_frame->spsr); +} + +__STATIC__ void fault_dump_stack(fault_info_t *info, size_t depth) +{ + cpu_addr_t sp = info->sp_before_fault;; + + k_fault_log_writer("\nTASK STACK DUMP:\n"); + while (sp <= info->stack_limit && depth--) { + k_fault_log_writer(" addr: %08x data: %08x\n", sp, (cpu_data_t)*(cpu_data_t *)sp); + sp += sizeof(cpu_addr_t); + } +} + +__STATIC__ void fault_call_stack_backtrace(fault_info_t *info, size_t depth) +{ + cpu_data_t value; + cpu_addr_t sp = info->sp_before_fault; + + if (info->is_stk_ovrf) { + return; + } + + k_fault_log_writer("\n\n====================== Dump Call Stack =====================\n"); + + k_fault_log_writer(" %x\n", info->pc); + + /* walk through the stack, check every content on stack whether is a instruction(code) */ + for (; sp < info->stack_limit && depth; sp += sizeof(cpu_addr_t)) { + value = *((cpu_addr_t *)sp) - sizeof(cpu_addr_t); + + /* if thumb, a instruction's first bit must be 1 */ + if (info->is_thumb && !(value & 1)) { + continue; + } + + if (fault_is_code(info, value)) { + k_fault_log_writer(" %x\n", value); + --depth; + } + } +} + +__STATIC__ void fault_dump_task(fault_info_t *info) +{ + k_task_t *task; + + if (!info->is_on_task) { + return; + } + + task = k_curr_task; + k_fault_log_writer("\n\n====================== Fault on task =======================\n"); + k_fault_log_writer(" TASK NAME: %s\n", task->name); + k_fault_log_writer(" STK BASE: %x\n", info->stack_start); + k_fault_log_writer(" STK SIZE: %x\n", task->stk_size * sizeof(k_stack_t)); + k_fault_log_writer(" STK LIMIT: %x\n", info->stack_limit); + + if (!info->is_stk_ovrf) { + fault_dump_stack(info, K_FAULT_STACK_DUMP_DEPTH); + } +} + +__STATIC__ void fault_dump_information(fault_info_t *info) +{ + k_fault_log_writer("\n\n================== Dump Fault Information ==================\n"); + k_fault_log_writer(" THUMB: %s\n", info->is_thumb ? "TRUE" : "FALSE"); + k_fault_log_writer(" ON TASK: %s\n", info->is_on_task? "TRUE" : "FALSE"); + k_fault_log_writer(" STK OVRF: %s\n", info->is_stk_ovrf? "TRUE" : "FALSE"); + + k_fault_log_writer(" PC: %08x\n", info->pc); + k_fault_log_writer(" SP: %08x\n", info->sp_before_fault); + k_fault_log_writer(" STK START: %08x\n", info->stack_start); + k_fault_log_writer(" STK LIMIT: %08x\n", info->stack_limit); + k_fault_log_writer(" COD START: %08x\n", info->code_start); + k_fault_log_writer(" COD LIMIT: %08x\n", info->code_limit); +} + +__STATIC__ void fault_gather_information(cpu_data_t lr, fault_exc_frame_t *frame, fault_info_t *info) +{ + info->is_thumb = fault_is_thumb(frame->cpu_frame.spsr); + info->is_on_task = fault_is_on_task(lr); + + info->pc = frame->cpu_frame.pc; + + info->sp_before_fault = (cpu_addr_t)frame + sizeof(fault_cpu_frame_t); + + info->code_start = fault_code_start(); + info->code_limit = fault_code_limit(); + + if (info->is_on_task) { + info->stack_start = (cpu_addr_t)k_curr_task->stk_base; + info->stack_limit = info->stack_start + k_curr_task->stk_size * sizeof(k_task_t); + } else { + info->stack_start = fault_msp_start(); + info->stack_limit = fault_msp_limit(); + } + + info->is_stk_ovrf = (info->sp_before_fault < info->stack_start || info->sp_before_fault > info->stack_limit); +} + +__KNL__ int fault_default_log_writer(const char *format, ...) +{ + int len; + va_list ap; + + va_start(ap, format); + len = vprintf(format, ap); + va_end(ap); + + return len; +} + +__API__ void tos_fault_log_writer_set(k_fault_log_writer_t log_writer) +{ + k_fault_log_writer = log_writer; +} + +__KNL__ void fault_backtrace(cpu_addr_t lr, fault_exc_frame_t *frame) +{ + fault_info_t info; + + fault_gather_information(lr, frame, &info); + + fault_dump_information(&info); + + fault_dump_task(&info); + + fault_dump_cpu_frame(&frame->cpu_frame); + + fault_call_stack_backtrace(&info, K_FAULT_CALL_STACK_BACKTRACE_DEPTH); + + cpu_fault_diagnosis(); + + fault_spin(); +} + +#endif + diff --git a/arch/stm8/iccstm8/port.h b/arch/stm8/iccstm8/port.h new file mode 100644 index 00000000..5c77cfa1 --- /dev/null +++ b/arch/stm8/iccstm8/port.h @@ -0,0 +1,70 @@ +/*---------------------------------------------------------------------------- + * Tencent is pleased to support the open source community by making TencentOS + * available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * If you have downloaded a copy of the TencentOS binary from Tencent, please + * note that the TencentOS binary is licensed under the BSD 3-Clause License. + * + * If you have downloaded a copy of the TencentOS source code from Tencent, + * please note that TencentOS source code is licensed under the BSD 3-Clause + * License, except for the third-party components listed below which are + * subject to different license terms. Your integration of TencentOS into your + * own projects may require compliance with the BSD 3-Clause License, as well + * as the other licenses applicable to the third-party components included + * within TencentOS. + *---------------------------------------------------------------------------*/ + +#ifndef _PORT_H_ +#define _PORT_H_ + +#if defined(TOS_CFG_CPU_LEAD_ZEROS_ASM_PRESENT) && (TOS_CFG_CPU_LEAD_ZEROS_ASM_PRESENT == 1u) +__PORT__ uint32_t port_clz(uint32_t val); +#endif + +__PORT__ void port_int_disable(void); + +__PORT__ void port_int_enable(void); + +__PORT__ cpu_cpsr_t port_cpsr_save(void); + +__PORT__ void port_cpsr_restore(cpu_cpsr_t cpsr); + +__PORT__ void port_cpu_reset(void); + +__PORT__ void port_sched_start(void) __NO_RETURN__; + +__PORT__ void port_context_switch(void); + +__PORT__ void port_irq_context_switch(void); + +__PORT__ void port_systick_config(uint32_t cycle_per_tick); + +__PORT__ void port_systick_priority_set(uint32_t prio); + +#if TOS_CFG_TICKLESS_EN > 0u + +__PORT__ void port_systick_resume(void); + +__PORT__ void port_systick_suspend(void); + +__PORT__ void port_systick_reload(uint32_t cycle_per_tick); + +__PORT__ void port_systick_pending_reset(void); + +__PORT__ k_time_t port_systick_max_delay_millisecond(void); + +#endif + +#if TOS_CFG_PWR_MGR_EN > 0u + +__PORT__ void port_sleep_mode_enter(void); + +__PORT__ void port_stop_mode_enter(void); + +__PORT__ void port_standby_mode_enter(void); + +#endif + +#endif /* _PORT_H_ */ + diff --git a/arch/stm8/iccstm8/port_c.c b/arch/stm8/iccstm8/port_c.c new file mode 100644 index 00000000..e258b678 --- /dev/null +++ b/arch/stm8/iccstm8/port_c.c @@ -0,0 +1,296 @@ +/*---------------------------------------------------------------------------- + * Tencent is pleased to support the open source community by making TencentOS + * available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * If you have downloaded a copy of the TencentOS binary from Tencent, please + * note that the TencentOS binary is licensed under the BSD 3-Clause License. + * + * If you have downloaded a copy of the TencentOS source code from Tencent, + * please note that TencentOS source code is licensed under the BSD 3-Clause + * License, except for the third-party components listed below which are + * subject to different license terms. Your integration of TencentOS into your + * own projects may require compliance with the BSD 3-Clause License, as well + * as the other licenses applicable to the third-party components included + * within TencentOS. + *---------------------------------------------------------------------------*/ + +/* + * The MIT License (MIT) + * + * Copyright (c) 2016-2018 Armink (armink.ztl@gmail.com) + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "tos_k.h" + +__PORT__ void port_cpu_reset(void) +{ +#if 0 + NVIC_SystemReset(); +#endif +} + +__PORT__ void port_systick_config(uint32_t cycle_per_tick) +{ +#if 0 + (void)SysTick_Config(cycle_per_tick); +#endif +} + +__PORT__ void port_systick_priority_set(uint32_t prio) +{ +#if 0 + NVIC_SetPriority(SysTick_IRQn, prio); +#endif +} + +#if TOS_CFG_TICKLESS_EN > 0u + +__PORT__ k_time_t port_systick_max_delay_millisecond(void) +{ + k_time_t max_millisecond; + uint32_t max_cycle; + + max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit + max_millisecond = (k_time_t)((uint64_t)max_cycle * K_TIME_MILLISEC_PER_SEC / TOS_CFG_CPU_CLOCK); // CLOCK: cycle per second + return max_millisecond; +} + +__PORT__ void port_systick_resume(void) +{ + SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk; + SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; +} + +__PORT__ void port_systick_suspend(void) +{ + SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; + SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk; +} + +__PORT__ k_cycle_t port_systick_max_reload_cycle(void) +{ + return SysTick_LOAD_RELOAD_Msk; +} + +__PORT__ void port_systick_reload(uint32_t cycle_per_tick) +{ + uint32_t max_cycle; + + max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit + + if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { + SysTick->LOAD = max_cycle; + } else { + SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; + } + + SysTick->VAL = 0; +} + +__PORT__ void port_systick_pending_reset(void) +{ + SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk; +} + +#endif + +#if TOS_CFG_PWR_MGR_EN > 0u + +__PORT__ void port_sleep_mode_enter(void) +{ +#if 1 + HAL_PWR_EnterSLEEPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI); +#else + HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); +#endif +} + +__PORT__ void port_stop_mode_enter(void) +{ + HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); +} + +__PORT__ void port_standby_mode_enter(void) +{ + HAL_PWR_EnterSTANDBYMode(); +} + +#endif + +#if TOS_CFG_FAULT_BACKTRACE_EN > 0u +__STATIC__ void port_fault_do_diagnosis(port_fault_regs_t *regs) +{ + k_fault_log_writer("\n\n====================== Fault Diagnosis =====================\n"); + + if (regs->hfsr.bits.VECTBL) { + k_fault_log_writer(fault_msg[FAULT_INFO_HFSR_VECTBL]); + } + if (regs->hfsr.bits.FORCED) { + /* Memory Management Fault */ + if (regs->cfsr.part.mfsr.value) { + if (regs->cfsr.part.mfsr.bits.IACCVIOL) { + k_fault_log_writer(fault_msg[FAULT_INFO_MFSR_IACCVIOL]); + } + if (regs->cfsr.part.mfsr.bits.DACCVIOL) { + k_fault_log_writer(fault_msg[FAULT_INFO_MFSR_DACCVIOL]); + } + if (regs->cfsr.part.mfsr.bits.MUNSTKERR) { + k_fault_log_writer(fault_msg[FAULT_INFO_MFSR_MUNSTKERR]); + } + if (regs->cfsr.part.mfsr.bits.MSTKERR) { + k_fault_log_writer(fault_msg[FAULT_INFO_MFSR_MSTKERR]); + } + + if (regs->cfsr.part.mfsr.bits.MLSPERR) { + k_fault_log_writer(fault_msg[FAULT_INFO_MFSR_MLSPERR]); + } + + if (regs->cfsr.part.mfsr.bits.MMARVALID) { + if (regs->cfsr.part.mfsr.bits.IACCVIOL || regs->cfsr.part.mfsr.bits.DACCVIOL) { + k_fault_log_writer(fault_msg[FAULT_INFO_MMAR], regs->mmar); + } + } + } + /* Bus Fault */ + if (regs->cfsr.part.bfsr.value) { + if (regs->cfsr.part.bfsr.bits.IBUSERR) { + k_fault_log_writer(fault_msg[FAULT_INFO_BFSR_IBUSERR]); + } + if (regs->cfsr.part.bfsr.bits.PRECISERR) { + k_fault_log_writer(fault_msg[FAULT_INFO_BFSR_PRECISERR]); + } + if (regs->cfsr.part.bfsr.bits.IMPREISERR) { + k_fault_log_writer(fault_msg[FAULT_INFO_BFSR_IMPREISERR]); + } + if (regs->cfsr.part.bfsr.bits.UNSTKERR) { + k_fault_log_writer(fault_msg[FAULT_INFO_BFSR_UNSTKERR]); + } + if (regs->cfsr.part.bfsr.bits.STKERR) { + k_fault_log_writer(fault_msg[FAULT_INFO_BFSR_STKERR]); + } + + if (regs->cfsr.part.bfsr.bits.LSPERR) { + k_fault_log_writer(fault_msg[FAULT_INFO_BFSR_LSPERR]); + } + + if (regs->cfsr.part.bfsr.bits.BFARVALID) { + if (regs->cfsr.part.bfsr.bits.PRECISERR) { + k_fault_log_writer(fault_msg[FAULT_INFO_BFAR], regs->bfar); + } + } + + } + /* Usage Fault */ + if (regs->cfsr.part.ufsr.value) { + if (regs->cfsr.part.ufsr.bits.UNDEFINSTR) { + k_fault_log_writer(fault_msg[FAULT_INFO_UFSR_UNDEFINSTR]); + } + if (regs->cfsr.part.ufsr.bits.INVSTATE) { + k_fault_log_writer(fault_msg[FAULT_INFO_UFSR_INVSTATE]); + } + if (regs->cfsr.part.ufsr.bits.INVPC) { + k_fault_log_writer(fault_msg[FAULT_INFO_UFSR_INVPC]); + } + if (regs->cfsr.part.ufsr.bits.NOCP) { + k_fault_log_writer(fault_msg[FAULT_INFO_UFSR_NOCP]); + } + if (regs->cfsr.part.ufsr.bits.UNALIGNED) { + k_fault_log_writer(fault_msg[FAULT_INFO_UFSR_UNALIGNED]); + } + if (regs->cfsr.part.ufsr.bits.DIVBYZERO0) { + k_fault_log_writer(fault_msg[FAULT_INFO_UFSR_DIVBYZERO0]); + } + } + } + /* Debug Fault */ + if (regs->hfsr.bits.DEBUGEVT) { + if (regs->dfsr.value) { + if (regs->dfsr.bits.HALTED) { + k_fault_log_writer(fault_msg[FAULT_INFO_DFSR_HALTED]); + } + if (regs->dfsr.bits.BKPT) { + k_fault_log_writer(fault_msg[FAULT_INFO_DFSR_BKPT]); + } + if (regs->dfsr.bits.DWTTRAP) { + k_fault_log_writer(fault_msg[FAULT_INFO_DFSR_DWTTRAP]); + } + if (regs->dfsr.bits.VCATCH) { + k_fault_log_writer(fault_msg[FAULT_INFO_DFSR_VCATCH]); + } + if (regs->dfsr.bits.EXTERNAL) { + k_fault_log_writer(fault_msg[FAULT_INFO_DFSR_EXTERNAL]); + } + } + } +} + +__PORT__ void port_fault_diagnosis(void) +{ + port_fault_regs_t regs; + + regs.syshndctrl.value = SCB->SHCSR; + regs.cfsr.value = SCB->CFSR; + regs.mmar = SCB->MMFAR; + regs.bfar = SCB->BFAR; + regs.hfsr.value = SCB->HFSR; + regs.dfsr.value = SCB->DFSR; + regs.afsr = SCB->AFSR; + + port_fault_do_diagnosis(®s); +} + +/*------------------ RealView Compiler -----------------*/ +/* V5 */ +#if defined(__CC_ARM) + +__PORT__ __ASM__ void HardFault_Handler(void) +{ + IMPORT fault_backtrace + + MOV r0, lr + TST lr, #0x04 + ITE EQ + MRSEQ r1, MSP + MRSNE r1, PSP + BL fault_backtrace +} + +/*------------------ ARM Compiler V6 -------------------*/ +#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + +__PORT__ void __NAKED__ HardFault_Handler(void) +{ + __ASM__ __VOLATILE__ ( + "MOV r0, lr\n\t" + "TST lr, #0x04\n\t" + "ITE EQ\n\t" + "MRSEQ r1, MSP\n\t" + "MRSNE r1, PSP\n\t" + "BL fault_backtrace\n\t" + ); +} + +#endif /* ARMCC VERSION */ + +#endif /* TOS_CFG_FAULT_BACKTRACE_EN */ + diff --git a/arch/stm8/iccstm8/port_config.h b/arch/stm8/iccstm8/port_config.h new file mode 100644 index 00000000..8259022b --- /dev/null +++ b/arch/stm8/iccstm8/port_config.h @@ -0,0 +1,30 @@ +/*---------------------------------------------------------------------------- + * Tencent is pleased to support the open source community by making TencentOS + * available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * If you have downloaded a copy of the TencentOS binary from Tencent, please + * note that the TencentOS binary is licensed under the BSD 3-Clause License. + * + * If you have downloaded a copy of the TencentOS source code from Tencent, + * please note that TencentOS source code is licensed under the BSD 3-Clause + * License, except for the third-party components listed below which are + * subject to different license terms. Your integration of TencentOS into your + * own projects may require compliance with the BSD 3-Clause License, as well + * as the other licenses applicable to the third-party components included + * within TencentOS. + *---------------------------------------------------------------------------*/ + +#ifndef _PORT_CONFIG_H_ +#define _PORT_CONFIG_H_ + +#define TOS_CFG_CPU_ADDR_SIZE CPU_WORD_SIZE_08 +#define TOS_CFG_CPU_DATA_SIZE CPU_WORD_SIZE_08 +#define TOS_CFG_CPU_STK_GROWTH CPU_STK_GROWTH_DESCENDING +#define TOS_CFG_CPU_HRTIMER_EN 0u +#define TOS_CFG_CPU_LEAD_ZEROS_ASM_PRESENT 0u + +#define TOS_CFG_CPU_ARM_FPU_EN 0u + +#endif /* _PORT_CONFIG_H_ */ + diff --git a/arch/stm8/iccarm/port_s.S b/arch/stm8/iccstm8/port_s.S similarity index 97% rename from arch/stm8/iccarm/port_s.S rename to arch/stm8/iccstm8/port_s.S index 7cd3a585..59c86dad 100644 --- a/arch/stm8/iccarm/port_s.S +++ b/arch/stm8/iccstm8/port_s.S @@ -70,7 +70,7 @@ _context_save: LDW (X), Y _context_restore: - ; k_curr_task = k_next_task + /* k_curr_task = k_next_task */ LDW X, k_next_task LDW Y, #k_curr_task /* equals to: "ldr r0, =k_curr_task "*/ LDW (Y), X diff --git a/board/ATMega32/ATmega16_MINI_BOARD_SCH.pdf b/board/ATMega32/ATmega16_MINI_BOARD_SCH.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d72e5b4583ea3373916724e74256c597c485b6f0 GIT binary patch literal 269615 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 s%nr_+CvwDJZ1q=9Y`K+@tozf=r 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 z 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%0DclCoj%ffqU?tl#J9pXf%0Mf8AeQ^vN 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%0A;+t99O8=jd|~>X#jCvF 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 8); + UBRRL = (unsigned char)tmp; + /* Enable receiver and transmitter, enable receive interrupt */ + UCSRB = (1 << RXCIE) | (1 << RXEN) | (1 << TXEN); + /* 8bit, 1 stopbit */ + UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1<< UCSZ0); +} + diff --git a/board/ATMega32/IAR/hello_world-iar4.12/TencentOS_tiny.ewd b/board/ATMega32/IAR/hello_world-iar4.12/TencentOS_tiny.ewd new file mode 100644 index 00000000..3ca1f3ac --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar4.12/TencentOS_tiny.ewd @@ -0,0 +1,1275 @@ + + + + 1 + + Debug + + AVR + + 1 + + C-SPY + 3 + + 12 + 1 + 1 + + + + + + + + + + + + + + + + + + + + CCRAVR + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + + ICE200AVR + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + JTAGICEAVR + 3 + + 2 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JTAGICEMKIIAVR + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMAVR + 2 + + 1 + 1 + 1 + + + + + + + THIRDPARTYAVR + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ewplugin + 0 + + + $EW_DIR$\common\plugins\Profiling\Profiling.ewplugin + 1 + + + $EW_DIR$\common\plugins\Stack\Stack.ewplugin + 1 + + + + + Release + + AVR + + 0 + + C-SPY + 3 + + 12 + 1 + 0 + + + + + + + + + + + + + + + + + + + + CCRAVR + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + ICE200AVR + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + JTAGICEAVR + 3 + + 2 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JTAGICEMKIIAVR + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMAVR + 2 + + 1 + 1 + 0 + + + + + + + THIRDPARTYAVR + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ewplugin + 0 + + + $EW_DIR$\common\plugins\Profiling\Profiling.ewplugin + 1 + + + $EW_DIR$\common\plugins\Stack\Stack.ewplugin + 1 + + + + + + diff --git a/board/ATMega32/IAR/hello_world-iar4.12/TencentOS_tiny.ewp b/board/ATMega32/IAR/hello_world-iar4.12/TencentOS_tiny.ewp new file mode 100644 index 00000000..94af7af1 --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar4.12/TencentOS_tiny.ewp @@ -0,0 +1,2081 @@ + + + + 1 + + Debug + + AVR + + 1 + + General + 3 + + 6 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCAVR + 3 + + 12 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAVR + 3 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + XLINK + 2 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XAR + 2 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + AVR + + 0 + + General + 3 + + 6 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCAVR + 3 + + 12 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAVR + 3 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + XLINK + 2 + + 13 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XAR + 2 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + ARCH + + $PROJ_DIR$\..\..\..\..\arch\avr\ATMega32\iccavr\port.h + + + $PROJ_DIR$\..\..\..\..\arch\avr\ATMega32\iccavr\port_c.c + + + $PROJ_DIR$\..\..\..\..\arch\avr\ATMega32\iccavr\port_config.h + + + $PROJ_DIR$\..\..\..\..\arch\avr\ATMega32\iccavr\port_s.asm + + + $PROJ_DIR$\..\..\..\..\arch\avr\common\tos_cpu.c + + + $PROJ_DIR$\..\..\..\..\arch\avr\common\tos_fault.c + + + + BSP + + $PROJ_DIR$\..\..\BSP\src\hal_uart.c + + + $PROJ_DIR$\..\..\BSP\src\tim.c + + + $PROJ_DIR$\..\..\BSP\src\uart.c + + + + KERNEL + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_barrier.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_binary_heap.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_bitmap.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_char_fifo.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_completion.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_countdownlatch.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_event.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_global.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_mail_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_message_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_mmblk.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_mmheap.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_mutex.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_pend.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_priority_mail_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_priority_message_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_priority_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_ring_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_robin.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_rwlock.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_sched.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_sem.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_stopwatch.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_sys.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_task.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_tick.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_time.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_timer.c + + + + LIB + + $PROJ_DIR$\..\..\LIB\inc\stdint.h + + + + TOS-CONFIG + + $PROJ_DIR$\..\..\TOS-CONFIG\tos_config.h + + + + USER + + $PROJ_DIR$\..\..\USER\main.c + + + + + diff --git a/board/ATMega32/IAR/hello_world-iar4.12/TencentOS_tiny.eww b/board/ATMega32/IAR/hello_world-iar4.12/TencentOS_tiny.eww new file mode 100644 index 00000000..39a6f9df --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar4.12/TencentOS_tiny.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\TencentOS_tiny.ewp + + + + + diff --git a/board/ATMega32/IAR/hello_world-iar4.12/settings/TencentOS_tiny.dbgdt b/board/ATMega32/IAR/hello_world-iar4.12/settings/TencentOS_tiny.dbgdt new file mode 100644 index 00000000..cdcd4982 --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar4.12/settings/TencentOS_tiny.dbgdt @@ -0,0 +1,176 @@ + + + + + + + + + + + + + 160272727 + + + + + + 100 + + 20 + 1395 + 372 + 93 + + + + + + + + + + 100 + 136 + 120 + 100 + + + + + 10 + + + + + + 138164131100 + + + + + + + + + + + + TabID-3758-6520 + Debug Log + Debug-Log + + + + TabID-3236-6530 + Build + Build + + + TabID-1907-2220BreakpointsBreakpoints + + 0 + + + TabID-14507-6524 + Workspace + Workspace + + + TencentOS_tinyTencentOS_tiny/ARCHTencentOS_tiny/KERNELTencentOS_tiny/TOS-CONFIG + + + + 0 + + + TabID-25255-6527 + Disassembly + Disassembly + + + + + 0 + + + TabID-15366-20631 + Register + Register + + + + + + + 0002SPSREG + + + + 0 + + + TabID-24611-31306 + Quick Watch + QuickWatch + + k_curr_task + + + + TabID-28985-25270 + Live Watch + StaticWatch + + + + + k_curr_taskk_next_taskk_rdyq + + + + + + 0138164131100 + + + + 1 + + + TabID-29862-15633 + Memory + Memory + + + + + + + + + + + 17447441000046 + + + + 0 + + + + + + TextEditorD:\TOS\TencentOS-tiny\kernel\core\tos_task.c032787708770TextEditorD:\TOS\TencentOS-tiny\board\ATmega32\BSP\src\tim.c00176176TextEditorD:\TOS\TencentOS-tiny\kernel\core\tos_sem.c0000TextEditorD:\TOS\TencentOS-tiny\arch\AVR\common\tos_cpu.c010224702470TextEditorD:\TOS\TencentOS-tiny\kernel\core\include\tos_list.h012745154515TextEditorD:\TOS\TencentOS-tiny\kernel\core\tos_timer.c026876547654TextEditorD:\TOS\TencentOS-tiny\board\ATMega32\TOS-CONFIG\tos_config.h015843843TextEditorD:\TOS\TencentOS-tiny\kernel\core\tos_sched.c06723762376TextEditorD:\TOS\TencentOS-tiny\kernel\core\tos_tick.c09333383338TextEditorD:\TOS\TencentOS-tiny\arch\avr\ATMega32\iccavr\port_s.asm06310171017TextEditorD:\TOS\TencentOS-tiny\board\ATmega32\USER\main.c0641307130710TextEditorD:\TOS\TencentOS-tiny\kernel\core\tos_sys.c094246524650100000010000001 + + + + + + + iaridepm1debuggergui1-2-2459251-2-2364409189583447484131771504376-2-2459630-2-2364409189583447484329167504376-2628459985628-2364409189583447484185938504376-29834591220983-2364409189583447484123438504376-2-22411922-2-219242431002083265864189583447484239-23861922-223919241471002083160832189583447484 + + + + diff --git a/board/ATMega32/IAR/hello_world-iar4.12/settings/TencentOS_tiny.dni b/board/ATMega32/IAR/hello_world-iar4.12/settings/TencentOS_tiny.dni new file mode 100644 index 00000000..c2734be7 --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar4.12/settings/TencentOS_tiny.dni @@ -0,0 +1,18 @@ +[DisAssemblyWindow] +NumStates=_ 1 +State 1=_ 1 +[TraceHelper] +Enabled=0 +ShowSource=1 +[Log file] +LoggingEnabled=_ 0 +LogFile=_ "" +Category=_ 0 +[TermIOLog] +LoggingEnabled=_ 0 +LogFile=_ "" +[Breakpoints] +Bp0=_ "Code" "{D:\TOS\TencentOS-tiny\kernel\core\tos_sys.c}.107.5@1" 0 0 0 0 "" 0 "" +Bp1=_ "Code" "{D:\TOS\TencentOS-tiny\kernel\core\tos_sys.c}.101.19@1" 0 0 0 0 "" 0 "" +Bp2=_ "Code" "{D:\TOS\TencentOS-tiny\kernel\core\tos_tick.c}.112.9@1" 0 0 0 0 "" 0 "" +Count=3 diff --git a/board/ATMega32/IAR/hello_world-iar4.12/settings/TencentOS_tiny.wsdt b/board/ATMega32/IAR/hello_world-iar4.12/settings/TencentOS_tiny.wsdt new file mode 100644 index 00000000..659606b3 --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar4.12/settings/TencentOS_tiny.wsdt @@ -0,0 +1,76 @@ + + + + + + TencentOS_tiny/Debug + + + + + + + + + 130272727 + + + + + + + 20139537293 + + + + + + + + + + + + TabID-24042-2046 + Workspace + Workspace + + + TencentOS_tiny + + + + 0 + + + TabID-5514-2598 + Build + Build + + + + TabID-14450-14285 + Debug Log + Debug-Log + + + + + 0 + + + + + + TextEditorD:\TOS\TencentOS-tiny\kernel\core\tos_task.c032787708770TextEditorD:\TOS\TencentOS-tiny\board\ATmega32\BSP\src\tim.c00176176TextEditorD:\TOS\TencentOS-tiny\kernel\core\tos_sem.c0000TextEditorD:\TOS\TencentOS-tiny\arch\AVR\common\tos_cpu.c010224702470TextEditorD:\TOS\TencentOS-tiny\kernel\core\include\tos_list.h012745154515TextEditorD:\TOS\TencentOS-tiny\kernel\core\tos_timer.c026876547654TextEditorD:\TOS\TencentOS-tiny\board\ATMega32\TOS-CONFIG\tos_config.h015843843TextEditorD:\TOS\TencentOS-tiny\kernel\core\tos_sched.c06723762376TextEditorD:\TOS\TencentOS-tiny\kernel\core\tos_tick.c09333383338TextEditorD:\TOS\TencentOS-tiny\arch\avr\ATMega32\iccavr\port_s.asm06310171017TextEditorD:\TOS\TencentOS-tiny\board\ATmega32\USER\main.c0641654165410TextEditorD:\TOS\TencentOS-tiny\kernel\core\tos_sys.c094246524650100000010000001 + + + + + + + iaridepm1-2-2434204-2-21119977949154930144663682316-2-21601426-2-21428162100280925352177949154930 + + + + diff --git a/board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.ewd b/board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.ewd new file mode 100644 index 00000000..664a51e4 --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.ewd @@ -0,0 +1,2058 @@ + + + 3 + + Debug + + AVR + + 1 + + C-SPY + 6 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ATMELICEAVR + 7 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AVRONE + 4 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JTAGICE3AVR + 6 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JTAGICEMKIIAVR + 5 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DRAGONAVR + 3 + + 3 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + POWERDEBUGGERAVR + 7 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMAVR + 2 + + 1 + 1 + 1 + + + + + + + THIRDPARTYAVR + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\Stk600\Stk600Plugin.ewplugin + 1 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + AVR + + 0 + + C-SPY + 6 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ATMELICEAVR + 7 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AVRONE + 4 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JTAGICE3AVR + 6 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JTAGICEMKIIAVR + 5 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DRAGONAVR + 3 + + 3 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + POWERDEBUGGERAVR + 7 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMAVR + 2 + + 1 + 1 + 0 + + + + + + + THIRDPARTYAVR + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\Stk600\Stk600Plugin.ewplugin + 1 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.ewp b/board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.ewp new file mode 100644 index 00000000..000bf554 --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.ewp @@ -0,0 +1,2259 @@ + + + 3 + + Debug + + AVR + + 1 + + General + 12 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCAVR + 6 + + 17 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAVR + 5 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + XLINK + 3 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XAR + 2 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + AVR + + 0 + + General + 12 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCAVR + 6 + + 17 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAVR + 5 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + XLINK + 3 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XAR + 2 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + ARCH + + $PROJ_DIR$\..\..\..\..\arch\avr\ATMega32\iccavr\port.h + + + $PROJ_DIR$\..\..\..\..\arch\avr\ATMega32\iccavr\port_c.c + + + $PROJ_DIR$\..\..\..\..\arch\avr\ATMega32\iccavr\port_config.h + + + $PROJ_DIR$\..\..\..\..\arch\avr\ATMega32\iccavr\port_s.asm + + + $PROJ_DIR$\..\..\..\..\arch\avr\common\tos_cpu.c + + + $PROJ_DIR$\..\..\..\..\arch\avr\common\tos_fault.c + + + + BSP + + INC + + $PROJ_DIR$\..\..\BSP\include\tim.h + + + $PROJ_DIR$\..\..\BSP\include\uart.h + + + + SRC + + $PROJ_DIR$\..\..\BSP\src\hal_uart.c + + + $PROJ_DIR$\..\..\BSP\src\tim.c + + + $PROJ_DIR$\..\..\BSP\src\uart.c + + + + + EXAMPLE + + + KERNEL + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_barrier.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_binary_heap.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_bitmap.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_char_fifo.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_completion.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_countdownlatch.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_event.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_global.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_mail_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_message_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_mmblk.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_mmheap.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_mutex.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_pend.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_priority_mail_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_priority_message_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_priority_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_ring_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_robin.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_rwlock.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_sched.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_sem.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_stopwatch.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_sys.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_task.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_tick.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_time.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_timer.c + + + + LIB + + INC + + $PROJ_DIR$\..\..\LIB\inc\stdint.h + + + + + TOS_CONFIG + + $PROJ_DIR$\..\..\TOS-CONFIG\tos_config.h + + + + USER + + $PROJ_DIR$\..\..\USER\main.c + + + diff --git a/board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.ewt b/board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.ewt new file mode 100644 index 00000000..a71cd3d9 --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.ewt @@ -0,0 +1,2312 @@ + + + 3 + + Debug + + AVR + + 1 + + C-STAT + 261 + + 261 + + 0 + + 1 + 600 + 0 + 4 + 0 + 1 + 100 + + + 1.5.4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Release + + AVR + + 0 + + C-STAT + 261 + + 261 + + 0 + + 1 + 600 + 0 + 4 + 0 + 1 + 100 + + + 1.5.4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARCH + + $PROJ_DIR$\..\..\..\..\arch\avr\ATMega32\iccavr\port.h + + + $PROJ_DIR$\..\..\..\..\arch\avr\ATMega32\iccavr\port_c.c + + + $PROJ_DIR$\..\..\..\..\arch\avr\ATMega32\iccavr\port_config.h + + + $PROJ_DIR$\..\..\..\..\arch\avr\ATMega32\iccavr\port_s.asm + + + $PROJ_DIR$\..\..\..\..\arch\avr\common\tos_cpu.c + + + $PROJ_DIR$\..\..\..\..\arch\avr\common\tos_fault.c + + + + BSP + + INC + + $PROJ_DIR$\..\..\BSP\include\tim.h + + + $PROJ_DIR$\..\..\BSP\include\uart.h + + + + SRC + + $PROJ_DIR$\..\..\BSP\src\hal_uart.c + + + $PROJ_DIR$\..\..\BSP\src\tim.c + + + $PROJ_DIR$\..\..\BSP\src\uart.c + + + + + EXAMPLE + + + KERNEL + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_barrier.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_binary_heap.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_bitmap.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_char_fifo.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_completion.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_countdownlatch.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_event.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_global.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_mail_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_message_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_mmblk.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_mmheap.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_mutex.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_pend.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_priority_mail_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_priority_message_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_priority_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_ring_queue.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_robin.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_rwlock.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_sched.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_sem.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_stopwatch.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_sys.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_task.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_tick.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_time.c + + + $PROJ_DIR$\..\..\..\..\kernel\core\tos_timer.c + + + + LIB + + INC + + $PROJ_DIR$\..\..\LIB\inc\stdint.h + + + + + TOS_CONFIG + + $PROJ_DIR$\..\..\TOS-CONFIG\tos_config.h + + + + USER + + $PROJ_DIR$\..\..\USER\main.c + + + diff --git a/board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.eww b/board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.eww new file mode 100644 index 00000000..39a6f9df --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar7.20/TencentOS_tiny.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\TencentOS_tiny.ewp + + + + + diff --git a/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.cspy.bat b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.cspy.bat new file mode 100644 index 00000000..07189154 --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.cspy.bat @@ -0,0 +1,40 @@ +@REM This batch file has been generated by the IAR Embedded Workbench +@REM C-SPY Debugger, as an aid to preparing a command line for running +@REM the cspybat command line utility using the appropriate settings. +@REM +@REM Note that this file is generated every time a new debug session +@REM is initialized, so you may want to move or rename the file before +@REM making changes. +@REM +@REM You can launch cspybat by typing the name of this batch file followed +@REM by the name of the debug file (usually an ELF/DWARF or UBROF file). +@REM +@REM Read about available command line parameters in the C-SPY Debugging +@REM Guide. Hints about additional command line parameters that may be +@REM useful in specific cases: +@REM --download_only Downloads a code image without starting a debug +@REM session afterwards. +@REM --silent Omits the sign-on message. +@REM --timeout Limits the maximum allowed execution time. +@REM + + +@echo off + +if not "%~1" == "" goto debugFile + +@echo on + +"D:\Program Files\IAR Systems\Embedded Workbench 8.0 AVR\common\bin\cspybat" -f "D:\TOS\TencentOS-tiny\board\ATMega32\IAR\hello_world-iar7.20\settings\TencentOS_tiny.Debug.general.xcl" --backend -f "D:\TOS\TencentOS-tiny\board\ATMega32\IAR\hello_world-iar7.20\settings\TencentOS_tiny.Debug.driver.xcl" + +@echo off +goto end + +:debugFile + +@echo on + +"D:\Program Files\IAR Systems\Embedded Workbench 8.0 AVR\common\bin\cspybat" -f "D:\TOS\TencentOS-tiny\board\ATMega32\IAR\hello_world-iar7.20\settings\TencentOS_tiny.Debug.general.xcl" "--debug_file=%~1" --backend -f "D:\TOS\TencentOS-tiny\board\ATMega32\IAR\hello_world-iar7.20\settings\TencentOS_tiny.Debug.driver.xcl" + +@echo off +:end \ No newline at end of file diff --git a/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.cspy.ps1 b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.cspy.ps1 new file mode 100644 index 00000000..897a62d1 --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.cspy.ps1 @@ -0,0 +1,31 @@ +param([String]$debugfile = ""); + +# This powershell file has been generated by the IAR Embedded Workbench +# C - SPY Debugger, as an aid to preparing a command line for running +# the cspybat command line utility using the appropriate settings. +# +# Note that this file is generated every time a new debug session +# is initialized, so you may want to move or rename the file before +# making changes. +# +# You can launch cspybat by typing Powershell.exe -File followed by the name of this batch file, followed +# by the name of the debug file (usually an ELF / DWARF or UBROF file). +# +# Read about available command line parameters in the C - SPY Debugging +# Guide. Hints about additional command line parameters that may be +# useful in specific cases : +# --download_only Downloads a code image without starting a debug +# session afterwards. +# --silent Omits the sign - on message. +# --timeout Limits the maximum allowed execution time. +# + + +if ($debugfile -eq "") +{ +& "D:\Program Files\IAR Systems\Embedded Workbench 8.0 AVR\common\bin\cspybat" -f "D:\TOS\TencentOS-tiny\board\ATMega32\IAR\hello_world-iar7.20\settings\TencentOS_tiny.Debug.general.xcl" --backend -f "D:\TOS\TencentOS-tiny\board\ATMega32\IAR\hello_world-iar7.20\settings\TencentOS_tiny.Debug.driver.xcl" +} +else +{ +& "D:\Program Files\IAR Systems\Embedded Workbench 8.0 AVR\common\bin\cspybat" -f "D:\TOS\TencentOS-tiny\board\ATMega32\IAR\hello_world-iar7.20\settings\TencentOS_tiny.Debug.general.xcl" --debug_file=$debugfile --backend -f "D:\TOS\TencentOS-tiny\board\ATMega32\IAR\hello_world-iar7.20\settings\TencentOS_tiny.Debug.driver.xcl" +} diff --git a/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.driver.xcl b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.driver.xcl new file mode 100644 index 00000000..fc0d0e21 --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.driver.xcl @@ -0,0 +1,15 @@ +"--cpu=m32" + +"--enhanced_core" + +"-p" + +"D:\Program Files\IAR Systems\Embedded Workbench 8.0 AVR\avr\Config\iom32.ddf" + +"--eeprom_size" + +"1024" + + + + diff --git a/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.general.xcl b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.general.xcl new file mode 100644 index 00000000..c06a909f --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.Debug.general.xcl @@ -0,0 +1,11 @@ +"D:\Program Files\IAR Systems\Embedded Workbench 8.0 AVR\avr\bin\avrproc.dll" + +"D:\Program Files\IAR Systems\Embedded Workbench 8.0 AVR\avr\bin\avrsim.dll" + +"D:\TOS\TencentOS-tiny\board\ATMega32\IAR\hello_world-iar7.20\Debug\Exe\TencentOS_tiny.d90" + +--plugin "D:\Program Files\IAR Systems\Embedded Workbench 8.0 AVR\avr/bin/avrlibsupportbat.dll" + + + + diff --git a/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.dbgdt b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.dbgdt new file mode 100644 index 00000000..1bc35f76 --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.dbgdt @@ -0,0 +1,229 @@ + + + + + + + + 194 + 27 + 27 + 27 + + + + 1 + 0 + 0 + + + 20 + 1395 + 372 + 93 + + + + + + + TabID-10315-10600 + Debug Log + Debug-Log + + + + TabID-9792-10609 + Build + Build + + + + 0 + + + + + TabID-21063-10603 + Workspace + Workspace + + + TencentOS_tiny + + + + + 0 + + + + + TabID-31812-10606 + Disassembly + Disassembly + + + + 0 + + + + + + TextEditor + D:\Program Files\IAR Systems\Embedded Workbench 4.0 AVR\avr\INC\iom32.h + 0 + 0 + 537 + 537 + + + TextEditor + D:\TOS\TencentOS-tiny\board\ATmega32\USER\main.c + 0 + 39 + 879 + 879 + + 1 + + TextEditor + D:\TOS\TencentOS-tiny\board\ATmega32\BSP\src\tim.c + 0 + 0 + 0 + 0 + + + TextEditor + D:\TOS\TencentOS-tiny\board\ATmega32\BSP\src\hal_uart.c + 0 + 0 + 289 + 289 + + + TextEditor + D:\TOS\TencentOS-tiny\board\ATmega32\BSP\include\uart.h + 0 + 0 + 54 + 58 + + + TextEditor + D:\TOS\TencentOS-tiny\board\ATmega32\BSP\src\uart.c + 0 + 0 + 282 + 282 + + + TextEditor + D:\TOS\TencentOS-tiny\board\ATmega32\BSP\include\tim.h + 0 + 0 + 38 + 38 + + + 0 + + + 1000000 + 1000000 + + + 1 + + + + + + + iaridepm1 + + + + + + + debuggergui1 + + + + + + + + + + -2 + -2 + 561 + 268 + -2 + -2 + 270 + 286 + 140625 + 312910 + 140625 + 615974 + + + + + + + + + + + -2 + -2 + 561 + 268 + -2 + -2 + 270 + 286 + 140625 + 312910 + 140625 + 615974 + + + + + + + + + + + -2 + -2 + 284 + 1922 + -2 + -2 + 1924 + 286 + 1002083 + 312910 + 140625 + 312910 + + + + + + + + + + + + diff --git a/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.dni b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.dni new file mode 100644 index 00000000..4d35cea3 --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.dni @@ -0,0 +1,15 @@ +[TraceHelper] +Enabled=0 +ShowSource=1 +[DisAssemblyWindow] +NumStates=_ 1 +State 1=_ 1 +[Log file] +LoggingEnabled=_ 0 +LogFile=_ "" +Category=_ 0 +[TermIOLog] +LoggingEnabled=_ 0 +LogFile=_ "" +[Breakpoints] +Count=0 diff --git a/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.dnx b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.dnx new file mode 100644 index 00000000..00261440 --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.dnx @@ -0,0 +1,52 @@ + + + + 0 + 1 + + + _ 1 + _ 1 + + + _ 0 + _ "" + _ 0 + + + _ 0 + _ "" + + + 0 + + + 0 + 1 + 90 + 1 + 1 + 1 + main + 0 + 50 + + + 0 + 0 + 1 + 0 + 1 + + + 0 + + + 0 + 1 + + + 0 + 0 + + diff --git a/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.wsdt b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.wsdt new file mode 100644 index 00000000..1fa664df --- /dev/null +++ b/board/ATMega32/IAR/hello_world-iar7.20/settings/TencentOS_tiny.wsdt @@ -0,0 +1,533 @@ + + + + + TencentOS_tiny/Debug + + + + + + + 196 + 27 + 27 + 27 + + + + 20 + 1023 + 273 + 68 + + + + + + + + + + TabID-32061-29655 + Workspace + Workspace + + + TencentOS_tiny + + + + + 0 + + + + + TabID-27648-29943 + Build + Build + + + + TabID-16066-10492 + Debug Log + Debug-Log + + + + 0 + + + + + + TextEditor + D:\Program Files\IAR Systems\Embedded Workbench 4.0 AVR\avr\INC\iom32.h + 0 + 0 + 537 + 537 + + + TextEditor + D:\TOS\TencentOS-tiny\board\ATmega32\USER\main.c + 0 + 39 + 879 + 879 + + + TextEditor + D:\TOS\TencentOS-tiny\board\ATmega32\BSP\src\tim.c + 0 + 0 + 0 + 0 + + + TextEditor + D:\TOS\TencentOS-tiny\board\ATmega32\BSP\src\hal_uart.c + 0 + 0 + 289 + 289 + + + TextEditor + D:\TOS\TencentOS-tiny\board\ATmega32\BSP\include\uart.h + 0 + 0 + 54 + 58 + + + TextEditor + D:\TOS\TencentOS-tiny\board\ATmega32\BSP\src\uart.c + 0 + 0 + 282 + 282 + + + TextEditor + D:\TOS\TencentOS-tiny\board\ATmega32\BSP\include\tim.h + 0 + 0 + 38 + 38 + + + TextEditor + D:\TOS\TencentOS-tiny\kernel\core\include\tos_ktypes.h + 0 + 0 + 1019 + 1019 + + 7 + + 0 + + + 1000000 + 1000000 + + + 1 + + + + + + + iaridepm1 + + + + + + + + + + -2 + -2 + 471 + 270 + -2 + -2 + 200 + 200 + 104167 + 218818 + 141667 + 517505 + + + + + + + + + + + + + + + + -2 + -2 + 398 + 1922 + -2 + -2 + 1924 + 400 + 1002083 + 437637 + 104167 + 218818 + + + + + + + + + + + + + 34048 + 34049 + 34050 + 34051 + 34052 + 34053 + 34054 + 34055 + 34056 + 34057 + 34058 + 34059 + 34060 + 34061 + + + + + 57600 + 57601 + 57603 + 33024 + 0 + 57607 + 0 + 57635 + 57634 + 57637 + 0 + 57643 + 57644 + 0 + 33090 + 33057 + 57636 + 57640 + 57641 + 33026 + 33065 + 33063 + 33064 + 33053 + 33054 + 0 + 33035 + 33036 + 34399 + 0 + 33038 + 33039 + 0 + + + + + 173 + 30 + 30 + 30 + + + TencentOS_tiny + + + + 14 + 16 + + + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 16000000040008B00000010000000C8100001400000014810000010000000B81000001000000 + + + 3E000D8400000F84000008840000FFFFFFFF54840000328100001C81000009840000818400007D8400008284000083840000848400005384000020F1000010F0000000F0000020F0000030F0000060F000007784000007840000808C000044D500000C8400003384000078840000706E000008800000098000000A8000000B8000000C800000158000000A81000001E8000001B0000002B0000003B0000004B0000005B0000006B0000007B0000008B0000009B000000AB000000BB000000CB000000DB000000EB000000FB0000010B0000000B00000248100000088000001880000028800000388000004880000058800000E84000030840000 + 1600048400004B000000048100001B000000268100002C00000031840000520000000F81000022000000208100002A0000000C8100001F000000068400004D000000098100001D000000038400004A0000000E810000210000001F810000290000000B8100001A000000058400004C0000000284000049000000058100001C000000328400005300000010840000500000000D8100001C0000000A8400004E00000002E100003600000035E1000043000000 + + + 0 + 0A0000000A0000006E0000006E000000 + 00000000800200009005000093020000 + 4096 + 0 + 0 + 32767 + 0 + + + 1 + + + 4294967295 + 00000000480000000601000013020000 + 000000003200000006010000EA000000 + 4096 + 0 + 0 + 32767 + 0 + + + 1 + + + 34049 + 000000001600000022010000C6000000 + 00000000020100009005000080020000 + 32768 + 0 + 0 + 32767 + 0 + + + 1 + + + 21 + 1408 + 375 + 93 + 2 + D:\TOS\TencentOS-tiny\board\ATmega32\IAR\hello_world\BuildLog.log + 0 + -1 + + + 34052 + 000000001600000022010000C6000000 + 04000000060100007C07000066020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34053 + 000000001600000022010000C6000000 + 04000000060100007C07000066020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34054 + 000000001600000022010000C6000000 + 04000000060100007C07000066020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34055 + 000000001600000022010000C6000000 + 04000000060100007C07000066020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34056 + 000000001600000022010000C6000000 + 04000000060100007C07000066020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34058 + 000000001600000022010000C6000000 + 04000000060100007C07000066020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34050 + 000000001600000080020000A6000000 + 00000000000000008002000090000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34051 + 000000001600000022010000C6000000 + 000000000000000022010000B0000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34057 + 00000000160000000601000076010000 + 040000004A00000002010000E3010000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + 2147483647 + 1 + + + 34059 + 00000000160000000601000076010000 + 000000004600000006010000EA000000 + 4096 + 0 + 0 + 32767 + 0 + + + 1 + + + 000000000C000000000000000010000001000000FFFFFFFFFFFFFFFF06010000320000000A010000EA000000010000000200001004000000010000000000000000000000FFFFFFFF02000000098500000B850000FFFF02000B004354616262656450616E65001000000100000000000000480000000601000013020000000000003200000006010000EA000000000000004010005602000000FFFEFF1C53006F0075007200630065002000420072006F00770073006500720020002D0020004E006F007400200065006E00610062006C0065006400000000000985000001000000FFFFFFFFFFFFFFFFFFFEFF0957006F0072006B0073007000610063006500010000000B85000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFF0985000001000000FFFFFFFF09850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000038500000000000000000000000000000000000001000000038500000100000003850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000028500000000000000000000000000000000000001000000028500000100000002850000000000000080000001000000FFFFFFFFFFFFFFFF00000000EA00000090050000EE0000000100000001000010040000000100000058FDFFFF6F000000FFFFFFFF070000000185000004850000058500000685000007850000088500000A85000001800080000001000000000000001702000080070000A903000000000000EE0000009005000080020000000000004080005607000000FFFEFF054200750069006C006400010000000185000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700000000000485000001000000FFFFFFFFFFFFFFFFFFFEFF0C4400650063006C00610072006100740069006F006E007300000000000585000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000685000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000785000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000885000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000A85000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFF0185000001000000FFFFFFFF01850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000D85000000000000000000000000000000000000010000000D850000010000000D850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000C85000000000000000000000000000000000000010000000C850000010000000C850000000000000000000000000000 + + + Main + 00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000030000000FFFEFF000000000000000000000000000100000001000000018001E100000000000031000000FFFEFF000000000000000000000000000100000001000000018003E100000000000033000000FFFEFF0000000000000000000000000001000000010000000180008100000000000014000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000000036000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000040038000000FFFEFF000000000000000000000000000100000001000000018022E100000000040037000000FFFEFF000000000000000000000000000100000001000000018025E10000000000003A000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE10000000004003D000000FFFEFF00000000000000000000000000010000000100000001802CE10000000004003E000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF00960000000000000000000180218100000000040027000000FFFEFF000000000000000000000000000100000001000000018024E100000000000039000000FFFEFF000000000000000000000000000100000001000000018028E10000000004003B000000FFFEFF000000000000000000000000000100000001000000018029E10000000000003C000000FFFEFF0000000000000000000000000001000000010000000180028100000000000016000000FFFEFF000000000000000000000000000100000001000000018029810000000000002B000000FFFEFF0000000000000000000000000001000000010000000180278100000000000029000000FFFEFF000000000000000000000000000100000001000000018028810000000000002A000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040023000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040024000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000000000001A000000FFFEFF00000000000000000000000000010000000100000001800C810000000000001B000000FFFEFF00000000000000000000000000010000000100000001805F860000000000002F000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E810000000000001D000000FFFEFF00000000000000000000000000010000000100000001800F810000000000001E000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000 + + + 34048 + 0A0000000A0000006E0000006E000000 + 0000000000000000FE0200001A000000 + 8192 + 0 + 0 + 744 + 0 + + + 1 + + + 34060 + 000000001600000022010000C6000000 + 000000000000000022010000B0000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34061 + 000000001600000022010000C6000000 + 000000000000000022010000B0000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + + + 010000000300000001000000000000000000000001000000010000000200000000000000010000000100000000000000280000002800000001000000060000000500000001000000FFFEFF352400570053005F0044004900520024005C002E002E005C002E002E005C002E002E005C002E002E005C006B00650072006E0065006C005C0063006F00720065005C0069006E0063006C007500640065005C0074006F0073005F006B00740079007000650073002E00680001000000FFFF010014004966436F6E74656E7453746F72616765496D706CFFFEFF00FFFEFFFF24013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E0034003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E003900330034003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E003900330034003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0C74006F0073005F006B00740079007000650073002E00680000000000FFFFFFFFFFFFFFFFFFFEFF2C44003A005C0054004F0053005C00540065006E00630065006E0074004F0053002D00740069006E0079005C006B00650072006E0065006C005C0063006F00720065005C0074006F0073005F007400610073006B002E006300010000000180FFFEFF00FFFEFFFF21013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E00380031003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0A74006F0073005F007400610073006B002E00630000000000FFFFFFFFFFFFFFFFFFFEFF2E44003A005C0054004F0053005C00540065006E00630065006E0074004F0053002D00740069006E0079005C006B00650072006E0065006C005C0063006F00720065005C0074006F0073005F0067006C006F00620061006C002E006300010000000180FFFEFF00FFFEFFFF27013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E00310039003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0031003400300036003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0031003400300036003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0C74006F0073005F0067006C006F00620061006C002E00630000000000FFFFFFFFFFFFFFFFFFFEFF332400570053005F0044004900520024005C002E002E005C002E002E005C002E002E005C002E002E005C006B00650072006E0065006C005C0063006F00720065005C0069006E0063006C007500640065005C0074006F0073005F007400610073006B002E006800010000000180FFFEFF00FFFEFFFF27013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E00350038003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0037003300310039003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0037003300310039003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0A74006F0073005F007400610073006B002E00680000000000FFFFFFFFFFFFFFFFFFFEFF262400570053005F0044004900520024005C002E002E005C002E002E005C0054004F0053002D0043004F004E004600490047005C0074006F0073005F0063006F006E006600690067002E006800010000000180FFFEFF00FFFEFFFF20013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E0032003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0C74006F0073005F0063006F006E006600690067002E00680000000000FFFFFFFFFFFFFFFFFFFEFF1A2400570053005F0044004900520024005C002E002E005C002E002E005C0055005300450052005C006D00610069006E002E006300010000000180FFFEFF00FFFEFFFF27013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E00350036003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0031003200320039003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0031003200320039003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF066D00610069006E002E00630000000000FFFFFFFFFFFFFFFF0000000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000010000000200000035020000D0000000BB06000088010000 + + + + diff --git a/board/ATMega32/LIB/inc/stdint.h b/board/ATMega32/LIB/inc/stdint.h new file mode 100644 index 00000000..072478fe --- /dev/null +++ b/board/ATMega32/LIB/inc/stdint.h @@ -0,0 +1,17 @@ +#ifndef _STDINT_H_ +#define _STDINT_H_ + +typedef unsigned char uint8_t; +typedef char int8_t; + +typedef unsigned short uint16_t; +typedef signed short int16_t; + +typedef unsigned long uint32_t; +typedef signed long int32_t; + +typedef unsigned long long uint64_t; +typedef signed long long int64_t; + +#endif + diff --git a/board/ATMega32/TOS-CONFIG/tos_config.h b/board/ATMega32/TOS-CONFIG/tos_config.h new file mode 100644 index 00000000..98b3e4a6 --- /dev/null +++ b/board/ATMega32/TOS-CONFIG/tos_config.h @@ -0,0 +1,53 @@ +#ifndef _TOS_CONFIG_H_ +#define _TOS_CONFIG_H_ + +#define TOS_CFG_TASK_PRIO_MAX 10u + +#define TOS_CFG_ROUND_ROBIN_EN 0u + +#define TOS_CFG_OBJECT_VERIFY_EN 0u + +#define TOS_CFG_TASK_DYNAMIC_CREATE_EN 0u + +#define TOS_CFG_EVENT_EN 1u + +#define TOS_CFG_MMBLK_EN 0u + +#define TOS_CFG_MMHEAP_EN 0u + +#define TOS_CFG_MMHEAP_DEFAULT_POOL_EN 1u + +#define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE 0x1000 + +#define TOS_CFG_MUTEX_EN 1u + +#define TOS_CFG_MESSAGE_QUEUE_EN 1u + +#define TOS_CFG_MAIL_QUEUE_EN 1u + +#define TOS_CFG_PRIORITY_MESSAGE_QUEUE_EN 0u + +#define TOS_CFG_PRIORITY_MAIL_QUEUE_EN 0u + +#define TOS_CFG_TIMER_EN 0u + +#define TOS_CFG_PWR_MGR_EN 0u + +#define TOS_CFG_TICKLESS_EN 0u + +#define TOS_CFG_SEM_EN 1u + +#define TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN 1u + +#define TOS_CFG_FAULT_BACKTRACE_EN 0u + +#define TOS_CFG_IDLE_TASK_STK_SIZE 128u + +#define TOS_CFG_CPU_TICK_PER_SECOND 1000u + +#define TOS_CFG_CPU_CLOCK (16000000) + +#define TOS_CFG_TIMER_AS_PROC 1u + +#endif + diff --git a/board/ATMega32/USER/main.c b/board/ATMega32/USER/main.c new file mode 100644 index 00000000..f24f960e --- /dev/null +++ b/board/ATMega32/USER/main.c @@ -0,0 +1,88 @@ +#include "iom32.h" +#include "uart.h" +#include "tos_k.h" + +#include "stdio.h" + +#pragma vector = TIMER1_OVF_vect +__interrupt void TIMER1_OVF(void) +{ + if (tos_knl_is_running()) { + tos_knl_irq_enter(); + tos_tick_handler(); + tos_knl_irq_leave(); + } +} + +#pragma vector = USART_RXC_vect +__interrupt void UART0_rx(void) +{ + unsigned char rx_data; + rx_data = UDR; +} + +void interrupt_enable(void) +{ + SREG |= (1 << 7); +} + +void task1_entry(void *arg) +{ + while (1) { + uart_send_string("task1\r\n"); + tos_task_delay(2000); + } +} + +void task2_entry(void *arg) +{ + while (1) { + uart_send_string("task2\r\n"); + tos_task_delay(3000); + } +} + +k_task_t task1; +k_stack_t task1_stack[128]; + +k_task_t task2; +k_stack_t task2_stack[128]; + +#define APPLICATION_TASK_STK_SIZE 256 + +k_task_t task_app; +k_stack_t task_app_stack[128]; + +void application_entry(void * arg) +{ + tos_task_create(&task1, "task1", task1_entry, NULL, + 4, + task1_stack, sizeof(task1_stack), + 0); + + tos_task_create(&task2, "task2", task2_entry, NULL, + 4, + task2_stack, sizeof(task2_stack), + 0); +} + +int main(void) +{ + uart_init(9600); + timer1(); + + uart_send_string("welcome to TencentOS tiny!\r\n"); + printf("welcome to TencentOS tiny!\r\n"); + + tos_knl_init(); + + tos_task_create(&task_app, "app", application_entry, NULL, + 4, + task_app_stack, sizeof(task_app_stack), + 0); + + tos_knl_start(); + + while (1); +} + diff --git a/board/STM8L052R8T6/BSP/include/tim.h b/board/STM8L052R8T6/BSP/include/tim.h index 23c36201..6b6297ce 100644 --- a/board/STM8L052R8T6/BSP/include/tim.h +++ b/board/STM8L052R8T6/BSP/include/tim.h @@ -1,7 +1,7 @@ #ifndef __TIM_H_ #define __TIM_H_ -void Timer2_Init(uint32_t clock, uint32_t tick_per_second); +void timer1(void); #endif diff --git a/board/STM8L052R8T6/BSP/src/uart.c b/board/STM8L052R8T6/BSP/src/uart.c index 10b10cf0..5f41d0a6 100644 --- a/board/STM8L052R8T6/BSP/src/uart.c +++ b/board/STM8L052R8T6/BSP/src/uart.c @@ -5,11 +5,13 @@ const uint8_t HEX_TABLE[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; -int putchar(int c) { +int putchar(int c) +{ if('\n' == (char)c) { USART_SendData8(USART1, '\r'); while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); } + USART_SendData8(USART1, c); while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); return (c); @@ -17,95 +19,90 @@ int putchar(int c) { void UART1_Send_Byte(uint8_t ucData) { - USART_SendData8(USART1, ucData); - while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == 0) - ; + USART_SendData8(USART1, ucData); + while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == 0) + ; } -//send string +/* send string */ void UART1_Send_String(char *Str) { - - while (*Str != '\0') // "\0" meaning is the end of a string - { - UART1_Send_Byte(*Str); - Str++; - } + while (*Str != '\0') { // "\0" meaning is the end of a string + UART1_Send_Byte(*Str); + Str++; + } } void UART1_Send_Dec(unsigned int num, unsigned char ucNumCount) { - char disp_buffer1[2]; - char disp_buffer2[3]; - char disp_buffer3[4]; - char disp_buffer4[5]; - char disp_buffer5[6]; - char disp_buffer6[7]; + char disp_buffer1[2]; + char disp_buffer2[3]; + char disp_buffer3[4]; + char disp_buffer4[5]; + char disp_buffer5[6]; + char disp_buffer6[7]; - switch (ucNumCount) - { - case 1: + switch (ucNumCount) + { + case 1: + disp_buffer1[0] = HEX_TABLE[num % 10]; + disp_buffer1[1] = 0; - disp_buffer1[0] = HEX_TABLE[num % 10]; - disp_buffer1[1] = 0; + UART1_Send_String(disp_buffer1); + break; - UART1_Send_String(disp_buffer1); - break; + case 2: + disp_buffer2[0] = HEX_TABLE[(num % 100) / 10]; + disp_buffer2[1] = HEX_TABLE[num % 10]; + disp_buffer2[2] = 0; + UART1_Send_String(disp_buffer2); + break; - case 2: - disp_buffer2[0] = HEX_TABLE[(num % 100) / 10]; - disp_buffer2[1] = HEX_TABLE[num % 10]; - disp_buffer2[2] = 0; - UART1_Send_String(disp_buffer2); - break; - case 3: - disp_buffer3[0] = HEX_TABLE[num / 100]; - disp_buffer3[1] = HEX_TABLE[(num % 100) / 10]; - disp_buffer3[2] = HEX_TABLE[num % 10]; - disp_buffer3[3] = 0; + case 3: + disp_buffer3[0] = HEX_TABLE[num / 100]; + disp_buffer3[1] = HEX_TABLE[(num % 100) / 10]; + disp_buffer3[2] = HEX_TABLE[num % 10]; + disp_buffer3[3] = 0; - UART1_Send_String(disp_buffer3); - break; + UART1_Send_String(disp_buffer3); + break; - case 4: - disp_buffer4[0] = HEX_TABLE[(num % 10000) / 1000]; - disp_buffer4[1] = HEX_TABLE[(num % 1000) / 100]; - disp_buffer4[2] = HEX_TABLE[(num % 100) / 10]; - disp_buffer4[3] = HEX_TABLE[num % 10]; - disp_buffer4[4] = 0; + case 4: + disp_buffer4[0] = HEX_TABLE[(num % 10000) / 1000]; + disp_buffer4[1] = HEX_TABLE[(num % 1000) / 100]; + disp_buffer4[2] = HEX_TABLE[(num % 100) / 10]; + disp_buffer4[3] = HEX_TABLE[num % 10]; + disp_buffer4[4] = 0; - UART1_Send_String(disp_buffer4); - break; + UART1_Send_String(disp_buffer4); + break; - case 5: + case 5: + disp_buffer5[0] = HEX_TABLE[(num % 100000) / 10000]; + disp_buffer5[1] = HEX_TABLE[(num % 10000) / 1000]; + disp_buffer5[2] = HEX_TABLE[(num % 1000) / 100]; + disp_buffer5[3] = HEX_TABLE[(num % 100) / 10]; + disp_buffer5[4] = HEX_TABLE[num % 10]; + disp_buffer5[5] = 0; - disp_buffer5[0] = HEX_TABLE[(num % 100000) / 10000]; - disp_buffer5[1] = HEX_TABLE[(num % 10000) / 1000]; - disp_buffer5[2] = HEX_TABLE[(num % 1000) / 100]; - disp_buffer5[3] = HEX_TABLE[(num % 100) / 10]; - disp_buffer5[4] = HEX_TABLE[num % 10]; - disp_buffer5[5] = 0; + UART1_Send_String(disp_buffer5); + break; - UART1_Send_String(disp_buffer5); - break; + case 6: + disp_buffer6[0] = HEX_TABLE[num / 100000]; + disp_buffer6[1] = HEX_TABLE[(num % 100000) / 10000]; + disp_buffer6[2] = HEX_TABLE[(num % 10000) / 1000]; + disp_buffer6[3] = HEX_TABLE[(num % 1000) / 100]; + disp_buffer6[4] = HEX_TABLE[(num % 100) / 10]; + disp_buffer6[5] = HEX_TABLE[num % 10]; + disp_buffer6[6] = 0; - case 6: + UART1_Send_String(disp_buffer6); + break; - disp_buffer6[0] = HEX_TABLE[num / 100000]; - disp_buffer6[1] = HEX_TABLE[(num % 100000) / 10000]; - disp_buffer6[2] = HEX_TABLE[(num % 10000) / 1000]; - disp_buffer6[3] = HEX_TABLE[(num % 1000) / 100]; - disp_buffer6[4] = HEX_TABLE[(num % 100) / 10]; - disp_buffer6[5] = HEX_TABLE[num % 10]; - disp_buffer6[6] = 0; - - UART1_Send_String(disp_buffer6); - break; - - default: - - break; - } + default: + break; + } } void UART1_Init(uint32_t uiBaudRate) @@ -128,3 +125,4 @@ void UART1_Init(uint32_t uiBaudRate) // enable UART1 USART_Cmd(USART1, ENABLE); } + diff --git a/board/STM8L052R8T6/IAR/hello_world/stm8_project.ewp b/board/STM8L052R8T6/IAR/hello_world/stm8_project.ewp index 6effe06c..047e0c65 100644 --- a/board/STM8L052R8T6/IAR/hello_world/stm8_project.ewp +++ b/board/STM8L052R8T6/IAR/hello_world/stm8_project.ewp @@ -259,7 +259,7 @@ CCIncludePath2 $PROJ_DIR$\..\..\..\..\kernel\core\include $PROJ_DIR$\..\..\..\..\arch\stm8\common\include - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8 $PROJ_DIR$\..\..\BSP\include $PROJ_DIR$\..\..\LIB\inc $PROJ_DIR$\..\..\TOS-CONFIG @@ -1646,16 +1646,16 @@ arch - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port.h + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port.h - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_c.c + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_c.c - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_config.h + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_config.h - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_s.S + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_s.S $PROJ_DIR$\..\..\..\..\arch\stm8\common\tos_cpu.c diff --git a/board/STM8L052R8T6/IAR/hello_world/stm8_project.ewt b/board/STM8L052R8T6/IAR/hello_world/stm8_project.ewt index 90ff2051..24b6bdc2 100644 --- a/board/STM8L052R8T6/IAR/hello_world/stm8_project.ewt +++ b/board/STM8L052R8T6/IAR/hello_world/stm8_project.ewt @@ -2160,16 +2160,16 @@ arch - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port.h + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port.h - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_c.c + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_c.c - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_config.h + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_config.h - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_s.S + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_s.S $PROJ_DIR$\..\..\..\..\arch\stm8\common\tos_cpu.c diff --git a/board/STM8L052R8T6/IAR/shell/stm8_project.ewp b/board/STM8L052R8T6/IAR/shell/stm8_project.ewp index 78bc6d11..14a7f743 100644 --- a/board/STM8L052R8T6/IAR/shell/stm8_project.ewp +++ b/board/STM8L052R8T6/IAR/shell/stm8_project.ewp @@ -259,7 +259,7 @@ CCIncludePath2 $PROJ_DIR$\..\..\..\..\kernel\core\include $PROJ_DIR$\..\..\..\..\arch\stm8\common\include - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8 $PROJ_DIR$\..\..\BSP\include $PROJ_DIR$\..\..\LIB\inc $PROJ_DIR$\..\..\TOS-CONFIG @@ -1648,16 +1648,16 @@ arch - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port.h + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port.h - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_c.c + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_c.c - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_config.h + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_config.h - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_s.S + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_s.S $PROJ_DIR$\..\..\..\..\arch\stm8\common\tos_cpu.c diff --git a/board/STM8L052R8T6/IAR/shell/stm8_project.ewt b/board/STM8L052R8T6/IAR/shell/stm8_project.ewt index 58f0cb5d..81cf0d35 100644 --- a/board/STM8L052R8T6/IAR/shell/stm8_project.ewt +++ b/board/STM8L052R8T6/IAR/shell/stm8_project.ewt @@ -2160,16 +2160,16 @@ arch - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port.h + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port.h - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_c.c + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_c.c - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_config.h + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_config.h - $PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_s.S + $PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_s.S $PROJ_DIR$\..\..\..\..\arch\stm8\common\tos_cpu.c diff --git a/kernel/core/include/tos_compiler.h b/kernel/core/include/tos_compiler.h index ffa86998..7a9df915 100644 --- a/kernel/core/include/tos_compiler.h +++ b/kernel/core/include/tos_compiler.h @@ -112,7 +112,7 @@ #define __NAKED__ #define __WEAK__ __weak -/*------------------ ICC Compiler for STM8 ----------------------*/ +/*------------------ ICC Compiler for STM8/AVR ----------------------*/ #elif defined(__IAR_SYSTEMS_ICC__) #define __ASM__ __asm diff --git a/kernel/core/include/tos_klib.h b/kernel/core/include/tos_klib.h index 156a4a19..94342e74 100644 --- a/kernel/core/include/tos_klib.h +++ b/kernel/core/include/tos_klib.h @@ -26,10 +26,10 @@ #define TOS_MACRO_BEGIN do { #define TOS_MACRO_END } while (0) -#define TOS_OFFSET_OF_FIELD(type, field) \ +#define TOS_OFFSET_OF_FIELD(type, field) \ ((uint32_t)&(((type *)0)->field)) -#define TOS_CONTAINER_OF_FIELD(ptr, type, field) \ +#define TOS_CONTAINER_OF_FIELD(ptr, type, field) \ ((type *)((uint8_t *)(ptr) - TOS_OFFSET_OF_FIELD(type, field))) #define TOS_COUNT_OF(array) (sizeof(array) / sizeof(array[0])) @@ -43,14 +43,14 @@ TOS_MACRO_END #define TOS_PTR_SANITY_CHECK_RC(ptr, return_code) \ TOS_MACRO_BEGIN \ - if (unlikely(!(ptr))) { \ - return return_code; \ + if (unlikely(!(ptr))) { \ + return return_code; \ } \ TOS_MACRO_END #define TOS_IN_IRQ_CHECK() \ TOS_MACRO_BEGIN \ - if (unlikely(knl_is_inirq())) { \ + if (unlikely(knl_is_inirq())) { \ return K_ERR_IN_IRQ; \ } \ TOS_MACRO_END @@ -60,9 +60,9 @@ TOS_MACRO_END #define TOS_OBJ_INIT(obj, obj_type) knl_object_init(&obj->knl_obj, obj_type) #define TOS_OBJ_DEINIT(obj) knl_object_deinit(&obj->knl_obj) -#define TOS_OBJ_VERIFY(obj, obj_type) \ +#define TOS_OBJ_VERIFY(obj, obj_type) \ TOS_MACRO_BEGIN \ - if (!knl_object_verify(&obj->knl_obj, obj_type)) { \ + if (!knl_object_verify(&obj->knl_obj, obj_type)) { \ return K_ERR_OBJ_INVALID; \ } \ TOS_MACRO_END @@ -70,7 +70,22 @@ TOS_MACRO_END #define TOS_OBJ_VERIFY_RC(obj, obj_type, return_code) \ TOS_MACRO_BEGIN \ - if (!knl_object_verify(&obj->knl_obj, obj_type)) { \ + if (!knl_object_verify(&obj->knl_obj, obj_type)) { \ + return return_code; \ + } \ +TOS_MACRO_END + +#define TOS_OBJ_TEST(obj, obj_type) \ +TOS_MACRO_BEGIN \ + if (knl_object_verify(&obj->knl_obj, obj_type)) { \ + return K_ERR_OBJ_INVALID; \ + } \ +TOS_MACRO_END + + +#define TOS_OBJ_TEST_RC(obj, obj_type, return_code) \ +TOS_MACRO_BEGIN \ + if (knl_object_verify(&obj->knl_obj, obj_type)) { \ return return_code; \ } \ TOS_MACRO_END @@ -81,6 +96,8 @@ TOS_MACRO_END #define TOS_OBJ_DEINIT(obj) #define TOS_OBJ_VERIFY(obj, obj_type) #define TOS_OBJ_VERIFY_RC(obj, obj_type, return_code) +#define TOS_OBJ_TEST(obj, obj_type) +#define TOS_OBJ_TEST_RC(obj, obj_type, return_code) #endif @@ -93,18 +110,18 @@ TOS_MACRO_END // currently we use default microlib supplied by mdk #define tos_kprintf(...) LIBC_PRINTF(__VA_ARGS__); -#define tos_kprintln(...) \ - LIBC_PRINTF(__VA_ARGS__); \ +#define tos_kprintln(...) \ + LIBC_PRINTF(__VA_ARGS__); \ LIBC_PRINTF("\n"); -#define TOS_ASSERT_AUX(exp, function, line) \ - if (!(exp)) { \ - tos_kprintln("assert failed: %s %d\n", function, line); \ - tos_knl_sched_lock(); \ - tos_cpu_int_disable(); \ - while (K_TRUE) { \ - ; \ - } \ +#define TOS_ASSERT_AUX(exp, function, line) \ + if (!(exp)) { \ + tos_kprintln("assert failed: %s %d\n", function, line); \ + tos_knl_sched_lock(); \ + tos_cpu_int_disable(); \ + while (K_TRUE) { \ + ; \ + } \ } #define TOS_ASSERT(exp) TOS_ASSERT_AUX(exp, __FUNCTION__, __LINE__) diff --git a/kernel/core/include/tos_sched.h b/kernel/core/include/tos_sched.h index 427b45f1..090c5698 100644 --- a/kernel/core/include/tos_sched.h +++ b/kernel/core/include/tos_sched.h @@ -21,10 +21,10 @@ __CDECLS_BEGIN #define K_PRIO_TBL_SIZE ((TOS_CFG_TASK_PRIO_MAX + 31) / 32) -#define K_PRIO_TBL_SLOT_SIZE (32u) +#define K_PRIO_TBL_SLOT_SIZE (8 * sizeof(uint32_t)) -#define K_PRIO_NDX(prio) ((prio) >> 5u) /* prio / 32u */ -#define K_PRIO_BIT(prio) ((uint32_t)1u << (K_PRIO_TBL_SLOT_SIZE - 1u - ((prio) & (K_PRIO_TBL_SLOT_SIZE - 1u)))) +#define K_PRIO_NDX(prio) ((prio) >> 5u) /* prio / 32u */ +#define K_PRIO_BIT(prio) ((uint32_t)1u << (K_PRIO_TBL_SLOT_SIZE - 1u - ((prio) & (K_PRIO_TBL_SLOT_SIZE - 1u)))) typedef struct readyqueue_st { k_list_t task_list_head[TOS_CFG_TASK_PRIO_MAX]; diff --git a/kernel/core/tos_rwlock.c b/kernel/core/tos_rwlock.c index d071f211..dcc030e7 100644 --- a/kernel/core/tos_rwlock.c +++ b/kernel/core/tos_rwlock.c @@ -189,7 +189,7 @@ __API__ k_err_t tos_rwlock_wpend_timed(k_rwlock_t *rwlock, k_tick_t timeout) } while (rwlock->n_readers > 0u || rwlock->is_writting) { - /* util no one is writting or reading */ + /* until no one is writting or reading */ err = tos_sem_pend(&rwlock->signal, timeout); if (err != K_ERR_NONE) { break; diff --git a/kernel/core/tos_task.c b/kernel/core/tos_task.c index 510e176c..7896a783 100644 --- a/kernel/core/tos_task.c +++ b/kernel/core/tos_task.c @@ -96,10 +96,8 @@ __API__ k_err_t tos_task_create(k_task_t *task, TOS_PTR_SANITY_CHECK(entry); TOS_PTR_SANITY_CHECK(stk_base); - if (task->knl_obj.type == KNL_OBJ_TYPE_TASK) { - /* try to re-create a task, kind of dangerous action */ - return K_ERR_TASK_ALREADY_CREATED; - } + /* try to re-create a task, kind of dangerous */ + TOS_OBJ_TEST_RC(task, KNL_OBJ_TYPE_TASK, K_ERR_TASK_ALREADY_CREATED); if (unlikely(stk_size < K_TASK_STK_SIZE_MIN)) { return K_ERR_TASK_STK_SIZE_INVALID; diff --git a/kernel/pm/tos_tickless.c b/kernel/pm/tos_tickless.c index 0203556a..22facf89 100644 --- a/kernel/pm/tos_tickless.c +++ b/kernel/pm/tos_tickless.c @@ -88,20 +88,20 @@ __STATIC__ k_time_t tickless_cpu_sleep_time_get(k_cpu_lpwr_mode_t lpwr_mode) return time_sleep_ms > max_delay_ms ? max_delay_ms : time_sleep_ms; } -__STATIC__ void tickless_systick_suspend(void) +__STATIC__ void tickless_tick_suspend(void) { cpu_systick_suspend(); cpu_systick_pending_reset(); } -__STATIC__ void tickless_systick_resume(void) +__STATIC__ void tickless_tick_resume(void) { cpu_systick_suspend(); cpu_systick_reset(); cpu_systick_resume(); } -__STATIC__ void tickless_systick_fix(k_tick_t tick_sleep) +__STATIC__ void tickless_tick_fix(k_tick_t tick_sleep) { TOS_CPU_CPSR_ALLOC(); @@ -114,14 +114,14 @@ __STATIC__ void tickless_systick_fix(k_tick_t tick_sleep) timer_update(); #endif - tickless_systick_resume(); + tickless_tick_resume(); TOS_CPU_INT_ENABLE(); } __STATIC__ void tickless_enter(void) { - tickless_systick_suspend(); + tickless_tick_suspend(); } __STATIC__ void tickless_leave(k_time_t time_sleep_ms) @@ -131,7 +131,7 @@ __STATIC__ void tickless_leave(k_time_t time_sleep_ms) /* how many "ticks" have we sleep */ tick_sleep = k_cpu_tick_per_second * time_sleep_ms / K_TIME_MILLISEC_PER_SEC; - tickless_systick_fix(tick_sleep); + tickless_tick_fix(tick_sleep); } __KNL__ void tickless_proc(void) diff --git a/osal/posix/include/private/pthread.h b/osal/posix/include/private/pthread.h index b0c8c9fd..d4a9689d 100644 --- a/osal/posix/include/private/pthread.h +++ b/osal/posix/include/private/pthread.h @@ -1,119 +1,119 @@ -/*---------------------------------------------------------------------------- - * Tencent is pleased to support the open source community by making TencentOS - * available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * If you have downloaded a copy of the TencentOS binary from Tencent, please - * note that the TencentOS binary is licensed under the BSD 3-Clause License. - * - * If you have downloaded a copy of the TencentOS source code from Tencent, - * please note that TencentOS source code is licensed under the BSD 3-Clause - * License, except for the third-party components listed below which are - * subject to different license terms. Your integration of TencentOS into your - * own projects may require compliance with the BSD 3-Clause License, as well - * as the other licenses applicable to the third-party components included - * within TencentOS. - *---------------------------------------------------------------------------*/ - -#ifndef _POSIX_PRIVATE_PTHREAD_H_ -#define _POSIX_PRIVATE_PTHREAD_H_ - -#include "tos_k.h" - -#include "private/posix_config.h" - -#include "sys/types.h" - -__CDECLS_BEGIN - -typedef struct pthread_control_st { - uint16_t threadstate : 4; - uint16_t cancelstate : 2; - uint16_t canceltype : 2; - uint16_t cancelpending : 1; - - pthread_t id; - pthread_attr_t attr; - k_task_t ktask; - k_task_t *the_ktask; - - k_sem_t joinner_sem; - - void *(*start_routine)(void *); /* start routine of the pthread */ - void *arg; /* argument to start routine */ - void *retval; /* return value of start routine */ - void *stackaddr; /* memory of address */ - - k_slist_t cleanup_ctl_list; - - void **thread_data; -} pthread_ctl_t; - -typedef struct pthread_cleanup_control_st { - void (*routine)(void *); /* function to be called */ - void *arg; /* argument for the routine */ - k_slist_t list; -} pthread_cleanup_ctl_t; - -#define PTHREAD_KEYS_MAX (POSIX_CFG_PTHREAD_KEYS_MAX) - -typedef void (*key_destructor_t)(void*); - -typedef struct pthread_key_control_st { - k_bmtbl_t key_bitmap_tbl[TOS_BITMAP_SIZE(PTHREAD_KEYS_MAX)]; - k_bitmap_t key_bitmap; - key_destructor_t destructors[PTHREAD_KEYS_MAX]; -} pthread_key_ctl_t; - -#define PTHREAD_INFO_SIZE (sizeof(pthread_ctl_t)) -#define PTHREAD_STK_SIZE_MIN (K_TASK_STK_SIZE_MIN + PTHREAD_INFO_SIZE) - -#define PTHREAD_DEFAULT_TIMESLICE 20 -#define PTHREAD_DEFAULT_STACKSIZE (2048 + PTHREAD_INFO_SIZE) -#define PTHREAD_DEFAULT_INHERIT_SCHED PTHREAD_INHERIT_SCHED -#define PTHREAD_DEFAULT_SCHEDPOLICY SCHED_OTHER -#define PTHREAD_DEFAULT_PRIORITY (TOS_CFG_TASK_PRIO_MAX / 2) -#define PTHREAD_DEFAULT_DETACH_STATE PTHREAD_CREATE_JOINABLE - -#define PTHREAD_DESTRUCTOR_ITERATIONS (POSIX_CFG_PTHREAD_DESTRUCTOR_ITERATIONS) - -#define PTHREAD_THREADS_MAX (POSIX_CFG_PTHREAD_THREADS_MAX) - -__KNL__ pthread_ctl_t *pthread_ctl_self(void); - -__KNL__ pthread_ctl_t *pthread_ctl_by_id(pthread_t id); - -__KNL__ int pthread_id_add(pthread_t id, pthread_ctl_t *info); - -__KNL__ pthread_t pthread_id_alloc(void); - -__KNL__ int pthread_id_free(pthread_t id); - -__KNL__ void pthread_data_clear(pthread_key_t key); - -__KNL__ int pthread_key_ctl_init(void); - -__KNL__ pthread_key_t pthread_key_alloc(void); - -__KNL__ int pthread_key_is_alloc(pthread_key_t key); - -__KNL__ int pthread_key_free(pthread_key_t key); - -__KNL__ int pthread_key_destructor_register(pthread_key_t key, key_destructor_t destructor); - -__KNL__ key_destructor_t pthread_key_destructor_get(pthread_key_t key); - -__KNL__ int pthread_ctl_reap(int pthreads_ready2reap); - -__KNL__ void pthread_lock(void); - -__KNL__ void pthread_unlock(void); - -__KNL__ int pthread_lock_init(void); - -__KNL__ int pthread_init(void); - -__CDECLS_END - -#endif /* _POSIX_PRIVATE_PTHREAD_PRV_H_ */ - +/*---------------------------------------------------------------------------- + * Tencent is pleased to support the open source community by making TencentOS + * available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * If you have downloaded a copy of the TencentOS binary from Tencent, please + * note that the TencentOS binary is licensed under the BSD 3-Clause License. + * + * If you have downloaded a copy of the TencentOS source code from Tencent, + * please note that TencentOS source code is licensed under the BSD 3-Clause + * License, except for the third-party components listed below which are + * subject to different license terms. Your integration of TencentOS into your + * own projects may require compliance with the BSD 3-Clause License, as well + * as the other licenses applicable to the third-party components included + * within TencentOS. + *---------------------------------------------------------------------------*/ + +#ifndef _POSIX_PRIVATE_PTHREAD_H_ +#define _POSIX_PRIVATE_PTHREAD_H_ + +#include "tos_k.h" + +#include "private/posix_config.h" + +#include "sys/types.h" + +__CDECLS_BEGIN + +typedef struct pthread_control_st { + uint16_t threadstate : 4; + uint16_t cancelstate : 2; + uint16_t canceltype : 2; + uint16_t cancelpending : 1; + + pthread_t id; + pthread_attr_t attr; + k_task_t ktask; + k_task_t *the_ktask; + + k_sem_t joinner_sem; + + void *(*start_routine)(void *); /* start routine of the pthread */ + void *arg; /* argument for start routine */ + void *retval; /* return value of start routine */ + void *stackaddr; /* memory address of stack */ + + k_slist_t cleanup_ctl_list; + + void **thread_data; +} pthread_ctl_t; + +typedef struct pthread_cleanup_control_st { + void (*routine)(void *); /* function to be called */ + void *arg; /* argument for the routine */ + k_slist_t list; +} pthread_cleanup_ctl_t; + +#define PTHREAD_KEYS_MAX (POSIX_CFG_PTHREAD_KEYS_MAX) + +typedef void (*key_destructor_t)(void*); + +typedef struct pthread_key_control_st { + k_bmtbl_t key_bitmap_tbl[TOS_BITMAP_SIZE(PTHREAD_KEYS_MAX)]; + k_bitmap_t key_bitmap; + key_destructor_t destructors[PTHREAD_KEYS_MAX]; +} pthread_key_ctl_t; + +#define PTHREAD_INFO_SIZE (sizeof(pthread_ctl_t)) +#define PTHREAD_STK_SIZE_MIN (K_TASK_STK_SIZE_MIN + PTHREAD_INFO_SIZE) + +#define PTHREAD_DEFAULT_TIMESLICE 20 +#define PTHREAD_DEFAULT_STACKSIZE (2048 + PTHREAD_INFO_SIZE) +#define PTHREAD_DEFAULT_INHERIT_SCHED PTHREAD_INHERIT_SCHED +#define PTHREAD_DEFAULT_SCHEDPOLICY SCHED_OTHER +#define PTHREAD_DEFAULT_PRIORITY (TOS_CFG_TASK_PRIO_MAX / 2) +#define PTHREAD_DEFAULT_DETACH_STATE PTHREAD_CREATE_JOINABLE + +#define PTHREAD_DESTRUCTOR_ITERATIONS (POSIX_CFG_PTHREAD_DESTRUCTOR_ITERATIONS) + +#define PTHREAD_THREADS_MAX (POSIX_CFG_PTHREAD_THREADS_MAX) + +__KNL__ pthread_ctl_t *pthread_ctl_self(void); + +__KNL__ pthread_ctl_t *pthread_ctl_by_id(pthread_t id); + +__KNL__ int pthread_id_add(pthread_t id, pthread_ctl_t *info); + +__KNL__ pthread_t pthread_id_alloc(void); + +__KNL__ int pthread_id_free(pthread_t id); + +__KNL__ void pthread_data_clear(pthread_key_t key); + +__KNL__ int pthread_key_ctl_init(void); + +__KNL__ pthread_key_t pthread_key_alloc(void); + +__KNL__ int pthread_key_is_alloc(pthread_key_t key); + +__KNL__ int pthread_key_free(pthread_key_t key); + +__KNL__ int pthread_key_destructor_register(pthread_key_t key, key_destructor_t destructor); + +__KNL__ key_destructor_t pthread_key_destructor_get(pthread_key_t key); + +__KNL__ int pthread_ctl_reap(int pthreads_ready2reap); + +__KNL__ void pthread_lock(void); + +__KNL__ void pthread_unlock(void); + +__KNL__ int pthread_lock_init(void); + +__KNL__ int pthread_init(void); + +__CDECLS_END + +#endif /* _POSIX_PRIVATE_PTHREAD_PRV_H_ */ + diff --git a/osal/posix/mqueue_prv.c b/osal/posix/mqueue_prv.c index 165e1aee..249bf491 100644 --- a/osal/posix/mqueue_prv.c +++ b/osal/posix/mqueue_prv.c @@ -95,4 +95,3 @@ __KNL__ mqueue_ctl_t *mqueue_by_id(mqd_t id) return the_ctl; } - diff --git a/osal/posix/pthread.c b/osal/posix/pthread.c index 66a9a946..d21e3f77 100644 --- a/osal/posix/pthread.c +++ b/osal/posix/pthread.c @@ -212,7 +212,7 @@ __API__ int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_ return 0; } -__API__ int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy) +__API__ int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy) { TOS_PTR_SANITY_CHECK_RC(attr, EINVAL); TOS_PTR_SANITY_CHECK_RC(policy, EINVAL);