Исследование драйвера ядра Linux для шины I2C

Автор работы: Пользователь скрыл имя, 17 Января 2012 в 14:29, курсовая работа

Краткое описание

В настоящее время только Philips производит более 150 наименований I2C-совместимых устройств, функционально предназначенных работы в электронном оборудовании различного назначения. В их числе ИС памяти, видеопроцессоров и модулей обработки аудио- и видео-сигналов, АЦП и ЦАП, драйверы ЖК-индикаторов, процессоры со встоенным аппаратным контроллером I2C шины и многое другое.

Содержание работы

Введение 5
1 Шина управления I2C 10
2 Исследование драйвера 14
Заключение 15
Список использованных источников 16

Содержимое работы - 1 файл

kyrsovik.doc

— 337.00 Кб (Скачать файл)

Министерство  общего и профессионального образования 
Российской Федерации
 

КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ  УНИВЕРСИТЕТ 

Кафедра ВТ и АСУ 
 
 
 
 

Пояснительная записка

к курсовой работе 
 
 

по дисциплине: Системное программное обеспечение  ЭИС 

на тему: Исследование драйвера ядра Linux   для шины I2C. 
 
 

Выполнил: студент    курса 
 

Руководитель  проекта:  

Защищён                                   Оценка:                                      

                           (дата) 

Члены комиссии:                                                                                                          

                                                                                                                                        

                                                                                                                                        

                          (подпись, дата, расшифровка подписи) 
 
 

г. Краснодар

2012 

Кубанский Государственный Технологический  Университет 

Кафедра ВТ и АСУ 

                  Утверждаю:

                  Зав. кафедрой Ключко В. И. 
                   

Задание

на  курсовую работу 

Студенту:                                               Группы ____                        ___ Курса        

факультета  ___КТАС_________________________________________                 

специальности ___          ______________________________________                    

Тема проекта: Исследование драйвера Linux    для шины I2C.

Содержание  задания: Изучить общие принципы разработки драйверов для ядра ОС Linux. Исследовать один из предложенных драйверов. Исходные тексты с комментариями оформить в виде гипертекста HTML и поместить на электронный носитель. Рекомендуется воспользоваться программой типа «Highlight Code Converter» (http://www.andre-simon.de/). Выходной формат XHTML с включенной нумерацией строк. В печатный отчет приложить оригинальные исходные тексты. 

Объём работы 40 листов 

Рекомендуемая литература:

  1. Гук М.Ю. Аппаратные средства IBM PC. Энциклопедия. 2-е изд. - СПб.: Питер, 2004. – 923 с.: ил.
  2. Гук М.Ю. Шины PCI, USB и FireWire. Энциклопедия. - Спб.: Питер, 2005. - 540 с.: ил.
  3. Кулаков В. Программирование на аппаратном уровне: специальный справочник (+дискета). 2-е изд. - СПб: Питер, 2003. - 848 с.: ил.
  4. The Linux Kernel Module Programming Guide.
 

Срок выполнения проекта: с                                2011 г. По                  2011 г.

Срок защиты:                       2011 г.

Дата выдачи задания:                      2011 г. 

Руководитель  проекта Мурлин А.Г.. 

                                                подпись

Задание принял студент _____________________________________

                                                подпись,                  дата 

Реферат

Объём пояснительной записки: 48 листов.

Количество  рисунков: 15.

Ключевые  слова: драйвер, Linux, I2C, SMBus.

Содержание 
 

Введение

       Каждый, кто занимался разработкой радиоэлектронной техники, сталкивался с ситуацией, когда для соглассвания уровней  сигналов, выборки и адресации  функционально-законченных узлов, приходится использовать огромное количество промежуточных ИС.  
Для увеличения эффективности, упрощения схемотехнических решений,
Philips разработала простую двунаправленную двухпроводную шину для так называемого "межмикросхемного" (inter-IC) управления.  
Шина получила название - InterIC, или IIC (I2C) шина.

       В настоящее время только Philips производит более 150 наименований I2C-совместимых  устройств, функционально предназначенных  работы в электронном оборудовании различного назначения. В их числе ИС памяти, видеопроцессоров и модулей обработки аудио- и видео-сигналов, АЦП и ЦАП, драйверы ЖК-индикаторов, процессоры со встоенным аппаратным контроллером I2C шины и многое другое.

       I2C шина является одной из модификаций последовательных протоколов обмена данных. В стандартном режиме обеспечивается передача последовательных 8-битных данных со скоростью до 100 кбит/с, и до 400 кбит/с в "быстром" режиме. Для осуществления процесса обмена информацией по I2C шине, используется всего два сигнала линия данных SDA линия синхронизации SCL Для обеспечения реализации двунаправленности шины без применения сложных арбитров шины выходные каскады устройств, подключенных к шине, имеют открытый сток или открытый коллектор для обеспечения функции монтажного "И".

       Простая двухпроводная последовательная шина I2C минимизирует количество соединения между ИС, ИС имеют меньше контактов  и требуется меньше дорожек. Как  результат - печатные платы становятся более простыми и технологичными при изготовлении. Интегрированный I2C-протокол устраняет необходимость в дешифраторах адреса и другой внешней логике согласования.

       Максимальное  допустимое количество микросхем, подсоединённых к одной шине, ограничивается максимальной емкостью шины 400 пФ.

       Встроенный  в микросхемы аппаратный алгоритм помехоподавления обеспечивает целостность данных в  условиях помех значительной величины.  
Все I2C-совместимые устройства имеют интерфейс, который позволяет им связываться друг с другом по шине даже в том случае, если их напряжение питания существенно отличается. На следующем рисунке представлен принцип подключения нескольких ИМС с различными напряжениями питания к одной шине обмена.

       Каждое  устройство распознается по уникальному  адресу и может работать как передатчик или приёмник, в зависимости от назначения устройства.

       Кроме того, устройства могут быть классифицированы как ведущие и ведомые при  передаче данных. Ведущий - это устройство, которое инициирует передачу данных и вырабатывает сигналы синхронизации. При этом любое адресуемое устройство считается ведомым по отношению к ведущему.

       Исходя  из спецификации работы шины, в каждый отдельный момент в шине может  быть только один ведущий, а именно то устройство, которое обеспечивает формирование сигнала SCL шины. Ведущий может выступать как в роли ведущего-передатчика, так и ведущего-приемника. Тем не менее - шина позволяет иметь несколько ведущих, накладывая определенные особенности их поведения в формировании сигналов управления и контроля состояния шины. Возможность подключения более одного ведущего к шине означает, что более чем один ведущий может попытаться начать пересылку в один и тот же момент времени. Для устранения "столкновений", который может возникнуть в данном случае, разработана процедура арбитража - поведения ведущего при обнаружении "захвата" шины другим ведущим.

       Процедура синхронизации двух устройств Эта  процедура основана на том, что все I2C-устройства подключаются к шине по правилу монтажного И. В исходном состоянии оба сигнала SDA и SCL находятся в высоком состоянии.

       Состояние СТАРТ и СТОП

       Процедура обмена начинается с того, что ведущий  формирует состояние СТАРТ - ведущий  генерирует переход сигнала линии SDA из ВЫСОКОГО состояния в НИЗКОЕ при ВЫСОКОМ уровне на линии SCL. Этот переход воспринимается всеми устройствами, подключенными к шине как признак начала процедуры обмена.

       Генерация синхросигнала - это всегда обязанность  ведущего; каждый ведущий генерирует свой собственный сигнал синхронизации  при пересылке данных по шине.

       Процедура обмена завершается тем, что ведущий формирует состояние СТОП - переход состояния линии SDA из низкого состояния в ВЫСОКОЕ при ВЫСОКОМ состоянии линии SCL.

       Состояния СТАРТ и СТОП всегда вырабатываются ведущим. Считается, что шина занята после фиксации состояния СТАРТ. Шина считается освободившейся через некоторое время после фиксации состояния СТОП. 

       При передаче посылок по шине I2C каждый ведущий генерирует свой синхросигнал на линии SCL.

       После формирования состояния СТАРТ, ведущий  опускает состояние линии SCL в НИЗКОЕ состояние и выставляет на линию SDA старший бит первого байта сообщения. Количество байт в сообщении не ограничено.

       Спецификация  шины I2C разрешает изменения на линии SDA только при НИЗКОМ уровне сигнала  на линии SCL.

       Данные  действительны и должны оставаться стабильными только во время ВЫСОКОГО состояния синхроимпульса.

       Для подтверждения приема байта от ведущего - передатчика ведомым - приемником в спецификации протокола обмена по шине I2C вводится специальный бит  подтверждения, выставляемый на шину SDA после приема 8 бита данных.

       Подтверждение

       Таким образом передача 8 бит данных от передатчика к приемнику завершаются  дополнительным циклом (формированием 9-го тактового импульса линии SCL), при  котором приемник выставляет низкий уровень сигнала на линии SDA, как признак успешного приема байта. 

       Подтверждение при передаче данных обязательно. Соответствующий  импульс синхронизации генерируется ведущим. Передатчик отпускает (ВЫСОКОЕ) линию SDA на время синхроимпульса подтверждения. Приёмник должен удерживать линию SDA в течение ВЫСОКОГО состояния синхроимпульса подтверждения в стабильном НИЗКОМ состоянии.

       В том случае, когда ведомый-приёмник не может подтвердить свой адрес (например, когда он выполняет в  данный момент какие-либо функции реального  времени), линия данных должна быть оставлена в ВЫСОКОМ состоянии. После этого ведущий может выдать сигнал СТОП для прерывания пересылки данных.

       Если  в пересылке участвует ведущий-приёмник, то он должен сообщить об окончании  передачи ведомому-передатчику путем  не подтверждения последнего байта. Ведомый-передатчик должен освободить линию данных для того, чтобы позволить ведущему выдать сигнал СТОП или повторить сигнал СТАРТ.

       Синхронизация выполняется с использованием подключения  к линии SCL по правилу монтажного И.

       Это означает, что ведущий не имеет  монопольного права на управление переходом  линии SCL из НИЗКОГО состояния ВЫСОКОГО. В том случае, когда ведомому необходимо дополнительное время на обработку  принятого бита, он имеет возможность  удерживать линию SCL в низком состоянии до момента готовности к приему следующиго бита. Таким образом, линия SCL будет находиться в НИЗКОМ состоянии на протяжении самого длинного НИЗКОГО периода синхросигналов.

       Устройства  с более коротким НИЗКИМ периодом будут входить в состояние  ожидания на время, пока не кончится длинный период. Когда у всех задействованных устройств кончится НИЗКИЙ период синхросигнала, линия SCL перейдет в ВЫСОКОЕ состояние. Все устройства начнут проходить ВЫСОКИЙ период своих синхросигналов. Первое устройство, у которого кончится этот период, снова установит линию SCL в НИЗКОЕ состояние. Таким образом, НИЗКИЙ период синхролинии SCL определяется наидлиннейшим периодом синхронизации из всех задействованных устройств, а ВЫСОКИЙ период определяется самым коротким периодом синхронизации устройств.

       Механизм  синхронизации может быть использован  приемниками как средство управления пересылкой данных на байтовом и битовом  уровнях.

       На  уровне байта, если устройство может  принимать байты данных с большой  скоростью, но требует определенное время для сохранения принятого байта или подготовки к приему следующего, то оно может удерживать линию SCL в НИЗКОМ состоянии после приема и подтверждения байта, переводя таким образом передатчик в состояние ожидания.

Информация о работе Исследование драйвера ядра Linux для шины I2C