Ник:
Пароль:

Контакты

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

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Отладочные платы » SK-MAT91SAM9G45/M10
подключение UART0 на плате SK-MAT91SAM9G45
buletz
Добавлено 22.12.2011 19:58
0
Сообщение: 1
buletz
3

Пункты: 5920
Регистрация: 16.11.2011
Пол: Мужчина
пытюась передавать данные на плату по UART0, который выведен на разъем X4.

в дефолтовом конфиге ядра который поставляется с платой по умолчанию UART0 отключен.
вот содержимое board-sam9m10g45ek.c:
Код
/* USART0 not connected on the -EK board */
/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
at91_register_uart(AT91SAM9G45_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);


я поменял на эту часть на:

Код
// USART0 on ttyS1. (Rx, Tx, RTS, CTS)
at91_register_uart(AT91SAM9G45_ID_US0, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
// USART1 on ttyS2. (Rx, Tx, RTS, CTS)
at91_register_uart(AT91SAM9G45_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);


но видимо одного этого недостаточно.
нагуглил схожую тему:
http://starterkit.ru/html/index.php?name=forum&op=view&id=2141&num=13

там сказано, что надо еще
прописать порты и создать линки в /dev

прописать порты- видимо это уже сделал в .c файле борды.
а как создавать линки в /dev? пытался нагуглить эту тему, но ничего толкого не нашел. дайте ссылочку где почитать как это делается.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 22.12.2011 22:06 Сообщение: 2
Jury093
4.5

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

как пытаетесь?
еле нашел - просветляйтесь

Цитата
а как создавать линки в /dev? пытался нагуглить эту тему, но ничего толкого не нашел. дайте ссылочку где почитать как это делается.

например

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
buletz
Добавлено 22.12.2011 23:31 Редактировалось 22.12.2011 23:32 Сообщение: 3
buletz
3

Пункты: 5920
Регистрация: 16.11.2011
Пол: Мужчина
не растёт кокос что-то.

имею:
Код
# echo 123 >/dev/ttyS0
123 << работает норм
# echo 123 >/dev/ttyS1
-sh: can't create /dev/ttyS1: No such device or address<< проблема


в логе загрузке у меня видно только два уарта: дебаговый (ttyS0) и uart1(ttyS2), несмотря на то что бордовый файл board-sam9m10g45ek.c я скорректировал, а именно: добавил at91_register_uart для AT91SAM9G45_ID_US0.

вот из лога загрузки:
Код
...
io scheduler noop registered (default)
atmel_usart.0: ttyS0 at MMIO 0xfeffee00 (irq = 1) is a ATMEL_SERIAL
atmel_usart.2: ttyS2 at MMIO 0xfff90000 (irq = 8) is a ATMEL_SERIAL
brd: module loaded
....


в списке девайсов у меня ttyS1 виден:

Код
# ls /dev/ttyS*
/dev/ttyS0 /dev/ttyS3 /dev/ttySAC0 /dev/ttySAC3 /dev/ttySC2 /dev/ttySC5
/dev/ttyS1 /dev/ttyS4 /dev/ttySAC1 /dev/ttySC0 /dev/ttySC3
/dev/ttyS2 /dev/ttyS9 /dev/ttySAC2 /dev/ttySC1 /dev/ttySC4


командой mknod я так и не смог воспользоваться т.к. у меня изначально при старте видны ttyS0...ttyS3.
видимо mknod и не нужен мне.

я в раздумьях...
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.12.2011 00:10 Сообщение: 4
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Код
# echo 123 >/dev/ttyS0

это вы шлете в отладочную консоль - было бы странно не увидеть эхо..
Код
at91_register_uart(AT91SAM9G45_ID_US0, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);

вот тут включенно аппаратное квитирование и два варианта - пины "подрались" с другой периферией - проверяется в файле *devices.c или на пин не приходит нужный уровень и порт (драйвер) справедливо его ждет..
верните все "на исходную" и проделайте то, что я делал с проволочкой (пины 7 и 8) и то же самое с /dev/ttyS2 (пины 9 и 10)
должно быть примерно как из вышеприведенной ссылки:
Код
atmel_usart.0: ttyS0 at MMIO 0xfeffee00 (irq = 1) is a ATMEL_SERIAL
atmel_usart.1: ttyS1 at MMIO 0xfff8c000 (irq = 7) is a ATMEL_SERIAL
atmel_usart.2: ttyS2 at MMIO 0xfff90000 (irq = 8) is a ATMEL_SERIAL


зы я спать..

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

Пункты: 5920
Регистрация: 16.11.2011
Пол: Мужчина
порт UART0 наконецто появился при загрузке:

Код
atmel_usart.0: ttyS0 at MMIO 0xfeffee00 (irq = 1) is a ATMEL_SERIAL
atmel_usart.1: ttyS1 at MMIO 0xfff8c000 (irq = 7) is a ATMEL_SERIAL
atmel_usart.2: ttyS2 at MMIO 0xfff90000 (irq = 8) is a ATMEL_SERIAL


дело было в команде at91_register_uart. а именно, у меня было (неправильный вариант):
Код
at91_register_uart(AT91SAM9G45_ID_US0, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
// USART1 on ttyS2. (Rx, Tx, RTS, CTS)
at91_register_uart(AT91SAM9G45_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);


при этом команда имеет формат:
void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)

т.е. у меня неправильно был указан portnr, и походу сначала на ttyS2 привязывался UART0, а затем поверх него UART1. ну и до кучи удалил RTS и CTS, т.к. они на плате не разведены.

в итоге имеем:

Код
at91_register_uart(AT91SAM9G45_ID_US0, 1, 0);// USART0 on ttyS1.
at91_register_uart(AT91SAM9G45_ID_US1, 2, 0);// USART1 on ttyS2.

и порт стал региться норм.

правда передавать через него пока все равно не получается. но думаю это я уже добью.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-MAT91SAM9G45/M10