реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> mcp2510 через SPI к at91sam9260
Letum
сообщение Sep 7 2012, 14:38
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 7-09-12
Пользователь №: 73 436



Помогите, пожалуйста, разобраться с драйвером.
Есть самодельная плата на at91sam9260 к которой по SPI подключен mcp2510.
Разводка:



В файле борды прописано:

Код
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,
};

/*
* SPI devices.
*/
static struct spi_board_info ek_spi_devices[] = {

        { /* CAN */
                .modalias = "mcp251x",
                .platform_data = &mcp251x_info,
                .chip_select = 0,
                .max_speed_hz = 2 * 1000 * 1000,
                .bus_num        = 1,
                .irq = AT91_PIN_PC15,
        },
};


Dmesg выдаёт:
Код
atmel_spi atmel_spi.1: Atmel SPI Controller at 0xfffcc000 (irq 13)
mcp251x spi1.0: probed


Но в /dev can0 устройство не появляется.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 7 2012, 14:41
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Его там и не будет.
Код
root@crux:~# ifconfig -a                                                        
can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-0
          NOARP  MTU:16  Metric:1                                              
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0                    
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0                  
          collisions:0 txqueuelen:10                                            
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

И
Код
root@crux:~# ls /sys/class/net/                                                
can0  eth0  lo


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Letum
сообщение Sep 7 2012, 15:25
Сообщение #3





Группа: Участник
Сообщений: 14
Регистрация: 7-09-12
Пользователь №: 73 436



Да, недосмотрел я. Появилась в ifconfig-е, но не поднимается:
Код
[root@(none) ~]# ifconfig can0 up
mcp251x spi1.0: bit-timing not yet defined
mcp251x spi1.0: unable to set initial baudrate!
ifconfig: SIOCSIFFLAGS: Invalid argument

Go to the top of the page
 
+Quote Post
sasamy
сообщение Sep 7 2012, 17:56
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(Letum @ Sep 7 2012, 19:25) *
Да, недосмотрел я. Появилась в ifconfig-е, но не поднимается:


ifconfig с can bus вам не поможет - используйте iproute

https://www.ridgerun.com/developer/wiki/ind...and_use_CAN_bus

Go to the top of the page
 
+Quote Post
Letum
сообщение Sep 8 2012, 14:38
Сообщение #5





Группа: Участник
Сообщений: 14
Регистрация: 7-09-12
Пользователь №: 73 436



Цитата(sasamy @ Sep 7 2012, 21:56) *
ifconfig с can bus вам не поможет - используйте iproute

https://www.ridgerun.com/developer/wiki/ind...and_use_CAN_bus

Использую последний buildroot c iproute2 из комплекта.
Не проходит
Код
# ip link set can0 type can bitrate 1000000
mcp251x spi1.0: bit-timing calculation not available
RTNETLINK answers: Invalid argument

Может быть такое, что я неправильно переобозначил ноги RX и TX в arch/arm/mach-at91/at91sam9260_devices.c
И я несколько не понял, что делать с ногой CAN_RES
Go to the top of the page
 
+Quote Post
sasamy
сообщение Sep 8 2012, 16:41
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(Letum @ Sep 8 2012, 18:38) *
mcp251x spi1.0: bit-timing calculation not available


включите в ядре

[*] CAN bit-timing calculation
Go to the top of the page
 
+Quote Post
Letum
сообщение Sep 8 2012, 17:39
Сообщение #7





Группа: Участник
Сообщений: 14
Регистрация: 7-09-12
Пользователь №: 73 436



Вы не поверите, ставлю Bit-timing calculation и:
Код
uncompression error

-- System haltedRomBOOT
Go to the top of the page
 
+Quote Post
Letum
сообщение Sep 8 2012, 18:43
Сообщение #8





Группа: Участник
Сообщений: 14
Регистрация: 7-09-12
Пользователь №: 73 436



Предыдущее поправил, теперь грузится, но:
Код
ip link set can0 type can bitrate 1000000
mcp251x spi1.0: bitrate error 33.3% too high
RTNETLINK answers: Numerical argument out of domain
[root@(none) ~]# ifconfig can0 up
mcp251x spi1.0: bit-timing not yet defined
mcp251x spi1.0: unable to set initial baudrate!
ifconfig: SIOCSIFFLAGS: Invalid argument

Если указать частоту меньше, то:
Код
[root@(none) ~]# ip link set can0 type can bitrate 500000
[root@(none) ~]# ifconfig can0 up
setting trigger mode 2 for irq 111 failed (gpio_irq_type+0x0/0x18)
mcp251x spi1.0: failed to acquire irq 111
ifconfig: SIOCSIFFLAGS: Invalid argument
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 9 2012, 15:14
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



У AT91 была какая-то проблемма с IRQ на GPIO. Вроде как не умеет он реагировать только на один фронт. А драйвер реквестит irq с IRQF_TRIGGER_FALLING. попробуйте в платдату добавить:
Код
.irq_flags = (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING),


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Letum
сообщение Sep 10 2012, 08:40
Сообщение #10





Группа: Участник
Сообщений: 14
Регистрация: 7-09-12
Пользователь №: 73 436



Не проходит.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 10 2012, 11:31
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Что значит не проходит? Ошибки при компиляции? Или все та же?

Цитата(Letum @ Sep 7 2012, 18:38) *
Код
                .irq = AT91_PIN_PC15,

К тому же, Вы указываете номер пина, а не IRQ. Используйте gpio_to_irq().


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Letum
сообщение Sep 11 2012, 09:34
Сообщение #12





Группа: Участник
Сообщений: 14
Регистрация: 7-09-12
Пользователь №: 73 436



Раньше всё собиралось, но так же ругалось при попытке поднятия интерфейса can0
При замене .irq = AT91_PIN_PC15 на .irq = gpio_to_irq(AT91_PIN_PC15) ругается компилятор
Код
arch/arm/mach-at91/board-sam9260ek.c:153:3: ошибка: элемент инициализатора не является константой

Что я забыл? Насколько я понял, надо перевести PIN в GPIO, но как?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 11 2012, 17:39
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Посмотрите как сделано в других AT91 платах. gpio_to_irq это функция. А вы пытаетесь проинициализировать элемент структуры при ее обьявлении. Естественно компилятор не может это сделать.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Letum
сообщение Sep 12 2012, 07:25
Сообщение #14





Группа: Участник
Сообщений: 14
Регистрация: 7-09-12
Пользователь №: 73 436



Поправлю, попробую. В других AT91 платах данная функция, к сожалению, не используется.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 12 2012, 07:41
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



http://lists.infradead.org/pipermail/linux...ary/084404.html


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 08:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01517 секунд с 7
ELECTRONIX ©2004-2016