提交 a124e7bd 编写于 作者: B bernard

add initialization debug code

上级 b96b3561
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
#ifdef RT_DFS_ELM_USE_LFN #ifdef RT_DFS_ELM_USE_LFN
static int gbk2uni_fd = -1; static int gbk2uni_fd = -1;
static int uni2gbk_fd = -1; static int uni2gbk_fd = -1;
void ff_convert_init() int ff_convert_init()
{ {
gbk2uni_fd = open(GBK2UNI_FILE, O_RDONLY, 0); gbk2uni_fd = open(GBK2UNI_FILE, O_RDONLY, 0);
if (gbk2uni_fd < 0) if (gbk2uni_fd < 0)
...@@ -22,6 +22,7 @@ void ff_convert_init() ...@@ -22,6 +22,7 @@ void ff_convert_init()
uni2gbk_fd = open(UNI2GBK_FILE, O_RDONLY, 0); uni2gbk_fd = open(UNI2GBK_FILE, O_RDONLY, 0);
if (uni2gbk_fd < 0) if (uni2gbk_fd < 0)
rt_kprintf("Unable to open Unicode to GBK look up table.\r\n"); rt_kprintf("Unable to open Unicode to GBK look up table.\r\n");
return 0;
} }
INIT_APP_EXPORT(ff_convert_init); INIT_APP_EXPORT(ff_convert_init);
......
...@@ -500,12 +500,12 @@ int dfs_statfs(const char *path, struct statfs *buffer) ...@@ -500,12 +500,12 @@ int dfs_statfs(const char *path, struct statfs *buffer)
#ifdef RT_USING_DFS_MNTTABLE #ifdef RT_USING_DFS_MNTTABLE
int dfs_mount_table(void) int dfs_mount_table(void)
{ {
int index; int index = 0;
while (1) while (1)
{ {
if (mount_table[index].path == RT_NULL) break; if (mount_table[index].path == RT_NULL) break;
if (dfs_mount(mount_table[index].device_name, if (dfs_mount(mount_table[index].device_name,
mount_table[index].path, mount_table[index].path,
mount_table[index].filesystemtype, mount_table[index].filesystemtype,
......
...@@ -134,8 +134,8 @@ rt_size_t rt_i2c_master_recv(struct rt_i2c_bus_device *bus, ...@@ -134,8 +134,8 @@ rt_size_t rt_i2c_master_recv(struct rt_i2c_bus_device *bus,
return (ret > 0) ? count : ret; return (ret > 0) ? count : ret;
} }
rt_err_t rt_i2c_core_init(void) int rt_i2c_core_init(void)
{ {
return rt_mutex_init(&i2c_core_lock, "i2c_core_lock", RT_IPC_FLAG_FIFO); return rt_mutex_init(&i2c_core_lock, "i2c_core_lock", RT_IPC_FLAG_FIFO);
} }
INIT_COMPONENT_EXPORT(rt_i2c_core_init);
...@@ -96,7 +96,7 @@ rt_size_t rt_i2c_master_recv(struct rt_i2c_bus_device *bus, ...@@ -96,7 +96,7 @@ rt_size_t rt_i2c_master_recv(struct rt_i2c_bus_device *bus,
rt_uint16_t flags, rt_uint16_t flags,
rt_uint8_t *buf, rt_uint8_t *buf,
rt_uint32_t count); rt_uint32_t count);
rt_err_t rt_i2c_core_init(void); int rt_i2c_core_init(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
* *
* @return none. * @return none.
*/ */
void rt_usb_host_init(void) int rt_usb_host_init(void)
{ {
ucd_t drv; ucd_t drv;
#ifdef RT_USB_CLASS_HID #ifdef RT_USB_CLASS_HID
...@@ -80,5 +80,8 @@ void rt_usb_host_init(void) ...@@ -80,5 +80,8 @@ void rt_usb_host_init(void)
/* register hub class driver */ /* register hub class driver */
drv = rt_usb_class_driver_hub(); drv = rt_usb_class_driver_hub();
rt_usb_class_driver_register(drv); rt_usb_class_driver_register(drv);
return 0;
} }
INIT_COMPONENT_EXPORT(rt_usb_host_init); INIT_COMPONENT_EXPORT(rt_usb_host_init);
...@@ -52,6 +52,16 @@ INIT_EXPORT(rti_end,"7"); ...@@ -52,6 +52,16 @@ INIT_EXPORT(rti_end,"7");
void rt_components_board_init(void) void rt_components_board_init(void)
{ {
#ifndef _MSC_VER #ifndef _MSC_VER
#if RT_DEBUG_INIT
int result;
const struct rt_init_desc *desc;
for (desc = &__rt_init_desc_rti_start; desc < &__rt_init_desc_rti_board_end; desc ++)
{
rt_kprintf("initialize %s", desc->fn_name);
result = desc->fn();
rt_kprintf(":%d done\n", result);
}
#else
const init_fn_t *fn_ptr; const init_fn_t *fn_ptr;
for (fn_ptr = &__rt_init_rti_start; fn_ptr < &__rt_init_rti_board_end; fn_ptr++) for (fn_ptr = &__rt_init_rti_start; fn_ptr < &__rt_init_rti_board_end; fn_ptr++)
...@@ -59,6 +69,7 @@ void rt_components_board_init(void) ...@@ -59,6 +69,7 @@ void rt_components_board_init(void)
(*fn_ptr)(); (*fn_ptr)();
} }
#endif #endif
#endif
} }
/** /**
...@@ -67,12 +78,25 @@ void rt_components_board_init(void) ...@@ -67,12 +78,25 @@ void rt_components_board_init(void)
void rt_components_init(void) void rt_components_init(void)
{ {
#ifndef _MSC_VER #ifndef _MSC_VER
#if RT_DEBUG_INIT
int result;
const struct rt_init_desc *desc;
rt_kprintf("do components intialization.\n");
for (desc = &__rt_init_desc_rti_board_end; desc < &__rt_init_desc_rti_end; desc ++)
{
rt_kprintf("initialize %s", desc->fn_name);
result = desc->fn();
rt_kprintf(":%d done\n", result);
}
#else
const init_fn_t *fn_ptr; const init_fn_t *fn_ptr;
for (fn_ptr = &__rt_init_rti_board_end; fn_ptr < &__rt_init_rti_end; fn_ptr ++) for (fn_ptr = &__rt_init_rti_board_end; fn_ptr < &__rt_init_rti_end; fn_ptr ++)
{ {
(*fn_ptr)(); (*fn_ptr)();
} }
#endif
#else #else
#ifdef RT_USING_MODULE #ifdef RT_USING_MODULE
rt_system_module_init(); rt_system_module_init();
......
...@@ -63,6 +63,10 @@ ...@@ -63,6 +63,10 @@
#define RT_DEBUG_IPC 0 #define RT_DEBUG_IPC 0
#endif #endif
#ifndef RT_DEBUG_INIT
#define RT_DEBUG_INIT 0
#endif
/* Turn on this to enable context check */ /* Turn on this to enable context check */
#ifndef RT_DEBUG_CONTEXT_CHECK #ifndef RT_DEBUG_CONTEXT_CHECK
#define RT_DEBUG_CONTEXT_CHECK 1 #define RT_DEBUG_CONTEXT_CHECK 1
......
...@@ -181,8 +181,20 @@ typedef int (*init_fn_t)(void); ...@@ -181,8 +181,20 @@ typedef int (*init_fn_t)(void);
#ifdef _MSC_VER /* we do not support MS VC++ compiler */ #ifdef _MSC_VER /* we do not support MS VC++ compiler */
#define INIT_EXPORT(fn, level) #define INIT_EXPORT(fn, level)
#else #else
#define INIT_EXPORT(fn, level) \ #if RT_DEBUG_INIT
const init_fn_t __rt_init_##fn SECTION(".rti_fn."level) = fn struct rt_init_desc
{
const char* fn_name;
const init_fn_t fn;
};
#define INIT_EXPORT(fn, level) \
const char __rti_##fn##_name[] = #fn; \
const struct rt_init_desc __rt_init_desc_##fn SECTION(".rti_fn."level) = \
{ __rti_##fn##_name, fn};
#else
#define INIT_EXPORT(fn, level) \
const init_fn_t __rt_init_##fn SECTION(".rti_fn."level) = fn
#endif
#endif #endif
#else #else
#define INIT_EXPORT(fn, level) #define INIT_EXPORT(fn, level)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册