main_awtk.c 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. /**
  2. * @file main
  3. *
  4. */
  5. /*********************
  6. * INCLUDES
  7. *********************/
  8. #include <stdlib.h>
  9. #include <unistd.h>
  10. #include "FreeRTOS.h"
  11. #include "task.h"
  12. #include "queue.h"
  13. #include "board.h"
  14. #include "chip.h"
  15. #include "animation.h"
  16. #include "sfud.h"
  17. #include "snfud.h"
  18. #include "romfile.h"
  19. #include "ota_update.h"
  20. #include "sysinfo.h"
  21. #ifdef WIFI_SUPPORT
  22. #include "carlink_ey.h"
  23. #include "carlink_ec.h"
  24. #endif
  25. #include "test_demo.h"
  26. #ifdef USE_ULOG
  27. #ifdef ULOG_EASYFLASH_BACKEND_ENABLE
  28. #include "easyflash.h"
  29. #include "ulog_easyflash.h"
  30. #endif
  31. #ifdef ULOG_FILE_BACKEND_ENABLE
  32. #include "ulog_file.h"
  33. #endif
  34. #endif
  35. #undef TASK_STATUS_MONITOR
  36. extern int ark_network_init();
  37. extern int tp_init(void);
  38. extern int gui_app_start(int lcd_w, int lcd_h);
  39. #ifdef ULOG_BACKEND_USING_CONSOLE
  40. extern int ulog_console_backend_init(void);
  41. #endif
  42. extern int get_usb_mode();
  43. extern int ark_network_init(void);
  44. extern void ncm_update_demo();
  45. extern void ncm_log_demo();
  46. extern void wifi_update_demo(void);
  47. extern void vRegisterSampleCLICommands( void );
  48. extern void vUARTCommandConsoleStart( uint16_t usStackSize, UBaseType_t uxPriority );
  49. #ifdef CARLINK_ENABLE
  50. static char qr_text_buf[100] = {0}; //手机互联二维码数据缓存
  51. int get_qr_text_buf(char *buf, int len)
  52. {
  53. int ret = -1;
  54. int qr_len = strlen(qr_text_buf);
  55. if ((qr_len > 0) && (len > qr_len)) {
  56. strcpy(buf, qr_text_buf);
  57. ret = 0;
  58. }
  59. return ret;
  60. }
  61. void set_qr_text_buf(const char *str)
  62. {
  63. if (strlen(str) < sizeof(qr_text_buf)) {
  64. strcpy(qr_text_buf, str);
  65. }
  66. }
  67. #endif
  68. static void awtk_run_thread(void *param)
  69. {
  70. gui_app_start (OSD_WIDTH, OSD_HEIGHT);
  71. printf("### ERR: %s exit.\n", __func__);
  72. vTaskDelete(NULL);
  73. }
  74. static void awtk_thread(void *param)
  75. {
  76. printf("awtk thread start.\n");
  77. #if DEVICE_TYPE_SELECT == SPI_NOR_FLASH
  78. /* initialize the spi flash */
  79. sfud_init();
  80. #ifdef SPI0_QSPI_MODE
  81. sfud_qspi_fast_read_enable(sfud_get_device(0), 4);
  82. #endif
  83. #elif DEVICE_TYPE_SELECT == SPI_NAND_FLASH
  84. #ifdef SPI_NOR_FLASH_SUPPORT
  85. sfud_init();
  86. #ifdef SPI0_QSPI_MODE
  87. sfud_qspi_fast_read_enable(sfud_get_device(0), 4);
  88. #endif
  89. #endif
  90. snfud_init();
  91. #else
  92. mmcsd_wait_cd_changed(portMAX_DELAY);
  93. #endif
  94. #ifdef USE_ULOG
  95. ulog_init();
  96. #ifdef ULOG_BACKEND_USING_CONSOLE
  97. ulog_console_backend_init();
  98. #endif
  99. #ifdef ULOG_EASYFLASH_BACKEND_ENABLE
  100. easyflash_init();
  101. ulog_ef_backend_init();
  102. #endif
  103. #ifdef ULOG_FILE_BACKEND_ENABLE
  104. usb_wait_stor_dev_pluged(portMAX_DELAY);
  105. ulog_file_backend_init();
  106. #endif
  107. TRACE_INFO("use ulog.\n");
  108. //read_all_flash_log();
  109. #endif
  110. /* read sysinfo */
  111. ReadSysInfo();
  112. empty_chip_update_demo();
  113. /* initialize carback */
  114. #ifdef CARBACK_DETECT
  115. carback_init();
  116. #endif
  117. /* play animation */
  118. #if ANIMATION_POLICY != ANIMATION_NONE
  119. animation_init();
  120. animation_start();
  121. #endif
  122. /* uart rx demo */
  123. //uart_rx_demo();
  124. /* read sd card demo */
  125. #ifdef SDMMC1_SUPPORT
  126. #if SDMMC_TEST
  127. sdcard_read_demo();
  128. #endif
  129. #endif
  130. #ifdef USB_SUPPORT
  131. if (get_usb_mode()) {
  132. ark_network_init();
  133. #ifdef NCM_UPDATE_SUPPORT
  134. ncm_update_demo();
  135. #endif
  136. #ifdef NCM_LOG_SUPPORT
  137. ncm_log_demo();
  138. #endif
  139. } else {
  140. #if defined(WIFI_UPDATE_SUPPORT)
  141. wifi_update_demo();
  142. #elif USB_TEST
  143. usb_read_demo();
  144. #endif
  145. }
  146. #endif
  147. #ifdef MAILBOX_SUPPORT
  148. #if CAN_UPDATE_TEST
  149. CanUpdateReceiveDemo();
  150. #endif
  151. #endif
  152. #ifdef WIFI_SUPPORT
  153. #if WIFI_TEST
  154. wifi_demo_test();
  155. #else
  156. #if USE_LWIP && (0 == CARLINK_EY && 0 == CARLINK_EC)
  157. ark_network_init();
  158. #endif
  159. #if CARLINK_EY
  160. set_carlink_display_info(0, 0, LCD_WIDTH, LCD_HEIGHT);
  161. set_carlink_video_info(LCD_WIDTH, LCD_HEIGHT, 30);
  162. carlink_ey_init();
  163. #endif
  164. #if CARLINK_EC
  165. set_carlink_display_info(0, 0, LCD_WIDTH, LCD_HEIGHT);
  166. set_carlink_video_info(LCD_WIDTH, LCD_HEIGHT, 30);
  167. carlink_ec_init(0, NULL);
  168. #endif
  169. #endif
  170. #endif
  171. /* read romfile */
  172. ReadRomFile();
  173. #ifdef AUDIO_REPLAY
  174. #if REPLAY_TEST
  175. wavplay_demo();
  176. #endif
  177. #endif
  178. #ifdef AUDIO_RECORD
  179. #if RECORD_TEST
  180. wavrecord_demo();
  181. #endif
  182. #endif
  183. #ifdef TP_SUPPORT
  184. tp_init();
  185. #endif
  186. #ifdef ETH_SUPPORT
  187. #if ETH_TEST
  188. eth_test_demo();
  189. #endif
  190. #endif
  191. xTaskCreate(awtk_run_thread, "awtk_gui", 32768, NULL, configMAX_PRIORITIES/2, NULL);
  192. #if ANIMATION_POLICY == ANIMATION_NONE
  193. /* Disable video layer and Enable UI layer when no animation */
  194. vTaskDelay(pdMS_TO_TICKS(10));
  195. ark_lcd_osd_enable(LCD_UI_LAYER, 1);
  196. ark_lcd_set_osd_sync(LCD_UI_LAYER);
  197. ark_lcd_osd_enable(LCD_VIDEO_LAYER, 0);
  198. ark_lcd_set_osd_sync(LCD_VIDEO_LAYER);
  199. #endif
  200. while(1) {
  201. #if TASK_STATUS_MONITOR
  202. static uint32_t idletick = 0;
  203. uint8_t CPU_RunInfo[1024];
  204. if (xTaskGetTickCount() - idletick > configTICK_RATE_HZ * 10) {
  205. memset(CPU_RunInfo,0,1024);
  206. vTaskList((char *)&CPU_RunInfo); //获取任务运行时间信息
  207. printf("---------------------------------------------\r\n");
  208. printf("Task State Priority Stack #\r\n");
  209. printf("%s", CPU_RunInfo);
  210. printf("---------------------------------------------\r\n");
  211. memset(CPU_RunInfo,0,1024);
  212. vTaskGetRunTimeStats((char *)&CPU_RunInfo);
  213. printf("Task Abs Time % Time\r\n");
  214. printf("%s", CPU_RunInfo);
  215. printf("---------------------------------------------\r\n\n");
  216. idletick = xTaskGetTickCount();
  217. }
  218. #endif
  219. vTaskDelay(pdMS_TO_TICKS(10)); /*Just to let the system breath*/
  220. }
  221. }
  222. void main_awtk(void)
  223. {
  224. /* Start the task that manages the command console for FreeRTOS+CLI. */
  225. vUARTCommandConsoleStart( ( configMINIMAL_STACK_SIZE * 3 ), tskIDLE_PRIORITY );
  226. /* Register the standard CLI commands. */
  227. vRegisterSampleCLICommands();
  228. xTaskCreate(awtk_thread, "awtk", 32768, NULL, tskIDLE_PRIORITY + 1, NULL);
  229. }