Страница 16 из 19

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 май 2018, 20:36
mmv
А это всё зачем?

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 май 2018, 20:37
astrahard
MX_Master писал(а):astrahard, ты там, случаем, нигде не читал, как влияют сервисные процессы ядра Linux на итоговое значение Latency?
Мне представляется, что основная доля Latency, в современных системах, достается от memory controller hub который командует установить LOCK диспетчеру шины PCI. Соответственно все портит процесс виртуальной памяти. Единственный путь победить высокую Latency это отказ от виртуальной памяти, и работа с процессами так, чтобы MCH никогда не запускал поддержку когерентности кеша.

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 май 2018, 20:41
astrahard
mmv писал(а):А это всё зачем?
Не знаю, просто интересно.

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 май 2018, 20:59
mmv
Понять как точно работает конкретное железо наверно нереально. Потому что производителей полно, описаний нет, заняться тестированием на низком уровне никому в голову не придёт. Как с этим будет работать система с точностью до такта тоже х.з.
В конце концов нужно будет использовать то что есть.

Из всех интерфейсов РС(RS232, LPT, PCI, ETHERNET, USB) самый быстрый по скорости и времени отклика PCI, но механически он менее удобный по сравнению с ETHERNET, USB, RS232.

А Latency в 100% случаях высокая из-за кривого ПО.

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 май 2018, 21:08
astrahard
mmv писал(а):А Latency в 100% случаях высокая из-за кривого ПО.
А ПО кривое так как к этому призывает сама концепция современной ОС. Если тестировать на низком уровне, становиться понятно что ОС занимается, в основном, бессмысленной работой с памятью. Бороться с латентностью в такой парадигме бессмысленно - она носит вероятностный характер.

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 май 2018, 21:18
mmv
Есть желание написать собственную ось в которой всё будет правильно работать, а потом весь софт к ней??? :)

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 май 2018, 23:37
Serg
astrahard писал(а):Единственный путь победить высокую Latency это отказ от виртуальной памяти
Во всех совремнных ОС, даже тех, что RealRT вся память виртуальная. :)
astrahard писал(а):А ПО кривое так как к этому призывает сама концепция современной ОС.
Вот только не надо путать концепции современных ОС и бремя наследия древней архитектуры IBM-PC...

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 05 май 2018, 10:05
astrahard
UAVpilot писал(а):Вот только не надо путать концепции современных ОС и бремя наследия древней архитектуры IBM-PC...
Я не согласен, все наследие давно побеждено и забыто это просто расхожее мнение. На мой взгляд, дело в том, что, так называемые, атомарные операции сильно пожирнели в современной архитектуре, и в смысле аппаратных атомарных, и в смысле атомарных каковыми их считает логика ОС. Их нельзя прерывать и, поскольку они жирные, занимают много времени. Но, можно, путем конкурирования, заставить их значительно похудеть.

P.S. Если смысл и наполнение транзакции с точки зрения PCI прост и понятен, то смысл транзакции MCH (memory controller hub) туманен и плохо документирован, а вместе с тем транзакция MCH это атомарная операция, в процессе которой блокируются нижележащие шины, например PCI (MCH заставляет арбитр PCI выставить сигнал LOCK на время атомарной операции MCH, что, на мой взгляд, делается зачастую на всякий случай, нежели по необходимости). По моим наблюдениям атомарная операция MCH, по соглашению, может длиться 30мксек, а для PII соглашение было 6 мксек. Если больше, значит несколько элементарных транзакций MCH объединяются подряд, а вот это непорядок. Что касается RT расширения, не очень то тщательно оно выполнено, есть заявления, что от RT патча становиться только хуже.

Итого. Соглашусь больше с мнением mmv, это кривое ПО в большей степени, чем претензии к аппаратуре, которые тоже есть. Резюмируя свои рассуждения, причина бед в том, когда атомарные операции объединяются в цепочку без перерыва на арбитраж нижележащих шин, и причина некачественный RT патч, а может быть и BIOS, в смысле конфигурации аппаратуры так, что атомарные операции MCH также, безосновательно объединяются в цепочки, без перерыва на арбитраж нижележащих шин.

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 05 май 2018, 13:40
Serg
Какая-же каша у вас в голове... :wik:

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 05 май 2018, 13:59
astrahard
Почему? А разве HAL драйвер RT расширения не старается детерминировать запросы ОС при работе с виртуальной памятью? К примеру VenturCom RTX картинка на это намекает и случай с интегрированным видео, когда результаты Latency Test оказываются неудовлетворительными, поскольку прозрачно для ОС отнимают время и RTX не помогает. Я рассуждаю о Latency которую лимитирует аппаратная платформа. К Latency потока в ОС эти рассуждения имеет косвенное опосредованное отношение.

P.S. Еще о RTX "Обратите внимание: запрашивающая память из Windows связана с активностью SRI (Сигнал соответствующей информации), которая не является детерминированной и не может быть вызвана в обработчике останова." То есть есть проблемы с SRI которые и вызывают повышенное Latency по сравнению с Local Memory Pool. Итого: серьезные :thinking: RTX, имеют этот Local Memory Pool, для которого не действуют принципы руления MCH и MMU, характерные для ОС общего назначения.

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 05 май 2018, 15:42
mmv
Мне кажется этот разговор выходит далеко за пределы текущей темы

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 03 янв 2020, 21:41
mmv
Столкнулся с такой проблемой.
На debian 9.
Драйвер для PCI карты не собирается. Потому что в подключаемой библиотеке linux/pci.h нет почти ничего. Но для всех драйверов PCI она нужна, в ядре или где там она точно есть.
Как это решить?

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 03 янв 2020, 23:11
Serg
Он в пакете linux-libc-dev

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 янв 2020, 02:33
mmv
скачал linux-libc-dev_....deb,
sudo dpkg -i linux-libc-dev_....deb -
результат тот же. Может что не так делаю?

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 янв 2020, 13:11
Serg
mmv писал(а):Может что не так делаю?
Конечно! Как минимум текст ошибки не показываешь, а ведь компилятор старается - пишет про неё всё... :)

И этта, не надо скачивать, ставить (разве что поупражняться в машинописи), можно просто написать "sudo apt-get install linux-libc-dev". :)

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 янв 2020, 15:03
mmv
UAVpilot писал(а):И этта, не надо скачивать, ставить (разве что поупражняться в машинописи), можно просто написать "sudo apt-get install linux-libc-dev".
Так был бы там интернет.....
пишит implicit declaration function, на все функции из pci.h

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

sudo halcompile -i  to_pci.c
Compiling realtime to_pci.c
to_pci.c: In function ‘rtapi_app_main’:
to_pci.c:172:13: warning: implicit declaration of function ‘pci_get_device’ [-Wimplicit-function-declaration]
     to_io = pci_get_device(VENDORID_dev, num_dev, to_io);
             ^~~~~~~~~~~~~~
to_pci.c:172:11: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
     to_io = pci_get_device(VENDORID_dev, num_dev, to_io);
           ^
to_pci.c:180:28: warning: implicit declaration of function ‘pci_resource_start’ [-Wimplicit-function-declaration]
     device_data->io_base = pci_resource_start(to_io, 0);
                            ^~~~~~~~~~~~~~~~~~
to_pci.c:182:24: warning: implicit declaration of function ‘pci_resource_len’ [-Wimplicit-function-declaration]
     device_data->len = pci_resource_len(to_io, 0);
                        ^~~~~~~~~~~~~~~~
to_pci.c:186:29: warning: implicit declaration of function ‘ioremap_nocache’ [-Wimplicit-function-declaration]
     device_data->mem_base = ioremap_nocache( device_data->io_base,device_data->len);
                             ^~~~~~~~~~~~~~~
to_pci.c:186:27: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
     device_data->mem_base = ioremap_nocache( device_data->io_base,device_data->len);
                           ^
to_pci.c:198:2: warning: implicit declaration of function ‘writel’ [-Wimplicit-function-declaration]
  writel(0x600000A0,(device_data->mem_base)+(control_reg*4));
  ^~~~~~
to_pci.c:344:1: warning: implicit declaration of function ‘iounmap’ [-Wimplicit-function-declaration]
 iounmap((void*)device_data->mem_base);
 ^~~~~~~
to_pci.c: In function ‘update_port’:
to_pci.c:405:8: warning: implicit declaration of function ‘readl’ [-Wimplicit-function-declaration]
  tmp = readl((port->mem_base)+(reg_in*4));
        ^~~~~
Linking to_pci.so
cp to_pci.so /usr/lib/linuxcnc/modules/

И такой вопрос, что значит неявно определена. Если компилятор знает где она(библиотека), в чем вопрос, а если не знает, то тогда ошибка типа не определена функция...

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 янв 2020, 21:23
ex71
mmv писал(а):Так был бы там интернет.....
Так он собирает его, но при запуске LCNC укажет что "такой функции не найдено".
Интернет через телефон USB кабелем подключи.
UAVpilot писал(а):можно просто написать "sudo apt-get install linux-libc-dev".
Проблема не в этом пакете, он установлен.
Файлы есть, но в них нет этих функций. Непомню сейчас точно, но я находил переопределения этих функций на "rtai_" версии. То есть просто "#define rtai_pci_get_device pci_get_device". Но даже если заменить вызов pci_resource_len на rtai_pci_resource_len, то вот функции pci_get_device вообще нету.

При этом если смотреть в исходниках ядра - там эти функции есть.
Их нет в заголовках которые лежат в подключаемых файлах.. Ну и при компиляции модуля естестна функций нет.

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 янв 2020, 23:14
Serg
mmv писал(а):И такой вопрос, что значит неявно определена. Если компилятор знает где она(библиотека), в чем вопрос, а если не знает, то тогда ошибка типа не определена функция...
И как это вы умудрились "поднять" такой проект без знания элементарных вешей?.. :)
Есть ещё один linux/pci.h, но только в исходниках ядра, ибо эти функции "предоставляет" само ядро. Искать надо в пакете с названием kernel-headers, kernel-dev или как-то так, не силён я в дебианах...

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 янв 2020, 23:18
mmv
UAVpilot писал(а):И как это вы умудрились "поднять" такой проект без знания элементарных вешей?
Интересный подход, вопросом на вопрос.
Главное что бы нужные библиотеки были, а код написать каждый может..... Вопрос времени и упорства.

Re: PCI контроллер. Halcompail и драйвер.

Добавлено: 04 янв 2020, 23:25
mmv
UAVpilot писал(а):Есть ещё один linux/pci.h, но только в исходниках ядра,
mmv писал(а):Но для всех драйверов PCI она нужна, в ядре или где там она точно есть.
Спасибо кеп.