реклама на сайте
подробности

 
 
> STM32 flash, помогите разобраться
dimka76
сообщение May 30 2014, 07:34
Сообщение #1


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



В документации написано что шина данных FLASH памяти у STM32 128-ми битная.
Но при этом в коде startup, где идет инициализация переменных в ОЗУ, копирование идет по 4 байта (32 бита) инструкции
Код
       ...
   ldr  r3, [r3, r1]
   str  r3, [r0, r1]
   adds  r1, r1, #4
       ...


У ST есть AppNote EEPROM emulation in STM32F10x microcontrollers, где при чтении из FLASH (виртуальной EEPROM) копируются 16-ти битные данные
Код
/**
  * @brief  Returns the last stored variable data, if found, which correspond to
  *   the passed virtual address
  * @param  VirtAddress: Variable virtual address
  * @param  Data: Global variable contains the read variable value
  * @retval Success or error status:
  *           - 0: if variable was found
  *           - 1: if the variable was not found
  *           - NO_VALID_PAGE: if no valid page was found.
  */
uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data)


Как же все-таки читается FLASH?
А если мне надо только один байт прочитать из FLASH ?


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
7 страниц V  « < 2 3 4 5 6 > »   
Start new topic
Ответов (45 - 59)
scifi
сообщение Jul 4 2014, 18:39
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Сергей Борщ @ Jul 4 2014, 21:37) *
Писал ответ в соседнюю тему и пришла в голову такая мысль: запустить загрузчик на Cortex-M3/M4 очень просто.

Я поспешил со своим ответом. У них так и написано:
Цитата
In addition to patterns described below, user can execute bootloader by performing a jump
to system memory from user code. Befor jumping to Bootloader user must :
• Disable all peripheral clocks
• Disable used PLL
• Disable interrupts
• Clear pending interrupts
System memory boot mode can be exited by getting out from bootloader activation
condition and generating hardware reset or using Go command to execute user code.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 4 2014, 18:42
Сообщение #47


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Golikov A. @ Jul 4 2014, 21:20) *
А если с ресетом, то вроде и так запустится штатный загрузчик?
Возможно хочется обновляться штатным, но по возможности не добираясь до ноги BOOT, по команде приложению?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jul 4 2014, 19:14
Сообщение #48


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(Сергей Борщ @ Jul 4 2014, 14:42) *
Возможно хочется обновляться штатным, но по возможности не добираясь до ноги BOOT, по команде приложению?

Только не приложению, а бутлоадеру.
Приложение может работать, а может не работать.
А свой бутлоадер может запускатся не от кнопки, или от кнопки, но от другой.
Но пользовать стандартный механизм загрузки..


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 5 2014, 06:40
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Ну то есть у нас штатный запуск проца на прошивку пользователя. Которая в самом начале имеет ветвления
свой бут
стандартный бут
рабочая прошивка

и мы не трогая ножку бут имеем возможность обновить прошивку через UART?

Ну да, наверное это интересная мысль. Главное не затереть начальный разветвитель, а то придем к кирпичуsm.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 7 2014, 10:10
Сообщение #50


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Так же можно потерять и самопальный загрузчик. Вероятность, конечно, меньше, чем основную программу (судя по размерам), но... терять, так терять. И тогда остается только встроенный системный загрузчик, или специально предназначенные для программирования средства.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 7 2014, 13:11
Сообщение #51


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ну как можно потерять самопальный загрузчик? Если загрузка идет только через него, он просто следит чтобы никто не лез в область где он лежит и все. Его невозможно убить.
А вот если в ходе ветвления можно войти и в штатный процовый, то тогда он потенциально под угрозой.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 7 2014, 13:58
Сообщение #52


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Golikov A. @ Jul 7 2014, 16:11) *
ну как можно потерять самопальный загрузчик?

Так же, как и основную программу. С помощью электромагнитного импульса, например, как в "Матрице".
То есть, если принимать меры к тому, чтобы входить в самодельный загрузчик сразу после сброса, из опасения, что основная программа может глючить, и из нее уже не войти, то тогда надо думать и о том, что и сам этот загрузчик может заглючить. А если не думать, то не думать. rolleyes.gif Поэтому я и хочу по простому перескочить во встроенный загрузчик. Для начала. А там видно будет.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jul 7 2014, 15:01
Сообщение #53


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(ViKo @ Jul 7 2014, 09:58) *
Так же, как и основную программу. С помощью электромагнитного импульса, например, как в "Матрице".
То есть, если принимать меры к тому, чтобы входить в самодельный загрузчик сразу после сброса, из опасения, что основная программа может глючить, и из нее уже не войти, то тогда надо думать и о том, что и сам этот загрузчик может заглючить. А если не думать, то не думать. rolleyes.gif Поэтому я и хочу по простому перескочить во встроенный загрузчик. Для начала. А там видно будет.

Встроенный загрузчик тоже может глючить. Изза электромагнитного импульса, например.
Предлагаю делать резервирование - как для космоса делали: 3 одинаковых канала,
решение принимается голосованием, если 2 сказали 1, значит 1.
Так меньше вероятность глюков.
3 одинаковых СТМ, на всякий случай - а вдруг заглючит?


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 7 2014, 20:00
Сообщение #54


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



И 3 ФигЛи, несомненно, лучше одного. Не зря соображают на троих.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 7 2014, 20:18
Сообщение #55


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Вижу о космосе вы знаете по наслышкеsm.gif
2 из 3 - это для ближнего космоса, до луны край! Нормальный режим 3 из 5!

Глюк нормальной программы я больше отношу к пользователю. Найдет какую-то фигню, от другого продукта, и зальет как обновление. И здрасьте вам Кирпичь Иваныч! На эти случаи всегда даю пользователю еще попыткуsm.gif
Go to the top of the page
 
+Quote Post
scifi
сообщение Jul 7 2014, 20:34
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Golikov A. @ Jul 8 2014, 00:18) *
На эти случаи всегда даю пользователю еще попыткуsm.gif

Дык для этого нужно купюроприёмник добавлять. Одна надежда на Национальную Платёжную Систему: должно попроще стать. Хотя, зная наших чиновников, не очень надеюсь :-)
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jul 8 2014, 01:50
Сообщение #57


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(Golikov A. @ Jul 7 2014, 16:18) *
Вижу о космосе вы знаете по наслышкеsm.gif
2 из 3 - это для ближнего космоса, до луны край! Нормальный режим 3 из 5!

Глюк нормальной программы я больше отношу к пользователю. Найдет какую-то фигню, от другого продукта, и зальет как обновление. И здрасьте вам Кирпичь Иваныч! На эти случаи всегда даю пользователю еще попыткуsm.gif

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


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 8 2014, 05:47
Сообщение #58


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



А я для каждого изделия использую уникальные ключи шифрования. Загрузчик зальет в изделие только его родную прошивку. Но все равно остается шанс, что родная прошивка сделает из изделия кирпич из-за того, что я не предусмотрел какой-то нюанс.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 9 2014, 16:18
Сообщение #59


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Сергей Борщ @ Jul 8 2014, 08:47) *
А я для каждого изделия использую уникальные ключи шифрования. Загрузчик зальет в изделие только его родную прошивку. Но все равно остается шанс, что родная прошивка сделает из изделия кирпич из-за того, что я не предусмотрел какой-то нюанс.


Че-то я не понял, если бут находится в своей выделенной области флеша, пользовательская прога во флеш не пишет что-попало, то какого рожна что-то должно превратить камень в кирпич?? Ну зашил он туда хрень, потом рестартанет проц в режиме бута и прошьет что надо. Уже дофига такого было, пока прошивки шифровать не начал, теперь хрень не шьют biggrin.gif
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 9 2014, 19:00
Сообщение #60


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Для этого нужно оставить механизм старта бута. Если прошили хрень с правильными кодами, которая запускается и виснит. А кнопочки перейти в бут нету, вот вам и кирпич...
Go to the top of the page
 
+Quote Post

7 страниц V  « < 2 3 4 5 6 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01518 секунд с 7
ELECTRONIX ©2004-2016