Jump to content
    

Инструмент для доступа к регистрам устройств на Линукс машине без драйвера

Пока только для 32 битного Линукса.
Там две програмки. Одна на Питоне, которая бежит на любом компьютере и по UDP разговаривает с той, что на исследуемой машине. 
В директории Target то, что надо построить на исследуемой машине или при помощи кросс компилятора для нее.
Исполнение скрипта с sudo стартанет USB сервер. В первый раз ругнется, что не может его удалить.
IP address машины нужен в соответствующем поле диалога питоновской программы на удаленном компьютере.


В меню File можно открыть скрипт файл, который исполнит желаемую последовательность записей и чтений.

xml  файлы позволяют открыть любое число окон, в которых регистры собраны произвольно. Это позволяет открыть по окну на каждое устройство или на часть устройства.

Програмка еще сырая, но уже рабочая. 
Запись в регистры работает только 32 битная, а читать можно по 8, 16, 32 и 64 бита.

https://github.com/stepanovr/linuxreg2

Share this post


Link to post
Share on other sites

Чем это принципиально лучше, чем ssh + https://manpages.debian.org/testing/ioport/outl.1.en.html ?

Завернуть ssh в скрипт с помощью expect дело 5 минут. Зато гибкость получается совершенно фантастическая.

Share this post


Link to post
Share on other sites

58 minutes ago, makc said:

Чем это принципиально лучше, чем ssh + https://manpages.debian.org/testing/ioport/outl.1.en.html ?

Завернуть ssh в скрипт с помощью expect дело 5 минут. Зато гибкость получается совершенно фантастическая.

Интерфейсом
image.thumb.png.92e8f22088681e5e9e2fc26d0721ec9f.png

И возможность открыть любое окно с произвольным набором регистров как это:
image.thumb.png.3fda9e5ffdc5f72a28506df7e7e76c3b.png


И это. Правда один адрес указан, но это в XML файле ошибка, которую легко исправить:
image.thumb.png.0e154eb2c5eb0a9680592e9b2c3bb5a3.png

 

 

Share this post


Link to post
Share on other sites

15 часов назад, Tarbal сказал:

Интерфейсом

Не всем это нужно, мне в консоли удобнее. И проще протоколирование.

15 часов назад, Tarbal сказал:

И возможность открыть любое окно с произвольным набором регистров как это:

Это всё особенно прекрасно, если чтение имеет разрушающий характер, например если в регистр отображено FIFO или регистр статуса прерывания. Последствия могут быть довольно неожиданными.

В общем для меня в этом решении есть очевидные минусы и пока ровным счётом никаких плюсов. 

PS: я уж не говорю о вопросах безопасности, т.к. подобные сервисы нельзя выставлять в публичные сети,  в отличие от ssh.

Share this post


Link to post
Share on other sites

1 hour ago, makc said:

На всем это нужно, мне в консоли удобнее. И проще протоколирование.

Это всё особенно прекрасно, если чтение имеет разрушающий характер, например если в регистр отображено FIFO или регистр статуса прерывания. Последствия могут быть довольно неожиданными.

В общем для меня в этом решении есть очевидные минусы и пока ровным счётом никаких плюсов. 

PS: я уж не говорю о вопросах безопасности, т.к. подобные сервисы нельзя выставлять в публичные сети,  в отличие от ssh.

Лог включается для протоколирования.

Удивительный поворот насчет безопасности.


О какой безопасности идет речь? Это для отладки драйверов инструмент. Пока идет отладка сервис включен. Вообще с отдельного интерфейса можно работать если так безопасность волнует. Не вижу смысла выставлять доступ к такому инструменту в сеть.


Насчет разрушающего чтения не пойму чем ваш метод лучше. Разве он не разрушит?

 

Share this post


Link to post
Share on other sites

37 минут назад, Tarbal сказал:

Лог включается для протоколирования.

В вашем интерфейсе это где делается? Я не вижу такого пункта.

38 минут назад, Tarbal сказал:

Удивительный поворот насчет безопасности.

Да вот нет, сейчас много кто работает удаленно, в том числе и с железом. Поэтому безопасность лишней не бывает.

43 минуты назад, Tarbal сказал:

Не вижу смысла выставлять доступ к такому инструменту в сеть.

Я так вообще не вижу смысла в этом инструменте, т.к. уже есть штатные средства и они прекрасно работают. 🤷‍♂️

Поэтому я и попытался понять, чем обусловлено создание ещё одного велосипеда с квадратными колесами.

39 минут назад, Tarbal сказал:

Это для отладки драйверов инструмент.

Драйверов? Или железа? Вы уж определитесь... Для отладки драйверов уровня ядра используются несколько иные инструменты, а не банальные средства чтения/записи MMIO/IO регистров. А в юзерспейсе это не драйверы, а костыли.

41 минуту назад, Tarbal сказал:

Насчет разрушающего чтения не пойму чем ваш метод лучше. Разве он не разрушит?

В ручном режиме, о котором я писал выше, читается ровно то, что нужно. У вас, на сколько я понял, за раз читается вся группа регистров устройства и это может иметь неприятные последствия. Поправьте, если я ошибаюсь.

 

Share this post


Link to post
Share on other sites

39 minutes ago, makc said:

В вашем интерфейсе это где делается? Я не вижу такого пункта.

В меню File

 

39 minutes ago, makc said:

Да вот нет, сейчас много кто работает удаленно, в том числе и с железом. Поэтому безопасность лишней не бывает.

Неужели никто не использует VPN для удаленки?

На остальное даже отвечать не буду. Просто будет переливание из пустого в порожнее.

39 minutes ago, makc said:

У вас, на сколько я понял, за раз читается вся группа регистров устройства и это может иметь неприятные последствия. Поправьте, если я ошибаюсь.

Это один из вариантов.
Можно читать и один регистр.
Можно читать любую группу регистров за раз.
Все легко конфигурируется.
А можно написать программу из последовательных чтений и записей одним нажатием. Точнее выбором файла программы. Несколько файлов -- несколько программ.
Программа состоит из последовательности строк в строке адрес регистра и признаков операции.

 

Share this post


Link to post
Share on other sites

10 часов назад, Tarbal сказал:

Можно читать и один регистр.
Можно читать любую группу регистров за раз.

Это где-то описано? Варианты сценариев использования?

10 часов назад, Tarbal сказал:

Все легко конфигурируется.

Не нашёл описания этого легкого процесса. Или для его понимания предлагается изучать исходники?

10 часов назад, Tarbal сказал:

А можно написать программу из последовательных чтений и записей одним нажатием. Точнее выбором файла программы. Несколько файлов -- несколько программ.

Откуда брать файлы программ? Какой у них формат и возможности? Неи нашёл описание всего этого.

10 часов назад, Tarbal сказал:

Программа состоит из последовательности строк в строке адрес регистра и признаков операции.

Программа это программа, описывающая программу. Без описания форматов файлов эти возможности программы бесполезны.

10 часов назад, Tarbal сказал:

Неужели никто не использует VPN для удаленки?

Не все могут поднять VPN для отладки железа где-то далеко на заводе и у меня был такой опыт несколько раз. А вот SSH есть везде, где есть сама операционка или же он ставится одной командой.

Share this post


Link to post
Share on other sites

On 2/16/2024 at 8:14 PM, Tarbal said:

Програмка еще сырая, но уже рабочая. 

в busybox если что есть devmem

Share this post


Link to post
Share on other sites

2 hours ago, makc said:

Да и собрать devmem2 большого труда не стоит - https://unix.stackexchange.com/questions/728772/how-to-use-devmem-command-in-debian-11

Сначала я как раз для devmem сделал GUI на удаленном компьютере, потом оказалось, что devmem, devmem2 и devmem Busybox имеют разный интерфейс. Потому и переделал на независимое от devmem исполнение. devmem2 не позволяет 64битный доступ.

 

3 hours ago, sasamy said:

в busybox если что есть devmem

С него я и начал.
Если посмотрите в скрипте после exit стоит цикл, в котором с devmem шел обмен

8 hours ago, makc said:

Это где-то описано? Варианты сценариев использования?

Не нашёл описания этого легкого процесса. Или для его понимания предлагается изучать исходники?

Откуда брать файлы программ? Какой у них формат и возможности? Неи нашёл описание всего этого.

Программа это программа, описывающая программу. Без описания форматов файлов эти возможности программы бесполезны.

Не все могут поднять VPN для отладки железа где-то далеко на заводе и у меня был такой опыт несколько раз. А вот SSH есть везде, где есть сама операционка или же он ставится одной командой.

Будет описано.
Там есть примеры xml файлов.
Все в них конфигурируется. Они очень простые. Если питоновской апликацией через файл меню открыть, то будет тот набор регистров, что описан в XML файле. Если нужен один регистр -- сделать xml файл с одним регистром.
На него откроется соответствующий диалог. Читается все вместе по кноке внизу, пишется индивидуально для каждого регистра.

Прикол в том. что для каждого устройства можно открыть индивидуальный диалог с нужными регистрами.


Пример файла program (открываается другой строкой меню) просто последовательно совершает чтения и записи регистров. Как написано.
Интерфейс унаследован от devmem Busybox:
Адрес (8/16/32/64) -- чтение, а если добавить значение следующим элементом, то запись.
Правда запись только 32 битная работает.

На самом деле я на коленке сделал простой инструмент, чтобы легко разрешать разногласия с группой FPGA. Мне показалось, что может оказаться полезен другим.
Если не интересно, то забейте.

Открыть нужный набор регистров одновременно с разных компьютеров (если только читать) -- это то, что было надо.

Share this post


Link to post
Share on other sites

8 hours ago, makc said:

А вот SSH есть везде, где есть сама операционка или же он ставится одной командой.

Putty  умеет делать тоннель.
image.png.6f49d7cddb9a3725d9d3606d0fdec0e5.png

Share this post


Link to post
Share on other sites

Только что, Tarbal сказал:

Putty  умеет делать тоннель.

Умеет конечно. Только для вашего решения это неприменимо, т.к.:

22 часа назад, Tarbal сказал:

Одна на Питоне, которая бежит на любом компьютере и по UDP разговаривает с той, что на исследуемой машине. 

А простой возможности проброса UDP через SSH на сколько я знаю нет. Это же подтверждают ответы на сходный вопрос на StackOverflow - https://superuser.com/questions/53103/udp-traffic-through-ssh-tunnel

26 минут назад, Tarbal сказал:

На самом деле я на коленке сделал простой инструмент, чтобы легко разрешать разногласия с группой FPGA. Мне показалось, что может оказаться полезен другим.

С этого и нужно было начинать, т.к. именно такое мнение у меня и сложилось глядя на опубликованный репозиторий. Вопросов больше не имею.

Share this post


Link to post
Share on other sites

15 minutes ago, makc said:

Умеет конечно. Только для вашего решения это неприменимо, т.к.:

А простой возможности проброса UDP через SSH на сколько я знаю нет. Это же подтверждают ответы на сходный вопрос на StackOverflow - https://superuser.com/questions/53103/udp-traffic-through-ssh-tunnel

Ну значит забейте. Это вам не подходит.

Не буду вспоминать про богатство опций. Навскидку vnc.

Share this post


Link to post
Share on other sites

22 минуты назад, Tarbal сказал:

Ну значит забейте. Это вам не подходит.

Да я и так, честно говоря, не планировал использовать. Сейчас, например, для работы с одной нашей платой я настроил доступ одному коллеге через ssh и ему консольных средств более чем достаточно. Но тем, кому без GUI жизни нет, это будет неудобно.

24 минуты назад, Tarbal сказал:

Не буду вспоминать про богатство опций. Навскидку vnc.

VNC это костыль, тормозной и страшный на фоне скорости работы консоли через SSH. В этом плане ваш вариант при всех его недостатках (с моей точки зрения) куда быстрее и удобнее для пользователя. Но опять же, это если "без GUI жизни нет".

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...