Перейти к содержанию
    

oldbrowze

Участник
  • Постов

    33
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о oldbrowze

  • Звание
    Участник
    Участник

Посетители профиля

291 просмотр профиля
  1. Спасибо большое за совет! Это привело меня к решению! Поскольку на чистом проекте статические конструкторы вызываются, проблема с неверными ключами и всей прочей ерундой отпали. Решение было на поверхности: очевидно, что раз мой конструктор(тело) взаимодействует с периферией, эту периферию надо было затактировать!!!! Операции на включения тактирования были вынесены в отдельную функцию, которая вызывалась в main(), но поскольку конструктор вызывался еще до того, как периферия была затактирована, у меня ничего не выходило. Добавил атрибут конструктор на функцию и, о чудо, всё заработало!!! Спасибо огромное @VladislavS за огромную помощь и дельные советы! Пришлось попробовать нечто новое - CMake!)
  2. Благодарю. Переделал весь проект под компиляцию через CMake, к тому же использовал ваш С-ный стартап. Проблема, к сожалению, осталась. Использовав явный вызов конструкторов с ключом -nostartfiles: for (void(**fConstr)() = __preinit_array_start; fConstr < __preinit_array_end; (*fConstr++)()) ; for (void(**fConstr)() = __init_array_start; fConstr < __init_array_end; (*fConstr++)()) ; Использовав тот же вызов __libc_init_array() , но уже без ключа - ничего не помогает Я еще не сильно разобрался в этой отладке, поэтому, к сожалению, по асм-листингу пробежаться не смогу... Может будете добры и подскажете, как решать эти проблемы? Да и спасибо вам за помощь!
  3. Не пойдет, конечно)) Два вопроса: 1. Поскольку стартап у меня на асм, попробовал вставить в мейн, но ничего не сработало.. 2. Какую роль исполняет тогда libc_init_array? Я полагал, что это как раз-таки ее задача?
  4. Если не секрет, где это вы нашли? Не совсем понимаю, откуда запускать. С main()? попробовал, ничего не вышло
  5. Поскольку я использую platformio, то команда линковки у него такая: COLLECT_GCC=arm-none-eabi-g++ COLLECT_LTO_WRAPPER=/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/lto-wrapper Target: arm-none-eabi Configured with: /tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/src/gcc/configure --target=arm-none-eabi --prefix=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native --libexecdir=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native/lib --infodir=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native/share/doc/gcc-arm-none-eabi/info --mandir=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native/share/doc/gcc-arm-none-eabi/man --htmldir=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native/share/doc/gcc-arm-none-eabi/html --pdfdir=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native/share/doc/gcc-arm-none-eabi/pdf --enable-languages=c,c++ --enable-plugins --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-newlib --with-headers=yes --with-python-dir=share/gcc-arm-none-eabi --with-sysroot=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native/arm-none-eabi --build=x86_64-linux-gnu --host=x86_64-linux-gnu --with-gmp=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/build-native/host-libs/usr --with-mpfr=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/build-native/host-libs/usr --with-mpc=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/build-native/host-libs/usr --with-isl=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/build-native/host-libs/usr --with-libelf=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/build-native/host-libs/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='GNU Tools for Arm Embedded Processors 7-2017-q4-major' --with-multilib-list=rmprofile Thread model: single gcc version 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204] (GNU Tools for Arm Embedded Processors 7-2017-q4-major) COMPILER_PATH=/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/:/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/:/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ LIBRARY_PATH=/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/:/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/:/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../arm-none-eabi/lib/thumb/v7e-m/:/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/:/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/:/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/:/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../arm-none-eabi/lib/ COLLECT_GCC_OPTIONS='-o' '.pio/build/blackpill_f401cc/firmware.elf' '-T' '/home/oldbrowze/.platformio/packages/tool-ldscripts-ststm32/stm32f4/STM32F401CCYX_FLASH.ld' '-Os' '-mthumb' '-mcpu=cortex-m4' '-specs=nano.specs' '-specs=nosys.specs' '-mcpu=cortex-m4' '-mthumb' '-ffunction-sections' '-fdata-sections' '-v' '-L/home/oldbrowze/.platformio/platforms/ststm32/ldscripts' '-L.pio/build/blackpill_f401cc' /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/collect2 -plugin /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/liblto_plugin.so -plugin-opt=/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccxaTjKY.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc_nano -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc_nano -plugin-opt=-pass-through=-lnosys -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc_nano -plugin-opt=-pass-through=-lnosys --sysroot=/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../arm-none-eabi -X -o .pio/build/blackpill_f401cc/firmware.elf /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crti.o /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtbegin.o /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/crt0.o -L/home/oldbrowze/.platformio/platforms/ststm32/ldscripts -L.pio/build/blackpill_f401cc -L/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m -L/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m -L/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../arm-none-eabi/lib/thumb/v7e-m -L/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1 -L/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc -L/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib -L/home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../arm-none-eabi/lib --gc-sections --gc-sections --relax --gc-sections .pio/build/blackpill_f401cc/FrameworkCMSIS/gcc/startup_stm32f401xc.o .pio/build/blackpill_f401cc/FrameworkCMSIS/system_stm32f4xx.o .pio/build/blackpill_f401cc/src/generator.o .pio/build/blackpill_f401cc/src/main.o .pio/build/blackpill_f401cc/src/stm32f4_usart.o --start-group -lgcc -lstdc++_nano --end-group -lstdc++_nano -lm -lc_nano --start-group -lgcc -lc_nano --end-group --start-group -lgcc -lc_nano -lnosys --end-group --start-group -lgcc -lc_nano -lnosys --end-group /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtend.o /home/oldbrowze/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crtn.o -T /home/oldbrowze/.platformio/packages/tool-ldscripts-ststm32/stm32f4/STM32F401CCYX_FLASH.ld COLLECT_GCC_OPTIONS='-o' '.pio/build/blackpill_f401cc/firmware.elf' '-T' '/home/oldbrowze/.platformio/packages/tool-ldscripts-ststm32/stm32f4/STM32F401CCYX_FLASH.ld' '-Os' '-mthumb' '-mcpu=cortex-m4' '-specs=nano.specs' '-specs=nosys.specs' '-mcpu=cortex-m4' '-mthumb' '-ffunction-sections' '-fdata-sections' '-v' '-L/home/oldbrowze/.platformio/platforms/ststm32/ldscripts' '-L.pio/build/blackpill_f401cc' Какие флаги передаете линковщику? разумеется Какие флаги линкеру передаются?
  6. class A { public: A(int, int) { /* action */ } }; class B { public: static inline A{1, 1}; //не вызывается конструктор } аналогично, если: A a{1, 1}; //здесь тоже не вызовется int main() { A b{1, 1}; //вызовется } Вот что я хотел сказать. .ld скрипт startup
  7. Всем здравствуйте. Возникла проблема: В классе есть статический метод, конструктор которого не вызывается. В стартап файле есть функция, которая должна вызваться и решить эту проблему. Но, почему-то, при дебаге я не проваливаюсь в нее, будто она не подгружается. Флаги -mcpu=cortex-m4 -mthumb передаю компилятору, но это особо и не помогает. В чем может быть проблема? Компилятор: gcc version 11.3.1 20220712 (Arm GNU Toolchain 11.3.Rel1) Заранее спасибо!
  8. stm32f103 spi not working

    В общем, да. Вероятно, проблема с конвертацией уровня. Собираю все на макетной плате. От самого контроллера до микросхемки было большое расстояние. Уменьшил - стали через раз выполняться команды. Понизил напряжение питания - чаще. Очевидно, что команды он понимает иногда. В общем, раз с SPI разобрались, и, предположительно, разобрались и с конечной проблемой - тему я закрою. Вам же, господа, огромное спасибо! Правда, спасибо. Благодаря Вам приходит желание работать, а не бросать это все!!! Спасибо!
  9. stm32f103 spi not working

    Да. Сразу. о как...я даже и не заметил этого.
  10. stm32f103 spi not working

    Индикатор с общим катодом, как и в даташите. Прозванивал. Индикаторы горят
  11. stm32f103 spi not working

    Вот. И я тоже про это прочитал, но подумал, раз Вы говорите, то я ошибаюсь. Что-ж, ладно
  12. stm32f103 spi not working

    Да. Вы меня извините, может я не развился еще до таких знаний, но как я сделаю сам read-back данных? Как я Вас понял: я делаю slave-устройство, читаю с него и сверяю с отправленными данными. Но как сделать с MAX7219 - не представляю. Наверное, глупо выгляжу))
  13. stm32f103 spi not working

    Да, полагаю, мой анализатор просто не успевает углядеть. Поставил небольшую задержку, все успешно. Спасибо еще раз. Считать с другого устройства у меня, увы, нет возможности. Если это можно как-то провернуть без использования стороннего устройства - буду рад услышать. И, все-таки, подскажите, пожалуйста, что можно сделать с этим: Уже сравниваю с даташитом по анализатору: диаграмма идентична, если так можно выразится. Но все равно не заводится микросхема. Хотя бы, в какую сторону смотреть..Где я мог допустить ошибку. Диаграммы с анализатора:
  14. stm32f103 spi not working

    Спасибо, подумал. Я действительно уже мало думал под конец, отчаялся. Хотя, если честно, я правда не додумался, что ошибка в этом.. У меня действительно все получилось. Спасибо всем за ответы. Но, к сожалению, не понимаю, почему микросхемка отказывается зажигать светодиоды.. Команды отправляю согласно даташиту, передача(дрыг ноги CS) удовлетворяет даташиту.. LED_I::send_command(0x9, 0xFF); // режим декодирования LED_I::send_command(0xB, 0x3); // количество разрядов LED_I::send_command(0xA, 0x5); // яркость LED_I::send_command(0xC, 0x1); // включаем LED_I::send_command(0x1, 0x1); // единица
×
×
  • Создать...