example_common.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /* Copyright 2020 Espressif Systems (Shanghai) PTE LTD
  2. *
  3. * Licensed under the Apache License, Version 2.0 (the "License");
  4. * you may not use this file except in compliance with the License.
  5. * You may obtain a copy of the License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software
  10. * distributed under the License is distributed on an "AS IS" BASIS,
  11. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. * See the License for the specific language governing permissions and
  13. * limitations under the License.
  14. */
  15. #pragma once
  16. #define BIN_FIRST_SEGMENT_OFFSET 0x18
  17. // Maximum block sized for RAM and Flash writes, respectively.
  18. #define ESP_RAM_BLOCK 0x1800
  19. typedef struct {
  20. const uint8_t *data;
  21. uint32_t size;
  22. uint32_t addr;
  23. } partition_attr_t;
  24. typedef struct {
  25. partition_attr_t boot;
  26. partition_attr_t part;
  27. partition_attr_t app;
  28. } example_binaries_t;
  29. typedef struct {
  30. partition_attr_t ram_app;
  31. } example_ram_app_binary_t;
  32. /**
  33. * @brief esptool portable bin header format
  34. */
  35. typedef struct example_bin_header {
  36. uint8_t magic;
  37. uint8_t segments;
  38. uint8_t flash_mode;
  39. uint8_t flash_size_freq;
  40. uint32_t entrypoint;
  41. } example_bin_header_t;
  42. /**
  43. * @brief esptool portable bin segment format
  44. */
  45. typedef struct example_bin_segment {
  46. uint32_t addr;
  47. uint32_t size;
  48. uint8_t *data;
  49. } example_bin_segment_t;
  50. void get_example_binaries(target_chip_t target, example_binaries_t *binaries);
  51. void get_example_ram_app_binary(target_chip_t target, example_ram_app_binary_t *bin);
  52. esp_loader_error_t connect_to_target(uint32_t higrer_baudrate);
  53. esp_loader_error_t flash_binary(const uint8_t *bin, size_t size, size_t address);
  54. esp_loader_error_t load_ram_binary(const uint8_t *bin);