DM1206 0 10 июня, 2013 Опубликовано 10 июня, 2013 · Жалоба Да ничего крутого там нету. Все сделано как раз просто, дубово и без бантиков. Зато есть все почти пожелания из Вашего же первого поста, не в идеальном виде, но все же. Просто загрузке, да, можно и по этому answer поучиться, конечно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 10 июня, 2013 Опубликовано 10 июня, 2013 · Жалоба Ну начнем с малого, а там разберемся): в любом случае спасибо за ссылки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 11 июня, 2013 Опубликовано 11 июня, 2013 · Жалоба Вопрос - кто пользуется асинхронной SRAM для кода и данных? Если да, какую шину Вы используете - AXI или PLB? Я в соседней теме описал ошибку, никто не может мне с ней помочь, и я решил её тупо перейдя с AXI на PLB (что печально ибо legacy), и при этом в настройках я не изменил ни единого параметра - всё так же делал и заработало. У меня серьезные подозрения что контроллер EMC для AXI багнутый при работе с async SRAM. Сколько времени убил, думал у меня руки растут ниже пояса... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 12 июня, 2013 Опубликовано 12 июня, 2013 · Жалоба ща я какую то глупость напишу, наверное:). У меня ДДР3 висит на акси шине, на кешированой. Проблемы были когда включал кэш, дохла прожка. Оказалось из-за перегрева вис проц, чуть помогло добавить регистры на шину. Но сильнее всего спасло внешнее охлаждение. Насколько я понимаю все типы памяти включаются через один и тот же контроллер в плисе реализованный на железном уровне (он не собирается из вентилей, а прям отдельный блок) неужели он с багом? не верю... была бы ссылка на тему почитали бы:)... П.С. у меня прога в ДДР работает и с кешем и на прямую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 12 июня, 2013 Опубликовано 12 июня, 2013 · Жалоба Насколько я понимаю все типы памяти включаются через один и тот же контроллер в плисе реализованный на железном уровне (он не собирается из вентилей, а прям отдельный блок) неужели он с багом? не верю... Те что DDR* они вроде да, сидят на встроенном готовом блоке. А вот у меня AXI_EMC, который вроде как на логике, очень даже с багом я так считаю. Так что Xilinx умеет делать баги :) По теме: я продвигаюсь с написанием своего загрузчика, пока осилил чтение из 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(); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DM1206 0 13 июня, 2013 Опубликовано 13 июня, 2013 · Жалоба Вопрос: как подготовить ELF файл, чтобы его можно было вычитать из флэшки и просто записать во внешнюю память, а затем передать управление? ДОБАВИЛ: Да, всё так, вышеуказанный mb-objcopy делает из ELF правильный bin-файл, его я сую в SPI-флэш (добавив в MCS файл) по определенному адресу, загрузчик из BRAMины вычитывает флэш и тупо приравняв к boot_app начальный адрес внешней памяти, запускаю свою программу boot_app(); Все правильно, только я бы Вам советовал не разворачивать ELF в BIN файл. Причина - бинарь может получиться огромным (это же просто образ памяти). Отсюда трата места на флэше и длинное время загрузки. Мы храним на флэше ELF, и разбираем его прямо при загрузке. Если интересно, могу прислать исходник разборки ELF, на котором мы базировались, делая свой загрузчик. Ничего там сложного нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 13 июня, 2013 Опубликовано 13 июня, 2013 · Жалоба как же может быть не интересно:)... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 13 июня, 2013 Опубликовано 13 июня, 2013 · Жалоба Все правильно, только я бы Вам советовал не разворачивать ELF в BIN файл. Причина - бинарь может получиться огромным (это же просто образ памяти). Отсюда трата места на флэше и длинное время загрузки. Мы храним на флэше ELF, и разбираем его прямо при загрузке. Если интересно, могу прислать исходник разборки ELF, на котором мы базировались, делая свой загрузчик. Ничего там сложного нет. Да, выложите пожалуйста, думаю многим будет интересно - как самому ТС, так и мне возможно в будущем потребуется. Я полагал ELF это сложный формат, не хотелось с ним ковыряться, к тому же вероятно такой парсер ELF-а может не влезть в 8 Кб памяти вместе с загрузчиком, я хочу в будущем обойтись лишь минимально возможной памятью для загрузчика. Сейчас флэшка у меня огромная и я даже текущими успехами счастлив, но если можно сэкономить место храня просто ELF, то это плюс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flood 13 13 июня, 2013 Опубликовано 13 июня, 2013 · Жалоба Все правильно, только я бы Вам советовал не разворачивать ELF в BIN файл. В SREC обычно разворачивают. Но это ASCII. При желании можно сделать бинарный аналог SREC, что уменьшит размер файла почти в два раза. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DM1206 0 14 июня, 2013 Опубликовано 14 июня, 2013 · Жалоба Да, выложите пожалуйста, думаю многим будет интересно - как самому ТС, так и мне возможно в будущем потребуется. Я полагал ELF это сложный формат, не хотелось с ним ковыряться, к тому же вероятно такой парсер ELF-а может не влезть в 8 Кб памяти вместе с загрузчиком, я хочу в будущем обойтись лишь минимально возможной памятью для загрузчика. Сейчас флэшка у меня огромная и я даже текущими успехами счастлив, но если можно сэкономить место храня просто ELF, то это плюс. У нас сделана двухступенчатая загрузка. В BRAM загрузчик очень простой, влезает в 8К. На самом деле, он немного больше 4К, и при желании можно и в 4к утоптать. Этот первичный загрузчик грузит в DDR вторичный загрузчик. Вторичный хранится в BIN образе для простоты первичного. А вот вторичный уже грузит боевую прогу, хранящуюся в ELF. И волки сыты, и овцы целы. Код парсера, найденный в свое время на просторах интернета, прилагаю. Проверен, работает. В архиве еще описание формата.elf.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться