Перейти к содержанию
    

При добавлении в систему компонента с шиной данных 8 бит появляется warning: "cpu.data_master/device.avalon_slave does not have byteenables. Narrow (less than 32-bit) writes from cpu.data_master will result in spurious writes to device.avalon_slave". При добавлении byteenable пишет ошибку, что byteenable не может быть меньше 2, хотя в спецификации написано что может быть и 1. Может это повлиять на работу системы если не ставить byteenable?

 

Еще quartus при компиляции пишет "Found Invalid timing asssignments". При просмотре ошибок minimum slack для Clock Hold: nios pll имеет отрицательное значение и pll_offset = -1,667 ns.

При попытке на данную прошивку загрузить софт Nios пишет: "ID value doesn't match. Timestamp value doesn't match: image on board is older than expected". При чем данная ошибка появляется только когда в системе присутствуют компоненты со Stream интерфейсом. Что это может быть и как это можно исправить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ваши вопросы напрямую зависят от вашего проекта, выложите проект для просмотра.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При добавлении в систему компонента с шиной данных 8 бит появляется warning: "cpu.data_master/device.avalon_slave does not have byteenables. Narrow (less than 32-bit) writes from cpu.data_master will result in spurious writes to device.avalon_slave". При добавлении byteenable пишет ошибку, что byteenable не может быть меньше 2, хотя в спецификации написано что может быть и 1. Может это повлиять на работу системы если не ставить byteenable?

Раз Вы можете добавить byteenable то, смею предположить, что это Ваш самописный компонент. Если так, то можно либо выставить NATIVE адресацию у компонента, тогда и byteenable не нужен. Либо оставить DYNAMIC, но сделать шину 32-х битную, вставить byteenable, при этом логику внутри компонета можно сделать такой, что старшие 3 байта игнорировать. Выбирайте.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

alexPec, не осталось прошивки ознакомится? Буду бесконечно благодарен.

В файлике ф-ии записи и чтения в/из USB и пример использования этих ф-й. На стороне компа после установки драйверов запись/чтение происходит как в обычный ком-порт.

 

Думаю названия портов интуитивно понятно каким выводам FT245 соответствуют. Порт data - двунаправленный.

sample_ft245.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо большое, что откликнулись на зов моей помощи, но что то не могу файлик пощупать, ни скачивается и не просмативается... (

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо большое, что откликнулись на зов моей помощи, но что то не могу файлик пощупать, ни скачивается и не просмативается... (

 

И правда ерунда какая-то. Напишите письмо на [email protected] с пометкой о чем, вышлю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На заметку.

 

1. Если хотите чтобы работал Nios II Flash Programmer то ставьте версию 9.1 SP1. На SP2 и без SP не работает (неправильно конвертирует sof->flash).

 

 

2. Чтобы работать с UART в неблокирующем режиме нужно открывать его следующим образом:

 

static int fdterm; // FILEDESCRIPTOR RETURNED BY OPEN
..
fdterm = open("/dev/uart1", O_RDWR | O_NONBLOCK | O_NOCTTY | O_SYNC);
..


reading is done by

..
res=read(fdterm,uart1_tempbuff,sizeof(uart1_tempbu ff)-1);
if(res>0) {
... we have received some bytes
}

Тогда при чтении данных исполнение программы блокироваться не будет. Удивительно но не нашел доку где это было бы описано, спасибо альтерафоруму.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

подскажите пожалуйста, где взять таблетку от жадности

для квартуса 7.2 ?

ну или от десятки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как писать/читать флешку CFI из ниоса?

На борту DE0 стоит флешка. Собрал контроллер. в программе пробовал alt_write_flash() - при вызове второй раз это функции старые данные стираются. Нашел в доках, что эта функция стерает блок.

Есть функция alt_write_flash_block() - но про ней мало что понятно. Есть ещё какие то загадочные alt_flash_cfi_init() alt_flash_cfi_read() ... Про них вообще ни чего не нашел.

 

Чем отличаются alt_flash_cfi_write и alt_write_flash_block/ alt_write_flash?

 

ps Вообще хотелось бы получить функцию типа write(alt_u32 addressInFlash, alt_u8 *source, alt_u32 length); Пока видется путь писать свою используя alt_write_flash_block/read/open/close, в которой проверять перекрытие границы блока. Но там адская функция получается. Ещё не понятно что такое регион? С чем его есть и для чего он нужен?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

самое простое - использовать функции alt_write_flash, alt_read_flash. тогда можно о блоках не думать. то, что вы перечислили - низкоуровневые функции, они вызываются в alt_write_flash, alt_read_flash. можно делать и на низком уровне, но код будет менее универсальный, больше привязан к железу. см. http://www.altera.com/literature/hb/nios2/n2sw_nii52010.pdf

 

Ещё не понятно что такое регион? С чем его есть и для чего он нужен?

см. alt_flash_types.h

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

самое простое - использовать функции alt_write_flash, alt_read_flash. тогда можно о блоках не думать. то, что вы перечислили - низкоуровневые функции, они вызываются в alt_write_flash,

изночально нписал

 

alt_write_flash(...); // пишу 1234 в адрес 0

alt_write_flash(...); // пишу 5678 в адрес 20

 

alt_read_flash(...); //читаю из адреса 0, получаю 0xffff

alt_read_flash(...); //читаю из адреса 20, получаю то, что записал, т.е. 5678

 

такое чувство что вторая запись сначала стерла первую запись, а потом записала 5678.

Изменено пользователем juvf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

см. Nios II Software Developer’s Handbook, глава 6 Developing Programs Using the

Hardware Abstraction Layer, раздел Using Flash Devices. там все эти случаи разобраны

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тогда можно о блоках не думать.
как же не думать? Вот из документации на апи, стр 6-21

 

Generally, flash memory is divided into blocks. alt_write_flash() might need to

erase the contents of a block before it can write data to it. In this case, it makes no

attempt to preserve the existing contents of the block. This action can lead to

unexpected data corruption (erasure), if you are performing writes that do not fall on

block boundaries. If you wish to preserve existing flash memory contents, use the

fine-grained flash functions. These are discussed in the following section.

 

...

 

Fine-Grained Flash Access

Three additional functions provide complete control for writing flash contents at the

highest granularity:

■ alt_get_flash_info()

■ alt_erase_flash_block()

■ alt_write_flash_block()

 

 

как то не понятно, как эту флеш писать читать?

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...