реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Xilinx bootloader, схематично: как сделать бут лоадер
Дмитрий Мазунин
сообщение Jun 10 2013, 10:49
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 259
Регистрация: 19-09-05
Из: Екатеринбург
Пользователь №: 8 715



Да ничего крутого там нету. Все сделано как раз просто, дубово и без бантиков. Зато есть все почти пожелания из Вашего же первого поста, не в идеальном виде, но все же.
Просто загрузке, да, можно и по этому answer поучиться, конечно.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 10 2013, 14:00
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Ну начнем с малого, а там разберемся):
в любом случае спасибо за ссылки.
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 11 2013, 19:55
Сообщение #18


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Вопрос - кто пользуется асинхронной SRAM для кода и данных? Если да, какую шину Вы используете - AXI или PLB?

Я в соседней теме описал ошибку, никто не может мне с ней помочь, и я решил её тупо перейдя с AXI на PLB (что печально ибо legacy), и при этом в настройках я не изменил ни единого параметра - всё так же делал и заработало.

У меня серьезные подозрения что контроллер EMC для AXI багнутый при работе с async SRAM. Сколько времени убил, думал у меня руки растут ниже пояса...


--------------------
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 12 2013, 07:13
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ща я какую то глупость напишу, наверноеsm.gif.

У меня ДДР3 висит на акси шине, на кешированой. Проблемы были когда включал кэш, дохла прожка. Оказалось из-за перегрева вис проц, чуть помогло добавить регистры на шину. Но сильнее всего спасло внешнее охлаждение. Насколько я понимаю все типы памяти включаются через один и тот же контроллер в плисе реализованный на железном уровне (он не собирается из вентилей, а прям отдельный блок) неужели он с багом? не верю...

была бы ссылка на тему почитали быsm.gif...

П.С. у меня прога в ДДР работает и с кешем и на прямую.
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 12 2013, 12:38
Сообщение #20


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Golikov A. @ Jun 12 2013, 11:13) *
Насколько я понимаю все типы памяти включаются через один и тот же контроллер в плисе реализованный на железном уровне (он не собирается из вентилей, а прям отдельный блок) неужели он с багом? не верю...

Те что DDR* они вроде да, сидят на встроенном готовом блоке. А вот у меня AXI_EMC, который вроде как на логике, очень даже с багом я так считаю. Так что Xilinx умеет делать баги sm.gif

По теме: я продвигаюсь с написанием своего загрузчика, пока осилил чтение из DataFlash, ибо после загрузки линии доступны для пользователя и там можно организовать SPI-интерфейс, что я и сделал, успешно научился читать данные.

Вопрос: как подготовить ELF файл, чтобы его можно было вычитать из флэшки и просто записать во внешнюю память, а затем передать управление?

Вот один из примеров:
Код
mb-objcopy  -O  binary  -R .vectors.reset -R .vectors.sw_exception -R .vectors.interrupt -R .vectors.debug_sw_break -R .vectors.hw_exception ./factory_test/executable.elf  ./flash_burn/app.bin
mb-objcopy  -O  binary  -j .vectors.reset -j .vectors.sw_exception -j .vectors.interrupt -j .vectors.debug_sw_break -j .vectors.hw_exception ./factory_test/executable.elf  ./flash_burn/vectors.bin


Отсюда следующий вопрос - это правильный способ? И если да, то что это за векторы и насколько они вообще нужны?

P.S.
Запускать программу из внешней памяти вроде как тупо так:
Код
int (*boot_app) (void);
boot_app = (int (*) (void)) APP_DESTINATION_ADDR;
boot_app();

Это я подсмотрел в одном из примеров кода загрузчика.

ДОБАВИЛ: Да, всё так, вышеуказанный mb-objcopy делает из ELF правильный bin-файл, его я сую в SPI-флэш (добавив в MCS файл) по определенному адресу, загрузчик из BRAMины вычитывает флэш и тупо приравняв к boot_app начальный адрес внешней памяти, запускаю свою программу boot_app();


--------------------
Go to the top of the page
 
+Quote Post
Дмитрий Мазунин
сообщение Jun 13 2013, 07:40
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 259
Регистрация: 19-09-05
Из: Екатеринбург
Пользователь №: 8 715



Цитата(AVR @ Jun 12 2013, 18:38) *
Вопрос: как подготовить ELF файл, чтобы его можно было вычитать из флэшки и просто записать во внешнюю память, а затем передать управление?

ДОБАВИЛ: Да, всё так, вышеуказанный mb-objcopy делает из ELF правильный bin-файл, его я сую в SPI-флэш (добавив в MCS файл) по определенному адресу, загрузчик из BRAMины вычитывает флэш и тупо приравняв к boot_app начальный адрес внешней памяти, запускаю свою программу boot_app();


Все правильно, только я бы Вам советовал не разворачивать ELF в BIN файл. Причина - бинарь может получиться огромным (это же просто образ памяти). Отсюда трата места на флэше и длинное время загрузки.
Мы храним на флэше ELF, и разбираем его прямо при загрузке.
Если интересно, могу прислать исходник разборки ELF, на котором мы базировались, делая свой загрузчик. Ничего там сложного нет.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 13 2013, 12:29
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



как же может быть не интересноsm.gif...
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 13 2013, 18:21
Сообщение #23


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Дмитрий Мазунин @ Jun 13 2013, 11:40) *
Все правильно, только я бы Вам советовал не разворачивать ELF в BIN файл. Причина - бинарь может получиться огромным (это же просто образ памяти). Отсюда трата места на флэше и длинное время загрузки.
Мы храним на флэше ELF, и разбираем его прямо при загрузке.
Если интересно, могу прислать исходник разборки ELF, на котором мы базировались, делая свой загрузчик. Ничего там сложного нет.

Да, выложите пожалуйста, думаю многим будет интересно - как самому ТС, так и мне возможно в будущем потребуется.

Я полагал ELF это сложный формат, не хотелось с ним ковыряться, к тому же вероятно такой парсер ELF-а может не влезть в 8 Кб памяти вместе с загрузчиком, я хочу в будущем обойтись лишь минимально возможной памятью для загрузчика. Сейчас флэшка у меня огромная и я даже текущими успехами счастлив, но если можно сэкономить место храня просто ELF, то это плюс.


--------------------
Go to the top of the page
 
+Quote Post
Flood
сообщение Jun 13 2013, 20:02
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 702
Регистрация: 8-06-06
Пользователь №: 17 871



Цитата(Дмитрий Мазунин @ Jun 13 2013, 11:40) *
Все правильно, только я бы Вам советовал не разворачивать ELF в BIN файл.


В SREC обычно разворачивают. Но это ASCII. При желании можно сделать бинарный аналог SREC, что уменьшит размер файла почти в два раза.
Go to the top of the page
 
+Quote Post
Дмитрий Мазунин
сообщение Jun 14 2013, 08:24
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 259
Регистрация: 19-09-05
Из: Екатеринбург
Пользователь №: 8 715



Цитата(AVR @ Jun 14 2013, 00:21) *
Да, выложите пожалуйста, думаю многим будет интересно - как самому ТС, так и мне возможно в будущем потребуется.

Я полагал ELF это сложный формат, не хотелось с ним ковыряться, к тому же вероятно такой парсер ELF-а может не влезть в 8 Кб памяти вместе с загрузчиком, я хочу в будущем обойтись лишь минимально возможной памятью для загрузчика. Сейчас флэшка у меня огромная и я даже текущими успехами счастлив, но если можно сэкономить место храня просто ELF, то это плюс.


У нас сделана двухступенчатая загрузка. В BRAM загрузчик очень простой, влезает в 8К. На самом деле, он немного больше 4К, и при желании можно и в 4к утоптать.
Этот первичный загрузчик грузит в DDR вторичный загрузчик. Вторичный хранится в BIN образе для простоты первичного. А вот вторичный уже грузит боевую прогу, хранящуюся в ELF. И волки сыты, и овцы целы.

Код парсера, найденный в свое время на просторах интернета, прилагаю. Проверен, работает. В архиве еще описание формата.Прикрепленный файл  elf.rar ( 130.31 килобайт ) Кол-во скачиваний: 106
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 12:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01436 секунд с 7
ELECTRONIX ©2004-2016