application.c 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. /*
  2. * File : application.c
  3. * This file is part of RT-Thread RTOS
  4. * COPYRIGHT (C) 2006, RT-Thread Development Team
  5. *
  6. * The license and distribution terms for this file may be
  7. * found in the file LICENSE in this distribution or at
  8. * http://www.rt-thread.org/license/LICENSE
  9. *
  10. * Change Logs:
  11. * Date Author Notes
  12. * 2009-01-05 Bernard the first version
  13. */
  14. #include <rtthread.h>
  15. #include <stdio.h>
  16. #include <board.h>
  17. #ifdef RT_USING_FINSH
  18. #include <finsh.h>
  19. #include <shell.h>
  20. #endif
  21. #ifdef RT_USING_LWIP
  22. #include <lwip/sys.h>
  23. #include <netif/ethernetif.h>
  24. extern void lwip_system_init(void);
  25. #endif
  26. #ifdef RT_USING_DFS
  27. #include <dfs_init.h>
  28. #include <dfs_fs.h>
  29. #ifdef RT_USING_DFS_ELMFAT
  30. #include <dfs_elm.h>
  31. #endif
  32. #if defined(RT_USING_LWIP) && defined(RT_USING_DFS_NFS)
  33. #include <dfs_nfs.h>
  34. #endif
  35. #ifdef RT_USING_DFS_ROMFS
  36. #include <dfs_romfs.h>
  37. #endif
  38. #ifdef RT_USING_DFS_DEVFS
  39. #include <devfs.h>
  40. #endif
  41. #ifdef RT_USING_DFS_UFFS
  42. #include <dfs_uffs.h>
  43. #endif
  44. #ifdef RT_USING_DFS_JFFS2
  45. #include <dfs_jffs2.h>
  46. #endif
  47. #ifdef RT_USING_DFS_YAFFS2
  48. #include <dfs_yaffs2.h>
  49. #endif
  50. #ifdef RT_USING_DFS_ROMFS
  51. #include <dfs_romfs.h>
  52. #endif
  53. #endif
  54. #ifdef RT_USING_NEWLIB
  55. #include <libc.h>
  56. #endif
  57. #ifdef RT_USING_PTHREADS
  58. #include <pthread.h>
  59. #endif
  60. #ifdef RT_USING_MODULE
  61. #include <rtm.h>
  62. #endif
  63. #ifdef RT_USING_RTGUI
  64. #include <rtgui/rtgui_system.h>
  65. #endif
  66. void rt_init_thread_entry(void *parameter)
  67. {
  68. #ifdef RT_USING_LWIP
  69. #ifdef RT_USING_TAPNETIF
  70. tap_netif_hw_init();
  71. #else
  72. pcap_netif_hw_init();
  73. #endif
  74. #endif
  75. rt_platform_init();
  76. #ifdef RT_USING_MODULE
  77. rt_system_module_init();
  78. #endif
  79. #ifdef RT_USING_FINSH
  80. /* initialize finsh */
  81. finsh_system_init();
  82. finsh_set_device(RT_CONSOLE_DEVICE_NAME);
  83. #endif
  84. #ifdef RT_USING_LWIP
  85. /* initialize lwip stack */
  86. /* register ethernetif device */
  87. eth_system_device_init();
  88. /* initialize lwip system */
  89. lwip_system_init();
  90. rt_kprintf("TCP/IP initialized!\n");
  91. #endif
  92. #ifdef RT_USING_DFS
  93. /* initialize the device file system */
  94. dfs_init();
  95. #ifdef RT_USING_DFS_ELMFAT
  96. /* initialize the elm chan FatFS file system*/
  97. elm_init();
  98. #endif
  99. #if defined(RT_USING_DFS_NFS) && defined(RT_USING_LWIP)
  100. /* initialize NFSv3 client file system */
  101. nfs_init();
  102. #endif
  103. #ifdef RT_USING_DFS_YAFFS2
  104. dfs_yaffs2_init();
  105. #endif
  106. #ifdef RT_USING_DFS_UFFS
  107. dfs_uffs_init();
  108. #endif
  109. #ifdef RT_USING_DFS_JFFS2
  110. dfs_jffs2_init();
  111. #endif
  112. #ifdef RT_USING_DFS_ROMFS
  113. dfs_romfs_init();
  114. #endif
  115. #ifdef RT_USING_DFS_RAMFS
  116. dfs_ramfs_init();
  117. #endif
  118. #ifdef RT_USING_DFS_DEVFS
  119. devfs_init();
  120. #endif
  121. #endif /* end of RT_USING_DFS */
  122. #ifdef RT_USING_NEWLIB
  123. libc_system_init(RT_CONSOLE_DEVICE_NAME);
  124. #else
  125. /* the pthread system initialization will be initiallized in libc */
  126. #ifdef RT_USING_PTHREADS
  127. pthread_system_init();
  128. #endif
  129. #endif
  130. #ifdef RT_USING_RTGUI
  131. rtgui_system_server_init();
  132. #endif
  133. #ifdef RT_USING_USB_HOST
  134. rt_usb_host_init();
  135. #endif
  136. #ifdef RT_USING_RTGUI
  137. /* start sdl thread to simulate an LCD. SDL may depend on DFS and should be
  138. * called after rt_components_init. */
  139. rt_hw_sdl_start();
  140. #endif /* RT_USING_RTGUI */
  141. /* File system Initialization */
  142. #ifdef RT_USING_DFS
  143. {
  144. #ifdef RT_USING_DFS_WINSHAREDIR
  145. {
  146. extern rt_err_t rt_win_sharedir_init(const char *name);
  147. extern int dfs_win32_init(void);
  148. rt_win_sharedir_init("wdd");
  149. dfs_win32_init();
  150. if (dfs_mount("wdd", "/", "wdir", 0, 0) == 0)
  151. rt_kprintf("win32 share directory initialized!\n");
  152. else
  153. rt_kprintf("win32 share directory initialized failed!\n");
  154. }
  155. #endif
  156. #ifdef RT_USING_DFS_ELMFAT
  157. /* mount sd card fatfs as root directory */
  158. #ifdef _WIN32
  159. if (dfs_mount("sd0", "/disk/sd", "elm", 0, 0) == 0)
  160. #else
  161. if (dfs_mount("sd0", "/", "elm", 0, 0) == 0)
  162. #endif
  163. rt_kprintf("fatfs initialized!\n");
  164. else
  165. rt_kprintf("fatfs initialization failed!\n");
  166. #endif
  167. #ifdef RT_USING_DFS_UFFS
  168. /* mount uffs as the nand flash file system */
  169. if (dfs_mount("nand0", "/disk/nand", "uffs", 0, 0) == 0)
  170. rt_kprintf("uffs initialized!\n");
  171. else
  172. rt_kprintf("uffs initialization failed!\n");
  173. #endif
  174. #ifdef RT_USING_DFS_JFFS2
  175. /* mount jffs2 as the nor flash file system */
  176. if (dfs_mount("nor", "/disk/nor", "jffs2", 0, 0) == 0)
  177. rt_kprintf("jffs2 initialized!\n");
  178. else
  179. rt_kprintf("jffs2 initialization failed!\n");
  180. #endif
  181. }
  182. #endif
  183. }
  184. int rt_application_init()
  185. {
  186. rt_thread_t tid;
  187. tid = rt_thread_create("init",
  188. rt_init_thread_entry, RT_NULL,
  189. 2048, RT_THREAD_PRIORITY_MAX / 3, 20);
  190. if (tid != RT_NULL)
  191. rt_thread_startup(tid);
  192. return 0;
  193. }
  194. /*@}*/