Как разместить программу в STM32F4xx начиная с сектора 1
01.10.2014, 20:39
|
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
"....Тут писал vvv998 бред про, то что, что бы записать 4байта в сектор нужно считать- модифицировать-записать" - НУ ЧТО ВЫ ВЫДУМЫВАЕТЕ, ГДЕ ВЫ ЧИТАЛИ ТАКОЕ ? Да любой школьный радиолюбитель уже знает, что Flash пишется в стертый (0хFF) сектор, а писать можно хоть один байт. Если не хотите вникать, что написано, то хотя бы не считайте ОСТАЛЬНЫХ маленькими детьми... если не выразится покрепче.
|
|
|
|
02.10.2014, 06:58
|
|
|
Прописка
Регистрация: 14.04.2009
Сообщений: 103
Сказал спасибо: 17
Сказали Спасибо 11 раз(а) в 10 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Вот тут писали:
Сообщение от vvv998
|
|
Такова природа записи информации в Flash. Запись производится ТОЛЬКО посекторно. Записать можно ТОЛЬКО в стертый (все ячейки 0хFF) сектор. Если надо записать один байт, то необходимо прочитать содержимое ВСЕГО сектора в буфер, изменить в буфере нужную ячейку, стереть сектор, переписать содержимое буфера в сектор. Иначе НЕЛЬЗЯ.
|
Не производится запись посекторно, а по 2 байта. Момент только, можно в разные места в секторе.
|
|
|
|
02.10.2014, 09:23
|
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,578
Сказал спасибо: 175
Сказали Спасибо 1,567 раз(а) в 810 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Сообщение от makser1
|
|
Не производится запись посекторно, а по 2 байта.
|
Лишь бы ляпнуть что ли? Потому что в сабжевом мк можно писать 1, 2, 4, 8 байт за одну процедуру записи.
|
|
|
|
02.10.2014, 10:09
|
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
 Господи, да всем же ясно, что обычно пишется больше одного байта, а может и весь сектор, потому что надо ВОССТАНОВИТЬ из буфера стертые данные сектора. НЕЛЬЗЯ стереть ТОЛЬКО ОДНУ ячейку. Стирается ВЕСЬ сектор. Если хотите писать-читать по одной ячейке используйте внешнюю FRAM например.
Или в STM32F4xx можно стирать Flash по одному байту??? Может я чего пропустил в описании ?
Последний раз редактировалось vvv998; 02.10.2014 в 10:29.
|
|
|
|
02.10.2014, 10:28
|
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,578
Сказал спасибо: 175
Сказали Спасибо 1,567 раз(а) в 810 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Уважаемый, вы чего так возбудились? Сколько вы еще будете повторять известную особенность флеш-памяти?
Вам уже все сказали как действовать. Выбирать вам.
|
|
|
|
02.10.2014, 10:42
|
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
А зачем писать "бред" и т.д. или вы думаете на форуме задают вопросы дети маленькие из садика ? Может иногда действительно что то написано не совсем понятно или некорректно, но не надо обзывать ....
Я редко пишу на формуме, но регулярно читаю. И иногда неприятно, когда даже над новичком начинают насмехаться, обзывать. Ведь писать может и школьник и студент первокурсник у которого насмешки ОТОБЪЮТ охоту заниматься этим делом и найдет себе что то более "приятное".
Последний раз редактировалось vvv998; 02.10.2014 в 10:48.
|
|
|
|
07.10.2014, 19:37
|
|
|
Частый гость
Регистрация: 13.10.2008
Сообщений: 23
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
uint16_t ParamsData[1024] __attribute__((at(0x0800C000)));
будет выделено 1024 16-разрядных слов с адреса указанного в атрибуте
0x0800C000 - адрес последнего 16-кБ блога флэша.
|
|
|
|
Эти 2 пользователя(ей) сказали Спасибо ATMExpert за это сообщение:
|
|
|
08.10.2014, 22:13
|
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Это для: Keil 5, IAR ? CooCoX все равно размещает там программу.
|
|
|
|
09.10.2014, 10:29
|
|
|
Прохожий
Регистрация: 18.06.2005
Сообщений: 7
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Оставляем вектор прерываний и старта в Sector0(16кБ).
Sector1 оставляем для вашего "EEPROM"(16кБ).
Sector2 и остальные для программы.
Не нужен бутлоадер - все делается линковщиком.
в прикрепленом файле пример файла для линковщика ИАР. Я думаю найдете где выставить такое же в Кейле.
Правда с перепрошивкой могут быть проблемы: не пользуйтесь стиранием всего Флеша, только необходимые сектора.
|
|
|
|
09.10.2014, 10:51
|
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Спасибо.
В IAR вроде все получается.
Если необходимо размещать константы, которые в процессе работы необходимо БЫСТРО изменить, то я обычно использую внешнюю FRAM. Потому что стирание даже короткого сектора занимает слишком много времени.
Последний раз редактировалось vvv998; 09.10.2014 в 10:54.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:39.
|
|