Предварительная настройка хост-компьютеров
в основном нужно только для минских плат, но плохого ничего не сделает
sudo apt-get install setserial
количество портов прописывается при загрузке ядра
sudo nano /boot/grub/menu.lst
находим первое вхождение строки (цифры могут отличатся от версии ядра, параметры тем более)
kernel /boot/vmlinuz-2.6.17-12-386 root=UUID=2a60 ro quiet splash
добавляем параметр «8250.nr_uarts=30» примерно так:
kernel /boot/vmlinuz-2.6.17-12-386 8250.nr_uarts=30 root=UUID=2a60 ro quiet splash
где 30 это кол-во портов + 4
перезагружаемся
sudo reboot
посмотреть сколько рабочих портов можно так
setserial -g /dev/ttyS* | grep 16950
необходимо только для минских плат
удаляем файл настроек портов
sudo rm /var/lib/setserial/autoserial.conf
добиваемся дефолтных настроек
sudo dpkg-reconfigure setserial
выбрать сохранение ядром
перезагружаемся
sudo reboot
добиваемся дефолтных настроек
sudo dpkg-reconfigure setserial
выбрать сохранение один раз
перезагружаемся
sudo reboot
меняем скорость портов
sudo nano /var/lib/setserial/autoserial.conf
меняем все строчки типа
/dev/ttyS4 uart 16950/954 port 0xb400 irq 177 baud_base 115200 spd_normal skip_test
на
/dev/ttyS4 uart 16950/954 port 0xb400 irq 177 baud_base 460800 spd_normal skip_test
смену можно сделать следующими командами
cd /var/lib/setserial/ sudo -s cat autoserial.conf | grep "16950/954" -v > autoserial.conf.tmp cat autoserial.conf | grep "16950/954" | sed 's/115200/460800/g' >> autoserial.conf.tmp mv autoserial.conf.tmp autoserial.conf exit
контрольный ребут
sudo reboot
необходимо только для плат MOXA
источник идей http://www.reactivated.net/writing_udev_rules.html
для начало определяем как у наз называются порты в системе обычно для мохи это ttyMI1 ttyMI2 и т.д.
надо найти где у нас эти устройства лежат
find /sys -name dev | grep ttyM
получим список что-то вроде этого
/sys/class/tty/ttyMI1/dev /sys/class/tty/ttyMI0/dev
теперь для того чтобы понять чем они отличаются сравниваем вывод
udevinfo -a -p /sys/class/tty/ttyMI1/dev
и
udevinfo -a -p /sys/class/tty/ttyMI0/dev
будет что-то вроде
KERNELS=="ttyMI1"
SUBSYSTEMS=="tty"
DRIVERS==""
ATTRS{dev}=="174:1"
KERNELS=="ttyMI0"
SUBSYSTEMS=="tty"
DRIVERS==""
ATTRS{dev}=="174:0"
очень внимально смотрим а не тупо копируем, так как в зависимости от ядра системы, вывод может быть разным например
KERNELS=="ttyMI0"
SUBSYSTEMS=="tty"
DRIVERS==""
SYSFS{dev}=="174:0"
из-за этих 5 разных букв(если вставите не то) ваша система больше не загрузится
для приведеных 2х портов правило переименования будет
SUBSYSTEMS=="tty", ATTRS{dev}=="174:1", NAME="ttyS13"
SUBSYSTEMS=="tty", ATTRS{dev}=="174:0", NAME="ttyS12"
cохроняем их в файл /etc/udev/rules.d/10-local.rules (возможно его не будет)
и пытаемся проверить что мы там наделали
udevtest /sys/class/tty/ttyMI1
если не будет ошибок и в выводе строк будет присутствовать что-то вроде
udev_rules_get_name: rule applied, "ttyMI1" becomes "ttyS12"
значит все хорошо и можно перегружаться.
если где-то написали лишнию букву и система не грузится, то надо загружаться с liveCD и править файл.
и так у нас 2 паорта /dev/ttyACM0 и /dev/ttyACM1 меняются местами.
узнаем отличия
udevadm info -q all /dev/ttyACM0 --attribute-walk udevadm info -q all /dev/ttyACM2 --attribute-walk
будет что-то вроде
KERNEL=="ttyACM0"
SUBSYSTEMS=="tty"
ATTRS{idProduct}=="0005"
ATTRS{idVendor}=="2912"
ATTRS{bInterfaceNumber}=="00"
KERNEL=="ttyACM2"
SUBSYSTEMS=="tty"
ATTRS{idProduct}=="0028"
ATTRS{idVendor}=="079b"
очень внимально смотрим а не тупо копируем, так как в зависимости от ядра системы, вывод может быть разным
из-за этих 5 разных букв(если вставите не то) ваша система больше не загрузится
именно в этой задаче сложность что есть еще devACM1 который не надо трогать
для приведеных 2х портов правило переименования будет
SUBSYSTEM=="tty" ATTRS{idProduct}=="0028" ATTRS{idVendor}=="079b" SYMLINK+="ttyPIN"
SUBSYSTEM=="tty" ATTRS{iad_bFirstInterface}=="00" SYMLINK+="ttyKKM"
cохраняем их в файл /etc/udev/rules.d/10-local.rules (возможно его не будет)
и пытаемся проверить что мы там наделали
sudo udevadm test $(udevadm info -q path -n /dev/ttyACM1)
если не будет ошибок и в выводе строк будет присутствовать что-то вроде
creating link '/dev/ttyKKM' to '/dev/ttyACM0'
значит все хорошо и можно перегружаться.
если где-то написали лишнию букву и система не грузится, то надо загружаться с liveCD и править файл.
для того чтобы при запуске\перезапуске ядра не спрашивался пароль надо после запуска команды
sudo visudo
в конце файла добавить
ALL ALL = NOPASSWD: /usr/bin/killall, /etc/init.d/ackerneld