Есть вопрос Павлу.
Хотелось бы узнать максимум подробностей про подключение ide
интерфейса на плате.
On 15 мар, 23:19, Pavel Kosenkov <microtrig...@gmail.com> wrote:
> для этого нужно нарисовать схему. мне понадобиться некоторое время для
> этого.
>
> 14 марта 2009 г. 16:12 пользователь matsi <geoma...@gmail.com> написал:
1. Какое назначение у джампера, который установлен около IDE разъема ?
2. На какую из IDE лап подвешен красный светодиод ?
3. Можно чуть подробнее про управляющие выходы PC8, PC10.
4. Соответсвует ли твоя схематика для IDE разъема режиму CompactFlash
True IDE из доки на SoC (стр. 162)?
Сергей.
On 23 мар, 14:18, Pavel Kosenkov <microtrig...@gmail.com> wrote:
> немного поясню:сигналы идут на разъем через 16 битные 2 направленные буферы
> преобразователи (D5 и D8). на таблице тот же порядок CPU- SN74LVC16T245-IDE.
> Чуть ниже добавил распиновку самого преобразователя.
> Если что, спрашивайте.
>
> 23 марта 2009 г. 11:50 пользователь microtrigger
> <microtrig...@gmail.com>написал:
Это мне чтоб понять, какие из функциональных возможностей могут быть
задействованы, а какие нет. К примеру - DMA вроде не задействована,
поскольку DMACK не прицеплен, но зачем тогда прицеплен DMARQ.
On 7 апр, 02:05, Pavel Kosenkov <microtrig...@gmail.com> wrote:
> 1.Джампер перключеат выходное напряжение у шинных драйверов, фактически
> напряжение на шине IDE: от разъема - 3,3В, к разъему - 5В.2. Светодиод висит
> на 39 ноге разъема
> 3.
> PC8 фактически включает обе микросхемы преобразователя(смотрим даташитhttp://focus.ti.com/docs/prod/folders/print/sn74lvc16t245.html, нога !OE)
> PC10 управляет направлением передачи (нога DIR по даташиту) у одного
> преобразователя (D8), через который идут 16 бит линий данных.
> 4. О какой доке идет разговор?
>
> C уважением (Best regards),
> Косенков Павел (Kosenkov Pavel)
> aka microtrigger & burokrat
> ==========================
> no time to loose, no time to choose
>
> 6 апреля 2009 г. 23:54 пользователь matsi <geoma...@gmail.com> написал:
С уважением,
Сергей.
On 8 апр, 15:12, microtrigger <microtrig...@gmail.com> wrote:
> Когда я разбирался с подключением IDE, то реализовал именно по
> рекомендациям для CF из даташита на 9260 и по рекомендациям от
> родственного 9200http://www.atmel.com/dyn/resources/prod_documents/doc6023.pdf, вначале
180 -> 166
Ковырятелям IDE:
http://www.at91.com/samphpbb/viewtopic.php?f=9&t=4528&hilit=memory+dma
Мож вдруг пригодится.
Я это уже нашел и использую во всю. От себя добавлю еще пару
полезняшек:
http://thread.gmane.org/gmane.linux.ide/37344
http://lkml.org/lkml/2008/10/10/109
On 20 апр, 18:36, Sergey Lapin <slapi...@gmail.com> wrote:
> 2009/4/16 Sergey Lapin <slapi...@gmail.com>:
1. Согласно схемам в документации Atmel'a на SoC AT91SAM9260 (стр. 152
и 162), второй преобразователь (D5 - контрольные сигналы) включается
не по чип-селекту, а по сигналу "card detected". То есть в случае HDD
его по идее надо держать включенным постоянно.
У тебя сейчас он включается по тому же сигналу (chip select - PC8),
что и первый преобразователь (D8 - данные), как и в доке по
AT91SAMRM9200.
Из-за этого, в частности, напрямую не работает reset - надо, выставив
необходимый для reset уровень, что-нибудь прочитать из ide
контроллера.
Может ли такое включение второго преобразователя быть причиной сбоев
при чтении/записи ?
Сергей.
On 14 апр, 18:04, Pavel Kosenkov <microtrig...@gmail.com> wrote:
> Нужно у Сергея уточнить. Я уже не помню какие частоты он выставлял на твоем
> экземпляре.Он приедет завтра - вот и спросим
>
> C уважением (Best regards),
> Косенков Павел (Kosenkov Pavel)
> aka microtrigger & burokrat
> ==========================
> no time to loose, no time to choose
>
> 14 апреля 2009 г. 15:52 пользователь matsi <geoma...@gmail.com> написал:
И еще просьба. Проверь, пожалуйста, правильно ли задается направление
для преобразователя D8 с помощью PC10 ( в смысле, не инвертируется ли
оно).
1. Насчет пуллапов. Уточню, что имею в виду.
Я не управляю вручную уровнями всех упоминаемых PIO-выходов. Ими
управляет compact flash controller в режиме true ide.
Если я ничего не упустил, то все, что тут требуется - это
инициализировать контроллер: отдать ему в распоряжение соответствующие
PIO-выходы, задать тайминги и некоторые параметры. В числе этих
параметров - как раз пуллапы и опендрейны для тех самых PIO-выходов,
которыми и будет управлять
котроллер.
Поправь меня если я ошибаюсь: с помощью внутренних пуллапов можно
менять активный уровень PIO-выхода. Ну то есть фактически, выставляя
пуллап, мы инвертируем его wave-forms, так ? Тогда пуллапы на PIO-
выходах в процессоре надо будет выставить так:
* для PC8, PC10 - чтоб приходили правильные уровни DIR и OE для
преобразователя D8
* для PC6, PC7 - в соответствии со спекой ATA, поскольку
преобразователь только передаст эти wave-forms дальше на разъем, не
меняя их формы.
Я не знаю как у тебя сделана цепь между PIO выходами (PC6, PC7, PC8,
PC10) и входами преобразователя D5. Поэтому не знаю, что придет
на
преобразователь (и далее - на разъем, в случае PC6, PC7), если
контроллер выставит, скажем, ноль на PIO выход.
Исходя из этой версии событий :) возникает мой вопрос: нужно ли
конфигурить внутренние пуллапы на каких-либо из упомянутых PIO
выходов, чтоб получить правильные уровни сигналов, а не
инвертированные.
2. Насчет опендрейнов.
Странно, что не надо. В результатов моих многочисленных экспериментов
получился следующий юзкейс:
* если отключить внутренние пуллапы и опендрейны для PC6, PC7,
PC8, PC10, PC15, то до диска не достучаться
* если включить опендрейн для PC10, то что-то оживает: читаются
регистры дискового контроллера, что-то меняется в них при попытке
записи (правда
записыватся пока не то, что пытаюсь записать)
3. Насчет "перерезать дорожку для D5 и кинуть на землю"
Это обратимое действие ? :)
Наверное попробуем, но сначала я все-же принесу плату на работу и еще
поэкспериментирую, но уже с осциллографом под рукой.
С Уважением.
Сергей
On 24 апр, 19:23, Pavel Kosenkov <microtrig...@gmail.com> wrote:
> Суть с подтяжками в том, что они стоят уже после преобразователей - те как
> подтягивать порты на уровне самого процесса можно особо не заботиться. На
> твое усмотрение, только опендрейн не нужно делать, тк внешнего пулапа у
> процессора нету.
> Касательно направления
>
> (EACH 8-BIT SECTION)
> CONTROL INPUTS OUTPUT CIRCUITS OPERATION
> OE DIR A PORT B PORT
> L L Enabled Hi-Z B data to A bus
> L H Hi-Z Enabled A data to B bus
> H X Hi-Z Hi-Z Isolation
>
> Порт B - со стороны IDE, порт A со стороны процессора. Для примера, если
> на PC10 выставить низкий уровень, то направление будет от B к A, те от IDE
> к процессору.
>
> C уважением (Best regards),
> Косенков Павел (Kosenkov Pavel)
> aka microtrigger & burokrat
> ==========================
> no time to loose, no time to choose
>
> 22 апреля 2009 г. 23:19 пользователь matsi <geoma...@gmail.com> написал:
> ...
>
> продолжение >>
>
> Поправь меня если я ошибаюсь: с помощью внутренних пуллапов можно
> менять активный уровень PIO-выхода. Ну то есть фактически, выставляя
> пуллап, мы инвертируем его wave-forms, так ? Тогда пуллапы на PIO-
> выходах в процессоре надо будет выставить так:
> * для PC8, PC10 - чтоб приходили правильные уровни DIR и OE для
> преобразователя D8
> * для PC6, PC7 - в соответствии со спекой ATA, поскольку
> преобразователь только передаст эти wave-forms дальше на разъем, не
> меняя их формы.
>
> Я не знаю как у тебя сделана цепь между PIO выходами (PC6, PC7, PC8,
> PC10) и входами преобразователя D5. Поэтому не знаю, что придет
> на
> преобразователь (и далее - на разъем, в случае PC6, PC7), если
> контроллер выставит, скажем, ноль на PIO выход.
>
> Исходя из этой версии событий :) возникает мой вопрос: нужно ли
> конфигурить внутренние пуллапы на каких-либо из упомянутых PIO
> выходов, чтоб получить правильные уровни сигналов, а не
> инвертированные.
Мне кажется что инверсные сигналы в нашем случае вряд ли зависят от пуллапов
по крайней мере внутренних - точно.
>
>
> 2. Насчет опендрейнов.
> Странно, что не надо. В результатов моих многочисленных экспериментов
> получился следующий юзкейс:
> * если отключить внутренние пуллапы и опендрейны для PC6, PC7,
> PC8, PC10, PC15, то до диска не достучаться
> * если включить опендрейн для PC10, то что-то оживает: читаются
> регистры дискового контроллера, что-то меняется в них при попытке
> записи (правда
> записыватся пока не то, что пытаюсь записать)
Надо смотреть осциллографом что там на сигналах в этом случае.
>
>
> 3. Насчет "перерезать дорожку для D5 и кинуть на землю"
> Это обратимое действие ? :)
> Наверное попробуем, но сначала я все-же принесу плату на работу и еще
> поэкспериментирую, но уже с осциллографом под рукой.
Угу. Ждем результатов с нетерпением. :)
S.
2009/4/24 matsi <geom...@gmail.com>:
> Привет, Павел.В данном абзаце имеется в виду драйвер.
>
>
> 1. Насчет пуллапов. Уточню, что имею в виду.
>
> Я не управляю вручную уровнями всех упоминаемых PIO-выходов. Ими
> управляет compact flash controller в режиме true ide.
> Если я ничего не упустил, то все, что тут требуется - это
> инициализировать контроллер: отдать ему в распоряжение соответствующие
> PIO-выходы, задать тайминги и некоторые параметры. В числе этих
> параметров - как раз пуллапы и опендрейны для тех самых PIO-выходов,
> которыми и будет управлять
> котроллер.
Мне кажется что инверсные сигналы в нашем случае вряд ли зависят от пуллапов
>
> Поправь меня если я ошибаюсь: с помощью внутренних пуллапов можно
> менять активный уровень PIO-выхода. Ну то есть фактически, выставляя
> пуллап, мы инвертируем его wave-forms, так ? Тогда пуллапы на PIO-
> выходах в процессоре надо будет выставить так:
> * для PC8, PC10 - чтоб приходили правильные уровни DIR и OE для
> преобразователя D8
> * для PC6, PC7 - в соответствии со спекой ATA, поскольку
> преобразователь только передаст эти wave-forms дальше на разъем, не
> меняя их формы.
>
> Я не знаю как у тебя сделана цепь между PIO выходами (PC6, PC7, PC8,
> PC10) и входами преобразователя D5. Поэтому не знаю, что придет
> на
> преобразователь (и далее - на разъем, в случае PC6, PC7), если
> контроллер выставит, скажем, ноль на PIO выход.
>
> Исходя из этой версии событий :) возникает мой вопрос: нужно ли
> конфигурить внутренние пуллапы на каких-либо из упомянутых PIO
> выходов, чтоб получить правильные уровни сигналов, а не
> инвертированные.
по крайней мере внутренних - точно.
Надо смотреть осциллографом что там на сигналах в этом случае.
>
>
> 2. Насчет опендрейнов.
> Странно, что не надо. В результатов моих многочисленных экспериментов
> получился следующий юзкейс:
> * если отключить внутренние пуллапы и опендрейны для PC6, PC7,
> PC8, PC10, PC15, то до диска не достучаться
> * если включить опендрейн для PC10, то что-то оживает: читаются
> регистры дискового контроллера, что-то меняется в них при попытке
> записи (правда
> записыватся пока не то, что пытаюсь записать)
Угу. Ждем результатов с нетерпением. :)
>
>
> 3. Насчет "перерезать дорожку для D5 и кинуть на землю"
> Это обратимое действие ? :)
> Наверное попробуем, но сначала я все-же принесу плату на работу и еще
> поэкспериментирую, но уже с осциллографом под рукой.
S.
Протестировал плату с последним изменением ( !OE = 0 на
преобразователе D5). Коротко результаты:
1. PIO polling не поломали :)
2. Включаем прерывание и задействуем стандартный обработчик от libata
подсистемы:
драйвер работает - прерывание действительно дергается,
обрабатывается и общение с диском в норме.
Надо еще посмотреть пару вещей:
1. Проверить, уменьшилась ли хоть немного загрузка процессора (кстати,
должна или нет ?).
2. Проверить, нет ли ложных срабатываний обработчика на разные фронты
сигнала INTRQ.
Если есть, то перед вызовом стандартного обработчика от libata
проверять значение сигнала INTRQ - обрабатывать только "правильный"
фронт.
Не забыл ничего ?
>
> 2. Включаем прерывание и задействуем стандартный обработчик от libata
> подсистемы:
> драйвер работает - прерывание действительно дергается,
> обрабатывается и общение с диском в норме.
Это просто отлично!
>
> Надо еще посмотреть пару вещей:
>
> 1. Проверить, уменьшилась ли хоть немного загрузка процессора (кстати,
> должна или нет ?).
Бизилупиться должно меньше (количество сидения в системе должно уменьшиться).
>
> 2. Проверить, нет ли ложных срабатываний обработчика на разные фронты
> сигнала INTRQ.
> Если есть, то перед вызовом стандартного обработчика от libata
> проверять значение сигнала INTRQ - обрабатывать только "правильный"
> фронт.
Угу.
>
> Не забыл ничего ?
* Протестировать скорость - не уменьшилась ли.
* Проинвестигировать возможность завести DMA через serial в принципе.
1. Насчет загрузки загрузки системы.
Что в PIO polling, что в PIO IRQ - без разницы. Картина следующая:
test@afeb9260:~$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 2 0 37660 916 15224 0 0 0 1 103 138 0 0 0 100
1 2 0 37660 916 15224 0 0 0 0 103 140 0 0 0 100
0 2 0 37660 916 15224 0 0 0 0 105 142 0 0 0 100
1 2 0 37660 916 15224 0 0 0 0 103 138 0 0 0 100
2. Сравнение скорости:
PIO POLLING:
# time dd if=/dev/zero of=/media/sda1/xxx bs=1M count=10; time sync
10+0 records in
10+0 records out
real 0m11.893s
user 0m0.010s
sys 0m1.000s
real 0m1.370s
user 0m0.010s
sys 0m0.030s
# time dd if=/dev/zero of=/media/sda1/xxx bs=1M count=50; time sync
50+0 records in
50+0 records out
real 0m58.225s
user 0m0.000s
sys 0m5.170s
real 0m3.908s
user 0m0.010s
sys 0m0.040s
PIO IRQ:
# time dd if=/dev/zero of=/media/sda1/xxx bs=1M count=10; time sync
10+0 records in
10+0 records out
real 0m6.574s
user 0m0.000s
sys 0m1.080s
real 0m0.702s
user 0m0.000s
sys 0m0.030s
# time dd if=/dev/zero of=/media/sda1/yyy bs=1M count=50; time sync
50+0 records in
50+0 records out
real 0m34.577s
user 0m0.000s
sys 0m5.610s
real 0m0.724s
user 0m0.000s
sys 0m0.060s
Итого:
скорость без прерываний 715 Kb/sec
скорость с прерываниями 1220 Kb/sec