iiv 17 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба Добрый день, есть борда с yocto-linux (de10-nano или de0-nano-soc). У борды есть линукс консоль, которая зацеплена на COM порт. Хочется отключать консоль превращая ее в /dev/xxx для того, чтобы использовать этот девайс для загрузки прошивки в контроллере, который висит на этом ком-порте. В остальное время хочется, чтобы этот контроллер продолжал обычным образом видеть все, что есть на этой консоли - то есть как-бы одновременно быть супервизором линукса. Как я понимаю, могу запустить в этой консоле программу, которая небуфферизовано будет читать и писать stdio / stdout создать char-device вызвав int mknod(const char *pathname, mode_t mode, dev_t dev); но вот как я должен подцепить stdio на вход char-device и stdout на выход char-device - пока не понимаю. Пожалуйста, подскажите! Спасибо! ИИВ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rkit 1 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба Просто запустить из консоли приложение и работать с ним. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 17 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба Спасибо за ответ! Если бы все было бы так, яб не спрашивал... С консоли я запустить программу могу, но мне надо перенаправить получаемый ввод-вывод на char-device, так как другая программа только с таким char-device работать может... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 16 марта, 2021 Опубликовано 16 марта, 2021 (изменено) · Жалоба Посмотрите, какой agetty висит на этой консоли (например: ps ax|grep tty). Убейте его kill'ом. А когда опять понадобится включить терминал, запустите процесс снова. Вот, например, захожу на один из одноплатников: eddy@mirtemp:~$ ps ax|grep tty 1767 ttyS0 Ss+ 0:00 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttyS0 linux 1768 tty1 Ss+ 0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux 1769 ttyGS0 Ss+ 0:00 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttyGS0 linux 31965 pts/0 S+ 0:00 grep --color=auto tty На ttyS0 висит процесс 1767. Если я из-под рута его убью, то смогу использовать ttyS0 для других целей. Если после kill процесс респаунится, посмотрите, что там у вас в inittab прописано. Если у вас там systemd, то ничего посоветовать не смогу, я эту дрянь не переношу на дух (как и остальные творения гея-поцтеринга)! Изменено 16 марта, 2021 пользователем Eddy_Em Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 17 18 марта, 2021 Опубликовано 18 марта, 2021 · Жалоба Спасибо большое, Eddy_Em!!! да, действительно, agetty убить можно, у меня удалось остановить респаун только через Quote systemctl disable [email protected] хотя пока так /dev/ttyS0 пока еще не работает, как я хочу, но, возможно, пока еще не все попробовал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 17 22 марта, 2021 Опубликовано 22 марта, 2021 · Жалоба Все-таки я что-то тут не понимаю... Переставил линукс на более свежий (вместо 2014 на 2016, более позднего вроде нет). Имею после выполнения Quote $ systemctl disable [email protected] консоль, повешенную на первый процесс: Quote $ ps aux | grep tty root 1 0.0 0.4 21692 3360 ? Ss 06:38 0:03 /sbin/init ttyS0,115200 root 1587 0.0 0.0 2196 200 tty1 Ss+ 06:38 0:00 /sbin/agetty --noclear tty1 linux root 6775 0.0 0.1 1832 936 pts/1 R+ 08:19 0:00 grep tty но никак не могу найти, где запустился init с такими аргументами. /etc/init.d как у всех нормальных линуксов у меня нет... Подскажите, пожалуйста, где искать, или подскажите, как поднять ком-порт на USB, как я вопрошаю в соседней ветке: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 22 марта, 2021 Опубликовано 22 марта, 2021 · Жалоба 18 minutes ago, iiv said: но никак не могу найти, где запустился init с такими аргументами. init запускает ядро, как он реализован в systemd не знаю, искать лень. Кроме getty порт использует ещё ядерная консоль - в неё ядро отправляет свои сообщения (printk), её параметры передаются через console= загрузчиком или в новых ядрах она описана в DTS, init systemd скорей всего эту информацию использует. Может вам проще zmodem через консольный порт использовать для загрузки файлов на устройство без отключения консоли ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 17 22 марта, 2021 Опубликовано 22 марта, 2021 · Жалоба 8 minutes ago, sasamy said: Может вам проще zmodem через консольный порт использовать для загрузки файлов на устройство без отключения консоли ? Спасибо большое, за ответ! Да, я хочу как-то и, действительно, по возможности не отключая консоль. У меня в аппаратуре запланирована DE10-Nano борда и один супервизор на atmega2560 с ардуиновским загрузчиком. У этой DE10-Nano на борту Quote Linux de10-nano 4.1.33-ltsi-altera #1 SMP Thu Mar 30 10:37:56 PDT 2017 armv7l GNU/Linux и есть два выхода - один как ком-порт через ftdi232, а один - как полноценный USB OTG. Мне бы надо иметь возможность менять прошивку на atmega2560 с ардуиновским загрузчиком через avrdude. Подключить могу хоть на ftdi232, хоть на USB OTG. На на ftdi232 висит линукс консоль, и, похоже ее убить не очень просто. На USB OTG есть проблема с драйверами, борда видна в lsusb, но не видна в /dev/ttyACM0, то есть usb-devices показывает: Quote T: Bus=01 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#= 4 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=02(commc) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=2341 ProdID=0010 Rev=00.01 S: Manufacturer=Arduino (www.arduino.cc) S: Product=Arduino Mega 2560 S: SerialNumber=8533231393535120B261 C: #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=02 Prot=01 Driver=(none) I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none) и, понятно, avrdude ее не видет. А как через zmodem пустить avrdude, у него же какой-то свой протокол и avrdude его повидимому не поймет? Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 34 22 марта, 2021 Опубликовано 22 марта, 2021 · Жалоба 2 часа назад, iiv сказал: А как через zmodem пустить avrdude, у него же какой-то свой протокол и avrdude его повидимому не поймет? Написать на атмеге загрузчик с необходимым протоколом, потом хоть через текстовый терминал можно обновлять... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 17 22 марта, 2021 Опубликовано 22 марта, 2021 · Жалоба 5 minutes ago, mantech said: Написать на атмеге загрузчик с необходимым протоколом, потом хоть через текстовый терминал можно обновлять... пока именно этого и хотелось избежать, если не решится через линукс, то это наверное единственное решение... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться