|
Обновить прошивку Nios2 Gen2, Если процессор исполняет код прямо из флэшки |
|
|
|
May 12 2016, 08:47
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Доброго дня,
есть проект на MAX10. Планируется исполнять код прямо из onchip_flash (так как в память код не помещается по объёму), обновление тоже получает Nios через некоторый канал связи, реализовать протокол которого аппаратно довольно сложно. Вопрос, как красиво реализовать обновление флэшки? У меня крутятся всякие идеи, но все они какие-то проблемные или кривые: - как-то заставить линкер куски программы, отвечающие за программирование флешки, разместить компактно, и вручную копировать из в ОЗУ в нужный момент расчитывая, что драйвер флэшки написан как позиционно-независимый - сделать отдельный процессор с программой только под программирование, код которого сразу будет размещён в ОЗУ - написать аппаратный блок, который будет заниматься программированием
Идеально было бы конечно, если бы можно бы было приказать линкеру нужный код сразу слиновать по адресам ОЗУ, и закинуть его туда при старте (типа как это делает опция enable_alt_load). Однако уме не приложу, как заставить эту опцию работать только для некоторой части программы.
|
|
|
|
|
 |
Ответов
|
May 13 2016, 10:58
|
Частый гость
 
Группа: Участник
Сообщений: 121
Регистрация: 7-04-08
Из: Наро-Фоминск
Пользователь №: 36 543

|
Цитата(DmitryR @ May 13 2016, 12:53)  Разница заключается в том, что в указанном примере NIOS исполняется из одного места, а обновляет другое. Мне же надо обновить флешку, из которой непосредственно исполняется NIOS. по моему, чтобы разместить функцию в другом сегменте памяти, надо указать в BSP editor в Linker script новую секцию и назвать её например .text2 потом в C в прототипе функции указать имя секции через атрибут void func_name() __attribute__ ((section (".text2")));
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|