|
STM32 flash, помогите разобраться |
|
|
|
May 30 2014, 07:34
|

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 ?
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
 |
Ответов
|
May 30 2014, 09:37
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(dimka76 @ May 30 2014, 15:44)  В документации написано что шина данных FLASH памяти у STM32 128-ми битная. ... Как же все-таки читается FLASH? А если мне надо только один байт прочитать из FLASH ? Процессор может свободно читать и один байт, и 32-разрядное слово. Грубо говоря, контроллер флэш подсовывает процессору из этих 128 бит только те, которые ему нужны. Всё это волшебство происходит автоматически и незаметно. Цитата(dimka76 @ May 30 2014, 15:44)  У ST есть AppNote EEPROM emulation in STM32F10x microcontrollers, где при чтении из FLASH (виртуальной EEPROM) копируются 16-ти битные данные Запись - это совсем другая история. Обычно у флэш есть минимальная ячейка памяти, меньше которой записать нельзя. Для STM32F1 это 16 бит. Кстати, в семействах STM32F2 и STM32F4 флэш устроена иначе, и записывать можно даже 1 байт за раз, что открывает новые возможности для эмуляции EEPROM.
|
|
|
|
|
May 30 2014, 14:23
|

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

|
Спасибо всем ответившим. Цитата(scifi @ May 30 2014, 17:47)  Запись - это совсем другая история. Обычно у флэш есть минимальная ячейка памяти, меньше которой записать нельзя. Для STM32F1 это 16 бит. Кстати, в семействах STM32F2 и STM32F4 флэш устроена иначе, и записывать можно даже 1 байт за раз, что открывает новые возможности для эмуляции EEPROM. Про запись я не спрашивал ;-) А по поводу флэш в STM32F2xx очень полезное замечание, т.к. с ним и работаю. А указанный выше AppNote просто первым подвернулось, и я думал, что у всех STM32F память устроена одинакого. Еще один вопрос. Скомпилировал для STM32F2xx следующую строчку, где raw_data константы во флэш. Компилятор GCC. Код uint8_t raw_data[118660] __attribute__ ((section (".ordata"))); uint8_t appdata[10000]; for(i=0; i<10000UL; ++i) appdata[i] = raw_data[i]; И вот, что наблюдаю в листинге Код 8001a6e: f242 7410 movw r4, #10000 8001a72: 5cb8 ldrb r0, [r7, r2] 8001a74: 6819 ldr r1, [r3, #0] 8001a76: f8df a20c ldr.w sl, [pc, #524] 8001a7a: 5488 strb r0, [r1, r2] 8001a7c: 3201 adds r2, #1 8001a7e: 42a2 cmp r2, r4 8001a80: d1f7 bne.n 8001a72 Мне непонятна строчка Код ldr.w sl, [pc, #524] Что она делает ? Ведь в цикле регистр sl вообще не используется, зачем в него что-то загружается ? И при чем всегда одно и тоже.
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
May 31 2014, 01:07
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(dimka76 @ May 31 2014, 00:33)  Код 8001a6e: f242 7410 movw r4, #10000 8001a72: 5cb8 ldrb r0, [r7, r2] 8001a74: 6819 ldr r1, [r3, #0] 8001a76: f8df a20c ldr.w sl, [pc, #524] 8001a7a: 5488 strb r0, [r1, r2] 8001a7c: 3201 adds r2, #1 8001a7e: 42a2 cmp r2, r4 8001a80: d1f7 bne.n 8001a72 Строчка Код ldr.w sl, [pc, #524] явно лишняя, как и строчка Код ldr r1, [r3, #0] в цикле. У вас указатель appdata не volatile случайно?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
dimka76 STM32 flash May 30 2014, 07:34 aaarrr Цитата(dimka76 @ May 30 2014, 15:44) Как ... May 30 2014, 07:41 ViKo Цитата(scifi @ May 30 2014, 12:37) Кстати... Jul 1 2014, 10:00  scifi Цитата(ViKo @ Jul 1 2014, 14:00) Если мож... Jul 1 2014, 10:10 Golikov A. регистр SL - это стэк лимит, а вот зачем в него ч... May 30 2014, 18:19 kan35 Между памятью и ядром есть прослойка в виде наприм... May 31 2014, 00:34 Haamu Чтобы не плодить новых тем, продолжу эту.
Во flash... Jun 20 2014, 05:45 Сергей Борщ Цитата(Haamu @ Jun 20 2014, 08:45) подска... Jun 20 2014, 07:35 Haamu Читал. Правда не в Programming manual, а в Referen... Jun 20 2014, 11:17 _Артём_ Цитата(Haamu @ Jun 20 2014, 15:17) Так и ... Jun 20 2014, 11:42 Сергей Борщ Цитата(Haamu @ Jun 20 2014, 14:17) пишу о... Jun 20 2014, 12:20 ViKo Как бы тогда перекинуть функцию записи в ОЗУ, и вы... Jul 1 2014, 10:18 scifi Цитата(ViKo @ Jul 1 2014, 14:18) Как бы т... Jul 1 2014, 10:22  Сергей Борщ Цитата(scifi @ Jul 1 2014, 13:22) Самый п... Jul 1 2014, 11:07 A. Fig Lee Цитата(ViKo @ Jul 1 2014, 06:18) Как бы т... Jul 1 2014, 11:06 ViKo Да, можно разместить "прошивальщик" в ко... Jul 1 2014, 11:13 A. Fig Lee Цитата(ViKo @ Jul 1 2014, 07:13) Да, можн... Jul 1 2014, 11:15  ViKo Цитата(A. Fig Lee @ Jul 1 2014, 14:15) Не... Jul 1 2014, 11:18   Сергей Борщ Цитата(ViKo @ Jul 1 2014, 14:18) По нулев... Jul 1 2014, 11:25    ViKo Цитата(Сергей Борщ @ Jul 1 2014, 14:25) П... Jul 1 2014, 11:34     Сергей Борщ Цитата(ViKo @ Jul 1 2014, 14:34) А если п... Jul 1 2014, 11:48      doom13 Цитата(Сергей Борщ @ Jul 1 2014, 14:48) Я... Jul 1 2014, 13:16       demiurg_spb Цитата(doom13 @ Jul 1 2014, 17:16) И вчём... Jul 1 2014, 13:32        doom13 Цитата(demiurg_spb @ Jul 1 2014, 16:32) Э... Jul 1 2014, 13:41         scifi Цитата(doom13 @ Jul 1 2014, 17:41) Т.е. д... Jul 1 2014, 13:57         demiurg_spb Цитата(doom13 @ Jul 1 2014, 17:41) Т.е. д... Jul 2 2014, 08:42          doom13 Цитата(demiurg_spb @ Jul 2 2014, 11:42) О... Jul 2 2014, 08:46           demiurg_spb Цитата(doom13 @ Jul 2 2014, 12:46) Может ... Jul 2 2014, 09:11          DmitryM Цитата(demiurg_spb @ Jul 2 2014, 11:42) И... Jul 2 2014, 15:02 ViKo В секторе 0 расположить загрузчик, основную програ... Jul 1 2014, 12:15 Сергей Борщ Цитата(ViKo @ Jul 1 2014, 15:15) В сектор... Jul 1 2014, 12:22 ViKo Я последовательно соединял две независимых кнопки ... Jul 1 2014, 13:55 Golikov A. А у меня есть видеорегистратор, который виснет есл... Jul 1 2014, 15:11 Сергей Борщ Цитата(Golikov A. @ Jul 1 2014, 18:11) Но... Jul 1 2014, 15:29 ViKo А вот можно ли зайти во встроенный загрузчик в STM... Jul 2 2014, 08:55 Сергей Борщ У ST есть несколько подробных аппнотов по загрузчи... Jul 2 2014, 08:59 ViKo Цитата(Сергей Борщ @ Jul 2 2014, 11:59) У... Jul 2 2014, 09:05  scifi Цитата(ViKo @ Jul 2 2014, 13:05) Листал. ... Jul 2 2014, 09:42 Сергей Борщ Писал ответ в соседнюю тему и пришла в голову така... Jul 4 2014, 17:37 A. Fig Lee Цитата(Сергей Борщ @ Jul 4 2014, 13:37) П... Jul 4 2014, 17:57 scifi Цитата(Сергей Борщ @ Jul 4 2014, 21:37) П... Jul 4 2014, 18:39 Golikov A. Чего то я не понял бизнеса...
Хотим загрузить загр... Jul 4 2014, 18:20 Сергей Борщ Цитата(Golikov A. @ Jul 4 2014, 21:20) А ... Jul 4 2014, 18:42  A. Fig Lee Цитата(Сергей Борщ @ Jul 4 2014, 14:42) В... Jul 4 2014, 19:14 Golikov A. Ну то есть у нас штатный запуск проца на прошивку ... Jul 5 2014, 06:40 ViKo Так же можно потерять и самопальный загрузчик. Вер... Jul 7 2014, 10:10 Golikov A. ну как можно потерять самопальный загрузчик? Если ... Jul 7 2014, 13:11 ViKo Цитата(Golikov A. @ Jul 7 2014, 16:11) ну... Jul 7 2014, 13:58  A. Fig Lee Цитата(ViKo @ Jul 7 2014, 09:58) Так же, ... Jul 7 2014, 15:01 ViKo И 3 ФигЛи, несомненно, лучше одного. Не зря сообра... Jul 7 2014, 20:00 Golikov A. Вижу о космосе вы знаете по наслышке
2 из 3 - это... Jul 7 2014, 20:18 scifi Цитата(Golikov A. @ Jul 8 2014, 00:18) На... Jul 7 2014, 20:34 A. Fig Lee Цитата(Golikov A. @ Jul 7 2014, 16:18) Ви... Jul 8 2014, 01:50 Сергей Борщ А я для каждого изделия использую уникальные ключи... Jul 8 2014, 05:47 mantech Цитата(Сергей Борщ @ Jul 8 2014, 08:47) А... Jul 9 2014, 16:18 Golikov A. Для этого нужно оставить механизм старта бута. Есл... Jul 9 2014, 19:00 skripach Цитата(Golikov A. @ Jul 9 2014, 22:00) Дл... Jul 9 2014, 20:01 Сергей Борщ Тогда поделитесь сокровенным - как ваш бут отличае... Jul 9 2014, 20:39 A. Fig Lee Цитата(Сергей Борщ @ Jul 9 2014, 16:39) Т... Jul 9 2014, 20:57  demiurg_spb Цитата(A. Fig Lee @ Jul 10 2014, 00:57) А... Jul 9 2014, 21:46   A. Fig Lee Цитата(demiurg_spb @ Jul 9 2014, 17:46) С... Jul 9 2014, 22:54    demiurg_spb Цитата(A. Fig Lee @ Jul 10 2014, 02:54) В... Jul 9 2014, 23:05     A. Fig Lee Цитата(demiurg_spb @ Jul 9 2014, 19:05) У... Jul 10 2014, 01:27      Сергей Борщ Цитата(A. Fig Lee @ Jul 10 2014, 04:27) О... Jul 10 2014, 06:04       skripach Цитата(Сергей Борщ @ Jul 10 2014, 09:04) ... Jul 10 2014, 06:54        Сергей Борщ Цитата(skripach @ Jul 10 2014, 09:54) Уде... Jul 10 2014, 07:58       A. Fig Lee Цитата(Сергей Борщ @ Jul 10 2014, 02:04) ... Jul 10 2014, 11:08        Сергей Борщ Цитата(A. Fig Lee @ Jul 10 2014, 14:08) Ч... Jul 10 2014, 11:36         A. Fig Lee Цитата(Сергей Борщ @ Jul 10 2014, 07:36) ... Jul 10 2014, 14:00      Axel Цитата(A. Fig Lee @ Jul 10 2014, 04:27) О... Jul 10 2014, 06:21 scifi Уже на несколько страниц размазалось обсуждение од... Jul 10 2014, 07:44 demiurg_spb Цитата(scifi @ Jul 10 2014, 11:44) Уже на... Jul 10 2014, 08:28 Golikov A. Все таки хотелось бы еще раз поговорить про кнопку... Jul 10 2014, 08:41 Golikov A. А вот тут вдруг у меня возникло такое подозрение..... Jul 10 2014, 11:47 Axel Цитата(Golikov A. @ Jul 10 2014, 14:47) Т... Jul 10 2014, 12:02 Golikov A. Извращенная логика%...
Забавно что вы не проверяе... Jul 10 2014, 18:00 A. Fig Lee Цитата(Golikov A. @ Jul 10 2014, 14:00) И... Jul 10 2014, 18:15 Golikov A. ЦитатаКонтрольная сумма не спасает от повреждения.... Jul 10 2014, 18:56 andrewlekar Я в своём софте тоже проверяю только, что сектор н... Jul 11 2014, 06:28 Сергей Борщ Ну что ж, идем на очередной круг. Не всегда есть в... Jul 11 2014, 06:46 A. Fig Lee Цитата(Сергей Борщ @ Jul 11 2014, 02:46) ... Jul 11 2014, 11:33 adnega Я в "крупных" МК использую две области: ... Jul 11 2014, 07:39 Сергей Борщ У меня обновление на лету. Тоже шифрование. Нет не... Jul 11 2014, 09:15 andrewlekar ЦитатаИ ради чего ваши жертвы? Ради экономии 20 ба... Jul 11 2014, 09:44 Golikov A. Ага%) Есть и на этот случай история у меня из разд... Jul 11 2014, 18:31 grv Что-то пример от ST мня загоняет в ступор
это про... Oct 20 2015, 05:32 scifi Цитата(grv @ Oct 20 2015, 08:32) Зачем та... Oct 20 2015, 07:06  grv Цитата(scifi @ Oct 20 2015, 10:06) Вы, по... Oct 20 2015, 08:46
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|