support avr architecture based on ATMega32

1. IAR project, see TencentOS-tiny\board\ATMega32\IAR, both 4.12 and 7.20 is supplied.
This commit is contained in:
daishengdong
2020-03-03 18:27:24 +08:00
parent e3da94194e
commit 7e6ce005e6
56 changed files with 13225 additions and 244 deletions

View File

@@ -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__)