From OpenSCADAWiki
Процесс сборки и тестирования:
- Патчи CONFIG_PREEMPT_RT и AUFS времён 2.6.29 конфликтуют на функции "debug_mutex_set_owner()", в CONFIG_PREEMPT_RT удалена — заменена на "mutex_set_owner()".
- При сборке выявлен ряд проблем с "# typedef void irqreturn_t;" — заменено на "#include <linux/irqreturn.h>".
- Первый запуск с CONFIG_PREEMPT_RT, но без AUFS, прошёл успешно — результат выше.
- Запуск с AUFS выявил проблему выделения памяти AUFS в "aufs_mmap()" — рабочий код AUFS взят целиком из предыдущей сборки "rt-up-2.6.29.alt2".
- Запуск с AUFS выявил проблему зависание на корне ФС в AUFS, похоже из-за возможности зацикливания/блокирования RT-задачи — установлено CONFIG_PREEMPT_NONE, на LP-8781 и "AMD Turion" проблем не выявлено (возможно эта проблема из-за отсутствия HPET на PLX8).
- На первый взгляд ядро работает нормально, но замечено соскальзывание на непрерывное нарастание времени запаздывания.
- Выполнена адаптация ядра для бинарной совместимости с модулями "slot" и "icp" от ICP_DAS. Модуль "8250_linpac" падает при загрузке, а "icpdas_8250" имеет множество неразрешённых символов — нужно эти модули пересобирать или пробовать интерфейсы > COM2 инициализировать через setserial — модули пересобраны, спасибо Golden Wang (тех. поддержка ICPDAS).
- Новое ядро установлено под высокую нагрузку, конфигурацией проекта САУ шаровых барабанных мельниц:
- Сбой сети с драйвером "via_rhine", после 4 суток работы — сбой ожидаем, собран драйвер "rhinefet", испытание продолжено.
- На драйвере "rhinefet" система под нагрузкой проработала три недели. Однако замечено, что прерывание 11, на котором висит почти всё стандартное оборудование (USB, Ethernet и может ещё чего), отключается и сеть работает в режиме "Опрос", что медленнее. Возможно отключение этого прерывания происходит и с "via_rhine", а он не может работать в режиме "Опрос", почему и пакеты в/из сети не ходят. Проблема связана со сбоем и генераций необработанных прерываний одним из оборудования на прерывании 11.
- Исправлено исключением отключения прерываний с помощью параметра ядра Linux "noirqdebug".
- Адаптация успешно завершена и прошивки на основе этого ядра готовы к промышленной эксплуатации!
- 01.03.2015: Вместо функции EnableWDT() использовано EnableSysWDT(), в виду ограничения до 30 секунд и циклических перегрузок если не загружается за 30 секунд (до трёх перегрузок).
- 17.03.2015: При участии службы поддержки ICP_DAS исправлена проблема драйвера последовательных интерфейсов более COM2, приводящая к "замораживанию" ядра Linux (похоже в виду блокирования прерываний) после закрытия одного порта и активности на хотя-бы одном другом.
- 29.07.2015: Обнаружена ещё одна проблема с сетью с похожими симптомами отключения прерывания 11, но: прерывание 11 не отключается и все остальные устройства на нём работают, воспроизводится только на конфигурациях с использованием обоих интерфейсов сети, причём возможно "затормаживание" только одного из них. Проблема решается только перегрузкой "заторможенного" сетевого интерфейса, командой: ifdown eth0; ifup eth0. Для обнаружения и перезапуска рекомендуется на уровне OpenSCADA добавлять контроль трафика и непосредственную перегрузку интерфейса по его отсутствию.
- 21.11.2016: Драйвер "rhinefet" адаптирован на предмет предотвращения блокирования прерываний и выключения вектора прерываний поскольку режим SHARE используется. На данный момент драйвер работает однако 19.12.2016 также было замечено замедление сети с двумя этими адаптерами после более двух недель работы.
- Т.е. это оборудование сломано для работы двух адаптеров и в этом ПЛК вы можете использовать только один, для стабильной работы!
- 06.09.2017: Неполное исправление в последовательном драйвере ICP-DAS, приводит к неработоспособности использования более двух последовательных портов, похоже уже полностью исправлено в последних версиях, что наблюдалось на LX-8x31.