Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Нужна помощь Помогите загрузить fat файловую систему в ESP32

Тема в разделе "ESP32 SDK", создана пользователем rriissee33, 13 окт 2019.

  1. rriissee33

    rriissee33 Читатель

    Сообщения:
    31
    Симпатии:
    6
    Итак со spiffs файловой системой на esp32 возникли проблемы. Поиск на иностранных сайтах не увенчался успехом. Нашел в сети информацию о том что можно использовать файловую ситему в формате fat.
    К тому же она в 4 раза быстрей работает чем spiffs. Начал выпонять tutorial. Расскажу пошагово что сделал.
    Вот здесь находится инструкция: DFRobot: ESP32 Tutorial Arduino: 19-1. FAT file system

    1. Необходимо влезть в ядро по адресу (для моего компьютера) :

    C:\Users\----\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\tools\partitions

    Там найти файл default.csv. Его надо изменить следующим образом:

    Код (Text):
    1. # Name,   Type, SubType, Offset,  Size, Flags
    2. nvs,      data, nvs,     0x9000,  0x5000,
    3. otadata,  data, ota,     0xe000,  0x2000,
    4. app0,     app,  ota_0,   0x10000, 0x140000,
    5. app1,     app,  ota_1,   0x150000,0x140000,
    6. ffat,     data, fat,     0x290000,0x170000,
    2. после этого необходимо запустить скетч

    Код (C):
    1. #include "FFat.h"
    2.  
    3. void setup(){
    4.    Serial.begin(115200);
    5.  
    6.    if(!FFat.begin(true)){
    7.        Serial.println("Mount Failed");
    8.        return;
    9.    }
    10.  
    11.    Serial.println("File system mounted");
    12. }
    13.  
    14. void loop(){}
    при том переменная в функции FFat.begin() true - говорит что при каждом старте раздел будет отформатирован. После первой загрузки необходимо изменить переменную на false для того что бы раздел больше не форматировался.

    Этот скетч у меня выдал что "File system mounted" и все ок.

    3. Далее начинается муть.

    На гитхабе есть инструмент для того что бы смонтировать файловую систему - jkearins/ESP32_mkfatfs.
    При том они пишут что он работает из под винды.

    Нужен терминал и в него нужно ввести следующие команды:

    git clone jkearins/ESP32_mkfatfs
    make menuconfig
    make all && make flash && make flashfatfs

    make flashfatfs

    последняя команда должна прошить файловую систему в esp32

    Вопрос какой терминал на винде использовать что бы эти команды работали?

    (пробовал git bash на нем не работает команда make)

    Далее они пишут что FAT image can be prepared on host and flashed to ESP32. И то что нужно положить файлы файловой системы на этом хосте в дерикторию components/fatfs_image/image/

    Вопрос на каком хосте? где они должны быть приготовленны?

    И как произойдет процесс заливки файлов в esp?

    Очень прошу сообщество помочь в данной проблеме...
     
  2. enjoynering

    enjoynering Авторитетный участник сообщества

    Сообщения:
    580
    Симпатии:
    58
    Зачем вы пользуетесь Arduino фреймворком? Переходите на IDF, в нем глюков меньше и ваш FatFs там работает из коробки?

    Deous/VSC-Guide-for-esp32
     
    rriissee33 нравится это.
  3. rriissee33

    rriissee33 Читатель

    Сообщения:
    31
    Симпатии:
    6
    Спасибо. Дело в том что я никогда не пользовался этой средой разработки. Я так понимаю она на питоне? И еще у меня очень много наработок в arduino ide. Есть целая модульная прошивка: DmitryBorisenko33/esp8266_iot-manager_modules_firmware
    Но если у нее больше возможностей и меньше глюков то мог бы и перейти. Скажите будет ли сложно писать в ней код после arduino? Имеются ли в ней библиотеки для работы arduino accessories. Я имею ввиду все датчики и сенсоры и прочее...
    Смогу ли я в этой среде повторить модульную прошивку такую которая у меня уже есть? Спасибо Вам за ответ и за информацию.
     
  4. Urbas81

    Urbas81 Новичок

    Сообщения:
    66
    Симпатии:
    0
  5. Urbas81

    Urbas81 Новичок

    Сообщения:
    66
    Симпатии:
    0
    Запустил IDF для ESP32, не могу понять почему так долго идет компиляция, на ESP8266 при использовании UDK и Eclipse все значительно быстрее работает, пр том что для ESP код под завязку, а на 32 простой пример.
     
  6. enjoynering

    enjoynering Авторитетный участник сообщества

    Сообщения:
    580
    Симпатии:
    58
    как IDF для ESP32 ставили? как запускали?
     
  7. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    602
    Симпатии:
    52
    Компиляция идет долго в первый раз или после любого изменения конфига после make menuconfig
    Несколько ускорить можно ключом -j
    Перекомпиляция если конфиг не меняли идет быстро - в этом случае пересобираются только исходники правленные вами.
    Для пересборки можно использовать команду
    make -j app
    или
    make app-flash monitor
     
  8. Urbas81

    Urbas81 Новичок

    Сообщения:
    66
    Симпатии:
    0
    В youtube нашел видео, да и тут на форуме вроде были описания.
     
  9. Urbas81

    Urbas81 Новичок

    Сообщения:
    66
    Симпатии:
    0
    Спасибо, попробую с ключами, тоже читал что долго только при первой компиляции, но на практике мне показалось что долго всегда, может не до конца понял механизм.
     
  10. Urbas81

    Urbas81 Новичок

    Сообщения:
    66
    Симпатии:
    0
    Проверил еще раз, взял из папки esp-шва пример adc2, первый make длится минут 5-10, в итоге в папке примера создается build размером ~57 Mb, затем меняю одну букву в adc2_example_main.c сохраняю, и после этого "make -j app", выпадает ошибка, "make[1]: *** Нет правила для сборки цели....." и ссылки на разные папки с файлами, которые мало то что не менялись, так еще и не относятся к примеру. Пока не сделаю make clean, компиляция не проходит. Может необходимо более тонко настроить конфигурационный файл?
     
  11. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    602
    Симпатии:
    52
    Порядок такой:
    копируете пример
    make menuconfig (можете там ничего не менять)
    make -j
    make flash
     
  12. rriissee33

    rriissee33 Читатель

    Сообщения:
    31
    Симпатии:
    6
    а у меня получилось все таки на ардуино запустить асинхронный сервер с моей файловой системой. Из плюсов полностью правильная защита логином и паролем.

    Я пробовал и esp idf. Компиляция действительно шла долго. Понимаю что он лучше. Но код там на порядок сложнее... Перевести весь проэкт под esp idf - огромная работа... Не могу пока на нее решиться...
     
  13. Urbas81

    Urbas81 Новичок

    Сообщения:
    66
    Симпатии:
    0
    Ничего не поменялось, первая проходка генерирует bin, следующая без clean выдает ошибки об отсутствующих правилах для сборки цепи. Папка components должна содержать все? или ненужные библиотеки можно удалить, я так понимаю собирается все что там расположено, независимо от того есть ссылки в коде или нет.
     
  14. Urbas81

    Urbas81 Новичок

    Сообщения:
    66
    Симпатии:
    0
    Похоже я нашел в чем была ошибка, после изменения файла не нужно делать make app, нужно make flash, и тогда компилируется только измененный файл, и все проходит быстро. Теперь бы это все еще в eclipse интегрировать, встречаю несколько разных вариантов описания этого процесса, один от espressif, второй в книге Colban и оба не приводят к успеху.
     
  15. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    599
    Симпатии:
    70
    Установка тулчейна и сдк (esp-idf) подробно описана
    Устанавливаю стабильную версию в домашнюю директорию пользователя
    Код (Text):
    1. ~$ mkdir esp && cd esp/
    Скачиваю архив с тулчейном
    Код (Text):
    1. ~/esp$ wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
    Распаковываю и удаляю архив
    Код (Text):
    1. ~/esp$ tar -xf xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz && rm xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
    Клонирую esp-idf и переключаюсь на версию v3.3
    Код (Text):
    1. ~/esp$ git clone -b v3.3 --recursive https://github.com/espressif/esp-idf.git
    Устанавливаю необходимые пакеты для питона
    Код (Text):
    1. ~/esp$ python -m pip install --user -r esp-idf/requirements.txt
    Копирую пример во временную директорию (чтоб не гадить в директории с установленной esp-idf) и перехожу в эту директорию
    Код (Text):
    1. ~/esp$ cp -r esp-idf/examples/peripherals/adc2/ /tmp/ && cd /tmp/adc2/
    Выполняю make menuconfig, указывая в окружении где расположен тулчейн и esp-idf, в make menuconfig никаких опций не меняю, просто выхожу.
    make menuconfig (раскрыть)
    Код (Text):
    1. /tmp/adc2$ PATH="$HOME/esp/xtensa-esp32-elf/bin:$PATH" IDF_PATH="$HOME/esp/esp-idf" make menuconfig
    2. make[1]: Entering directory '/home/alex/esp/esp-idf/tools/kconfig'
    3. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/mconf.c -o mconf.o
    4. flex -L -Pzconf -ozconf.lex.c /home/alex/esp/esp-idf/tools/kconfig/zconf.l
    5. bison -t -l -p zconf -o zconf.tab.c /home/alex/esp/esp-idf/tools/kconfig/zconf.y
    6. sed -E "s/\\x0D$//" /home/alex/esp/esp-idf/tools/kconfig/zconf.gperf | gperf -t --output-file zconf.hash.c -a -C -E -g -k '1,3,$' -p -t
    7. cc -I /home/alex/esp/esp-idf/tools/kconfig -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  zconf.tab.c -o zconf.tab.o
    8. /home/alex/esp/esp-idf/tools/kconfig/lxdialog/check-lxdialog.sh -check cc  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD -lncurses
    9. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/lxdialog/checklist.c -o lxdialog/checklist.o
    10. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/lxdialog/util.c -o lxdialog/util.o
    11. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/lxdialog/inputbox.c -o lxdialog/inputbox.o
    12. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/lxdialog/textbox.c -o lxdialog/textbox.o
    13. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/lxdialog/yesno.c -o lxdialog/yesno.o
    14. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/lxdialog/menubox.c -o lxdialog/menubox.o
    15. cc -o mconf-idf mconf.o zconf.tab.o lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o -lncurses
    16. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/conf.c -o conf.o
    17. cc -o conf-idf conf.o  zconf.tab.o -lncurses
    18. make[1]: Leaving directory '/home/alex/esp/esp-idf/tools/kconfig'
    19. make[1]: Entering directory '/home/alex/esp/esp-idf/tools/kconfig'
    20. /home/alex/esp/esp-idf/tools/kconfig/lxdialog/check-lxdialog.sh -check cc  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD -lncurses
    21. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/lxdialog/checklist.c -o lxdialog/checklist.o
    22. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/lxdialog/util.c -o lxdialog/util.o
    23. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/lxdialog/inputbox.c -o lxdialog/inputbox.o
    24. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/lxdialog/textbox.c -o lxdialog/textbox.o
    25. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/lxdialog/yesno.c -o lxdialog/yesno.o
    26. cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD  /home/alex/esp/esp-idf/tools/kconfig/lxdialog/menubox.c -o lxdialog/menubox.o
    27. cc -o mconf-idf mconf.o zconf.tab.o lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o -lncurses
    28. make[1]: Leaving directory '/home/alex/esp/esp-idf/tools/kconfig'
    29. DEFCONFIG
    30. #
    31. # configuration written to /tmp/adc2/sdkconfig
    32. #
    33. MENUCONFIG
    34.  
    35.  
    36. *** End of the configuration.
    37. *** Execute 'make' to start the build or try 'make help'.
    38.  
    39. GENCONFIG
    40. Project is not inside a git repository, will not use 'git describe' to determine PROJECT_VER.
    41. App "adc2" version: 1

    Первый раз выполняю сборку примера и фиксирую время
    make -j4 (раскрыть)
    Код (Text):
    1. /tmp/adc2$ time PATH="$HOME/esp/xtensa-esp32-elf/bin:$PATH" IDF_PATH="$HOME/esp/esp-idf" make -j4
    2. Toolchain version: crosstool-ng-1.22.0-80-g6c4433a
    3. Compiler version: 5.2.0
    4. CC build/app_trace/app_trace_util.o
    5. Project is not inside a git repository, will not use 'git describe' to determine PROJECT_VER.
    6. App "adc2" version: 1
    7. CC build/app_update/esp_ota_ops.o
    8. CC build/app_trace/host_file_io.o
    9. CC build/app_trace/app_trace.o
    10. Python requirements from /home/alex/esp/esp-idf/requirements.txt are satisfied.
    11. CC build/app_update/esp_app_desc.o
    12. CXX build/asio/asio/asio/src/asio.o
    13. CC build/app_trace/gcov/gcov_rtio.o
    14. AR build/app_update/libapp_update.a
    15. AR build/aws_iot/libaws_iot.a
    16. CC build/bootloader_support/src/bootloader_flash.o
    17. AR build/app_trace/libapp_trace.a
    18. CC build/bt/bt.o
    19. CC build/bootloader_support/src/flash_qio_mode.o
    20. AR build/bt/libbt.a
    21. CC build/coap/libcoap/src/address.o
    22. CC build/bootloader/bootloader_support/src/bootloader_flash.o
    23. CC build/bootloader_support/src/secure_boot_signatures.o
    24. CC build/bootloader_support/src/bootloader_common.o
    25. CC build/coap/libcoap/src/async.o
    26. CC build/bootloader/bootloader_support/src/flash_qio_mode.o
    27. CC build/bootloader/bootloader_support/src/secure_boot_signatures.o
    28. CC build/coap/libcoap/src/block.o
    29. CC build/bootloader_support/src/secure_boot.o
    30. ...........................................
    31. CC build/wpa_supplicant/src/wps/wps_attr_parse.o
    32. CC build/wpa_supplicant/src/wps/wps_dev_attr.o
    33. CC build/wpa_supplicant/src/wps/wps.o
    34. CC build/wpa_supplicant/src/wps/wps_common.o
    35. CC build/wpa_supplicant/src/wps/wps_registrar.o
    36. CC build/wpa_supplicant/src/wps/wps_attr_build.o
    37. CC build/wpa_supplicant/src/wps/uuid.o
    38. CC build/wpa_supplicant/src/wps/wps_enrollee.o
    39. Generating libvfs.a.sections_info
    40. Generating libwear_levelling.a.sections_info
    41. Generating libwifi_provisioning.a.sections_info
    42. Generating libxtensa-debug-module.a.sections_info
    43.  
    44. AR build/wpa_supplicant/libwpa_supplicant.a
    45. Generating libwpa_supplicant.a.sections_info
    46. Generating esp32.project.ld
    47. LD build/adc2.elf
    48. esptool.py v2.8-dev
    49. To flash all build output, run 'make flash' or:
    50. python /home/alex/esp/esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size detect 0x1000 /tmp/adc2/build/bootloader/bootloader.bin 0x10000 /tmp/adc2/build/adc2.bin 0x8000 /tmp/adc2/build/partitions_singleapp.bin
    51.  
    52. real   0m37.138s
    53. user   2m6.291s
    54. sys   0m17.635s

    На холодном Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz сборка заняла ~40 секунд
     
  16. Urbas81

    Urbas81 Новичок

    Сообщения:
    66
    Симпатии:
    0
    Могут ли русские буквы в названии пути влиять на сборку?, ставил давно, в имени есть "Администратор", одни примеры собираются другие нет.
     

Поделиться этой страницей