Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Отладочные платы » SK-MNUC950
About SPI (NUC950)
Jury093
Добавлено 15.01.2010 16:16
0
Сообщение: 1
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Захотелось мне странного - поднять этот интерфейс.
Появилась пара экранчиков, соответственно почему бы и нет. Пристальное изучение схемы на плату, даташита на камень и PG на него же привело в сильное уныние..
Братья-китайцы скрестили пины SPI и _2_ шин I2C, т.о. мои любимые часики отсыхают при таком раскладе..
Более того (камешек к Павлу) на гребенку выведена масса контактов от мультимонстра (тачпад, GPIO) и всего 8 от АРМа, из которых 4 это уарты.
В общем, путем пробрасывания пары проводков и отрывания I2C я изобразил подобие аппаратного SPI. Подсветку (~6в) пока взял от драйвера уарта.
Жизнеспособность физики соединений была успешно проверена примитивной прогой - экран интится байтами с консоли. :)
Полез в ядро смотреть как поднимается SPI, в трактовке китайцев толи USI толи SSP..
Перелопатил хидеры и стартапы для платы, как говорится "НИколай Харитон Ульяна..".. Никакими силами не поднимается, не USI (в логе видно что успешно стартует, но не в девайсах и не в структурах /sys /proc его не видно), не bitbanding spi, которому подавай структуры а-ля в атмеловских бордах..
В общем, если есть идею, то прошу помочь ;)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.01.2010 17:02 Сообщение: 2
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
Конечная цель какая - полноценный spi драйвер для мнука или прикрутить lcd ?
Если второе так я на атмеле наоборот постарался избавиться от линуксового драйвера spi - он наоборот только мешает :)
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 15.01.2010 19:42 Сообщение: 3
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Конечная цель какая - полноценный spi драйвер для мнука или прикрутить lcd ?
Если второе так я на атмеле наоборот постарался избавиться от линуксового драйвера spi - он наоборот только мешает :)

Конечная цель - развлечься (с пользой) :)
Вчера день положил, припаивая мгтф к разъему 0.5 и пристраивая эту радость к МНУКу. Как водится, перепутал проводки и 6в для подсветки засадил на CLK индикатора, как ни странно выжил (индикатор). Уже к вечеру оно стало интиться..
Сегодня лопатил ядро, драйвер то у Нувотона есть - аппаратный и битовый. Да вот в начальных настройках платы есть только упоминание о USI_IRQ. Возможно сам драйвер рабочий, может и писать не придется - проблема в его запуске.
Схожая фигня была в процессе прикручивания И2Ц, но там все получилось. А вот тут пока буксую..
Рассчитывал взять это хозяйство в командировку в облагороженном виде - придется тащить с монтажем на мгтф затермопистолетив :)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.01.2010 20:27 Сообщение: 4
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
Цитата
драйвер то у Нувотона есть - аппаратный и битовый. Да вот в начальных настройках платы есть только упоминание о USI_IRQ. Возможно сам драйвер рабочий, может и писать не придется - проблема в его запуске.


В доках ядра достаточно хорошо spi-подсистема описана. Для примера можно атмеловский борд-файл взять за основу. Если кратко, в бордфайле нужно
1 Объявить (продекларировать) контроллер spi как драйвер платформы и если нужно закрепить за ним данные для инициализации и правильной работы - типа адреса io и тд.
2 Продекларировать устройства которые будут висеть на этом контроллере - заполнить массив специальных структур, там совсем минимаьное кол-во данных, типа номер канала, скорость и чипселект и главное алиас (имя) модуля который будет использоваться для этого устройства.
После инициализации контроллера но на каком точно этапе я не знаю, массив просматривается и вызываются ф-ции _probe тех модулей которые записаны в этих структурах.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 15.01.2010 22:45 Редактировалось 16.01.2010 00:15 Сообщение: 5
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Спасибо! Когда все изложено доступно и грамотно , то намного проще разбираться в последовательности действий.
На той неделе попробую позапускать. Неспеша и не торопясь :)

PS Млин.. вот что спешка и нетерпение делают - закинул невод в гугль, чуть ли не на первой странице
http://www.mail-archive.com/spi-devel-general@lists.sourceforge.net/msg02713.html
я думаю что мне по образу и подобию :)

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

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
долбанный SPI!!! и китайцы такие же! надоело делать насечки для напильника для обточки "матерой глыбы"! >8-/
че то где-то я упускаю.. эти кредели навертели там хрени всякой USI, SPI nuc950 w90p950, бесконечно меняют имена в хидерах и структурах.. мля.. нет чтоб сделать "по людски" как у Atmel. В UG 2 куцых странички о USI.
Чего в пазле не хватает? В файле борды прописал такое:
Код
#define SPIOFFSET 0x200
//#define SPIREG_SIZE 0x100
#define SPIREG_SIZE 0x30

static struct resource nuc900_usi_resource[] = {
[0] = {
.start = NUC900_PA_I2C + SPIOFFSET,
.end = NUC900_PA_I2C + SPIOFFSET + SPIREG_SIZE - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = IRQ_SSP,
.end = IRQ_SSP,
.flags = IORESOURCE_IRQ,
}
};

struct platform_device nuc900_device_usi = {
// .name = "nuc900-usi",
.name = "spi",
.id = -1,
.num_resources = ARRAY_SIZE(nuc900_usi_resource),
.resource = nuc900_usi_resource,
};
static struct platform_device *nuc900_devices[] __initdata = {
&nuc900_device_usi,
&nuc900_device_usb_ehci,
&nuc900_device_usb_ohci,
продолжение выкушено
}

static struct spi_board_info nuc900_spi_board_info[] __initdata = {
{
.modalias = "pcf8833",
// .mode = 0,
.max_speed_hz = 15000000,
.bus_num = 0,
.chip_select = 0,
};
static void __init nuc900_board_init(void)
{
spi_register_board_info(nuc900_spi_board_info, ARRAY_SIZE(nuc900_spi_board_info));
}

вот что мелькает в логах:
Код

Бла-бла
==== Set spi board
*** spi_register_board_info() start
*** spi_register_board_info() finish
бла-бла
pcf8833 spi fb driver
*** spi_register_driver() 1
бла-бла
NUC900 USI driver init!
NUC900 USI driver has been installed successfully!

и все.. ничего полезного более не происходит. в /DEV ничего не создается
прерывание для USI не занимается..
появляется /sys/bus/spi/driver/pcf8833

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