Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-авг-20 16:02

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 103 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7
Автор Сообщение
СообщениеДобавлено: 2016-дек-10 11:45 
Не в сети

Зарегистрирован: 2016-янв-22 15:45
Сообщения: 21
В общем, удалось мне hex-файл прошить через UART. Но, в режиме JTAG отладки происходит то же самое - ошибки при проведении процедуры верификации. То есть, ошибка Flash Contents Mismatch.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2016-дек-14 09:07 
Не в сети

Зарегистрирован: 2009-июл-20 10:04
Сообщения: 76
Откуда: Волгодонск
Чем отличаются 1986UARTWSD.rar и 1986UARTWSDL.rar - по readme не удалось понять.
Есть ли примеры реализации схемы подключения?
У меня есть в наличии преобразователь USB-RS485, можно ли использовать его для программирования?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2016-дек-14 10:43 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1133
Откуда: Тула
igorbounov писал(а):
Чем отличаются 1986UARTWSD.rar и 1986UARTWSDL.rar - по readme не удалось понять.
Есть ли примеры реализации схемы подключения?
У меня есть в наличии преобразователь USB-RS485, можно ли использовать его для программирования?

вариант с буквой L позволяет скачать (load) прошивку из камня на комп.
Попробуйте 485-й, но работать врят-ли будет.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2016-дек-14 11:17 
Не в сети

Зарегистрирован: 2009-июл-20 10:04
Сообщения: 76
Откуда: Волгодонск
prostoRoman писал(а):
вариант с буквой L позволяет скачать (load) прошивку из камня на комп.
Попробуйте 485-й, но работать врят-ли будет.

Ага, спасибо. Сбегал на склад за USB-RS232, счас буду городить. Похоже, что для этого процессора регулярно требуется средство для выведения его из комы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2016-дек-14 11:33 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1133
Откуда: Тула
igorbounov писал(а):
prostoRoman писал(а):
вариант с буквой L позволяет скачать (load) прошивку из камня на комп.
Попробуйте 485-й, но работать врят-ли будет.

Ага, спасибо. Сбегал на склад за USB-RS232, счас буду городить. Похоже, что для этого процессора регулярно требуется средство для выведения его из комы.

Мне за 6 лет один раз пригодилось...

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-мар-21 10:22 
Не в сети

Зарегистрирован: 2016-окт-24 12:30
Сообщения: 6
Доброе утро, Товарищи!
Начальные данные:
Есть основная прошивка, которая обменивается данными с ПЛИС и выполняет различные функции. Хочу к ней сделать некий простейший загрузчик, который будет записан по начальному адресу EEPROM 0x080000000. В нём будет только инициализация портов uart 2 и самого uart. По приходу некой команды по uart от ПЛИС - программа переходит в режим uart-загрузчика с помощью регистров BKP->REG_0E (поменяются настройки MODE, которые изначально были настроены на загрузку с flash и JTAG), и с помощью watchdog timer будет сделан пересброс. С ПЛИС будет загружена программа vasili в ОЗУ, с помощью которой можно будет стереть flash и записать новую основную прошивку, которая будет уже начинаться с другого адреса, к примеру, 0x08001000 (ну или какой там доступен диапазон адресов EEPROM, сейчас нет даташита под рукой) и тоже будет храниться в ПЛИС. Если команда от ПЛИС не приходит в течении, к примеру, 10 секунд, то нужно переключиться на основную прошивку, которая будет стартовать, к примеру, с адреса 0x08001000.
Собственно вопрос:
1) Можно ли сделать в программе-загрузчике vasili стирание не всей флеш-памяти, а с адреса 0x08001000 до 0x08020000?
2) Как сделать переход в основную прошивку из "загрузочной"?

Я просто новичок в контроллерах, может быть это на форуме уже было, я, честно говоря, не знаю как искать :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-мар-21 13:09 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1133
Откуда: Тула
1. Можно, посекторно. Смотрите прошивку для ВЕ1 в части стирания.
2. В загрузочной определяете что-то вроде
Код:
__asm  volatile void RunMainProgram();

....

__asm  volatile void RunMainProgram()
{
            EOR      r0,r0,r0
            EOR      r1,r1,r1
            EOR      r2,r2,r2
            EOR      r5,r5,r5
            EOR      r6,r6,r6
            EOR      r7,r7,r7
            EOR      r8,r8,r8
            EOR      r9,r9,r9
            EOR      r10,r10,r10
            EOR      r11,r11,r11
            EOR      r12,r12,r12
;-------
VTOR            EQU      0xe000ed08
            LDR     R3, = 0x08001000 ;// адрес таблицы векторов основной программы
            LDR     R4, = VTOR   
            STR     R3,[R4]
            LDR     R4,[R3]
            MSR    MSP,R4
            LDR    R3,[R3,#4]
            BX      R3
}

....

// в одной из ф-ций идёт вызов
void func() {
......
   if( ptr[0] == 0x5AA55AA5UL ) { // передача управления ... по некоему условию
      __disable_irq();// ^key
      RunMainProgram();
   }
}

Основную программу размещаете по адресу 0x08001000 соответственно. Так же есть возможность передавать параметры в основную прогр.

Однако лучше делать уже основную программу содержащую загрузчик. Т.к. в любом случае работа с флеш возможна только при исполнении кода из ОЗУ.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-мар-21 15:05 
Не в сети

Зарегистрирован: 2016-окт-24 12:30
Сообщения: 6
Не очень понял последнее предложение. Что значит сделать основную программу содержащую загрузчик?
Я просто хочу иметь возможность перепрошить контроллер с помощью ПЛИС (к которой всегда будет доступ по оптике), если вдруг что-то пойдёт не так во время загрузки из ПЛИС, к примеру, пропадёт питание и тд. При этом не вскрывая корпус, потому что он уже будет опломбирован.
Т.е. загрузчик всегда стартует первым. А потом уже будет понятно: переходить по команде в uart-загрузчик или по таймеру в прошивку по другому адресу.
Про то, что с флеш возможна работа только из ОЗУ - это я уже понял и из форума, и из даташита.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-мар-22 08:56 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1133
Откуда: Тула
Понимать так, что:
1. Либо Ваша программа уже содержит образ прошивальщика флеш. При старте основной программы (или позднее, по команде) он грузится в ОЗУ. Когда понадобится перепрошить флеш по команде на него передаётся управление и он, с учётом специфики вашего девайса (протокол обмена, внешние и внутренние ватчдоги, управление шиной и т.д.), обновляет прошивку (так, как Вам удобно и безопасно). Т.е. полный контроль.
2. Либо всё аналогично п.1, с той разницей что образ прошивальщика не содержится в основной прошивке. Он грузится по интерфейсу и на него передаётся управление основной прошивкой. Опять же тотал контрол с точки зрения протоколов и железа.

Всё вышеописанное аналогично тому, что вы предлагаете и чем так и так будете пользоваться, но избавлено от необходимости инициализации МК загрузчиком, быть жёстко привязанным к сторонним протоколам и ПО, а иногда вышеизложенное вообще единственный путь (ватчдоги, протоколы, управление шиной и прочим железом).
Цена вопроса - почитать и пописать код загрузчика - там не сложно и интересно.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-мар-27 09:47 
Не в сети

Зарегистрирован: 2016-окт-24 12:30
Сообщения: 6
Понял, спасибо!

А вот такой вопрос: я сделал две прошивки: загрузчик и основную. Загрузчик прошиваю с нулевого адреса флеш. А как мне основную прошить через Keil?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-мар-27 13:02 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1133
Откуда: Тула
Loader писал(а):
А вот такой вопрос: я сделал две прошивки: загрузчик и основную. Загрузчик прошиваю с нулевого адреса флеш. А как мне основную прошить через Keil?

Если всё сделано правильно, то, возможно, будет достаточно попросить кейл не стирать флеш перед записью.
(т.е. проект с загрузчиком стирает флеш и пишет загрузчик, проект с основной - только пишет. такой тик-так...)

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-май-17 18:17 
Не в сети

Зарегистрирован: 2018-май-16 22:45
Сообщения: 1
Возник вопрос с кодом загрузчика. Файл 1986WSDDlg.cpp (1986UARTWSD.rar )

str = "Синхронизация...ОК!";
InsertStrToList();

txdbuf[0] = 'B';
txdbuf[1] = 0x0;
txdbuf[2] = (char)0xc2;
txdbuf[3] = 0x01;
txdbuf[4] = 0x0;
com.WriteBlock(txdbuf,5);
while(com.ReadBlock(rxdbuf,1));

com.dcb.BaudRate = CBR_115200;
SetCommState(com.hCom, &com.dcb);
txdbuf[0] = 0xd;
com.WriteBlock(txdbuf,1);

if ((!com.ReadBlock(rxdbuf,3))||(rxdbuf[0]!=0xd)||(rxdbuf[1]!=0xa)||(rxdbuf[2]!=0x3e))
{
str = "ошибка обмена";
InsertStrToList();
com.Close();
return;
}

Для чего передается выделенная команда?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-май-18 08:23 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1133
Откуда: Тула
это "enter' / "перевод каретки" -- простая проверка на фактическое переключение скорости обмена (мы ему энтер - он нам приглашение).

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 103 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB