application.c 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  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. #include <components.h>
  18. void rt_init_thread_entry(void* parameter)
  19. {
  20. #ifdef RT_USING_LWIP
  21. extern void pcap_netif_hw_init(void);
  22. pcap_netif_hw_init();
  23. #endif
  24. /* initialization RT-Thread Components */
  25. rt_components_init();
  26. rt_platform_init();
  27. /* Filesystem Initialization */
  28. #ifdef RT_USING_DFS
  29. {
  30. #ifdef RT_USING_DFS_ELMFAT
  31. /* mount sd card fat partition 1 as root directory */
  32. if (dfs_mount("sd0", "/", "elm", 0, 0) == 0)
  33. {
  34. rt_kprintf("fatfs initialized!\n");
  35. }
  36. else
  37. rt_kprintf("fatfs initialzation failed!\n");
  38. #endif
  39. #ifdef RT_USING_DFS_UFFS
  40. /* mount sd card fat partition 1 as root directory */
  41. if (dfs_mount("nand0", "/nand", "uffs", 0, 0) == 0)
  42. {
  43. rt_kprintf("uffs initialized!\n");
  44. }
  45. else
  46. rt_kprintf("uffs initialzation failed!\n");
  47. #endif
  48. #ifdef RT_USING_DFS_JFFS2
  49. /* mount sd card fat partition 1 as root directory */
  50. if (dfs_mount("nor", "/nor", "jffs2", 0, 0) == 0)
  51. {
  52. rt_kprintf("jffs2 initialized!\n");
  53. }
  54. else
  55. rt_kprintf("jffs2 initialzation failed!\n");
  56. #endif
  57. }
  58. #endif
  59. #ifdef WIN32
  60. {
  61. extern void low_cpu(void);
  62. rt_thread_idle_sethook(low_cpu);
  63. }
  64. #endif
  65. #ifdef RT_USING_RTGUI
  66. {
  67. extern void application_init(void);
  68. rt_thread_delay(RT_TICK_PER_SECOND);
  69. application_init();
  70. }
  71. #endif
  72. }
  73. void rt_test_thread_entry(void* parameter)
  74. {
  75. int i;
  76. for(i=0; i<10; i++)
  77. {
  78. rt_kprintf("hello, world\n");
  79. rt_thread_delay(100);
  80. }
  81. }
  82. int rt_application_init()
  83. {
  84. rt_thread_t tid;
  85. tid = rt_thread_create("init",
  86. rt_init_thread_entry, RT_NULL,
  87. 2048, RT_THREAD_PRIORITY_MAX/3, 20);
  88. if (tid != RT_NULL)
  89. rt_thread_startup(tid);
  90. tid = rt_thread_create("test",
  91. rt_test_thread_entry, RT_NULL,
  92. 2048, RT_THREAD_PRIORITY_MAX * 3 /4, 20);
  93. if (tid != RT_NULL)
  94. rt_thread_startup(tid);
  95. return 0;
  96. }
  97. #ifdef WIN32
  98. #include <windows.h>
  99. void low_cpu(void)
  100. {
  101. Sleep(1000);
  102. }
  103. #ifndef _CRT_TERMINATE_DEFINED
  104. #define _CRT_TERMINATE_DEFINED
  105. _CRTIMP __declspec(noreturn) void __cdecl exit(__in int _Code);
  106. _CRTIMP __declspec(noreturn) void __cdecl _exit(__in int _Code);
  107. _CRTIMP void __cdecl abort(void);
  108. #endif
  109. void rt_hw_exit(void)
  110. {
  111. rt_kprintf("RT-Thread, bye\n");
  112. exit(0);
  113. }
  114. FINSH_FUNCTION_EXPORT_ALIAS(rt_hw_exit, exit, exit rt-thread);
  115. #endif
  116. #include <dfs_posix.h>
  117. void test_fs(void)
  118. {
  119. int fd;
  120. DIR* dir;
  121. struct dirent* dirp;
  122. off_t off[6];
  123. int i;
  124. mkdir("/testdir",0777);
  125. fd = open("/testdir/file1",O_CREAT|O_RDWR,0777);
  126. close(fd);
  127. fd = open("/testdir/file2",O_CREAT|O_RDWR,0777);
  128. close(fd);
  129. fd = open("/testdir/file3",O_CREAT|O_RDWR,0777);
  130. close(fd);
  131. fd = open("/testdir/file4",O_CREAT|O_RDWR,0777);
  132. close(fd);
  133. fd = open("/testdir/file5",O_CREAT|O_RDWR,0777);
  134. close(fd);
  135. fd = open("/testdir/file6",O_CREAT|O_RDWR,0777);
  136. close(fd);
  137. dir = opendir("/testdir");
  138. for(i=0;i<6;i++)
  139. {
  140. off[i] = telldir(dir);
  141. dirp = readdir(dir);
  142. if(dirp)
  143. rt_kprintf("#%d NAME:%s\n",i,dirp->d_name);
  144. else break;
  145. }
  146. for(i=0;i<6;i++)
  147. {
  148. seekdir(dir,off[i]);
  149. dirp = readdir(dir);
  150. if(dirp)
  151. rt_kprintf("#%d NAME:%s\n",i,dirp->d_name);
  152. else break;
  153. }
  154. rt_kprintf("unlink file2\n");
  155. unlink("/testdir/file2");
  156. rewinddir(dir);
  157. for(i=0;i<6;i++)
  158. {
  159. off[i] = telldir(dir);
  160. dirp = readdir(dir);
  161. if(dirp)
  162. rt_kprintf("#%d NAME:%s\n",i,dirp->d_name);
  163. else break;
  164. }
  165. for(i=0;i<6;i++)
  166. {
  167. seekdir(dir,off[i]);
  168. dirp = readdir(dir);
  169. if(dirp)
  170. rt_kprintf("#%d NAME:%s\n",i,dirp->d_name);
  171. else break;
  172. }
  173. rt_kprintf("unlink file4\n");
  174. unlink("/testdir/file4");
  175. rewinddir(dir);
  176. for(i=0;i<6;i++)
  177. {
  178. off[i] = telldir(dir);
  179. dirp = readdir(dir);
  180. if(dirp)
  181. rt_kprintf("#%d NAME:%s\n",i,dirp->d_name);
  182. else break;
  183. }
  184. for(i=0;i<6;i++)
  185. {
  186. seekdir(dir,off[i]);
  187. dirp = readdir(dir);
  188. if(dirp)
  189. rt_kprintf("#%d NAME:%s\n",i,dirp->d_name);
  190. else break;
  191. }
  192. unlink("/testdir/file1");
  193. unlink("/testdir/file3");
  194. unlink("/testdir/file5");
  195. unlink("/testdir/file6");
  196. closedir(dir);
  197. }
  198. FINSH_FUNCTION_EXPORT(test_fs, test fs);
  199. /*@}*/