Во блин прикольно открыл лог сборки, сначала компилится какая то шляпа к загрузчику - занимает 104 байта, сам загрузчик в памяти почти 1 кб весит (это тот который может стартовать загрузку с USART или с других портов

Комментарии: 82

  1. Linxuil

    Не ide генерит, а компилятор на сколько я погимаю все же. Просто когда я не вижу у себя на компе исходников того что попадает на мк, меня немного коробит. Не критично, но все же. Загрузчик который с плмощью уарта прошивает записан в области памяти которую мы не можем переписать, о нем отдельная область памяти есть на карте памяти мк в даташите врядли это он там при билде фигурирует.

    • Andrew

      не знаю gcc везде а код везде разный абсолютно я про стартап, стартапы делает не компилятор

      • Aleksey

        Не стартап его можно с сайта STM скачать либо выдрать из кейла :)

      • Linxuil

        Стартап да, его не компилятор делает, а вот этот мистический __main генерирует компилятор в конце сборки. Но куда он его кладет я не понимаю. Не модет же он прям сразу в бинарник его писать налету. Должны быть какик то временные файлы

        • Andrew

          у кубиде я такого не видел

          • Linxuil

            Чего не видел?

            • Andrew

              __main нет там такого а вы где встречали?

              • Linxuil

                Там же в кейле, только давно его не писал руками, благо куб есть Раньше он фигурировал примерно так Riset_Homdler PROC EXPORT Riset_Homdler [WEAK] IMPORT __main IMPORT SystemInit LDR R0, =SystemInit BLX R0

    • Dmitriy

      Может в дебаге сливается отдельный код, чтобы регистры вытянуть... Но это где нет jtag. Jtag вроде все аппаратом выплёвывает...

  2. Andrew

    это при прошивке ж-линком?

    • Aleksey

      ага

    • Linxuil

      Криво вставилось Вот тот стартап который я помню https://github.com/STMicroelectronics/STM32CubeF0/blob/master/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f042x6.s

      • Ogurezzz

        Инициализация нормально видна. Чего ж экран-то не хочет взлетать? Без буфера работало...

        • Dmitriy

          Таймауты выдержаны?

          • Ogurezzz

            Инициализации? Да. По даташиту все.

            • Dmitriy

              Ищи, гдето видать ацк пропустил

        • Linxuil

          Там вроде есть биты ack которые выставляет переферия, может при введении буфера вы как то помнняли логику работы с ними?

          • Ogurezzz

            Они аппаратно отрабатываются и если все ок - продолжается посылка.

            • Dmitriy

              Да ну...

              • Ogurezzz

                Ну вон они все.

      • Andrew

        это и есть просто вызов main из сишной части

        • Aleksey

          выше пример фрейма для дисплея

          • Ogurezzz

            Не. По отправке STOP на шину. Сейчас сравню

            • Dmitriy

              Там что-то банальное ))) Вот тут не понял.... Уарт?

              • Aleksey

                проверяйте прямо по мануалу что должно быть и что приходит, В SPI может быть засада с CPHA, CPOL в i2C все просто он или пашет или сдох :)

                • Ogurezzz

                  Что-то заработало. Но где буква d?

                  • Dmitriy

                    Гы ))))

                    • Aleksey

                      Гы язнаю в чем косяк :) контроллер 32 битный ?

                      • Andrew

                        так на hc595 проще и лучше, я делал вывод строки полностью на автомате аппаратно

                      • Ogurezzz

                        Неа. 8ка

                        • Andrew

                          а это АВР...

                          • Aleksey

                            в выводе в конце попробуйте добавить перевод строки и посмотрите он управляющие символы переваривает или нет

                  • Andrew

                    а в анализаторе что есть буква Д?

                    • Ogurezzz

                      В буфер все правильно заливает. Сейчас все проверил. Четко по ASCII

                      • Andrew

                        логического анализатора нету?

                        • Ogurezzz

                          Вот косяк. С буфером. 3 байта похерил.

        • Linxuil

          Нет, еще ращ повтрюсь 1) Прочтите коментарий сверху этого файла Где написано Branches to main in the C library (which eventually;* calls main()). Что ощначает, что этот main, это не метка на main(), а метка на некую инициализирующуб функцию, скажем в 200 строк, не знаю сколько она вреальности, так как она автогенерируемая. И вот эта функция в конце на 200 строчке вызывает main() 2) Прочтите ту главу из кники которую я скинул выше. Там четко сказано что такое main, даже примеры даны его вызова, но самих исходников main нету

          • Aleksey

            Народ а кто нибудь прикручивал к микроконтроллеру STM32 стандартную либу из GCC ?

            • Ogurezzz

              Тадам!

              • Aleksey

                теперь подстроечник поставить на контраст и будет вообще бомба :)

                • Ogurezzz

                  Оно там есть

                • Ogurezzz

                  Вроде заработало. Было 2 проблемы: 1. Не запускалась нормально передача после первой остановки. Буфер переполнялся и все катилось псу под хвост. 2. При добавлении байта в буфер нужно отключать прерывания TWCR&=~_BV(TWIE); и после включать обратно. Иначе прерывание вылетало во время записи и все индексы "плыли". Ну и нужно учитывать необходимость задержки для команды очистки экрана и возвращения курсора. Но это уже очевидные вещи были... Пошел я спать...

            • Linxuil

              Разве она стандартная? Это приблуда линукса, но к gcc и тем более к стандарту си не имеет отношения вроде?

Не нашли ответ?

Вам также может быть интересно

Доброго времени суток! Извиняюсь за, возможно, глупый вопрос. Хороший знакомый просил глянуть планшет, утопленник. Дисплей... Читать далее