|
@@ -23,6 +23,7 @@
|
|
|
* And all components related header files.
|
|
|
* 2012-12-23 Bernard fix the pthread initialization issue.
|
|
|
* 2013-06-23 Bernard Add the init_call for components initialization.
|
|
|
+ * 2013-07-05 Bernard Remove initialization feature for MS VC++ compiler
|
|
|
*/
|
|
|
|
|
|
#include "components.h"
|
|
@@ -45,35 +46,19 @@ static int rti_end(void)
|
|
|
}
|
|
|
INIT_EXPORT(rti_end,"7");
|
|
|
|
|
|
-#if defined(_MSC_VER) || (defined(__GNUC__) && defined(__x86_64__))
|
|
|
-/* fixed for MSC_VC and x86_64 in GNU GCC */
|
|
|
-#define NEXT_COMPONENT_FN(fn_ptr, end) fn_ptr = _next_component_fn(fn_ptr, end)
|
|
|
-
|
|
|
-const init_fn_t *_next_component_fn(const init_fn_t *fn, const init_fn_t *end)
|
|
|
-{
|
|
|
- unsigned int *ptr;
|
|
|
- ptr = (unsigned int*) (fn + 1);
|
|
|
- while ((*ptr == 0) && ((unsigned int*)ptr < (unsigned int*)end))
|
|
|
- ptr ++;
|
|
|
-
|
|
|
- return (const init_fn_t*)ptr;
|
|
|
-}
|
|
|
-#else
|
|
|
-#define NEXT_COMPONENT_FN(fn_ptr, end) fn_ptr++
|
|
|
-#endif
|
|
|
-
|
|
|
/**
|
|
|
* RT-Thread Components Initialization for board
|
|
|
*/
|
|
|
void rt_components_board_init(void)
|
|
|
{
|
|
|
+#ifndef _MSC_VER
|
|
|
const init_fn_t *fn_ptr;
|
|
|
|
|
|
- for (fn_ptr = &__rt_init_rti_start; fn_ptr < &__rt_init_rti_board_end; )
|
|
|
+ for (fn_ptr = &__rt_init_rti_start; fn_ptr < &__rt_init_rti_board_end; fn_ptr++)
|
|
|
{
|
|
|
(*fn_ptr)();
|
|
|
- NEXT_COMPONENT_FN(fn_ptr, __rt_init_rti_board_end);
|
|
|
}
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -81,12 +66,84 @@ void rt_components_board_init(void)
|
|
|
*/
|
|
|
void rt_components_init(void)
|
|
|
{
|
|
|
+#ifndef _MSC_VER
|
|
|
const init_fn_t *fn_ptr;
|
|
|
|
|
|
- for (fn_ptr = &__rt_init_rti_board_end; fn_ptr < &__rt_init_rti_end; )
|
|
|
+ for (fn_ptr = &__rt_init_rti_board_end; fn_ptr < &__rt_init_rti_end; fn_ptr ++)
|
|
|
{
|
|
|
(*fn_ptr)();
|
|
|
- NEXT_COMPONENT_FN(fn_ptr, __rt_init_rti_end);
|
|
|
}
|
|
|
-}
|
|
|
+#else
|
|
|
+#ifdef RT_USING_MODULE
|
|
|
+ rt_system_module_init();
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef RT_USING_FINSH
|
|
|
+ /* initialize finsh */
|
|
|
+ finsh_system_init();
|
|
|
+ finsh_set_device(RT_CONSOLE_DEVICE_NAME);
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef RT_USING_LWIP
|
|
|
+ /* initialize lwip stack */
|
|
|
+ /* register ethernetif device */
|
|
|
+ eth_system_device_init();
|
|
|
+
|
|
|
+ /* initialize lwip system */
|
|
|
+ lwip_system_init();
|
|
|
+ rt_kprintf("TCP/IP initialized!\n");
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef RT_USING_DFS
|
|
|
+ /* initialize the device file system */
|
|
|
+ dfs_init();
|
|
|
+
|
|
|
+#ifdef RT_USING_DFS_ELMFAT
|
|
|
+ /* initialize the elm chan FatFS file system*/
|
|
|
+ elm_init();
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(RT_USING_DFS_NFS) && defined(RT_USING_LWIP)
|
|
|
+ /* initialize NFSv3 client file system */
|
|
|
+ nfs_init();
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef RT_USING_DFS_YAFFS2
|
|
|
+ dfs_yaffs2_init();
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef RT_USING_DFS_UFFS
|
|
|
+ dfs_uffs_init();
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef RT_USING_DFS_JFFS2
|
|
|
+ dfs_jffs2_init();
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef RT_USING_DFS_ROMFS
|
|
|
+ dfs_romfs_init();
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef RT_USING_DFS_DEVFS
|
|
|
+ devfs_init();
|
|
|
+#endif
|
|
|
+#endif /* end of RT_USING_DFS */
|
|
|
+
|
|
|
+#ifdef RT_USING_NEWLIB
|
|
|
+ libc_system_init(RT_CONSOLE_DEVICE_NAME);
|
|
|
+#else
|
|
|
+ /* the pthread system initialization will be initiallized in libc */
|
|
|
+#ifdef RT_USING_PTHREADS
|
|
|
+ pthread_system_init();
|
|
|
+#endif
|
|
|
+#endif
|
|
|
|
|
|
+#ifdef RT_USING_RTGUI
|
|
|
+ rtgui_system_server_init();
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef RT_USING_USB_HOST
|
|
|
+ rt_usb_host_init();
|
|
|
+#endif
|
|
|
+#endif
|
|
|
+}
|