application.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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. * 2011-01-13 weety first version
  13. */
  14. /**
  15. * @addtogroup at91sam9260
  16. */
  17. /*@{*/
  18. #include <rtthread.h>
  19. #ifdef RT_USING_DFS
  20. /* dfs init */
  21. #include <dfs_init.h>
  22. /* dfs filesystem:ELM FatFs filesystem init */
  23. #include <dfs_elm.h>
  24. /* dfs Filesystem APIs */
  25. #include <dfs_fs.h>
  26. #ifdef RT_USING_DFS_UFFS
  27. /* dfs filesystem:UFFS filesystem init */
  28. #include <dfs_uffs.h>
  29. #endif
  30. #endif
  31. #ifdef RT_USING_LED
  32. #include "led.h"
  33. #endif
  34. #define RT_INIT_THREAD_STACK_SIZE (2*1024)
  35. #ifdef RT_USING_DFS_ROMFS
  36. #include <dfs_romfs.h>
  37. #endif
  38. void rt_init_thread_entry(void* parameter)
  39. {
  40. /* Filesystem Initialization */
  41. #ifdef RT_USING_DFS
  42. {
  43. /* init the device filesystem */
  44. dfs_init();
  45. #if defined(RT_USING_DFS_ELMFAT)
  46. /* init the elm chan FatFs filesystam*/
  47. elm_init();
  48. #endif
  49. #if defined(RT_USING_DFS_ROMFS)
  50. dfs_romfs_init();
  51. if (dfs_mount(RT_NULL, "/rom", "rom", 0, &romfs_root) == 0)
  52. {
  53. rt_kprintf("ROM File System initialized!\n");
  54. }
  55. else
  56. rt_kprintf("ROM File System initialzation failed!\n");
  57. #endif
  58. #if defined(RT_USING_DFS_DEVFS)
  59. devfs_init();
  60. if (dfs_mount(RT_NULL, "/dev", "devfs", 0, 0) == 0)
  61. rt_kprintf("Device File System initialized!\n");
  62. else
  63. rt_kprintf("Device File System initialzation failed!\n");
  64. #ifdef RT_USING_NEWLIB
  65. /* init libc */
  66. libc_system_init("uart0");
  67. #endif
  68. #endif
  69. #if defined(RT_USING_DFS_UFFS)
  70. {
  71. /* init the uffs filesystem */
  72. dfs_uffs_init();
  73. /* mount flash device as flash directory */
  74. if(dfs_mount("nand0", "/nand0", "uffs", 0, 0) == 0)
  75. rt_kprintf("UFFS File System initialized!\n");
  76. else
  77. rt_kprintf("UFFS File System initialzation failed!\n");
  78. }
  79. #endif
  80. }
  81. #endif
  82. }
  83. #ifdef RT_USING_LED
  84. void rt_led_thread_entry(void* parameter)
  85. {
  86. rt_uint8_t cnt = 0;
  87. led_init();
  88. while(1)
  89. {
  90. /* light on leds for one second */
  91. rt_thread_delay(40);
  92. cnt++;
  93. if (cnt&0x01)
  94. led_on(1);
  95. else
  96. led_off(1);
  97. if (cnt&0x02)
  98. led_on(2);
  99. else
  100. led_off(2);
  101. if (cnt&0x04)
  102. led_on(3);
  103. else
  104. led_off(3);
  105. }
  106. }
  107. #endif
  108. int rt_application_init()
  109. {
  110. rt_thread_t init_thread;
  111. #ifdef RT_USING_LED
  112. rt_thread_t led_thread;
  113. #endif
  114. #if (RT_THREAD_PRIORITY_MAX == 32)
  115. init_thread = rt_thread_create("init",
  116. rt_init_thread_entry, RT_NULL,
  117. RT_INIT_THREAD_STACK_SIZE, 8, 20);
  118. #ifdef RT_USING_LED
  119. led_thread = rt_thread_create("led",
  120. rt_led_thread_entry, RT_NULL,
  121. 512, 20, 20);
  122. #endif
  123. #else
  124. init_thread = rt_thread_create("init",
  125. rt_init_thread_entry, RT_NULL,
  126. RT_INIT_THREAD_STACK_SIZE, 80, 20);
  127. #ifdef RT_USING_LED
  128. led_thread = rt_thread_create("led",
  129. rt_led_thread_entry, RT_NULL,
  130. 512, 200, 20);
  131. #endif
  132. #endif
  133. if (init_thread != RT_NULL)
  134. rt_thread_startup(init_thread);
  135. #ifdef RT_USING_LED
  136. if(led_thread != RT_NULL)
  137. rt_thread_startup(led_thread);
  138. #endif
  139. return 0;
  140. }
  141. /* NFSv3 Initialization */
  142. #if defined(RT_USING_DFS) && defined(RT_USING_LWIP) && defined(RT_USING_DFS_NFS)
  143. #include <dfs_nfs.h>
  144. void nfs_start(void)
  145. {
  146. nfs_init();
  147. if (dfs_mount(RT_NULL, "/nfs", "nfs", 0, RT_NFS_HOST_EXPORT) == 0)
  148. {
  149. rt_kprintf("NFSv3 File System initialized!\n");
  150. }
  151. else
  152. rt_kprintf("NFSv3 File System initialzation failed!\n");
  153. }
  154. #include "finsh.h"
  155. FINSH_FUNCTION_EXPORT(nfs_start, start net filesystem);
  156. #endif
  157. /*@}*/