LinuxCNC + Orange Pi (allwincnc)

Контроллеры, драйверы, датчики, управляющие устройства.
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение going »

nevkon писал(а):По идее должен быть файл /boot/script.bin, но его нету...
/boot/armbianEnv.txt сюда прописываем.
Скорее всего придётся накладку (overlay) для dtb применить.
Подробности тут https://docs.armbian.com/User-Guide_Allwinner_overlays/
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

Залил на SD карту стандартный образ Armbian c legacy (3.4.113) ядром Linux. Залил в память ARISC прошивку - https://github.com/MX-Master/h3-firmwar ... main.c#L51. Прошивка простая - каждую секунду должны мигать 2 светодиода (красный, зелёный), расположенные на платке OPi1 + небольшие debug сообщения в UART0.

Запускаю - всё работает, лампочки мигают, в UART0 вывод есть.

Это уже радует, значит, я двигался в правильном направлении. Пол дела уже сделано. Теперь осталось разобраться в том, какие настройки сопроцессора делает legacy ядро Linux, в отличии от mainline ядра. Возможно, что-то есть и в U-BOOT. По ходу дела, выясню анализатором какую максимальную частоту шагов сможет нам предложить сопроцессор.
nevkon
Почётный участник
Почётный участник
Сообщения: 2471
Зарегистрирован: 17 июл 2015, 10:25
Репутация: 310
Настоящее имя: Константин
Откуда: Балаково (Саратовская обл.)
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение nevkon »

В общем так и не осилил настройку другого разрешения.
Со вторым методом мне видимо усидчивости не хватает разобраться, а по первому методу разрешение добавляет, но на него не переключает.
При каждом вызове xrandr есть предупреждение: xrandr: Failed to get size of gamma for output default.
При попытке вызвать другое разрешение (настроенное) из списка: xrandr: Configure crtc 0 failed.
Пока что заказал переходник hdmi-vga. Дома есть кабель hdmi-dvi, попробую через него к обычному монитору 4:3 подключиться. Ну и буду пробовать прицепить напрямую по hdmi и настроить, вдруг когда-нибудь получится.
/boot/armbianEnv.txt я в первую очередь нашел, только ни в нем ни в boot изменения не прокатило (в нем написано как правильно его править), все так же на автомате показывало разрешение.
overlay я так понял имеют отношение только к настройкам периферии типа I2C или COM портов. В общем с ним пока не разобрался.

Самое интересное стандартный дистрибутив на OPI PC работает без проблем с этим экраном (при жестком указании разрешения).
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

nevkon писал(а):overlay я так понял имеют отношение только к настройкам периферии типа I2C или COM портов. В общем с ним пока не разобрался.
В этих overlay'ях куча настроек, начиная от частот и напряжений проца и заканчивая конечной периферией.
nevkon писал(а):Самое интересное стандартный дистрибутив на OPI PC работает без проблем с этим экраном
На стандартном у меня и встроенный сопроцессор заработал (:

Если нужно что-то в командную строку ядра linux прописать, то можно юзать файл /boot/boot.cmd, записав нужные данные в строке

Код: Выделить всё

setenv bootargs ...
Затем перекомпилить

Код: Выделить всё

sudo mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
и перезагрузиться
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

Проверил максимальную частоту импульсов, которую выдаёт сопроцессор. Прошивка - https://github.com/MX-Master/h3-firmwar ... main.c#L55.

Суть работы:
генерирует 10 млн. импульсов (шагов) на 3-м пине апельсинки, делает секундную паузу и по новой. Пока идёт генерация горит красный светодиод, во время секундной паузы горит зелёный.

Максимальная частота импульсов (шагов) составляет примерно 2 МГц. Частота работы сопроцессора 300 МГц. Аналогичный тест я проводил из Linux, когда процессор работал на частоте 1200 МГц, тогда частота импульсов была примерно 8 МГц. Закономерность сохраняется. Ну и самое главное, сопроцессор ничто не прерывает, поэтому пропусков никаких нет.
2018-01-25_181226.png (3229 просмотров) <a class='original' href='./download/file.php?id=130366&mode=view' target=_blank>Загрузить оригинал (43.99 КБ)</a>
2018-01-25_181351.png (3229 просмотров) <a class='original' href='./download/file.php?id=130365&mode=view' target=_blank>Загрузить оригинал (55.5 КБ)</a>
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение Serg »

Длительность импульсов и пауз "плавает" немного... Глянь, в каких пределах?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

UAVpilot писал(а):Длительность импульсов и пауз "плавает" немного... Глянь, в каких пределах?
Оно также плавало и на основном процессоре. Тут надо считать точное кол-во тактов между переключениями, тогда картина будет ясна.

Но я не думаю, что будущий генератор сможет в рабочем режиме выдать те же 2 МГц. Если удастся получить до 400 КГц реальных шагов, это будет весьма неплохо. Но время покажет. Надо еще прорыть тоннель и понять, почему в mainline ядре и u-boot'е от Armbian прошивка не хочет стартовать.
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение going »

nevkon писал(а):В общем так и не осилил настройку другого разрешения.
Покажи ту часть DTS которая HDMI описывает.

Код: Выделить всё

######################################################
   ## DTB conver to DTS
   # Command:
   # dtc -I dtb -O dts -o target_file.dts source_file.dtb
   ######################################################
nevkon писал(а):overlay я так понял имеют отношение только ........
Механизм накладок применяется в том случае если в DTB не прописан функционал, который имеется или прописан не полностью, а использовать хочется.
При этом нет необходимости пересобирать всё. Написал несколько строчек, собрал накладку, прописал её в загрузку и исследуй.
Про DTB подробно http://www.mcu.by/device-tree/
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение going »

MX_Master писал(а):Проверил максимальную частоту импульсов
А если привязать тики к событию от таймера? Может "плавание" длительностей исчезнет.
При этом какой максимум можно "выжать"?
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

Плаванье в 125 нс не является какой-либо проблемой. Сделав хороший тюнинг кода, можно добиться постоянной скважности в 50%. Но если скважность будет плавать 40-60% - это тоже не проблема.

Основной задачей сейчас стоит не выравнивание скважности, а, собсна, запуск этой прошивки из под mainline ядра. Я кстати, ARISC драйвер, который ты советовал (из Legacy ядра от Allwinner) посмотрел ещё вчера. И на его основе допилил свой загрузчик прошивки. Проверил сегодня - нет результата. Добавил код со включением тактирования ARISC ядра. Проверил - нет результата. Возможно, закрытые бинарники от Allwinner'a что-то ещё мутят в настройках чипа. Ну, или я что-то упускаю из виду. Тут в пору сделать дампы памяти из под обоих ядер и сравнить различие в регистрах..
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение Сергей Саныч »

going писал(а):А если привязать тики к событию от таймера?
Не "если", а "придется" :)
Иначе крайне заморочно генерировать больше одной последовательности с разными частотами.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение Serg »

MX_Master писал(а):Плаванье в 125 нс не является какой-либо проблемой. Сделав хороший тюнинг кода, можно добиться постоянной скважности в 50%. Но если скважность будет плавать 40-60% - это тоже не проблема.
Не проблема. Но интересна причина этого плавания в коде, где и оптимизировать-то нечего.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
ua3nbw
Кандидат
Сообщения: 44
Зарегистрирован: 18 окт 2017, 18:03
Репутация: 26
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение ua3nbw »

Про оверлеи и понятным яэыком:
http://wikihandbk.com/wiki/Raspberry_Pi ... 1%80%D1%8B
Пусть это про Raspberry, на Orange с небольшими изменениям тоже работают.

Ну, а про ARISC это только усыпить, разбудить (suspend/resume/reset/shutdown), и IR пульт NEC совместимый.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

UAVpilot писал(а):Не проблема. Но интересна причина этого плавания в коде, где и оптимизировать-то нечего.
Как только запущу прошивку под mainline ядром, первым делом это и выясним (:
Сергей Саныч писал(а):Иначе крайне заморочно генерировать больше одной последовательности с разными частотами.
У меня есть простой пример генератора на 8 каналов на основе одного из таймеров чипа H3 - https://github.com/MX-Master/OrangePi_H ... src/main.c. Событий там никаких нет, просто в цикле ждём окончания отсчёта таймера, после чего проверяем счётчики каждого канала и дёргаем пины по необходимости. Но опять же, смысла в тюнинге не вижу, до тех пор пока сопроцессор не заработает на системе с LinuxCNC.

Самое интересное, что мне и подсказать-то никто не может. Потому что все, кто работал над спящим режимом на ARISC ядре, так и не смогли добиться полноценного запуска прошивки под mainline ядром. Тот у кого это заработало, пока не может объяснить как это получилось.
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение going »

MX_Master писал(а):Возможно, закрытые бинарники от Allwinner'a что-то ещё мутят в настройках чипа.
Думается мне, что в контроллере должен крутится какой то код, выполняющий роль микро ядра, которым и является бинарник.
Т.е. всё что касается ARISC из legacy включить в своё ядро. Тут ещё вопрос когда (на каком этапе) этот бинарник грузится.
Впрочем я могу ошибаться.

PS. А в инструментах, которыми собираешь прошивку имеется возможность декомпиляции?
Попробовать разобрать обратно бинарник Allwiner
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

Мне тут, кстати, подсказали что дело может быть не в ядрах linux, а в конфиге u-boot. Armbian вносит туда добрую порцию изменений. Человек, который успешно запускает ARISC прошивку из под всех mainline/legacy ядер, использует свой личный конфиг для u-boot. И он любезно поделился со мной этим конфигом. Надо пробовать сборку своего u-boot. Будет весьма неожиданно, если это сработает :P
going писал(а):А в инструментах, которыми собираешь прошивку имеется возможность декомпиляции?
Да, инструменты есть. Бинарники уже разобраны другими людьми на псевдо код.
Буду юзать как вариант последней надежды :hehehe:
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение going »

MX_Master писал(а):если это сработает
Надеюсь поделишься опытом.

Пытаюсь NOR flash обуздать. На OPI-PC2 имеется чип MX25L1606E M2I-12G ёмкость-16М подключен по SPI.
Схема:
NOR_H5_shema.png (3043 просмотра) <a class='original' href='./download/file.php?id=130459&mode=view' target=_blank>Загрузить оригинал (230.96 КБ)</a>
В linux имеется утилита flashrom для работы с этим.
Может у кого есть опыт общения с этим чипом?
Платы: BPI-M3, BPI-A64, OPI-PC2
nevkon
Почётный участник
Почётный участник
Сообщения: 2471
Зарегистрирован: 17 июл 2015, 10:25
Репутация: 310
Настоящее имя: Константин
Откуда: Балаково (Саратовская обл.)
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение nevkon »

В общем с монитором пока решил дальше не разбираться. Есть очень большое подозрение на кривой контроллер экрана. Апельсинка заработала на обычном мониторе с DVI входом через шнурок HDMI-DVI. И работает с любым нормальным монитором. В качестве последней надежды подружить апельсинку с этим экраном заказал конвертер HDMI-VGA.
Но это все мелочи. У меня возникла проблема с генерацией шагов при тестировании. Собрал тестовую конфигурацию - 4 оси, делитель 1/8, шаг 2 мм/об, скорость 1500 мм/мин. Напряжение почти на минимуме - 24В. На максимальных 1500 мм/мин не крутится. На чуть меньше (примерно 1450 мм/мин) вращается медленно и рывками. На 1000 мм/мин вращается как положено, но есть постукивания - такое ощущение что есть пропуски/задержки в генерации шагов. Завтра попробую подключить 36В БП (снять со станка), но боюсь это не изменит ситуацию.
Если я правильно посчитал частота должна быть порядка 20кГц что вроде как укладывается в возможности генератора. Как вариант пропуски могут быть со стороны драйвера - вроде читал что-то, к тому же здесь ведь 3.3В вместо минимально указанных 5В. Заодно попробую старые драйвера повесить, может это прояснит ситуацию (вместе с нормальным БП).
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

Я много раз писал, что максимум в тестах было около 17 КГц, причём, на 3-х осях и лёгком интерфейсе tkemc. Да, 3.3V. Если настроено всё правильно, то при превышении возможностей генератора, должна появляться ошибка "joint 1/2/3 following error". Типа, не успевает генерировать. Пропусков шагов ни разу не видел, смотрел вывод детально на анализаторе.

Какие драйвера? Какие моторы? Какой ток на драйвере? Какой БП у апельсинки?
Аватара пользователя
ua3nbw
Кандидат
Сообщения: 44
Зарегистрирован: 18 окт 2017, 18:03
Репутация: 26
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение ua3nbw »

going писал(а):Пытаюсь NOR flash обуздать. На OPI-PC2 имеется чип MX25L1606E M2I-12G ёмкость-16М подключен по SPI.
Про flashrom на Orange Pi Zero: http://4pda.ru/forum/index.php?showtopi ... p=58269683
Ответить

Вернуться в «Электроника»