Ник:
Пароль:

Контакты

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 » Embedded Linux
AT91SAM9 Linux ttyS0 CS7 нехочет работать (прошу помощи гуру)
AlexShev
Добавлено 01.06.2010 12:26
0
Сообщение: 1
AlexShev
0

Регистрация: 10.07.2009
Есть такая проблема
Необходимо подключится по RS232 к устройствe.
Проблема состоит в том что устройство имеет 7-битный протокол. и По какой то непонятной причине плате никак нехочет выставлять 7 бит.

.c_cfleg = B300 | CS7 | CSTOPB | PARENB | CLOCAL | CREAD

такое впечетление что плата всегда работает в 8-битном режиме.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 01.06.2010 16:49 Сообщение: 2
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
А как вы определили что этот режим не установился ? И контроллер и драйвер в linux поддерживают этот режим.
drivers/serial/atmel_serial.c:
Код

/* byte size */
switch (termios->c_cflag & CSIZE) {
case CS5:
mode |= ATMEL_US_CHRL_5;
break;
case CS6:
mode |= ATMEL_US_CHRL_6;
break;
case CS7:
mode |= ATMEL_US_CHRL_7;
break;
default:
mode |= ATMEL_US_CHRL_8;
break;
}
Спуститься к концу Подняться к началу
Персональная информация
AlexShev
Добавлено 01.06.2010 18:27 Сообщение: 3
AlexShev
0

Регистрация: 10.07.2009
Я смотрел и документацию и етот файлик
Действительно и контролер и Linux должны поддерживать.

А определяю двумя способами
1. устройство не отвечает
2. смотрю осцелографом.

кеогда я тотже код собираю под ПС то все прекрасно работает и я могу посмотреть код который отправляет ПСишка (правельный ) соответственно потом можно его сравнить с тем что отправляет плата.

И разница там в последних битах каждого байта. Там типа или 7бит не выставилось или четность не раработает или нет стоп бита а стоит 8 бит чтото непонятное.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 01.06.2010 18:50 Сообщение: 4
Jury093
4.5

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

чтобы не плодить кучу наводящих вопросов, проще было бы выложить как вы пытаетесь настроить - типа фрагменты исходного текста или что делали. так можно долго гадать (доктор, в подвале что-то стучит, помогите мне) :)

если есть сомнения, вставьте в функцию atmel_set_termios отладочные printk и выведите содержимое ключевых регистров УАРТ
убедитесь, что настраиваете именно тот блок УАРТа (там кажется есть смещение между ttySx и uartX)

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

Пункты: 83542
Регистрация: 14.08.2009
Цитата
кеогда я тотже код собираю под ПС то все прекрасно работает и я могу посмотреть код который отправляет ПСишка (правельный ) соответственно потом можно его сравнить с тем что отправляет плата.

И разница там в последних битах каждого байта. Там типа или 7бит не выставилось или четность не раработает или нет стоп бита а стоит 8 бит чтото непонятное.


Я не телепат - только учусь, но кажется мне что вы делаете это все с /dev/ttyS0 на который выведен отладочный порт и на котором отладочная консоль (DBGUART).
Спуститься к концу Подняться к началу
Персональная информация
AlexShev
Добавлено 01.06.2010 20:28 Сообщение: 6
AlexShev
0

Регистрация: 10.07.2009
Цитата
Я не телепат - только учусь, но кажется мне что вы делаете это все с /dev/ttyS0 на который выведен отладочный порт и на котором отладочная консоль (DBGUART).


Вы не телепат но вы правы.
Но я всю отладлчную инфу и дебаг вырубил.
Хотя конечно у меня была такая мысль что линукс может все время под себя менять настройку уарта.
Спуститься к концу Подняться к началу
Персональная информация
AlexShev
Добавлено 01.06.2010 20:33 Сообщение: 7
AlexShev
0

Регистрация: 10.07.2009
Цитата

чтобы не плодить кучу наводящих вопросов, проще было бы выложить как вы пытаетесь настроить - типа фрагменты исходного текста или что делали. так можно долго гадать (доктор, в подвале что-то стучит, помогите мне) :)

если есть сомнения, вставьте в функцию atmel_set_termios отладочные printk и выведите содержимое ключевых регистров УАРТ
убедитесь, что настраиваете именно тот блок УАРТа (там кажется есть смещение между ttySx и uartX)


Кусок кода я выложу (суйчас просто нет с собой)
Блок настраиваю тот потому как на изменение скорости плата всетаки реагирует.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 01.06.2010 22:15 Сообщение: 8
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата
Но я всю отладлчную инфу и дебаг вырубил.


Вы лучше порт поменяйте - была эта тема, не помню в старом или новом форуме, скорей всего в обоих. Если работало на большом РС - тут тоже должно все работать.
Спуститься к концу Подняться к началу
Персональная информация
AlexShev
Добавлено 01.06.2010 23:06 Сообщение: 9
AlexShev
0

Регистрация: 10.07.2009
Цитата
Вы лучше порт поменяйте - была эта тема, не помню в старом или новом форуме, скорей всего в обоих. Если работало на большом РС - тут тоже должно все работать.

Просто сказать поменяй порт.

А где тема неподскажите?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 01.06.2010 23:21 Редактировалось 01.06.2010 23:25 Сообщение: 10
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Да их несколько - поиск тут просто никакой к сожалению.
Цитата

В файле:
arch/arm/mach-at91/board-sam9260ek.c

в ф-ции:
static void __init ek_map_io(void)

добавить строчку:
at91_register_uart(AT91SAM9260_ID_US3, 3, 0);

Если в системе нет udev/mdev и нет файла устройств то вручную добавить его:
#mknod ttyS3 c 4 67

PS ttyS3 может быть любой порт, хоть usart4. Если нужны линии управления потоком - сделайте по аналогии например c ttyS2.


по аналогии разберетесь ? посмотрите этот фапйл в исходниках - там все понятно. Надо будет перемычки перекинуть - смотрите описание своей платы. Советую не переопределять ttyS0, а сделать новый например ttyS1 (подредактировать уже написанный) а то могут еще сопутствующие грабли возникнуть типа getty в inittab который тоже на ttyS0 висит :) Вообще поищите на форуме по ключевому слову board-sam9260ek.c - там все меняется и оно в любом случае будет присутствоать в обсуждении.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux