1921ВК035 FLASH

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

dav
Сообщения: 208
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: 1921DR035 CAN ID принимаемого сообщения

Сообщение dav »

Доброго времени суток!
smispp писал(а): 27 мар 2023, 14:54 То что код из NVR переносится в SRAM понятно. Видимо также как и с инициализируемой памятью. Хотя и не понятно, какая связь между объявлением секции RAMFUNC в РАМ с переносом кода туда из FLASH . А если бы я создал эту секцию во FLASH , тот что бы было?
Если создать секцию "ramfunc" во FLASH, то код будет выполняться из флешь, а не из ОЗУ.
Использование следующего кода линкера позволяет зарезервировать часть памяти в ОЗУ для размещения vtable, data и ramfunc, а значения для инициализации данной части ОЗУ - заполняются значениями из FLASH на этапе выполнения кода перед вызовом функции main() средствами компилятора.

Код: Выделить всё

	.data :
	{
		__data_start__ = .;
		*(vtable)
		*(.data*)
		*(.ramfunc*)
...
		. = ALIGN(4);
		/* All data end */
		__data_end__ = .;

	} > DATA_RAM AT > CODE_FLASH
smispp писал(а): 27 мар 2023, 14:54 достаточно ли держать в SRAM выдачу команды MFLASH и программный цикл проверки занятости , стоящий после выдачи команды?
Конечно, возможно объявить как ramfunc только те функции, которые непосредственно осуществляют запись и стирание Flash памяти.
В нашем загрузчике все функции, кроме функции инициализации загрузчика, размещаются в ОЗУ и все работает корректно.
smispp
Сообщения: 15
Зарегистрирован: 28 ноя 2022, 10:30
Предприятие: оао нпк спп

Re: 1921DR035 CAN ID принимаемого сообщения

Сообщение smispp »

dav писал(а): 28 мар 2023, 16:47 Конечно, возможно объявить как ramfunc только те функции, которые непосредственно осуществляют запись и стирание Flash памяти.
В нашем загрузчике все функции, кроме функции инициализации загрузчика, размещаются в ОЗУ и все работает корректно.
Получается , весь код загрузчика лежит в НВР, при старте он переносится в ОЗУ и оттуда исполняется. Тогда зачем так делать, если достаточно держать в ОЗУ небольшой кусок (выдача команды + ожидание). Лишняя работа? Загрузчику же не надо переписывать самого себя?
Vitaly
Сообщения: 20
Зарегистрирован: 04 окт 2023, 15:54
Предприятие: АО Заслон
Откуда: Санкт-Петербург

Re: 1921ВК035 FLASH

Сообщение Vitaly »

Не подскажите еще хардварные характеристики работы Flash:
- минимальное, типичное, максимальное время стирания 1 страницы;
- минимальное, типичное, максимальное время стирания всей FALSH;
- минимальное, типичное, максимальное время записи одной порции данных (64 бита)?
SanekV
Специалист
Сообщения: 26
Зарегистрирован: 01 ноя 2013, 09:38

Re: 1921ВК035 FLASH

Сообщение SanekV »

Стирание всей flash 30-40 мс
Стирание сектора 4-5 мс
операция записи 6-7,5 мкс
Vitaly
Сообщения: 20
Зарегистрирован: 04 окт 2023, 15:54
Предприятие: АО Заслон
Откуда: Санкт-Петербург

Re: 1921ВК035 FLASH

Сообщение Vitaly »

Спасибо.
А минимальный гарантированный ресурс (количество перезаписей)?
100 тыс.?
Vitaly
Сообщения: 20
Зарегистрирован: 04 окт 2023, 15:54
Предприятие: АО Заслон
Откуда: Санкт-Петербург

Re: 1921ВК035 FLASH

Сообщение Vitaly »

Не понимаю, зачем считывать данные FLASH через регистры MFLASH?
А просто, через указатель нельзя?
Только, как я понял, нужно сбрасывать кэш перед чтением.
dav
Сообщения: 208
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: 1921ВК035 FLASH

Сообщение dav »

Vitaly писал(а): 28 дек 2023, 10:58 Не понимаю, зачем считывать данные FLASH через регистры MFLASH?
А просто, через указатель нельзя?
Только, как я понял, нужно сбрасывать кэш перед чтением.
Доброго времени суток!

1) Данные из основной области Flash можно читать как через регистры, так и через общее адресное пространство (используя указатель).
Данные из NVR области FLash доступны только через регистры Flash.
2) Кэш необходимо сбрасывать в случае записи Flash с целью обновления данных (в кэше).
Ответить

Вернуться в «32-разрядные микроконтроллеры»