Танцы с бубном над чёрной мамкой на базе stm32f407vet6 часть 3
Почему не запускалась прошивка после перезагрузки и при включении.
Как было сказочно ранее что успешный запуск после прошивки происходит только если её заливать по адресу 0x08080000 и работает она до первой перезагрузки. А адресация перепрограммируемой памяти начинается с 0x08000000 то есть компилятор отступает 32 килобайта где видимо должен находится bootloader который после отработки должен передать управление по адресу 0x08080000. Но так как я успешно затёр решил поискать в интернете. Поиски меня вывели на STM32_HID_bootloader но как бы я его не пытался приспособить для своей платы он не дал положительного результата. А перспективы ещё и его конфигурировать и компилировать мне совсем были не интересно терять время с непонятной перспективой результата. Нужен ли мне вообще бут ? Собственно особо ненужен. Вся польза от него наверное то что не надо перекидывать перемычку при прошивке. И я решил пойти другим путём и просто разобраться как сместить адрес чтоб при компиляции адрес был с 0x08000000 а не с 0x08080000. И это оказалось очень оправдательное решение так как практически сразу я решил свою последнюю проблему с этой платой! И так зашёл я в файл \Marlin-2.1.1.1\ini\stm32f4.ini нашёл в нём секцию для своей мамки [env:STM32F407VE_black] и её полностью отредактировал теперь она выглядела так
[env:STM32F407VE_black]
extends = stm32_variant
board = marlin_blackSTM32F407VET6
board_build.offset = 0x0000
board_upload.offset_address = 0x08000000
build_flags = ${stm32_variant.build_flags}
-DARDUINO_BLACK_F407VE
-DUSBD_USE_CDC_COMPOSITE -DUSE_USB_FS
После успешной компиляции и заливки через ST-Link по адресу 0x08000000 всё прошивка стала работать как надо при перезагрузки и выключении стартовала без каких либо проблем проблем.
Но мне показалась что не очень удобно каждый раз заливать прошивку с другой программы а не со среды IDE.
Ранее я также нашёл программу dfu-util которая тоже может заливать прошивку через OTG
Перед включением надо перекинуть перемычку BOOT0 c GND на 3,3v . Эта программа работает через командную строку. Если её запустит так dfu-util -l выдаёт список найденных устройств OTG
Собственно если не было бы ST-Link можно была заливать также прошивку и через OTG. Теперь я просто прописал строчку на эту программу в фале \Marlin-2.1.1.1\ini\stm32f4.ini в конце секции для своей платы [env:STM32F407VE_black]
upload_command = D:\dfu-util\dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D "$SOURCE"
После чего заливка прошивки происходит со среды IDE.
Ещё на плату впаял EEPROM AT24c256 и два резистора R2 и R3 1 кОм. Можно была обойтись и просто вставить батарейку и в режиме эмуляции EEPROM использовать. Но мне это не составила особого труда а перспективы хранения конфигурации не в энергонезависимая памяти не очень интересны. Да после этого надо настроить использование EEPROM для этого в файле \Marlin-2.1.1.1\Marlin\src\pins\stm32f4\pins_BLACK_STM32F407VE.h
надо закомментировать строчки
//#define I2C_EEPROM
//#define SRAM_EEPROM_EMULATION
//#define MARLIN_EEPROM_SIZE 0x2000 // EEPROM AT24C64 (8Kb)
и прописать такие
#define EXTERNAL_EEPROM_USE
#ifdef EXTERNAL_EEPROM_USE
#ifndef I2C_EEPROM // Check & enable external I2C EEPROM use
#define I2C_EEPROM
#ifdef FLASH_EEPROM_EMULATION // Check & disable FLASH EEPROM emulation
#undef FLASH_EEPROM_EMULATION
#undef FLASH_EEPROM_LEVELING
#endif
#ifdef SRAM_EEPROM_EMULATION // Check & disable SRAM EEPROM emulation
#undef SRAM_EEPROM_EMULATION
#endif
#ifdef MARLIN_EEPROM_SIZE // Check & disable any predefined EEPROM size
#undef MARLIN_EEPROM_SIZE
#endif
// Uncomment the size of EEPROM chip you are using
//#define MARLIN_EEPROM_SIZE 0x10000 // EEPROM AT24C512 (64Kb)
#define MARLIN_EEPROM_SIZE 0x8000 // EEPROM AT24C256 (32Kb)
//#define MARLIN_EEPROM_SIZE 0x4000 // EEPROM AT24C128 (16Kb)
//#define MARLIN_EEPROM_SIZE 0x2000 // EEPROM AT24C64 (8Kb)
//#define MARLIN_EEPROM_SIZE 0x1000// EEPROM AT24C32 (4Kb)
#endif
#endif
Ещё я для удобства настройки в прошивке активировал команды M42 M43 M108
теперь через терминал можно смотреть список портов и их назначение а также их состояние
раскомментировал следующие строки для этого в файле Configuration_adv.h
#define EMERGENCY_PARSER
#define DIRECT_PIN_CONTROL
#define PINS_DEBUGGING
Можно теперь приступить к настройки конфигурации на стенде.
Собственно всё что я хотел рассказать про свои танцы с бубном ! :)
Еще больше интересных статей
Превращение Anycubic Kobra S1 в S1 Carbon.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Прошло несколько месяцев с нашей предыд...
Про натяжку ремней Qidi Q1 Pro (для начинающих Qidiводов)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Сопла и сопли
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Сколько раз этот вопрос поднимался. Сколько тем...
Комментарии и вопросы
“А недавно я вообще поработал....
Прекрасное изделие, и технолог...
Карманная бензопила на батарей...
Всем привет, случилась т...
Всех приветсвую, может кто то...
Использую OrcaSlicer, но при н...
купил себе бамбука, отпечатал...