Металл2024 Реклама
Метобр2024 Реклама

Танцы с бубном над чёрной мамкой на базе stm32f407vet6 часть 3

walll-es
Идет загрузка
Загрузка
20.12.2023
1049
2
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

6

Часть 1

Часть 2

Почему не запускалась прошивка после перезагрузки и при включении.

Танцы с бубном над чёрной мамкой на базе 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Танцы с бубном над чёрной мамкой на базе stm32f407vet6 часть 3

Перед включением надо перекинуть перемычку BOOT0 c GND на 3,3v . Эта программа работает через командную строку. Если её запустит так dfu-util -l выдаёт список найденных устройств OTG Танцы с бубном над чёрной мамкой на базе stm32f407vet6 часть 3

Собственно если не было бы  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

Можно теперь приступить к настройки конфигурации на стенде.

Собственно всё что я хотел рассказать про свои танцы с бубном ! :)

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

6
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама