Технический форум по робототехнике.
mgalemin » 14 авг 2011, 16:08
В 3.1-rc1 пока нет, на LKML мелькают патчи за конец 2010 года, сам драйвер нашел только в master репозитория что давал выше. Подождем... Хотя патч есть - значит пока есть с чем работать.
Sigi » 14 авг 2011, 17:35
mgalemin писал(а):Да, в linux есть драйвер i2c шины, но нет драйвера для этого акселерометра. Не будет же user space приложение напрямую работать с данными от чипа (может на шине висят еще 32 устройства) или обрабатывать прерывания от микросхемы - это работа драйвера.
А я так и хотел сделать (из своего приложения по I2C просто считывать данные)
Правда я думаю это вообще на DSP ядре делать, там же его можно отфильтровать, DSP для этого на мой взгляд лучше подходит. На неделе собираюсь поехать за датчиком, там посмотрим как с ним работать. В любом случае наличие патча явно упростит задачу.
А Вы кстати какую версию ядра используете? 3.1?
mgalemin » 15 авг 2011, 01:35
3.1 еще только rc1 (release candidate). Пока использую 2.6.39.1, скоро перейду на 3.x - жду когда в mainline добавят драйвер mt9p031 от Atpina (это модуль камеры, который я использую).
Sigi » 18 авг 2011, 13:02
mgalemin писал(а):3.1 еще только rc1 (release candidate). Пока использую 2.6.39.1, скоро перейду на 3.x - жду когда в mainline добавят драйвер mt9p031 от Atpina (это модуль камеры, который я использую).
А DSPlink на этом релизе работает? У меня при попытке включить питание ядра командой "lpmON.x470uC" система выдает:
- Код: Выделить всё • Развернуть
==== LPM ON Test ====
app: LPM_open
app: LPM_set(LPM_CTRL_REFCOUNTOVR)
Segmentation fault
Не сталкивались с этой проблемой?
Кстати когда я пытался использовать ядро 2.6.38 была такая же ошибка, я после этого откатился до 2.6.32, на нем все работает.
Добавлено спустя 1 час 58 минут 21 секунду:Пока смог найти, что ошибка происходит в lpm в файле "lpm_driver.c" при вызове процедуры "down_interruptible(&inst->sem)" в процедуре "lpm_ioctl":
- Код: Выделить всё • Развернуть
static int lpm_ioctl(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long args)
{
struct LPM_Dev *dev;
LPM_Instance *inst;
LPM_Client *client;
LPM_Status lpmStat = LPM_SOK;
int stat = 0;
TRACE(KERN_ALERT "--> lpm_ioctl, cmd: 0x%X\n", cmd);
/* get pointer to this driver's device object */
dev = container_of(inode->i_cdev, struct LPM_Dev, cdev);
/* set alias to instance object for this device */
inst = &dev->inst[iminor(inode)];
/* enter critical section */
if (down_interruptible(&inst->sem)) {
stat = -ERESTARTSYS;
goto fail;
}
...
Я так понимаю проблема в несовместимости модуля с текущей версией ядра, правда я пока не понял, что надо поменять, что бы все заработало.
mgalemin » 18 авг 2011, 16:49
Я не совсем понял что именно не работает. Вы скомпилировали lpm_omap3530.ko используя исходники 2.6.38 и на ядре 2.6.38 вылетает ошибка, но после сборки под 2.6.32 все работает на 2.6.32? Просто если вы собрали LPM модуль используя исходники 2.6.32, то и работать он будет на 2.6.32 (на 2.6.38 не будет, т.к. там много изменений было).
P.S. 2.6.32 для Beagleboard (validation) на сегодняшний день самое проверенное и стабильное ядро. В нем были смержены все PM вкусности из репозиториев Arago (сейчас большинство уже в mainline). Если нет необходимости переходить на новое ядро - я бы на Вашем месте не переходил бы.
Sigi » 18 авг 2011, 19:36
mgalemin писал(а):Я не совсем понял что именно не работает. Вы скомпилировали lpm_omap3530.ko используя исходники 2.6.38 и на ядре 2.6.38 вылетает ошибка, но после сборки под 2.6.32 все работает на 2.6.32? Просто если вы собрали LPM модуль используя исходники 2.6.32, то и работать он будет на 2.6.32 (на 2.6.38 не будет, т.к. там много изменений было).
Я компилировал модуль для 2.6.39 и для 2.6.38, и запускал я соответственно под той же версией ядра, что и компилировал, и в том и в другом случае вылетает одна и та же ошибка. Работает все на модуле скомпилированном для ядра 2.6.32, и соответственно под ядром 2.6.32.
mgalemin писал(а):P.S. 2.6.32 для Beagleboard (validation) на сегодняшний день самое проверенное и стабильное ядро. В нем были смержены все PM вкусности из репозиториев Arago (сейчас большинство уже в mainline). Если нет необходимости переходить на новое ядро - я бы на Вашем месте не переходил бы.
Я не знал, спасибо за совет, в этом случае не буду переходить на новое ядро. Кстати, а что такое "PM вкусности"?
ПС Кстати купил акселерометр, осталось припаять его и заставить работать
mgalemin » 19 авг 2011, 02:09
Хм, тогда затрудняюсь ответить почему модуль не работает.
PM - это Power Management, в частности такая полезная штука как SmartReflex - подстройка напряжения ядра соответственно частоте, нужна для запуска OMAP3630 на 1 HGz.
Завидую белой завистью.
Так быстро акселерометр с Digikey доставили? И выбор, как я понимаю, пал на LSM303DLM?
Я кстати решил добавить на плату еще гироскоп
L3G4200D, и как ни странно у Linaro в ветке для ux500 тоже есть для него драйвер, чему я безумно рад.
Пора браться за разводку платы.
Vooon » 19 авг 2011, 08:38
Это все потому что аксель/магнитометр, гира и барометр уже не плате
Кстати похоже что U9500 может I2C 400 KHz.
Sigi » 19 авг 2011, 09:24
mgalemin писал(а):Хм, тогда затрудняюсь ответить почему модуль не работает.
PM - это Power Management, в частности такая полезная штука как SmartReflex - подстройка напряжения ядра соответственно частоте, нужна для запуска OMAP3630 на 1 HGz.
Завидую белой завистью.
Так быстро акселерометр с Digikey доставили? И выбор, как я понимаю, пал на LSM303DLM?
Я кстати решил добавить на плату еще гироскоп
L3G4200D, и как ни странно у Linaro в ветке для ux500 тоже есть для него драйвер, чему я безумно рад.
Пора браться за разводку платы.
Не работает он как я понял т.к. написан был под более старую версию ядра, надо сам модуль переписывать.
Акселерометр я в Терраэлектронике купил, он там в наличии, так что забрал почти сразу. Да купил его, вернее почти его, LSM303DLHTR.
Vooon писал(а):Это все потому что аксель/магнитометр, гира и барометр уже не плате
Кстати похоже что U9500 может I2C 400 KHz.
Эх если бы у меня акселерометрт был на плате... припаять его будет не просто
Vooon » 19 авг 2011, 10:21
Без break-out board что ли? Тогда он может еще и не заработать.
Я думал sparkfun'овский комплект.
Ну а размещение на плате имеет свои недостатки.
mgalemin » 19 авг 2011, 10:42
Vooon писал(а):Без break-out board что ли? Тогда он может еще и не заработать.
What does it mean?
Update: Сорри, с рабочего компьютера писал. Что значит модуль может не заработать, это же просто микросхема?..
P.P. Кстати, завидую еще что есть всякие террыэлектроники, тут в плане поставки электроники совсем болото.
Vooon » 21 авг 2011, 20:18
Может не заработать если не сделать по рефренсу питание и прочие части.
ЗЫ: Дэйв как-то же справляется...
http://www.youtube.com/user/EEVblog
Sigi » 21 авг 2011, 22:22
Vooon писал(а):Может не заработать если не сделать по рефренсу питание и прочие части.
А, что там можно не так сделать? Там схема подключения элементарная (четыре конденсатора да подключение к питанию и шине данных).
mgalemin » 22 авг 2011, 01:42
Не особо понял что можно сделать не так с питанием и с чем же справляется Дэйв, ну да ладно...
Sigi » 25 авг 2011, 11:35
А как его вообще к плате присоединить?
Я сегодня попытался его припаять, приклеил её кверху ногами на макетную плату и собирался припаять проводками контактные площадки к плате. Но припаяв первый провод, я слегка дернул его (что бы проверить надежность пайки) и он оторвался вместе с контактной площадкой. Пока я вижу вариант припаять провода жестко к плате, а потом уже к микросхеме подпаивать.