main.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "PikaVM.h"
  2. #include "driver/gpio.h"
  3. #include "driver/uart.h"
  4. #include "driver/usb_serial_jtag.h"
  5. #include "esp_core_dump.h"
  6. #include "esp_err.h"
  7. #include "esp_event.h"
  8. #include "esp_log.h"
  9. #include "esp_system.h"
  10. #include "esp_vfs_dev.h"
  11. #include "esp_vfs_fat.h"
  12. #include "freertos/FreeRTOS.h"
  13. #include "freertos/queue.h"
  14. #include "freertos/task.h"
  15. #include "sdmmc_cmd.h"
  16. #include <inttypes.h>
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <string.h>
  20. #include <sys/socket.h>
  21. #include <sys/stat.h>
  22. #include "esp_http_client.h"
  23. #include "esp_https_ota.h"
  24. #include "esp_ota_ops.h"
  25. #include "esp_partition.h"
  26. #include "esp_wifi.h"
  27. #include "nvs.h"
  28. #include "nvs_flash.h"
  29. #include "pikaScript.h"
  30. #include <esp_ota_ops.h>
  31. #include <esp_partition.h>
  32. #include <time.h>
  33. static volatile char gRXC = EOF;
  34. static volatile uint8_t gNeedPut = 0;
  35. char pika_platform_getchar() {
  36. while (1) {
  37. char buff[1] = {0};
  38. if (usb_serial_jtag_read_bytes(buff, 1, 100) > 0) {
  39. return buff[0];
  40. }
  41. vTaskDelay(1);
  42. }
  43. }
  44. int pika_platform_putchar(char ch) {
  45. usb_serial_jtag_write_bytes(&ch, 1, 0);
  46. return 0;
  47. }
  48. int64_t pika_platform_get_tick(void) {
  49. struct timespec ts;
  50. clock_gettime(CLOCK_REALTIME, &ts);
  51. return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
  52. }
  53. void app_main(void) {
  54. usb_serial_jtag_driver_config_t usb_serial_jtag_config = {
  55. .rx_buffer_size = 1024 * 8, .tx_buffer_size = 1024};
  56. usb_serial_jtag_driver_install(&usb_serial_jtag_config);
  57. esp_vfs_usb_serial_jtag_use_driver();
  58. printf("Minimum free heap size: %" PRIu32 " bytes\n",
  59. esp_get_minimum_free_heap_size());
  60. pikaScriptShell(pikaScriptInit());
  61. }
  62. void pika_platform_reboot(void) {
  63. /* reboot */
  64. abort();
  65. }