Skip to Content

Долго определяется CompactFlash в Linux

Есть у нас плата собственной разработки имеющая на борту АРМ9 процессор и, в частности, Compact Flash интерфейс. Встретились недавно со странной проблемой с Compact Flash в Linux. Карта работает в режиме True IDE и в момент загрузки возникали странные проблемы, появлялись сообщения о том что карта не отвечает, Linux производила неоднократный и безуспешный софтварный ресет ATA устройства, в конечном итоге карта определялясь и дальнейшая работа с ней происходила без каких-либо проблем.

 

Вот пример загрузочных сообщений:

 

 

[42949379.860000] ata1: link is slow to respond, please be patient (ready=0)
[42949384.840000] ata1: device not ready (errno=-16), forcing hardreset
[42949390.040000] ata1: link is slow to respond, please be patient (ready=0)
[42949394.900000] ata1: SRST failed (errno=-16)
[42949400.100000] ata1: link is slow to respond, please be patient (ready=0)
[42949404.960000] ata1: SRST failed (errno=-16)
[42949410.160000] ata1: link is slow to respond, please be patient (ready=0)
[42949431.270000] ata1.00: ATA-0: , 20071116, max MWDMA2
[42949431.270000] ata1.00: 3964464 sectors, multi 0: LBA
[42949431.280000] CF CSA 0001011a
[42949431.280000] CF SETUP 01030103
[42949431.280000] CF PULSE 0c090c09
[42949431.290000] CF CYCLE 000e000e
[42949431.290000] CF MODE  00000033
[42949431.330000] ata1.00: configured for PIO4
[42949431.350000] CF CSA 0001011a
[42949431.350000] CF SETUP 01030103
[42949431.350000] CF PULSE 0c090c09
[42949431.360000] CF CYCLE 000e000e
[42949431.360000] CF MODE  00000033
[42949431.400000] ata1.00: configured for PIO4
[42949431.400000] ata1: EH complete
[42949431.420000] scsi 0:0:0:0: Direct-Access     ATA                       2007 PQ: 0 ANSI: 5
[42949431.430000] sd 0:0:0:0: [sda] 3964464 512-byte hardware sectors: (2.02 GB/1.88 GiB)
[42949431.440000] sd 0:0:0:0: [sda] Write Protect is off
[42949431.440000] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[42949431.450000] sd 0:0:0:0: [sda] 3964464 512-byte hardware sectors: (2.02 GB/1.88 GiB)
[42949431.460000] sd 0:0:0:0: [sda] Write Protect is off
[42949431.470000] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[42949431.480000]  sda: sda1
[42949431.480000] sd 0:0:0:0: [sda] Attached SCSI disk
[42949431.490000] sd 0:0:0:0: Attached scsi generic sg0 type 0

Все эти попытки начального запуска карты занимали порядочное время, порядка 30-50 секунд, но на фоне полного времени загрузки системы можно было с ними мириться. Но для реальной системы были закуплены CF карты с индустриальным диапазоном рабочей температуры и вот они наотрез "отказались" работать в нашей системе. В ходе разбирательств было выяснено, что проблема была в неправильной подтяжке сигналов BVD1 и BVD2, пины 46 и 45 разъема CF соответственно. Эти 2 сигнала требуются для работы процедуры распределения устройств master/slave на шине IDE и они должны иметь pull-down резисторы номиналом от 1к до 4.7к (мы поставили 2.2к). После ресета, программного или аппаратного, АТА устройство должно "договориться" с подчиненным висящим на той же шине, используя эти 2 сигнала. Очевидно, что наша карта добросовестно ждала, когда же подчиненный отпустит сигнал, но подчиненного на шине не было, а сигнал был притянут к питанию. Видимо, через какое-то время срабатывал внутренний тайм-аут и карта продолжала работать нормально. На рисунке с примером подключения CF из datasheet на AT91SAM9263 эти сигналы вообще никуда не подключаются,  но у нас для обеспечения совместимости интерфейса Compact Flash с PCMCIA эти сигналы были заведены на процессор (через буфер) и подтянуты к питанию через резисторы 47к. Простое удаление pull-up-ов ни к чему не привело. А вот установка pull-down резисторов на эти 2 сигнала кардинально поменяло ситуацию в лучшую сторону.

Наверняка подобная проблема возникла не только у нас потому что на прошлой моей работе начальник как-то принес в кабинет к программистам коробку с новенькими Compact Flesh-ами и сказал, "забирайте кому надо". На вопрос "Почему раздаете?" был получен ответ о том что они "не работают правильно с Linux" на встраиваемом компьютере. Уж не была ли и там подобная проблема?

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <p> <span> <s> <strike> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <caption> <tbody> <tr> <td> <em> <b> <u> <i> <strong> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike>
  • Использовать как разделитель страниц.

Подробнее о форматировании

CAPTCHA
Введите текст что Вы видите на картинке. Регистр букв не важен.