Kuzmi4 0 11 апреля, 2008 Опубликовано 11 апреля, 2008 · Жалоба Здравствуйте. Собственно не вопрос а вопросы - Ниос, я так понял имеет линейнное адресное пространство - правильно? (всмысле никакими хитросятими кроме программного метода (лапками банки переключать там) нельзя расширить больше чем на 4гб?). Дальше хочется сделать такую вещь - имеем флеш память, SDRAM (например) и SD-card. Память изначально находится во флеш. При старте в AS моде с EPCS подчитывается конфигурационный SOF-файл. Далее - когда сконфигурится FPGA(типа процессор уже создан) - у меня в on_chipmem cидит загрузчик который копирует(ну потестить сдрам надо обязательно + можно добавить тест другой периферии по желанию) с флеша в SDRAM программу (в процессе создания on_chipmem в SoPC Buildere указываем , что её инициализировать надо - вот тут первая непонятка - что и куда надо записывать будет дополнительно - ведь SOF -это только процессор ). Когда загрузчик закончит делать своё дело имем в SDRAMе нашу программу - и вот тут дальше вообсче для меня тёмный лес - как заставить ниос выполняться с скопированного кода в SDRAM ? :smile3046: Я дак думаю в выставить в этой опции - SDRAM По идее начнётся выполнение с 0 ячейки срама - так ? Далее под Heap и Stack выделю отдельную область в on_chipmem (другая есссно чем для загрузчика) А вот как быть с rodata и rwdata - это как понимать? Я так понимаю rwdata это как раз мои переменные. А rodata - что туда ложится ? Далее вопрос касательно SD-Card - в результате просмотра документаций и всего прочего(в том числе примеров что идут к девкитам) пришёл к выводу что протокол обмена с карточкой реализовывается в ниосе - :crying: - то есть нельзя карточку прикрутить к адресному пространству ?? Тобто можно пойти 2мя путями - или поррубить SPI -и сотворить как на мегах - фат там и все дела. А можно прост овлепить 4 лапы и софтварно наваять на ниосе драйвер обсчения по SD-шному протоколу ? В принципе есчё можно порится на опенкоресах - но там есть SD/MMC/SPIflash FPGA Config SD/MMC Bootloader Вроде не то ?? Посоветуйте как бы прикрутить SD-Card с наименьшими траблами. Подскажите пожалуста правильно ли я мыслю и если нет , то где обшибся. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
id_gene 0 14 апреля, 2008 Опубликовано 14 апреля, 2008 · Жалоба Начнем с малого. в процессе создания on_chipmem в SoPC Buildere указываем , что её инициализировать надо - вот тут первая непонятка - что и куда надо записывать будет дополнительно - ведь SOF -это только процессор ).Память можно иницилизировать любым нужным вам содержанием. Для этого вам понадобится hex файл. В итоге SOF у вас будет содержать как процессор с памятью и контроллерами, так и содержимое памятей. Это все работает. Также можно инициализировать памяти mif файлами (если так вам удобнее), но при этом придется покопаться в настройках, потому что билдер хочет hex. Когда загрузчик закончит делать своё дело имем в SDRAMе нашу программу - и вот тут дальше вообсче для меня тёмный лес - как заставить ниос выполняться с скопированного кода в SDRAM ?Обычно загрузчик тоже кладут во флеш, и указывают reset address процессора туда же. Т.е. после сброса процессор идет по указанному адресу, а там лежит загрузчик. Если при этом указать расположение секций в sdram - то IDE должен сам вставить загрузчик, который скопировал бы программу из flash в SDRAM. Вы же хотите поместить загрузчик в onchip память. Боюсь, придется вам руками вставлять функции загрузки секций (alt_load, alt_load_section), зато вы сможете вставить тесты памяти до вызова копирования. Я так понимаю rwdata это как раз мои переменные. А rodata - что туда ложится ?ну, константы всякие, read-only data. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба 2 id_gene - спасибо за развёрнутые ответы, однако всё равно есть непонятки.. Значит касательно SOF - файла - а как мне засунуть в него инициализационный HEX для оnchip_mem написанный ручками (потому как загрузчик который сам с флеши перекладывает в сдрам хорошо, но хотелось бы сначала удостоверится что СДРАМ и другие прибамбасы на месте и не битые) ? И как передать управление коду что находится в срам( скопировался который) от загрузчика ? В принципе интуитивно догадываюсь что-то типа "jmp" инструкция, но хотелось бы услышать хоть какие либо подробности от людей делавших это.. Далее касательно загрузчика который IDE должен сам вставить - хотелось бы узнать последовательность действий - написал прогу в IDE, указал ресет-вектор на флеш, а расположение памяти в сдрам (в первом посте картинка), и тогда при заливке программы флеш лоадером IDE положит в начало программы загрузчик, так? Ну и последний вопрос, только не бейте сильно - а где можно почитать как на асме кодить в NIOS II IDE ? :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
id_gene 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Значит касательно SOF - файла - а как мне засунуть в него инициализационный HEX для оnchip_mem написанный ручкамиПроще всего залезть в верилог этой памяти и посмотреть название файла "onchip_mem".hex в параметрах altsyncram. Ваш файл должен иметь такое же имя. Вообще-то hex должен появиться в папке xxx_sim. И как передать управление коду что находится в срам( скопировался который) от загрузчика ? В принципе интуитивно догадываюсь что-то типа "jmp" инструкция, но хотелось бы услышать хоть какие либо подробности от людей делавших это..Я не делал. Альтеровский загрузчик делает, кажется, br. Кстати, еще можно поставить всем функциям после загрузчика аттрибуты секций. Я, кстати, так как-то раз сделал, все работало (т.е. отдельные редко-востребованные функции лежали в медленной внешней СДРАМ), только не помню подробностей, как их загрузчик копировал. написал прогу в IDE, указал ресет-вектор на флеш, а расположение памяти в сдрам (в первом посте картинка), и тогда при заливке программы флеш лоадером IDE положит в начало программы загрузчик, так?да Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 16 апреля, 2008 Опубликовано 16 апреля, 2008 · Жалоба 2 id_gene - касательно инициализационного HEX для оnchip_mem - в бандерлоге нашёл строчку вида the_altsyncram.lpm_type = "altsyncram", И более ничего. Однако упоминания про оnchip_mem.hex нашёл в generated_app.mk и CPU3.ptf Не могли бы вы объяснить что это за altsyncram и с чем его здесь едят ? На счёт секций - спасибо - буду иметь на заметке. На счёт загрузчиков вообсче - хотелось конечно написать на асме, чтоб меньше места, но товарисчи с саппорта подкинули тут такие материалы http://www.altera.com/literature/an/an458.pdf http://www.altera.com/literature/an/an458_...ample_files.zip http://www.altera.com/literature/an/defaul...der_sources.zip. Выдержка - I think BOOT_CFI_FROM_ONCHIP_ROM mode is right what you want to have. Так что в принципе есть куда копать и материал для размышления, но может кто подкинет материалы про ассемблер на ниосе (так понял глухой вопрос, но пока не теряю надежду) ?? На крайняк вспомним молодость - поковыряем тот загрузчик что IDE нам подсунет - переработаем там, но как то это .... не есть гут... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
id_gene 0 17 апреля, 2008 Опубликовано 17 апреля, 2008 · Жалоба the_altsyncram.lpm_type = "altsyncram", И более ничего. Однако упоминания про оnchip_mem.hex нашёл в generated_app.mk и CPU3.ptf Не могли бы вы объяснить что это за altsyncram и с чем его здесь едят ? altsyncram - это мегфункция альтеры, которая синтезируется в какую-либо память в зависимости от параметров. Для инициализации используется параметр the_altsyncram.init_file - читайте хелп на мегафункцию. В отчетах синтеза в разделе памяти есть сведения об использованном файле инициализации. Кстати, возможно не все кристаллы поддерживают инициализацию памяти. проверьте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 17 апреля, 2008 Опубликовано 17 апреля, 2008 · Жалоба Попытался попробовать стандартный загрузчик ниоса - установил ресет вектор на CFI а программу расположил в SDRAM. Открываю Flash Programmer хочу залить В результате получаю в консоли IDE #!/bin/sh # # This file was automatically generated by the Nios II IDE Flash Programmer. # # It will be overwritten when the flash programmer options change. # cd C:/altera/72/PROJECTS/2c20/prj8/SW/BL_TST/BL_TST/Debug # Creating .flash file for the project "$SOPC_KIT_NIOS2/bin/elf2flash" --base=0x01400000 --end=0x17fffff --reset=0x1400 000 --input="BL_TST.elf" --output="cfi_flash.flash" --boot="C:/altera/72/ip/nios 2_ip/altera_nios2/boot_loader_cfi.srec" # Programming flash with the project "$SOPC_KIT_NIOS2/bin/nios2-flash-programmer" --base=0x01400000 "cfi_flash.flash " Using cable "USB-Blaster [uSB-0]", device 1, instance 0x00 Resetting and pausing target processor: OK No CFI table found at address 0x01400000 Leaving target processor paused Собсно процессор Может кто нибудь объяснить - что за таблицу он там не нашёл ? (осцыла нет - тыкануться не могу чтоб посмотреть достукивается он до CFI или нет, но лапы прально соединил) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 17 апреля, 2008 Опубликовано 17 апреля, 2008 · Жалоба Ага - таблицу он не нашёл -а она там должна быть - запустил прогер с ключом дебуг и в результате 0riginal contents (after writing 0xF0 and 0xFF to address 0x01400000): 0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 10: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 20: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 30: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 40: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ Contents after writing 0x98 to address 0x014000AA: Same after writing 0x0098 to address 0x01400154: Same after writing 0x00000098 to address 0x014002A8: Same after writing 0x98 to address 0x01400055: Same after writing 0x0098 to address 0x014000AA: Same after writing 0x00000098 to address 0x01400154: Same after writing 0x98 to address 0x01400154: Same after writing 0x0098 to address 0x014002A8: Same after writing 0x00000098 to address 0x01400550: 0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 10: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 20: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 30: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 40: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ Короче накрылась таблица - или её вообсче не было.... :crying: Однако тесты проходят на ура(те чт ос девбордом шли).. :07: Кто знает как победить это ? :smile3046: (только не отсылайте к http://electronix.ru/forum/index.php?showtopic=40573 - был - все незаюзаныые выводы на землю, сдрам нормально пашет(если прогу грузить с ниоса в сдрам - работает).. ) .. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
id_gene 0 18 апреля, 2008 Опубликовано 18 апреля, 2008 · Жалоба у флешей есть некая унифицированная таблица с параметрами. Чтобы до нее достучаться нужно провести какую-то команду (запись кокнетного числа по конкретному адресу) - команду смотреть в даташите на вашу м/с флеш-памяти. Похоже, что ИДЕ пытался перебором команд попасть в эту таблицу. Может команду можно где-то настроить при создании проекта? А если процессором можете в таблицу попасть? В смысле написать маленьку прогу, чтоб она во флеш залезла и почитала таблицу, вывела-бы через jtag-uart? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 18 апреля, 2008 Опубликовано 18 апреля, 2008 · Жалоба 2 id_gene - Действительно в ДШ есть похожее : This device enters the CFI Query mode when the system writes the CFI Query command, 98h, to address 55h in word mode (or address AAh in byte mode), any time the device is ready to read array data. То есть насколько я понял - мне надо указать чтоб записалось 98h по адресу AAh и будет мне счастие... Будем искать где указывать..... :smile3046: Хотя - выше приведён листинг - Same after writing 0x0098 to address 0x014000AA: Тобто было уже... Уже даже выставлял такие параметры Всё равно таблицу не видит... :crying: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 19 апреля, 2008 Опубликовано 19 апреля, 2008 · Жалоба В обсчем дошёл до абсурда - :01: - открутил стёклышко с девборда, и прозвонил все контакты с флеши что мог на наличие контактов с дорожками - проверил наличие соединения. Дальше пересобрал прожект - проштудировав ДШ на мою флешу и пришёл к выводу что Setup Hold Wait параметры должны быть по 100 нс - выставил - сгенерил проц, дальше сварганил простенький прожект в ИДЕ - сотворил его с стандартным загрузчиком ИДЕ, залил проц с квартуса, запустил флеш-програмер указал на всякий случай ключик дебуг - и О ЧЮДО!! оно нашло таблицу и залилось и даже заработало как надо!... :smile3046: В принципе начал копать в сторону an458 - взял смал бутлодырь на 200 байт, чуть дополнил - скомпилолось - залилось - работает ("NIOS II Command Shell.bat" решил все вопросы - как запускать, билдить правильно и тд) Так что в принципе вопрос решён... :yeah: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 28 апреля, 2008 Опубликовано 28 апреля, 2008 · Жалоба Первое, что касается инициализации памяти - дык прям в сопц билдере правой кнопкой щелк на памяти, там галку поставили и указали свой .hex. Этот самый .hex прямо в квартусе создали и в корень своего проекта запихали. Но... придется перекомпилировать проект. Второе, "No CFI table found at address 0x01400000", это дело в проекте. Надо смотреть, может где-то критикальный варнинг выскочил или еще чего. Или с ресетом чего не так... Просто внимательно проверяем свой проект, не надо пропаивать микросхемки на плате... Далее - нафиг вам этот бутлоадер сдался. Не мое конечно дело, но судя по всему вы только начали тоже с этим всем разбираться, проще взять чего попроще. Не? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 29 апреля, 2008 Опубликовано 29 апреля, 2008 · Жалоба 2 torik - так уже освоил.. в принципе ничего сложного - главное литературу найти было... А счас так и юзаю - понравилось .. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться