Arlleex 178 22 июля, 2022 Опубликовано 22 июля, 2022 · Жалоба 5 минут назад, x893 сказал: Конечно, Все телодвижения уже записаны в startup Я не пойму, в GCC бибиотека инициализации окружения C/C++ отсутствует? Все инициализации секций тоже руками пишут? Не верю. В кейле всем этим занимается __main(), которая вызывается в startup-файле. Можно, конечно, и руками свою реализацию написать, но зачем? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 55 22 июля, 2022 Опубликовано 22 июля, 2022 · Жалоба On 7/22/2022 at 6:53 PM, Arlleex said: Я не пойму, в GCC бибиотека инициализации окружения C/C++ отсутствует? Все инициализации секций тоже руками пишут? Не верю. Руками пишут кому нравится. Но всё уже написано до нас. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 3 августа, 2022 Опубликовано 3 августа, 2022 · Жалоба On 7/22/2022 at 9:06 AM, AleksBak said: Стиль тут по-моему не причем. Тут конкретный случай - ожидание сброса флага 'Busy' у модуля QUAD_SPI. Чтобы убедиться в неправильной работе тут - достаточно ТС вместо функции QUAD_SPI_WaitBusy(); поставить небольшую задержку. И если при разных оптимизациях будет работать, то дело тут именно. Так и сделал. Проблема ушла. uint8_t SST26_ReadStatusRegistr(void) //Функция читает байт статуса 26V016 { //Для запуска в Quad режиме применить функцию SST26_Enable_Quad(); QUAD_SPI_Enable; // QUAD_SPI_WaitBusy(); //Полим флаг Busy регистра QUADSPI->SR QUADSPI->DLR = 0; //Читаем 1 байт //По 1 проводу: // inst IMODE[1:0] ADMODE[1:0] ADSIZE[1:0] ABMODE[1:0] ABSIZE[1:0] DCYC[4:0] DMODE[1:0] FMODE[1:0] SIOO QUADSPI->CCR = 0x05| 1<<8 | 0<<10 | 0<<12 | 0<<14 | 0<<16 | 0<<18 | 1<<24 | 1<<26 | 0<<28; //По 4 проводам // QUADSPI->CCR = 3<<8 | 0<<10 | 0<<12 | 3<<14 | 0<<16 | 0<<18 | 3<<24 | 1<<26 | 0<<28; //HAL_Delay(1); for(int i = 0; i < 2 ; i++) { } uint8_t Data = DR_Read; //По 4 проводам не пошла QUAD_SPI_Disable; // return Data; // } // Оптимизация О3 прошла нормально. Вы были правы. Теперь чешу репу как уйти от этого кривого решения - задержка FOR мне не нравится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 44 4 августа, 2022 Опубликовано 4 августа, 2022 · Жалоба On 7/22/2022 at 9:15 PM, x893 said: Руками пишут кому нравится. Но всё уже написано до нас. Руками пишут те, кто понимает, что ему нужно и для чего. Например, стартап из Куба инициализирует память и вызывает конструкторы ещё до настройки частоты тактирования CPU, то есть на 16МГц. Мне в проекте нет нужды беречь каждый миллиампер, поэтому лучше сразу задать её в 216МГц, а потом уже заниматься прочими сервисными делами. Ещё стартап из Куба искренне полагает как и все функции Куба, что тут он оказался исключительно в результате корректно выполненного сброса МК, а не программного или аппаратного сбоя. Видимо, поэтому он не выполняет сброс периферии МК, что видится логичным перед её настройкой в пользовательском коде. Я привёл Куб только как пример, но, скорей всего, многие используют такие же стартапы как в Кубе. Например, в своём стартапе и настраиваю механизм, делающий возможным использование виртуальных методов в качестве обработчиков прерываний. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 4 августа, 2022 Опубликовано 4 августа, 2022 · Жалоба On 8/4/2022 at 7:13 AM, tonyk_av said: программного или аппаратного сбоя Такой сбой приведет к вызову обработчика HardFault, который по умолчанию "завешивает" МК намертво. А если вы туда воткнули рестарт, то это - ваша проблема, что вы не сделали его корректным. Лично я из стартапа выбросил сброс периферии - нет смысла на это такты тратить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AleksBak 0 4 августа, 2022 Опубликовано 4 августа, 2022 · Жалоба 12 часов назад, Димон Безпарольный сказал: Теперь чешу репу как уйти от этого кривого решения - задержка FOR мне не нравится Можно, по-быстрому, сбацать проект чисто с использованием HAL-а. Только для работы с QUAD_SPI. Отладить его, а потом перевести на регистровую работу как тут изначально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 4 августа, 2022 Опубликовано 4 августа, 2022 · Жалоба В 03.08.2022 в 22:23, Димон Безпарольный сказал: Оптимизация О3 прошла нормально. В том виде как у вас написано любой компилятор цикл for вырежет под ноль. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 4 августа, 2022 Опубликовано 4 августа, 2022 · Жалоба 8 часов назад, tonyk_av сказал: Например, в своём стартапе и настраиваю механизм, делающий возможным использование виртуальных методов в качестве обработчиков прерываний. this руками забиваете при входе в обработчик, либо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 44 4 августа, 2022 Опубликовано 4 августа, 2022 · Жалоба On 8/4/2022 at 5:42 PM, Arlleex said: this руками забиваете при входе в обработчик Ага. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться