1921ВК035 FLASH

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

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

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

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

Сообщение dav »

Доброго времени суток!
smispp писал(а): 27 мар 2023, 13: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, 13:54 достаточно ли держать в SRAM выдачу команды MFLASH и программный цикл проверки занятости , стоящий после выдачи команды?
Конечно, возможно объявить как ramfunc только те функции, которые непосредственно осуществляют запись и стирание Flash памяти.
В нашем загрузчике все функции, кроме функции инициализации загрузчика, размещаются в ОЗУ и все работает корректно.
smispp
Сообщения: 32
Зарегистрирован: 28 ноя 2022, 09:30
Предприятие: оао нпк спп

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

Сообщение smispp »

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

Re: 1921ВК035 FLASH

Сообщение Vitaly »

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

Re: 1921ВК035 FLASH

Сообщение Vitaly »

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

Re: 1921ВК035 FLASH

Сообщение dav »

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

1) Данные из основной области Flash можно читать как через регистры, так и через общее адресное пространство (используя указатель).
Данные из NVR области FLash доступны только через регистры Flash.
2) Кэш необходимо сбрасывать в случае записи Flash с целью обновления данных (в кэше).
Егоркер
Сообщения: 19
Зарегистрирован: 10 янв 2025, 11:53
Предприятие: НВП Протек

Re: 1921ВК035 FLASH

Сообщение Егоркер »

Здравствуйте! А я правильно понимаю что у основного Флеша и загрузочного NVR разное адресное пространство? Тогда возникает вопрос, в среде Codemaster в окне Дамп памяти можно посмотреть как-то NVR область? Как вообще через средства среды можно посмотреть что записано в NVR? Или только программно через регистр MFLASH?
Егоркер
Сообщения: 19
Зарегистрирован: 10 янв 2025, 11:53
Предприятие: НВП Протек

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

Сообщение Егоркер »

Здравствуйте, флешер я так понимаю под GCC написан, а не подскажите, как RAMFUNC использовать в CMCPP компиляторе, под среду CodeMaster++. Почитал в документации про директиву #pragma ramfunc, но синтаксис никак не могу понять, компилятор пишет предупреждение "Bad #pragma ramfunc". Подскажите, пожалуйста, пример рабочего кода с этой директивой((
smispp
Сообщения: 32
Зарегистрирован: 28 ноя 2022, 09:30
Предприятие: оао нпк спп

NVR 1921ВК035 FLASH

Сообщение smispp »

Просмотрел форум на предмет программы-загрузчика в 035 контроллер и ничего не нашел. Есть некий загрузчик для 028, но он мне не подходит. А главное, непонятно, как он попадает в NVR flash? NVR лежит в тени основной flash по тем же адресам. И где-то читал что прошивать программу можно только через оригинальный программатор от ВЕКТОР.

Вопросы:

1. Можно ли, и каким образом загрузить загрузчик из среды КЕЙЛ с помощьью СТЛИНК.
2. Если в CFGWORD сбросить бит BMODEDIS и выполнить программный сброс, то программа начнет выполняться из NVR.
3. Может ли как-то помочь .ini файл для прошивки в NVR стандартным F8?
Ответить

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