189 похожих чатов

Stm32f030, пробую снять lock с flash посылкой последовательности из двух

32-битных значений. При записи второго значения - hardfault. ДШ утверждает что такое возможно в случае отсылки не правильной последовательности. Есть другие варианты, кроме этого объяснения? Последовательность стандартная напутать с ней сложно.

25 ответов

35 просмотров

Код в студию...

Алексей-Сугоняев Автор вопроса
Алексей Кузнецов 🦔
Код в студию...

if ((FlashMCU->CR & MCU_FLASH_CR_LOCK) != 0) /* (2) */ { FlashMCU->KEYR = 0x45670123; FlashMCU->KEYR = 0xCDEF89AB; } Код из ДШ

Алексей Сугоняев
if ((FlashMCU->CR & MCU_FLASH_CR_LOCK) != 0) /* (2...

Вообще фигня, должно работать... Может, явно запихнуть их в uint32? Я в плане, кто его знает, вдруг оно там пытается перед записью в регистр битами играться, тогда знак может уплыть не туда (вторая константа в signed int меньше нуля)...

Алексей-Сугоняев Автор вопроса
Алексей Кузнецов 🦔
Вообще фигня, должно работать... Может, явно запих...

похоже интересную мысль Вы сказали, посмотрел ассемблер а там вот: FlashMCU->KEYR = 0x45670123; FlashMCU->KEYR = 0xCDEF89AB; 8000f4c: 4b09 ldr r3, [pc, #36] ; (8000f74 <CheckFontOffsetsTable+0x5c>) 8000f4e: 6053 str r3, [r2, #4] при этом константа 8000f74: cdef89ab .word 0xcdef89ab а первой то константы 0x45670123 и нет

Алексей-Сугоняев Автор вопроса
Alexey Tsvetkov
Регистры объявлены как volatile?

Нет, это структура на которую объявлен указатель

Алексей-Сугоняев Автор вопроса
Алексей Кузнецов 🦔
Так ыть должны быть... 😒

Сами регистры не объявить, отдельно, только в составе макросов. Я раньше так и делал и никогда с таким способом оптимизации не встречался. Захотелось красиво сделать, тьфу блин.... на такую красоту

Алексей Сугоняев
Нет, это структура на которую объявлен указатель

Вот и ошибка. Есть FLASH в CMSIS - его и используйте. И будет всегда красиво.

Алексей-Сугоняев Автор вопроса
x893
Вот и ошибка. Есть FLASH в CMSIS - его и используй...

Да чего вдруг бы, там тоже такая же фигня даже еще хуже накручена. Не вижу смысла в этом оверхеде

Алексей Сугоняев
Да чего вдруг бы, там тоже такая же фигня даже еще...

С того что работает. Раз нет смысла - делайте как хотите.

Алексей-Сугоняев Автор вопроса
x893
С того что работает. Раз нет смысла - делайте как ...

Это именно тот случай когда я пошел на поводу того как это сделано в CMSIS

Алексей Сугоняев
Это именно тот случай когда я пошел на поводу того...

Значит не туда пошли. У них стоит __IO поэтому и работает

Алексей-Сугоняев Автор вопроса
x893
Значит не туда пошли. У них стоит __IO поэтому и р...

Ладно не буду флеймить, но код который поражадает st-шные CMSIS - то еще барахло

есть рабочий код на f030 для работы с флеш надо?

Алексей-Сугоняев Автор вопроса
Евгений
есть рабочий код на f030 для работы с флеш надо?

Спасибо! Но кайф в другом, велосипеды лучшая вещь в мире 😊

Алексей-Сугоняев Автор вопроса
Leonid Zaliubovskyi
Как твой FlashMCU объявлен?

Как указатель на структуру, регистровый указатель.

Алексей Сугоняев
Спасибо! Но кайф в другом, велосипеды лучшая вещь ...

можете крутить свой велосипед а посмотреть, как сделано на cmsis быстрее разберётесь

Алексей-Сугоняев Автор вопроса
Leonid Zaliubovskyi
сильное заявление. Ты код покажи

А что этого никто не видел что ли? Не думал что Америку открываю.

Алексей Сугоняев
А что этого никто не видел что ли? Не думал что Ам...

ты главное не гори, если у тебя нет там __IO, как здесь и/или volatile - оптимизатор поднасрать может с компилятором. Что собственно он и сделал

Алексей-Сугоняев Автор вопроса
Vyacheslav Olkhovchenkov
ты у нас поэт?

раз пять пересмотрел, рифмы не нашел

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта