Танцы с бубном над чёрной мамкой на базе 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
Можно теперь приступить к настройки конфигурации на стенде.
Собственно всё что я хотел рассказать про свои танцы с бубном ! :)
Еще больше интересных статей
Подсветка для Ender 3 и Sprite Extruder с обдувом K3D
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Попросили меня подробнее написать про подсветку на моем Ender 3....
Автоотключение 3d принтера
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Началось с того, что в моем 3d принтере неудобно расположен выключател...
Сопла и сопли
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Сколько раз этот вопрос поднимался. Сколько тем...
Комментарии и вопросы
Да не надо тут рассказывать пр...
На озоне вот что нашел первое....
Успехов!)
Друзья, хелп! Решил напечатать...
Собственно, в заголовке все на...
Свернул паз под шестигранник,...
я голову сломал уже. Как в Cur...