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

Обсуждение IP ядра SATA2

Всем привет. Нашел недавно сабж от автора Ashwin Mendon, и попробовал поотлаживать для приведения его в рабочий вид и дальнейшего использования в корыстных целях.

Предлагаю тут пообсуждать работу (а точнее не работу) данного ядра. В принципе написано оно ужасно, но за не имением ничего другого и понимание что с нуля писать будет долго, ничего не остается.

 

Target Platform: ML605 Xilinx Virtex-6 240T

 

Первое что меня интересует это алгоритм выравнивания, или ловли точки. GTX у автора настроен так, что шина данных у него 32 бита. Это удобно, потому что передача в sata происходит двойными словами. Но это только снаружи. Внутри самого GTX данные 16/20 бит. Теперь представим что к нам от жесткого диска приходит примитив ALIGNp. А точнее 2, потому что их всегда приходит 2. Сумеет ли GTX правильно выполнить выравнивание данных при такой внешей шине? Никто не наблюдал в этом ядре каких–либо проблем с выравниванием данных?

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


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

Собственно меня смутила таблица из даташита ug366 на GTX.

post-26933-1359384046_thumb.png

 

Не совсем понятно что авторы имели ввиду, и когда это может понадобится.

 

После манипуляций с тактовой частотой корка завелась, и даже поехала. По крайней мере на запись, на чтение еще не проверял. Правда работает не со всеми жесткими дисками. C SSD OCZ Vertex 4 256G пишет нормально, с Seagate Barracuda 7200.10 глючит, на пол пути детектируются ошибки от диска. Копаем дальше.

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


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

Всем привет. Нашел недавно сабж от автора Ashwin Mendon, и попробовал поотлаживать для приведения его в рабочий вид и дальнейшего использования в корыстных целях.

Предлагаю тут пообсуждать работу (а точнее не работу) данного ядра. В принципе написано оно ужасно, но за не имением ничего другого и понимание что с нуля писать будет долго, ничего не остается.

 

Target Platform: ML605 Xilinx Virtex-6 240T

 

Такие стандратные вещи нужно покупать. Я знаю этих ребят и для каких целей разрабатывалось это ядро. Они явно указывают, что этот core поставляеться "AS IS", без каких-либо гарантий, скорее в образовательных целях. Установка таких вещей в коммерческие продукты сулит большой головной болью на этапе расширения проекта и поддержки покупателей.

 

Для твоих "корыстных" целей ядро можно купить за $15k-20k для FPGA и $35k-$45k для ASIC. Лучшие имплементации предлагают Американские компании. Там и оптимизация по latency and throughput, и документация, RTL, Verification Environment, Integration Scripts, Use Case examples, полный цыкл тестирования в железе и даже support для ASIC Back-End. :beer:

 

Если цены не очень доступны, можно посмотреть в сторону Индии или Китая. Покупать у Российских компаний не рекомендую, т.к у большинства вендоров цены американские, а вот качество, поддержка и опыт коммерческих проектов очень ограниченый. :laughing:

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


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

Верните мне 2 минуты, которые я потратил на прочтение предыдущего сообщения.

 

Такие стандратные вещи нужно покупать. :laughing:

 

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


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

Всем привет. Нашел недавно сабж от автора Ashwin Mendon, и попробовал поотлаживать для приведения его в рабочий вид и дальнейшего использования в корыстных целях.

Предлагаю тут пообсуждать работу (а точнее не работу) данного ядра. В принципе написано оно ужасно, но за не имением ничего другого и понимание что с нуля писать будет долго, ничего не остается.

 

Target Platform: ML605 Xilinx Virtex-6 240T

 

Первое что меня интересует это алгоритм выравнивания, или ловли точки. GTX у автора настроен так, что шина данных у него 32 бита. Это удобно, потому что передача в sata происходит двойными словами. Но это только снаружи. Внутри самого GTX данные 16/20 бит. Теперь представим что к нам от жесткого диска приходит примитив ALIGNp. А точнее 2, потому что их всегда приходит 2. Сумеет ли GTX правильно выполнить выравнивание данных при такой внешей шине? Никто не наблюдал в этом ядре каких–либо проблем с выравниванием данных?

 

Добрый день.

У нас есть своя реализация SATA. Правда под Arria II GX.

Портирование дело несложное, тем более, мы это так и так планируем.

 

Если интересно, ответьте в личку. Дам датащит.

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


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

Добрый день.

У нас есть своя реализация SATA. Правда под Arria II GX.

Портирование дело несложное, тем более, мы это так и так планируем.

 

Если интересно, ответьте в личку. Дам датащит.

 

Если я правильно понял, это было что—то вроде коммерческого предложения. Так вот, покупать ничего не намерен, тем более что обсуждаемое ядро вполне работоспособно. Но если я не так все понял, то готов пообщаться на эту тему.

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


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

Если я правильно понял, это было что—то вроде коммерческого предложения. Так вот, покупать ничего не намерен, тем более что обсуждаемое ядро вполне работоспособно. Но если я не так все понял, то готов пообщаться на эту тему.

 

Да, это было что-то вроде того :)

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


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

Недавно тоже ее скачал. Переписал phy под virtex5. Заработало. Пробовал на двух разных дисках sata2. Чтение сектора -- заработало. Сделал бесконечное чтение сектора по кнопке и вооружился чипскопом. Корка зависала рандомно в пределах 512 попыток. Я до последнего надеялся, что читать спеку и изучать код корки не придется. Понял как ошибался. Нашел причину и место, где поправить. Бага пропала, открылась следующая. Поизучав еще код link_layer'a в шоке до сих пор. Там на обработку ошибок вообще забили. Опять удар в бубен и чудо происходит! Корка начинает стабильно читать сектора/группы секторов в бесконечном цикле. Запись сектора в цикле также приводит к дедлокам, причина все таже. Мучаюсь уже месяц с этой коркой, знаю код и спецификацию уже почти наизусть. Мне так и не удалось найти легкого способа пофиксить зависание при циклической записи сектора на диск, просто потому что корка реализована идеологически неправильно и спецификации там практически ничего не соответсвует. Пришел к выводу, что проще стереть этот код и переписать. Так и поступил.

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

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


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

Недавно тоже ее скачал. Переписал phy под virtex5. Заработало. Пробовал на двух разных дисках sata2. Чтение сектора -- заработало. Сделал бесконечное чтение сектора по кнопке и вооружился чипскопом. Корка зависала рандомно в пределах 512 попыток. Я до последнего надеялся, что читать спеку и изучать код корки не придется. Понял как ошибался. Нашел причину и место, где поправить. Бага пропала, открылась следующая. Поизучав еще код link_layer'a в шоке до сих пор. Там на обработку ошибок вообще забили. Опять удар в бубен и чудо происходит! Корка начинает стабильно читать сектора/группы секторов в бесконечном цикле. Запись сектора в цикле также приводит к дедлокам, причина все таже. Мучаюсь уже месяц с этой коркой, знаю код и спецификацию уже почти наизусть. Мне так и не удалось найти легкого способа пофиксить зависание при циклической записи сектора на диск, просто потому что корка реализована идеологически неправильно и спецификации там практически ничего не соответсвует. Пришел к выводу, что проще стереть этот код и переписать. Так и поступил.

 

Плюсую. Максимум на что меня хватило это вставить чипоскоп. Что–то править в поделке индийских студентов желания не возникло. Шепну на ухо, где-то на просторах интернета есть замеательные исходники sata2 корки, и даже с реализованным NCQ. Причем совсем за бесплатно, правда под лицензией Intel (образовательные цели и тд...). Написал ее работник Intel. Правда ссылку дать не могу - потерял. Не могу сказать что она работает на 100%, но написана просто отменно.

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


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

Плюсую. Максимум на что меня хватило это вставить чипоскоп. Что–то править в поделке индийских студентов желания не возникло. Шепну на ухо, где-то на просторах интернета есть замеательные исходники sata2 корки, и даже с реализованным NCQ. Причем совсем за бесплатно, правда под лицензией Intel (образовательные цели и тд...). Написал ее работник Intel. Правда ссылку дать не могу - потерял. Не могу сказать что она работает на 100%, но написана просто отменно.

 

Да бог с ней, с ссылкой, может корку-то выложите тут, в образовательных целях? :)

Лично мне, действительно, просто ради интереса погонять, никакой коммерческой подоплеки...

 

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


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

замеательные исходники sata2 корки, и даже с реализованным NCQ. Причем совсем за бесплатно, правда под лицензией Intel (образовательные цели и тд...). Написал ее работник Intel.

Groundhog?

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


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

Groundhog?

Она. Правда у меня сразу не заработала, где-то косяк в логике работы. Но потенциал у нее очень большой, так как написана вменяемым программистом. Жалко, что автор решил сделать ее 16 битной, и кмк где-то там и скрывается косяк.

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


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

Она. Правда у меня сразу не заработала, где-то косяк в логике работы. Но потенциал у нее очень большой, так как написана вменяемым программистом. Жалко, что автор решил сделать ее 16 битной, и кмк где-то там и скрывается косяк.

Запустил ее под Virtex5 VFX70T , попутно заменил трансы на GTX. Чтение секторов работает отменно, чего не скажешь о записи. Почему-то при переполнении выходного буфера(buffer outgoing traffic), когда сигнал wdata_full = block_outbuf_writes || buffer_out_overflow; принимает значение 1 по переполнению буфера buffer_out_overflow, то последнее записанное слово куда-то пропадает (дебажил линк -- там видно). Параметр OVERFLOWLIM (6) не сказал бы, что неправильно стоит. Но, если поменять на OVERFLOWLIM (5), то бага испаряется. Чтение/запись проверял только на командах CMD_READ_DMA_EXTENDED/CMD_WRITE_DMA_EXTENDED.

А какую вы нашли ошибку?

 

PS: Корка всяко лучше предидущей, однако не идеальная. Как-то странно там обрабатывается потеря связи. Если выдернуть и вставить кабель, то связь не восстанавливается. Но и на том спасибо...допилим.

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

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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