Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
Эмуляция master-контроллера spi через gpio в linux
rw9uao
Добавлено 07.08.2010 11:50 Сообщение: 31
rw9uao
Ранг
5

Группа: Клиенты
Пункты: 6973
Регистрация: 26.03.2009
в папке include/arch/arm лежит загадочный файл nuc900_gpio.h в нем все-все написано. а в папке дрова/spi есть файлик s3c24xx_gpio.c в котором и надо кое-что докрутить. не забываем включить битбанг. самое сложное - описать board_info для этого драйвера. три дня убил. в боард_инфо надо указать модель = 7843. работа с прерыванием nIRQ1 описана в драйвере ts2007 для нюка. надо допиливать.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 07.08.2010 11:51 Редактировалось 07.08.2010 11:52 Сообщение: 32
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Юр, ви таки будете смеяться, но я завел SPI GPIO на нюке

у меня слово нюк вызвает стойкую ассоциацию с суперигрушкой 90-х - Duke Nuken :)))
современные шутеры и рядом не валялись (imho)

а-а-а.. памираю.. полцарства за секрет о пиндефайнах мнука!!!
худшую половину, разумеется :-P

update опа! пока калякал уже и ответ подогнал, данке! счас буду посмотреть :)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 07.08.2010 18:57 Редактировалось 07.08.2010 19:11 Сообщение: 33
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
ща разобью все апстену >8-[
приживил драйвер, по идее должен махать пинами (пока не проверить) застрял на вот такой хрени
из файла борды идет вызов типа
Код
nuc900_set_board(&nuc900_board);
//jury
printk("*** ARRAY_SIZE(nuc950_spi_board_info)=%u\n", ARRAY_SIZE(nuc950_spi_board_info));
spi_register_board_info(nuc950_spi_board_info, ARRAY_SIZE(nuc950_spi_board_info));

напихал в SPI.C выводов и вижу
Код
*** ARRAY_SIZE(nuc950_spi_board_info)=1
spi_register_board_info start
sizeof(*bi)=12 sizeof *info=40 n=1

и все..
вот исходник п/п
Код
int __init
spi_register_board_info(struct spi_board_info const *info, unsigned n)
{
struct boardinfo *bi;
printk("spi_register_board_info start\n");
printk("sizeof(*bi)=%u sizeof *info=%u n=%u\n", sizeof(*bi), sizeof *info, n);
bi = kmalloc(sizeof(*bi) + n * sizeof *info, GFP_KERNEL);
if (!bi)
return -ENOMEM;
printk("spi_register_board_info 1\n");
printk("n=%u\n", n);
bi->n_board_info = n;
memcpy(bi->board_info, info, n * sizeof *info);

down(&board_lock);
list_add_tail(&bi->list, &board_list);
up(&board_lock);
printk("spi_register_board_info finish\n");
return 0;
}

т.е. выпадает на запросе смешных 12+40*1 байт
вопрос - чего ему надо то?

млин.. сраный спиай - уже 10 раз бы прикрутил тачскрин на и2ц.. да все лень до магазина доехать.. :'(

зы колбашусь на ядре 17.14

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
rw9uao
Добавлено 07.08.2010 19:28 Редактировалось 07.08.2010 19:32 Сообщение: 34
rw9uao
Ранг
5

Группа: Клиенты
Пункты: 6973
Регистрация: 26.03.2009
Юр. я неделю е#бался. пободайся маленько, я тебе потом в почту исходника кусок брошу =) там все просто. запиши на бумажке последовательно, какие ему нужны поля из sp->info[0]->board_info. и почему у тебя modalias = NULL.
а I2C у меня заняты. оба. и битбанг GPIO на них не проканает.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 07.08.2010 19:29 Сообщение: 35
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
так вопрос вроде решил - швайнский линукс..
Код
spi_register_board_info start
sizeof(*bi)=12 sizeof *info=40 n=1
spi_register_board_info 1
n=1
spi_register_board_info finish

едем дальше
Код
ts: Compaq touchscreen protocol output
*** ads7846_probe start
ads7846: probe of spi0.0 failed with error -22

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 07.08.2010 19:31 Сообщение: 36
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Юр. я неделю е#бался. пободайся маленько

в силу своей скудоумности я уже не одну неделю бодаюсь - все бодало сточил :)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
rw9uao
Добавлено 07.08.2010 19:58 Редактировалось 07.08.2010 20:00 Сообщение: 37
rw9uao
Ранг
5

Группа: Клиенты
Пункты: 6973
Регистрация: 26.03.2009
Цитата
ads7846: probe of spi0.0 failed with error -22

пропиши параметры этому устройству.
.x_max
.x_min
и т.д.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 07.08.2010 20:03 Редактировалось 07.08.2010 20:03 Сообщение: 38
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
пропиши параметры этому устройству.
.x_max
.x_min
и т.д.

не-не, это было прописано сразу, опираясь на Сашины выкладки в первом сообщение треда. кое-где стоят заглушки - стремлюсь получить работоспособную рыбу всей цепочки
в том случае вылет был на проверке наличия прерывания у и/ф SPI. отключил:
Код
ts: Compaq touchscreen protocol output
*** ads7846_probe start
*** ads7846_probe 1
*** ads7846_probe 2
*** ads7846_probe 3
*** ads7846_probe 4
ads7846 spi0.0: touchscreen, irq 2
*** ads7846_read12_ser start
*** ads7846_read12_ser 1
*** ads7846_read12_ser 2
*** sample=FFF
*** ads7846_read12_ser finish
input: ADS784x Touchscreen as /class/input/input0
*** ads7846_probe finish

теперь буду смотреть - а шевелятся ли ножки у АРМа? :)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
rw9uao
Добавлено 07.08.2010 20:05 Сообщение: 39
rw9uao
Ранг
5

Группа: Клиенты
Пункты: 6973
Регистрация: 26.03.2009
я Цэшкой смотрел, вроде шевелятся. у меня прерывание не происходит. а как оно без прерывания по таймеру работает я не понял.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 07.08.2010 20:47 Редактировалось 07.08.2010 21:30 Сообщение: 40
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
хм.. и тут без глюков не обошлось, заленился тестер подключать, навтыкал принтов при вызове шевеления пинами
вот неправленный лог
Код
+++ setsck on=0
+++ setmosi on=-2147483648
+++ setsck on=1
+++ getmiso
...
*** sample=FFF

прописал взведение 1 если не ноль
Код
+++ setsck on=0
+++ setmosi on=1
+++ setsck on=1
+++ getmiso
...
*** sample=DFF

:)
теперь буду выяснять чего не хватает, чтобы эта байда заработала с т.з. штатных софтин..
кстати, ты таймер в ядре взводил или оно типа само все делает?

update тэкс.. поторопился.. видимо бит случайно сбросился, пока считываются 0xfff :)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux