|
Новый проект на основе прототипа с AM/DM37xx, OMAP-L138, Понимание настроек Linux, uboot, драйверов и всего остального... |
|
|
|
Feb 28 2014, 04:13
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 20-11-13
Пользователь №: 79 278

|
Цитата(Petrovitch @ Feb 27 2014, 14:45)  Давайте рассмотрим пример с платой BeagleBone. На её разъёмы выведен видеопорт 24bit с сигналами синхронизации HSYNC, VSINC, DE, CLK и порт I2C. И всё это живёт своей жизнью. Мне необходимо подключить МОЙ дисплей, у которого все упомянутые сигналы имеются и для начала отображения по I2C необходимо отправить определённые коды настроек. 1. Как сделать, чтобы порт I2C считался принадлежащим дисплею? Писать свой драйвер? Тогда как? Какой для этого инструментарий необходим, откуда берётся, правила написания и т. д. Может где про это подробно написано, тогда прошу дать ссылки. 2. Можно посмотреть на проблему иначе. Пусть I2C так и остаётся самостоятельным портом, подключенным к дисплею. Об этом ведомо только разработчику. И просто отправлять коды по порту, зная для чего они предназначены. Как Вам такой вариант. Что для этого надо дополнительно сделать?
В любом случае дисплей должен что-либо отображать уже на этапе загрузки u-boot (до uImage!).
Готов экспериментировать на живой плате по шагам. раз вы только начинаете со всем этим разбираться , может лучше взять другой дисплей у которого rgb интерфейс единственный ? ничего не нужно ни куда писать "для начала изображения" , подключите к боне без всякого i2c . дисплев таких большинство , и они ничего не стоят по сравнению с теми усилиями которые вы затратите не зная что делать наверняка. ну разве что в учебных целях задача как вы поставили хороша.
|
|
|
|
|
Feb 28 2014, 13:14
|
Профессионал
    
Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439

|
Цитата(Dron_Gus @ Feb 27 2014, 16:36)  Насколько я знаю, это покажет только устройства, для которых есть и загружены драйвера. Т.е. занятые адреса. Нет драйвера - нет записи. i2c подсистема самостоятельно не сканирует шину на предмет наличия устройств. Я дополнил ответ про использование i2cdetect, которое тоже не увидит устройства, которое не добавлено в систему. Поправлю вас. Драйвер уже есть, но этого мало. Надо объявить устройство. в 2.6 я хорошо знаю как это делается, в 3.Х надо в дереве устройств описывать. С этим я плохо знаком, но поскольку там описано можество подобных устройств, то можно подсмотреть. Да и документы есть. В ядре Линукса есть в том числе два списка на каждую шину. В одном списке зарегистрированные драйвера, а во втором зарегистрированные устройства. Для каждого драйвера и устройства есть "пароль", который обязан совпасть. Именно по совпадению пароля и только по нему устанавливается драйвер для устройства. В том списке, что я показал находятся устройства для которыз использованы только два драйвера. Один для конкретных устройств например 2-0041, что означает, что на i2c шине 2 устройство с адресом 0х41 и второй i2c-1, означающий i2c шина номер 1. Кстати если устройство только подключено к шине и не объявлено в дереве устройств(3.х), к нему можно легко подсоединиться при помощи второго типа драйвера. Если интересно, то могу рассказать как. Так вот наша ситуация это когда драйвер в списке драйверов есть, а устройства в списке устройств нет. Цитата(AndrejM @ Feb 28 2014, 07:13)  раз вы только начинаете со всем этим разбираться , может лучше взять другой дисплей у которого rgb интерфейс единственный ? ничего не нужно ни куда писать "для начала изображения" , подключите к боне без всякого i2c . дисплев таких большинство , и они ничего не стоят по сравнению с теми усилиями которые вы затратите не зная что делать наверняка. ну разве что в учебных целях задача как вы поставили хороша. Я подключал к близкому процессору дисплей по RFBI. Там тоже надо было много писать для конфигурации. I2C устройство подключить очень легко. Проблемы будут попозже, но и они разрешимы.
|
|
|
|
|
Feb 28 2014, 13:34
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 25-03-08
Пользователь №: 36 216

|
Цитата(AndrejM @ Feb 28 2014, 08:13)  раз вы только начинаете со всем этим разбираться , может лучше взять другой дисплей у которого rgb интерфейс единственный ? ничего не нужно ни куда писать "для начала изображения" , подключите к боне без всякого i2c . дисплев таких большинство , и они ничего не стоят по сравнению с теми усилиями которые вы затратите не зная что делать наверняка. ну разве что в учебных целях задача как вы поставили хороша. Да! Я только начинаю в этом разбираться! Но такой дисплей необходим для решения конкретной задачи.
|
|
|
|
|
Feb 28 2014, 16:22
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 25-03-08
Пользователь №: 36 216

|
Цитата(SM @ Feb 28 2014, 18:25)  В загрузчике это вообще не надо никак делать, загрузчику дисплей не нужен, как и его инициализация.
А порулить I2C-устройством можно и из юзерспейса для начала, используя i2c /dev interface (соотв. докуменатция живет в i2c/dev-interface), писать kernel driver можно уже потом, когда понимание придет, что именно писать. Если можно - поподробнее пожалуйста об этом. А вообще давайте представим, что имеется BeagleBone (как прототип конечного устройства), подключенный к хосту через USB и Ethernet. С хоста мы можем увидеть процесс загрузки ВВ и наверное порулить I2C, и остановить загрузку после u-boot и ещё много чего, Но мы НИЧЕГО не увидим на OLED-е пока не отправим на него по I2C набор кодов настройки отображения. Что же тогда делать если хоста не было бы?! На целевой системе он мне не нужен!!! Тогда на каком этапе "прикручивать" драйвер и как его писать? На этапе отладки ПО наверное как можно раньше, а на целевой системе пользователю точно не нужно видеть процесс загрузки, ему и заставки хватит!
|
|
|
|
|
Feb 28 2014, 17:09
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
драйвер пишется и прикручивается при помощи кросс-компиляции на рабочей линукс-машине. Обычном x86 компе. Далее - собирается линукс, делается ядро, корневая ФС, и т.д., все это делается на PC, далее заливается каким то образом (при помощи загрузки платы с СД-карты и последующего копирования в NAND, с изернета, т.п.) в NAND флеш, затем - устройство включается, грузится с нанд и работает само по себе. Без хоста тут - совсем никак. По любому надо как-то делать начальное прошивание платы, и делается это через терминал, как либо подключенный, чаще всего через отладочный COM-порт, туда же ядро и приложения все свои консольные сообщения сыпят. То есть необходимо иметь отладочный КОМ-порт, и возможность загрузки пустой платы либо с SD-карты, либо с изернета, либо еще как.
Дисплей устройства нужен ТОЛЬКО для отображения информации конечного приложения, работающего с дисплеем. Все остальное работает или само по себе, или через ком-порт.
|
|
|
|
|
Mar 1 2014, 22:19
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Цитата(Tarbal @ Mar 2 2014, 01:32)  А именно смотрит в той директории, что я указал. не знаю, что там за "директории", но просто и без затей: Код root@arm9260:~# i2cdetect -y 0 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 70: 70 -- -- -- -- -- -- -- на 0x68 rtc часы.. (UU означает, что адрес под контролем драйвера) на 0x70 atmega8
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|