Ник:
Пароль:

Контакты

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
CAN (MCP2510) на SK-MAT91SAM9260 в Linux
CerJo
Добавлено 01.02.2011 15:14
0
Сообщение: 1
CerJo
5

Пункты: 365
Регистрация: 01.02.2011
Имеется плата SK-MAT91MAS9260 с установленным на неё Linux 2.6.24 (родной, поставлялся вместе с платой). Возникла необходимость подключить к данной плате по SPI устройство MCP2510 (CAN).
Есть ли возможность включить в ядро поддержку CAN и работать с MCP2510 через вот эту программу: http://user.chol.com/~ascbbs/ccscdrv2/can-mcp251x.c ? Если есть, то где можно взять необходимую информацию по закачке, установке и настройке?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 01.02.2011 17:49 Сообщение: 2
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
а может есть смысл перейти на более свежее ядро? типа 2.6.36
там уже есть:
/drivers/net/can/mcp251x.c
Код
/*
* CAN bus driver for Microchip 251x CAN Controller with SPI Interface
*
* MCP2510 support and bug fixes by Christian Pellegrin
* <chripell@evolware.org>

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
CerJo
Добавлено 07.02.2011 19:11 Сообщение: 3
CerJo
5

Пункты: 365
Регистрация: 01.02.2011
Jury093, спасибо за совет. Попробовали собрать ядро 2.6.34 (Проверили, CAN поддерживает). Выставили настройки make файла как в предыдущей версии 2.6.24 (рабочий конфиг для нашей платы) и дополнительно доставили опции CAN.

В неожиданном месте возникла ошибка о том, что структура gpio_spi... не определена.
Скорее всего неправильно был настроен make файл. Шаманство с "отключить вот это" и "включить вот это" не помогло. Может ли кто-нибудь подсказать, как нужно настроить make файл, или (что было бы лучше) дать ссылочку на готовый конфиг? Или может быть есть у кого-то уже готовое ядро для данной платы, буду благодарен. Если найдется готовый конфиг, прошу залить на мыло.

Заранее брагодарен.
--
mailto: Cep-Jo@mail.ru
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 07.02.2011 20:56 Редактировалось 07.02.2011 21:18 Сообщение: 4
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
а.. это.. кусок лога приложит, там где ругается..
и что у вас в качестве SPI используется - GPIO доступ или аппаратный вариант? а в файл борды устройство прописали?
я бы "собезьянничал" из файла board-yl-9200.c с поправками под себя, типа:
Код
{ /* CAN */
.modalias = "mcp2510",
.chip_select = 1,
.max_speed_hz = 25000 * 26,
.irq = AT91_PIN_PC0,
}


кстати, make_kernel (если взят из старого ядра) вероятно тут непричем..
то, что внутри драйвера написано, делали?
Код
* Your platform definition file should specify something like:
*
* static struct mcp251x_platform_data mcp251x_info = {
* .oscillator_frequency = 8000000,
* .board_specific_setup = &mcp251x_setup,
* .model = CAN_MCP251X_MCP2510,
* .power_enable = mcp251x_power_enable,
* .transceiver_enable = NULL,
* };
*
* static struct spi_board_info spi_board_info[] = {
* {
* .modalias = "mcp251x",
* .platform_data = &mcp251x_info,
* .irq = IRQ_EINT13,
* .max_speed_hz = 2*1000*1000,
* .chip_select = 2,
* },
* };
*
* Please see mcp251x.h for a description of the fields in
* struct mcp251x_platform_data.

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

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

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
CerJo
Добавлено 08.02.2011 17:50 Редактировалось 08.02.2011 17:54 Сообщение: 6
CerJo
5

Пункты: 365
Регистрация: 01.02.2011
Jury093, вопросов касательно CAN пока никаких нету (скорей всего скоро возникнут), ибо ядро не собирается не из-за него. Т.е. в конфиге отключили поддержку CAN и при попытке собрать ядро - возникает та же ошибка, текст которой приведён ниже:
Цитата
arch/arm/mach-at91/at91sam9260_devices.c:548: error: variable 'sk_spi_gpio_platform_data' has initializer but incomplete type
arch/arm/mach-at91/at91sam9260_devices.c:549: error: unknown field 'sck' specified in initializer
arch/arm/mach-at91/at91sam9260_devices.c:549: warning: excess elements in struct initializer
arch/arm/mach-at91/at91sam9260_devices.c:549: warning: (near initialization for 'sk_spi_gpio_platform_data')
arch/arm/mach-at91/at91sam9260_devices.c:550: error: unknown field 'mosi' specified in initializer
arch/arm/mach-at91/at91sam9260_devices.c:550: warning: excess elements in struct initializer
arch/arm/mach-at91/at91sam9260_devices.c:550: warning: (near initialization for 'sk_spi_gpio_platform_data')
arch/arm/mach-at91/at91sam9260_devices.c:551: error: unknown field 'miso' specified in initializer
arch/arm/mach-at91/at91sam9260_devices.c:551: warning: excess elements in struct initializer
arch/arm/mach-at91/at91sam9260_devices.c:551: warning: (near initialization for 'sk_spi_gpio_platform_data')
arch/arm/mach-at91/at91sam9260_devices.c:552: error: unknown field 'num_chipselect' specified in initializer
arch/arm/mach-at91/at91sam9260_devices.c:552: warning: excess elements in struct initializer
arch/arm/mach-at91/at91sam9260_devices.c:552: warning: (near initialization for 'sk_spi_gpio_platform_data')
arch/arm/mach-at91/at91sam9260_devices.c:559: error: 'platform_data' undeclared here (not in a function)
make[1]: *** [arch/arm/mach-at91/at91sam9260_devices.o] Ошибка 1
make: *** [arch/arm/mach-at91] Ошибка 2
arm-none-linux-gnueabi-objcopy: 'vmlinux': No such file
arm-none-linux-gnueabi-objcopy: error: the input file 'vmlinux' is empty
gzip: linux.bin: No such file or directory
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 08.02.2011 18:07 Сообщение: 7
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
к вечеру мозг уже истощен..
Цитата
и что у вас в качестве SPI используется - GPIO доступ или аппаратный вариант? а в файл борды устройство прописали?

и?

вероятно у вас не подключен или не прописан linux/spi/spi_gpio.h

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
CerJo
Добавлено 10.02.2011 07:51 Редактировалось 10.02.2011 07:52 Сообщение: 8
CerJo
5

Пункты: 365
Регистрация: 01.02.2011
SPI у нас видится и используется как spidev1.0, управляем мы программным способом.
Всё таки мы усомнились в непорочности того ядра, которое у нас было(2.6.34) и попробовали поставить его с чистого листа. Почём не зря, ибо сборка пошла. Ругался только makefile.boot в папке math-at91, если я не ошибаюсь, по 2-м причинам.
1) else ifeq (...), писал, что после else идёт код, чего быть не должно. Перенести ifeq(...) на новую строчку, ошибка пропала.
2) не хватало ifend в конце кода. Дописали - ошибки пропали вообще.

Ядро собралось для нашей платы, как надо. Конфиги более/менее соответствуют тем, что из 24-й версии ядра, которое работает на нашей плате стабильно.

По U-Boot заливаем ядро через putty, всё идёт стабильно, zlinux и rootfs льются.
Перезапускаем плату - ошибка загрузки: пишет, что контрольная сумма не верна "... data CRC"

Попробовали снова залить старую 2.6.24 - всё работает.

Эта проблема уже рассматривалась с не совпадением контрольной суммы конкретно на форуме, но решения так и не было найдено.

Что делать даже и не знаем, и не до конца понимаем, как работает сборка rootfs файла из папки mnt.

Спасибо за помощь.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 10.02.2011 08:56 Редактировалось 10.02.2011 09:34 Сообщение: 9
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
только makefile.boot в папке math-at91, если я не ошибаюсь, по 2-м причинам.

угу, я с этим сталкивался достаточно давно - ошибка синтаксиса

Цитата
По U-Boot заливаем ядро через putty, всё идёт стабильно, zlinux и rootfs льются.
Перезапускаем плату - ошибка загрузки: пишет, что контрольная сумма не верна "... data CRC"

пока видятся два варианта:
- слишком большое ядро >5МБ
- "нахлест" рутовой на ядро при записи во флеш или если пишите скриптом из uboot - реальный размер ядра больше прописанного во флеше в скрипте..

Цитата
Что делать даже и не знаем, и не до конца понимаем, как работает сборка rootfs файла из папки mnt.

не знаю, как сейчас, но раньше лежал имидж рутовой и пара скриптов распаковать/запаковать. исследуйте свои скрипты..

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