|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||||||||||
Косяк в HAL библиотеке при работе с FLASH05.03.2018, 17:03. Показов 13003. Ответов 47
Метки нет (Все метки)
полдня убил на выявления этого косяка
стираю страницу и тут же записываю значение ничего не пишется если через сброс то все нормальнооказалось функция FLASH_PageErase реализована не до конца вот функция(комментарии мои)
поправил вот так
0
|
|||||||||||
| 05.03.2018, 17:03 | |
|
Ответы с готовыми решениями:
47
Ошибка в библиотеке при работе со структурой косяк в библиотеке stm8s Зависает МК при работе с flash |
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||
| 01.02.2022, 23:24 [ТС] | |||
|
0
|
|||
|
Нарушитель
|
||||
| 01.02.2022, 23:53 | ||||
|
0
|
||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||||||
| 02.02.2022, 00:13 [ТС] | |||||||
|
вот так делает HAL
0
|
|||||||
|
Нарушитель
|
||
| 02.02.2022, 00:15 | ||
|
И еще раз напомню: в отличие от функции, макрос не потребляет ресурсы на сохранение стека, заполнение нового и т.п. Да и тупой вызов void() функции тоже — трата ресурсов. P.S. ЕМНИП, в кале все ассерты отключаются при компиляции в режиме release, но вот осадочек — вызов функции вместо макроса — остается! Ну и, опять же, попрошу сравнить нормальный вызов методов работы с всякими SPI/I2C/CAN (и, особенно, USB! Ведь калокубовцы не дают возможности достичь 12Мбит/с на USB!) и каловский способ.
0
|
||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|
| 02.02.2022, 00:16 [ТС] | |
|
0
|
|
|
Нарушитель
|
||
| 02.02.2022, 00:22 | ||
|
P.P.S. И таки хотелось бы реально увидеть скорость обмена по USB в 12Мбит/с, реализованную исключительно средствами кала!
Добавлено через 37 секунд
0
|
||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|||
| 02.02.2022, 00:31 | |||
|
По стандарту, GCC не хочет инлайнить просто так "составные" функции. По крайней мере, мне так и не удалось скомпилить какой-нить просто прожект для STM32 чтобы все-таки добиться инлайна HAL_GPIO_WritePin() (режим с флагом -flto не в счет). Вот, немного об этом.
0
|
|||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
||
| 02.02.2022, 01:24 [ТС] | ||
|
конкретно сколько функции тратят процентов?
0
|
||
|
4149 / 2727 / 433
Регистрация: 09.09.2017
Сообщений: 12,084
|
|
| 02.02.2022, 07:23 | |
|
Почему бы просто не провести сравнение? Запускаем таймер и смотрим сколько тактов займет 100 операций с выводами по разным подходам. Ну и какой код проще читать и модифицировать, естественно.
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|||||||
| 02.02.2022, 08:37 | |||||||
И аналоговая: максимальный slope - из-за этого GPIO не выдаст импульс просто из-за ограничения выходных драйверов push-pull.
0
|
|||||||
|
38 / 31 / 9
Регистрация: 29.03.2019
Сообщений: 345
|
|
| 02.02.2022, 09:10 | |
|
0
|
|
|
Нарушитель
|
||||
| 02.02.2022, 09:41 | ||||
|
А gcc и на самом деле не только при -Os, но и даже при -O2 или -O3 может и не заинлайнить функции. И никакие static inline не являются гарантией, что функция таки будет реально встроена в код каждый раз, как встречается ее вызов.
0
|
||||
|
4149 / 2727 / 433
Регистрация: 09.09.2017
Сообщений: 12,084
|
|||
| 02.02.2022, 09:46 | |||
|
0
|
|||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|||||||||||
| 02.02.2022, 12:26 | |||||||||||
![]() 2) по скорости макросы, даже предназначенные для ускорения выполнения кода, иногда и ПРОИГРЫВАЮТ коду Си. Виной всему сложности, связанные с "пониманием" компилятора предоставленного кода. Вы не задумывались, например, что даже такая с виду невинная инструкция, как
3) Макросы НЕ могут включать ключи прекомпиляции. 4) Макросы упрощают работу с множеством аргументов на входе, но это часто не разрешается многими static-checker'ами и стандартами программирования. 5) И главное: Макросы НИКАК НЕ ПРОВЕРЯЮТ входные/выходные параметры, как это делается на compile-time в Си. То есть да, если мы любим проверять каждую строчку проекта при его портации от камня к камню, либо проект состоит из сотни строчек - это, безусловно, приемлемо. Но в большом количестве проектов, особенно если речь идет о 32битных процессорах - проекты не маленькие. И, соответственно, проверок будет катастрофически больше, т.к. проблемы не отловятся при компиляции. 6) Ну, и куча подводных камней, связанных с ненатуральностью природы макроса в Си-программе. Часто бывает, что синтаксическая ошибка макроса вылазит уже много после его написания, и как правило - в совершенно неожиданном месте, совсем не там, где этот макрос применился. PS: Достаточно распинаюсь?)) Добавлено через 3 минуты ... для баланса критики и поддержания холивара, предложу очень интересную имплементацию подобия schtduler'а - qpc. Интерес его в том, что он весь собран на макросах. А боль в том, что вообще нихрена, простите, непонятно, как он работает, и что делать, если что-то не работает. Как дебажить? Добавлено через 6 минут
0
|
|||||||||||
|
Нарушитель
|
|||||||||||
| 02.02.2022, 12:43 | |||||||||||
|
Что до внешнего вида макросов, то можно ведь их и не только заглавными буквами писать! А можно и функцию назвать заглавными. Так что, в коде вызов функции set_pin() никак от макроса set_pin() отличаться не будет. А фактически же сэкономит такты (особенно если gcc не заинлайнит эту функцию). Я решил, что незачем от каких-то ненормальных зависеть, и стал писать на "голых регистрах". Чего и вам советую. Крайне удобно. И код понятный, в отличие от этих простыней каловских.
Чем каловские портянки спагетти-кода удобней нормального кода с макросами? И да, я еще раз предлагаю попробовать выжать из каловского USB 12мбит/с ☺
0
|
|||||||||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 02.02.2022, 13:06 | ||
|
Говорю же - low-level функции можно и на ассмблере лабать, и на макросах. Но дебажить этот код, строить на нем что-то более-менее стабильное, читаемое, документированное и портируемое, а еще и ТРАТИТЬ НА ЭТО РЕСУРСЫ - это личное дело каждой конторы. Если у вас есть на это время, и время на то, чтобы поддерживать этот код в дальнейшем, то в большинстве случаев такого времени не дается. И это огромная ошибка вашего работодателя (если он есть вообще), что не требует от вас стандартизованных решений.
0
|
||
|
4149 / 2727 / 433
Регистрация: 09.09.2017
Сообщений: 12,084
|
||||||||||||||
| 02.02.2022, 13:10 | ||||||||||||||
|
Бывают и специализированные макросы вроде тех же GPIO_config(), которые принимают целую кучу параметров, свернутую в одну макроконстанту. Если начать разбираться, они тоже не выглядят как функции, но в коде от них почти не отличаются.
Другое дело что эти проверки в подавляющем большинстве случаев и не нужны. ![]()
0
|
||||||||||||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||||||
| 02.02.2022, 13:32 | ||||||
|
Это значит, что jmp может появиться и в вашем макросе, и в функциях "невидимо" для вас. И, вы будете удивлены, но компилятор еще и некоторые данные в RAM из FLASH может переносить, например, куски массива или структуры, для опимизации доступа. Для вас все это происходит "прозрачно", исходя из выбранной стратегии размещения и формирования кода. PS: на мой взгляд, дискуссия себя исчерпала ). Буду просто считать, что есть "любители макросов", которых трудно переубедить, и которые не особо суетятся поизучать, как же их макросы было бы правильнее поддержать штатными средствами языка Си ). С этим плоховато, но жить можно ![]() Добавлено через 56 секунд
0
|
||||||
|
Нарушитель
|
||
| 02.02.2022, 14:22 | ||
|
Нормальный работодатель ни в коем случае не позволит работнику всякие калокубы использовать: а кто потом эту жесть будет поддерживать? И да, еще раз требую предъявить мне 12Мбит/с по USB CDC, пользуясь каловской реализацией! Voland_, батенька, сдается мне, что вы - вендузятник! Вот и ведете себя по-вендовозному!
0
|
||
| 02.02.2022, 14:22 | |
|
F4 виснет при работе с FLASH STTM32F103, запись во Flash на HAL Ошибки при работе серверных часов (PHP+FLASH) О работе с мануалом HAL Косяк после обновления Flash Player Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|