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

 
 
5 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Nios II Software, загрузка с Flash
vadimuzzz
сообщение Aug 2 2009, 09:32
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(Stewart Little @ Aug 2 2009, 15:02) *
Увы, боюсь это будет запрос "на деревню дедушке". Марко Гроенфельд сейчас работает в Microtronix, разрабатывает для них платы ViClaro XXX, и все для них.

я имел в виду авторов постов smile.gif кто-то в той теме обмолвился, что исходники слил. впрочем, написать компонент не проблема, вот смысла в этом не вижу
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 6 2009, 15:20
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



После некоторого перерыва добрался до платы (Cyclone III 3c120 dev kit), чтобы попробовать запустить проект с Flash.
с 1-ого раза не завелась и с 2-ого тоже.

Имеется CIII dev kit на борту Flash - Spansion (S29GL512N11FFIV1),
- 64 Мбх16
- CFI flash command support (поддержка CFI)

Sopc Builder:
cpu
on-chip memory
...
tristate_bridge + cfi_flash

sysid не ставил или необходимо?

Nios IDE пример из handbook:
ставлю галочки в свойствах библиотеки -
program never exits
support C++
ligthweight device driver API
clean exit
reduce device driver
small C library

#include "sys/alt_flash.h"
#include <stdio.h>
#include <string.h>
...
alt_flash_fd* fd;
fd = alt_flash_open_dev("/dev/cfi_flash");


fd возвращается нулевой - ничего не открылось естественно.

В Quartus распиновку проверил вроде правильно, но...

в Sopc Builder компонент CFI - ставлю Custom, address width - 25 bit и data width - 16 объем Flash - 64 Мб
смотрим в manual распиновка address bit 24 - 0 FSM_A(24:0) Address bus (word aligned)
то есть адресация 32 Мб используя 25 бит. сама Flash 64 Мб - 26 бит. (поправьте если я здесь чего-то не понимаю)

В Quartus это выглядит так:
Прикрепленное изображение


Как с этим быть?

При прошивке проекта в CIII загорается Led Flash active, за который отвечает Max II (вырезка из manual к CIII - Illuminates when flash memory is being accessed with a read or write transaction. Driven by the MAX II CPLD).
При запуске в Nios IDE Debug никакого моргания или признаков активности Led нет.

Мои догадки, почему не работает:
1. неправильная конфигурация в sopc builder(может нужен sysid или неправильно выставлен объем Flash)
2. ошибка при распиновке в Quartus (проверю еще раз)
3. неправильное имя при обращении /dev/cfi_flash (беру из system.h после генерации)
4. мертвая flash(маловероятно) или как-то причастен Max II

Кто сталкивался с проблемами Flash в Nios II Или есть какие-то соображения, отпишитесь пожалуйста.
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Oct 7 2009, 02:14
Сообщение #18


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(dim99 @ Oct 7 2009, 00:20) *
После некоторого перерыва добрался до платы (Cyclone III 3c120 dev kit), чтобы попробовать запустить проект с Flash.
с 1-ого раза не завелась и с 2-ого тоже.

...............
Кто сталкивался с проблемами Flash в Nios II Или есть какие-то соображения, отпишитесь пожалуйста.

- можно и без sysid, но лучше использовать smile.gif
- я бы пробовал без "small C library" в ней много чего обрублено,что именно нужно даташит читать
- флеш 512 Мегабита Х 16 бит, тоесть шина будет 25 бит, все верно, если бы флеш было 8 битной ширины то шина адресса будет 26 бит
Причина редактирования: Удаление черезмерного цитирования


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 7 2009, 23:07
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(dim99 @ Oct 6 2009, 22:20) *
Мои догадки, почему не работает:
1. неправильная конфигурация в sopc builder(может нужен sysid или неправильно выставлен объем Flash)
2. ошибка при распиновке в Quartus (проверю еще раз)
3. неправильное имя при обращении /dev/cfi_flash (беру из system.h после генерации)
4. мертвая flash(маловероятно) или как-то причастен Max II

Кто сталкивался с проблемами Flash в Nios II Или есть какие-то соображения, отпишитесь пожалуйста.

скорее всего распиновка (флеш 16 бит, младший адресный разряд подключать не надо). саму флешку, а равно и MAX II проверить легко - сгенерить pof или просто любой hex и зашить его quartus-programmerom. посмотрите пример на nioswiki.
Go to the top of the page
 
+Quote Post
barabek
сообщение Oct 8 2009, 13:17
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(dim99 @ Oct 7 2009, 02:20) *
Nios IDE пример из handbook:
ставлю галочки в свойствах библиотеки -
program never exits
support C++
ligthweight device driver API
clean exit
reduce device driver
small C library

Я ставил галочки
program never exits
ligthweight device driver API
reduce device driver
small C library

Но в таком случае, как Вам уже выше описали, многие библиотеки сильно кастрируются. Можете выставить или полные библиотеки или, если не хотите сильно раздувать код (а раздуться он может значительно) то :
Код
#include<sys/alt_flash.h>
#ifndef ALT_USE_CFI_FLASH
#define ALT_USE_CFI_FLASH
#endif
#include <altera_avalon_cfi_flash.h>

добавить глобальную структуру:

static alt_flash_cfi_dev cfi_flash =                                             \
{                                                                          \
  {                                                                        \
    ALT_LLIST_ENTRY,                                                       \
    CFI_FLASH_NAME,                                                           \
    NULL,                                                                  \
    NULL,                                                                  \
    ALT_CFI_DEV_IN_USE(CFI_FLASH_BASE) ? NULL : alt_flash_cfi_write,          \
    ALT_CFI_DEV_IN_USE(CFI_FLASH_BASE) ? NULL : alt_flash_cfi_read,           \
    ALT_CFI_DEV_IN_USE(CFI_FLASH_BASE) ? NULL : alt_flash_cfi_get_info,       \
    NULL,                                                                  \
    NULL,                                                                  \
    ((void*)( CFI_FLASH_BASE)),                                               \
    CFI_FLASH_SIZE                                                            \
  }                                                                        \
};

  в main ()
  {
...
    alt_flash_cfi_init (&cfi_flash);
...

в проект явно добавил файл
altera_avalon_cfi_flash.с

После этого можно писать-читать-стирать стандартными функциями, а также считать конфигурацию CFI c помощью alt_get_flash_info(...).

Почему-то пришлось добавлять структуру явно и явно добавлять файл. Нужно было сделать быстро. Искал по их библиотекам, рылся-рылся, но так и не понял какими define-ми сделать это более красиво. Может у Вас больше терпения, желания и времени хватит раскопать smile.gif.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 8 2009, 18:39
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



В общем решил одну из проблем - правильно распиновал.

теперь после прошивки проекта в плату, открываю Nios Command Shell, набираю nios2-flash-programmer --cable="usb-blaster [USB-0]" --base=0x04000000 --debug
и выдается CFI Table - получается видит flash.

но пока в Nios IDE никак не могу получить ненулевой результат от alt_flash_open_dev(CFI_FLASH_NAME);

думаю, что неправильно выставлены тайминги:
flash S29GL512N по даташиту - 110 ns время доступа.

Вопрос: как рассчитать

Setup —After asserting chipselect, the time required before asserting the read or write signals.
Wait—The time required for the read or write signals to be asserted for each transfer.
Hold—After deasserting the write signal, the time required before deasserting the chipselect signal.

Временыне характеристики Flash:
Max. Access Time (ns) 100 110 110
Max. CE# Access Time (ns) 100 110 110
Max. Page access time (ns) 25 25 30
Max. OE# Access Time (ns) 25 35 35

пока все выставил на 110 ns.

Кто сталкивался с расчетом параметров для CFI?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 8 2009, 22:55
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(dim99 @ Oct 9 2009, 01:39) *
В общем решил одну из проблем - правильно распиновал.

теперь после прошивки проекта в плату, открываю Nios Command Shell, набираю nios2-flash-programmer --cable="usb-blaster [USB-0]" --base=0x04000000 --debug
и выдается CFI Table - получается видит flash.

но пока в Nios IDE никак не могу получить ненулевой результат от alt_flash_open_dev(CFI_FLASH_NAME);

думаю, что неправильно выставлены тайминги:

скорее в настройках System Library галочки не те стоят
Go to the top of the page
 
+Quote Post
barabek
сообщение Oct 9 2009, 01:31
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(dim99 @ Oct 9 2009, 04:39) *
В общем решил одну из проблем - правильно распиновал.

теперь после прошивки проекта в плату, открываю Nios Command Shell, набираю nios2-flash-programmer --cable="usb-blaster [USB-0]" --base=0x04000000 --debug
и выдается CFI Table - получается видит flash.


Временыне характеристики Flash:
Max. Access Time (ns) 100 110 110
Max. CE# Access Time (ns) 100 110 110
Max. Page access time (ns) 25 25 30
Max. OE# Access Time (ns) 25 35 35

пока все выставил на 110 ns.

Кто сталкивался с расчетом параметров для CFI?

Время Вы выбрали с запасом, можно даже уменьшить Setup и Hold. Но это позже. Первоначально нужно хотя бы запустить smile.gif. Если считывается таблица CFI попробуйте тем же nios2-flash-programmer записать какой-нибудь файл, а затем считать, подготовив предварительно его утилитой bin2flash (кажется). Потом можно идти дальше.
ЗЫ. Файл можно записать и из IDE с помощью FlashProgrammer, а вот считывать уже nios2-flash-programmer. В этом случае, насколько я помню, файл автоматически подготовится к записи и прошьется. Заодно сразу посмотрите лог в консоли, по идее он должен показать результат записи и верификации. Если верификация пройдет, значит можно и не считывать вручную.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 9 2009, 12:43
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Цитата(barabek @ Oct 9 2009, 05:31) *
Время Вы выбрали с запасом, можно даже уменьшить Setup и Hold. Но это позже. Первоначально нужно хотя бы запустить smile.gif. Если считывается таблица CFI попробуйте тем же nios2-flash-programmer записать какой-нибудь файл, а затем считать, подготовив предварительно его утилитой bin2flash (кажется). Потом можно идти дальше.
ЗЫ. Файл можно записать и из IDE с помощью FlashProgrammer, а вот считывать уже nios2-flash-programmer. В этом случае, насколько я помню, файл автоматически подготовится к записи и прошьется. Заодно сразу посмотрите лог в консоли, по идее он должен показать результат записи и верификации. Если верификация пройдет, значит можно и не считывать вручную.


Попробовал сегодня записать файл и считать его. делал через nios2-flash-programmer - все получилось.
CFI table исправно показывает.
bin2flash сделал flash файл, который записал в пользовательское адресное пространство, затем считал, вроде бы совпадает.

Как только пытаюсь обратиться через Nios IDE ничего не выходит:
alt_flash_open_dev(CFI_FLASH_NAME); опять возвращает нулевое значение.
вставил static alt_flash_cfi_dev cfi_flash как писал barabek, но там опять же не считывает ничего из Flash.
перепробовал все варианты с system library, убрал уже все галочки и увеличил размер on-chip, чтобы влезло - не хочет.

Уже не знаю, куда смотреть и что делать...

Хотелось бы узнать как можно посмотреть, какие сигналы генерит Nios процессор и выдает ли он вообще какие-нибудь Oen или Cen на входы Flash?
и еще что такое signal tap и с чем его едят?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 9 2009, 13:15
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(dim99 @ Oct 9 2009, 19:43) *
alt_flash_open_dev(CFI_FLASH_NAME); опять возвращает нулевое значение.
вставил static alt_flash_cfi_dev cfi_flash как писал barabek, но там опять же не считывает ничего из Flash.

alt_flash_cfi_init (&cfi_flash) - структуру заполняет? если нет, то alt_flash_open_dev точно не сработает, ошибка где-то раньше.

Цитата
Хотелось бы узнать как можно посмотреть, какие сигналы генерит Nios процессор и выдает ли он вообще какие-нибудь Oen или Cen на входы Flash?
и еще что такое signal tap и с чем его едят?

signaltap - логический анализатор, им как раз можно и посмотреть OEn/CEn, если осциллографа нет под рукой

Цитата
перепробовал все варианты с system library, убрал уже все галочки и увеличил размер on-chip, чтобы влезло - не хочет.


выложите проект, если секретного нету
Go to the top of the page
 
+Quote Post
barabek
сообщение Oct 9 2009, 14:01
Сообщение #26


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(vadimuzzz @ Oct 9 2009, 23:15) *
alt_flash_cfi_init (&cfi_flash) - структуру заполняет? если нет, то . . .

Поддерживаю, врядли дело в железе, если flashprogrammer работает. Дело однозначно в программе. Я ещё раз посмотрю в свой проект, может что упустил. Но это не раньше понедельника. Попробуйте пошаговую отладку . Может сами раньше найдете затык.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 9 2009, 14:34
Сообщение #27


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Цитата(vadimuzzz @ Oct 9 2009, 17:15) *
alt_flash_cfi_init (&cfi_flash) - структуру заполняет? если нет, то alt_flash_open_dev точно не сработает, ошибка где-то раньше.

signaltap - логический анализатор, им как раз можно и посмотреть OEn/CEn, если осциллографа нет под рукой

выложите проект, если секретного нету


Как я понял из кода, alt_flash_cfi_init (&cfi_flash) определяет параметры Flash то есть как настроена - на 8 битную или 16-битную адресацию и прочее.
К сожалению, не заполняет, он пытается записать значение и сравнить с прочитанным результатом - естественно читает абы что.

боюсь, весь проект выложить не могу, там моя небольшая часть.
Хочу завтра создать чистый Hello_world в nios ide и в нем попробовать обратиться к Flash. может проблемы из-за исходного программного проекта.
Go to the top of the page
 
+Quote Post
barabek
сообщение Oct 9 2009, 14:36
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Да, кстати. Я скопировал упомянутый altera_avalon_cfi_flash.c в папку своего проекта и добавил эту копию в проект, естествено, чтобы этот файл тоже билдился ( по умолчанию).

Просите, предыдущее сообщение с телефона не получилось отредактировать.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 9 2009, 15:25
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



У меня вопрос появился, нет ли каких-нибудь ошибок в распиновке? (правил в paint)

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 9 2009, 15:56
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(dim99 @ Oct 9 2009, 22:25) *
У меня вопрос появился, нет ли каких-нибудь ошибок в распиновке? (правил в paint)

вроде нет. разве что ресет на флеш. посмотрите как сделано в примерах к киту, да и схематик глянуть не помешает. я завтра накидаю "hello world" с флешем.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:04
Рейтинг@Mail.ru


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