LINUX.ORG.RU

Сообщения I-Love-Microsoft

 

Как непрерывно получать данные от АЦП в Linux

Есть небольшой скрипт Python 3 который читает I2C АЦП, он оцифровывает датчик, частота дискретизации несколько килогерц, а я читаю несколько сотен раз в секунду и этого явно недостаточно.

Правильно я понимаю, что даже если перепишу на Си (что совершенно не проблема) - не получу нужной частоты дискретизации?

400 кгц / 12 бит данные + адрес + паузы и так далее = килогерц 5-10 в теории выжать можно. Но вот в чем производить такое циклическое чтение?

Допустим, можно написать драйвер низкоуровневый поверх I2C - поможет? В теории, там и отклик быстрее будет и таймер точнее и всё прочее.

 , , , ,

I-Love-Microsoft
()

Китайский USB-CAN протокол

Купил такое https://aliexpress.ru/item/4000045445478.html

Китаец прислал мне драйвер для windows, а инструкцию где 99% текста это китайские иероглифы, хотя я просил его мне дать протокол.

Кто-нибудь знает, какой протокол у такой штуки? Ведь в системе оно представляется как USB-UART.

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

 , ,

I-Love-Microsoft
()

FT2232C/D/H работа с I2C

Есть платка на базе Future Technology Devices International, Ltd FT2232C/D/H Dual UART/FIFO IC. Заявлена поддержка I2C. Как ее получить?

Втыкаю - /dev/i2c* не появляется новое. Есть некий ftdi_sio драйвер. Есть libftdi и даже pylibftdi как обертка для питошки.

До меня начинает доходить, что чуда не будет. Чип дает bitbang ногодрыжный интерфейс, а дальше ручками. Да, есть обертки, может есть pullup на алишной плате.

Чтобы получить I2c на FT2232C:

  1. нужно bitbangить? 2) на всякий спрошу у опытных, а может снифер можно на этой штуке изобразить?

Может есть готовые программы или драйвер-обертки???

 , , libftdi

I-Love-Microsoft
()

Сменный аккумулятор показывает неверный процент

Купил два сменных аккумулятора к телефону. Они заряжаются до 4.15-4.2 вольта, что является допустимым уровнем заряда, это можно считать за 100%. Но разумеется это китайская подделка с алиэкспресса, а телефон ждет видимо большего напряжения для 100%

Никакие циклы полного разряда и резеты и перезагрузки - не помогают. Значит есть иной путь. Можно ли задать так, чтобы оно считало 4.15 вольт за 100% и больше не пыталось заряжать?

Если подключить к лабораторному источнику питания, то видно, что оно пытается пару секунд заряжать, затем на 5 секунд прекращает, снова 2 секунды заряжает, снова пауза

Можно ли остановить эти бессмысленные попытки заряжаться свыше 4.15 вольта, уровень аккумулятора отображается в специальных программах

ОС - Android 8. В выключенном состоянии оно может показать даже 93% самое большее, при включении - процентов 80-85, в основном 75%

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

 ,

I-Love-Microsoft
()

Попытка установить 32-битный libgl требует снести пол системы

Ubuntu 20.04, установлен nvidia-driver-435. В /usr/lib/x86_64… есть libGL.so.1 Нужно запустить 32-битную программу с OpenGL

Чтобы получить эту библиотеку, нужно sudo apt install libgl1:i386 libglx0:i386 libglx-mesa0:i386 libgl1-mesa-dri:i386 libllvm10:i386

Однако при этом список «Следующие пакеты будут УДАЛЕНЫ» просто огромен и «объём занятого дискового пространства уменьшится на 1 303 MB»

Как установить эту несчастную libgl? Пакет libnvidia-gl-435:i386 установлен, но libGL не содержит (смотрел внутри архива). В интернете пишут что это решило бы проблему, но как, если файла даже нет?

Возможно предыдущие версии драйвера nvidia содержали такой файл, а сейчас нет

 ,

I-Love-Microsoft
()

Криво работает привязка к сетке у LibreOffice

Пытаюсь работать с рисованием объектов с квадратиками и стрелочками

Пробовал в версиях 5.х, но теперь и в LO 6.4.4. Вижу что я включил сетку, и ее отображение. Оно привязывается к ней но криво, попадая между клеток. Иногда не позволяет осуществить позиционирование с нужным шагом, т.е. проскакивает одну клетку

Пробовал отключать функцию «дополнительные узлы» чтобы между клетками были еще опорные позиции. Возможно я делаю что-то не так, или нужно включить какой то специальный режим

Еще рассматриваю создание векторных рисунков вне LibreOffice, но потом это векторное будет добавлять в документ. Например LO Draw привязывает к узлам сетки идеально, там это работает как положено

Но смех заключается в том, что в LO Draw я не могу выключить режим пропорционального масштабирования в редакторе, тянуть за углы бесполезно, оно все равно масштабирует оси одинаково, вместо параллелограмма получаются квадраты - как отключить? workaround это в свойствах задавать геометрию явно цифрами…

 ,

I-Love-Microsoft
()

Как надежно отключить Baloo File Indexer?

Как отключить этот вонючий baloo? Я его и в GUI отключил и balooctl disable говорил, а оно все равно при старте запускается, а еще самопроизвольно через 15 минут примерно

Как эту дрянь выкорчевать навечно, чтобы не грузило проц и особенно диск?

Обновился до Ubuntu 18.04 затем до 20.04 и вот получил. Как же они достали включать такие бесячие вещи по дефолту. То Nepomuk, то вот это Baloo. Когда они прекратят включать вредоносное (по факту, чем это лучше чем майнер или подобное???) ПО по дефолту в дистрибутивах???

 

I-Love-Microsoft
()

Долезть до сервера через кучу nat и fw, хотя бы по ssh

Есть некоторый сервер, находясь рядом с которым можно сделать ping ya.ru и на нем будет интернет. Но этот сервер в конторе спрятан за кучей firewall-ов и NAT, предположим админ условно в запое и вообще не умеет настраивать.

Да, есть возможность использовать AnyDesk или TeamViewer на других тачках, где есть графическая оболочка. Но целевая машина даже не x86 система.

Как организовать удаленный доступ через кучу NAT к не-x86 серверу без графики (хотя она там есть X11 обычный, но я думаю что полагаться нет смысла на это).

Пока что придумали подключить Android телефон в режиме модема, обычный RNDIS вполне себе поднимется там, и так будет хоть немного проще туда залезать. Но и то, ведь телефон это тоже как NAT.

Такой вот вопрос. Как залезать в таких ситуациях, как «организовать легальный бэкдор»?

 , , ,

I-Love-Microsoft
()

Убрать пробелы между идентификаторами

Пользуюсь Astyle для форматирования кода и он работает великолепно, за исключением одной вещи:

struct      sched_param   params;
Как сделать так, чтобы пробелы убрались и стало:
struct sched_param params;
Для этого вероятно существует некоторая опция, которую я не увидел во время чтения интернетов и манов

Аналогично перед началом комментария тоже может быть так:

int test;          // куча пробелов перед комментом, бесит

Можно конечно сделать замену всех двойных пробелов на одинарные и так 15 раз пока не полегчает в любом редакторе, к сожалению оно залезет в строковые константы, чего не хотелось бы

 , ,

I-Love-Microsoft
()

Как в драйвере задать число линий, которые необходимо задействовать?

Есть устройство, у которого LnkCap в lspci четко показывает что оно умеет width x2, но по факту работает LnkSta лишь width x1. Да, оно работает отлично, но как задействовать x2?

Стал читать на тему, где-то пишут что это задается драйвером. В самом деле я видел что драйвер nVidia умеет снижать число lanes и скорость с PCI-E 3.0 (8 GT/s) до 2.5 GT/s

Вопрос - а где и как это собственно задается? LnkCap честно говорит - могу x2. А как это включить? Как запросить чтобы было x2?

 ,

I-Love-Microsoft
()

Не откликается модуль SIM800 на AT команды

Прикупил на алишке готовую плату на базе модема SIM800. Воткнул рабочую SIM карту, подал на нее питание, включил сам модуль. Вижу что мигает NETLIGHT вывод 64ms On/ 3000ms Off SIM800 registered to the network. Значит симку увидел и в сеть зарегалось

А вот AT команды не доходят. На плате можно выбрать, либо это TTL уровни чтобы управлять 3.3В UARTом, либо RS-232. У меня четко выбрано RS-232. Подключился через USB-RS-232, пробовал замыкать 2-3 пины у разъема там, где как раз непосредственно подходит к модему (вытащил для этого) - эхо в консоли есть. Строки завершаю \n\r т.е. 0x0D 0x0A как и положено. Ответа нет. Точнее приходят нули. То три то четыре нуля

Пробовал и такой код накатать:

#!/usr/bin/env python3

import serial
import os, time

port = serial.Serial("/dev/ttyUSB0", baudrate = 9600, timeout = 1)

cmd = "ATE1\r\n"
bcmd = cmd.encode("utf-8")
print("bcmd= %s" % bcmd)
port.write(bcmd)
res = port.read(10)
print("res= %s" % res)

cmd = "AT\r\n"
bcmd = cmd.encode("utf-8")
print("bcmd= %s" % bcmd)
port.write(bcmd)
res = port.read(10)
print("res= %s" % res)

Все равно ответ такой же:

./test_sim800
bcmd= b'ATE1\r\n'
res= b'\x00\x00\x00\x00'
bcmd= b'AT\r\n'
res= b'\x00\x00\x00\x00'

Что может быть не так? Пробовал все скорости, и 115200 и 57600 и так далее

На плате стоит DB-9F как раз для подключения к COM-удлинителям, это ведь не null-модем, линии прямо должны идти а не накрест же

 , , sim800

I-Love-Microsoft
()

Эмуляция клавиатуры через USB-device порт

Вопрос именно на тему разработки, не железа. Допустим есть Raspberry Pi Zero или Orange Pi Zero. Можно ли каким-то образом заставить эти платы прикидываться клавиатурами через USB порты? т.е. чтобы работало не как Host а как Device?

Чтобы плата эмулировала нажатия клавиатуры и мышевозничество из скрипта?

А может есть отдельные платы или чипы, которые могут быть легко подключены к Raspberry по I2C?

Или чем черт не шутит? Взять чип от клавиатуры и мыши тупо? Но боюсь если с клавиатурой просто - матрица контактов какая нибудь, то чипы для мышей будут хотеть оптические схемы или энкодеры, последние не сложно эмулировать

 ,

I-Love-Microsoft
()

Как в консоли делать flush вывода в файл

Приветствую всех! Подскажите пожалуйста, как делать flush в консоли?

Допустим есть ksh-скрипт работающий в старой платформе 20-летней давности, там ksh. Программа в режиме отладки пишет в файл, иногда возникают отладочные сообщения:

./my_debug_script > log.txt

Необходимо делать перодические flush вывода, даже если в консоль выведено мало текста, иначе я так и не дожидаюсь нужных сообщений, лог остается оборванным

Поможет ли fflush(NULL) в самой программе? Еще тупая идея выводить в лог кучу символов типа # чтобы заставить имеющийся вывод попасть в лог-файл

 ,

I-Love-Microsoft
()

Собрать Open Watcom 2.0 для Linux

Пытаюсь собрать этот трэш вот для какой цели. Я работаю с QNX 4.25 и при падении программ формируется дамп памяти, который можно открыть в wd (watcom debugger). Но при некоторых условиях возникновения ошибок, дамп не открывается в самом wd - происходит крах самого wd.

Для этого я подумал взять Open Watcom, вдруг там рабочий отладчик. Оказалось, чтобы смотреть дампы от QNX 4 нужен модуль PMD (не знаю что значит это название). Его в готовых бинарных сборках найти не удалось.

При попытке собрать вот это https://github.com/open-watcom/open-watcom-v2 оно начинает собирать вообще всё что угодно, начиная с win nt, и падает на попытке выполнить бинари в dosemu.

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

Кто-нибудь сталкивался со сборкой Open Watcom? Смотрю эту свалку файлов из github и не могу найти ничего про конфигурацию сборки, никаких там configure с параметрами. Файл build.sh не показывает признаков конфигурируемости.

 ,

I-Love-Microsoft
()

Прием видеоданных не от сенсора в Салют-ЭЛ24Д1

Есть отладочная плата с Lattice Crosslink, которая преобразует видеопотоки из разных форматов в том числе в MIPI CSI-2, который есть у Raspberry Pi 3. Частично, пока с большими проблемами, поток в Raspberry принимается, но для этого приходится пробрасывать I2C линии к сенсору.

Вопрос: можно ли у такой платы как Салют-ЭЛ24Д1 принимать CSI-2 поток со строго заданными заранее параметрами без применения CCI интерфейса (он же I2C).

Вообще, вопрос скорее касается любой другой платы, отличной от Rasberry, мне требуется любой приемник собственного CSI-2 потока, который не прибит гвоздями к сенсорам, и который не будет отказываться кушать поток, если нет I2C линии к источнику видеоданных.

Понимаю что вопрос крайне узкой специализации, уповаю на @ncrmnt

 , mipi

I-Love-Microsoft
()

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

Возникла необходимость обеспечить безголовое (без монитора) встраиваемое устройство неким простейшим взаимодействием с пользователем. Ничего лучше чем USB мышь не пришло в голову. Но как читать ее события, если в системе не будет X11, не будет монитора, вообще ничего

USB мышь определится - проблем нет. Как читать с нее события? Не опускаясь до парсинга пакетов чем-то, что позволяет WireShark-у ловить USB пакеты. Есть что-нибудь простое?

Предполагаю это будет bash/python программа. Пока никаких идей нет

 , ,

I-Love-Microsoft
()

Застревает старт UDS-сервера

Написал тестовую программу UDS сервера и клиента, UDS = Unix Domain Sockets. Иногда сервер стартует и принимает какие то искаженные данные, это нарушает процесс обмена, и сам сервер виснет и клиент повисает ожидая данные

Сценарий работы прост - клиент подключается к серверу, пишут в сервер данные и получает ответ, затем еще раз пишет данные и получает снова ответ. Если все запускать начисто, холодный старт - то ноль проблем. А вот если повторно, зачастую возникает описанный выше затык

Код примера 2in1, сервер запускается с аргументом, клиент без: http://paste.org.ru/?dsi7xi

Не помогает ни двойной unlink ни remove. Может можно просто при открытии сокета куда то всё вычитать в /dev/null. Почему подобное может возникать и как с это решить?

Что-то подобное, как если бы TCP сервер крэшнулся и некоторое время не позволял бы биндить сокет, просто в UDS это какая-то специфичная проблема, с которой не знаю как бороться. И ведь при старте UDS сервера оно спокойно всё всегда открывает, но при первом же взаимодействии обнаруживаются повисшие данные почему то

 ,

I-Love-Microsoft
()

64-битные регистры задействуются как 32-битные

Если писать код для aarch64 в виде ассемблерных вставок, то при отладке в GDB Dashboard видно, что запись mov x5, #100 задействует только младшие 32 бита, а в оставшихся старших 32 битах остаются прежние значения или значения соседних регистров, либо их прошлые значения

Попробую пояснить суть проблемы иначе. Регистр w5 это 32 битный, x5 это 64 битный. Так вот ассемблерная вставка задействует именно регистры x а значит если я записал туда 5, значит весь регистр должен быть равен 5. У меня же 5 попадет только в младшие 32 бита

В результате этих ложных значений не работают такие инструкции как cmp и прочие условные. Я предполагаю что отладчик GDB не просто так показывает такие значения в регистрах

Инструкции типа sub add и прочие - работают как надо. Но полагаю из за того что в старших 32 битах регистров x лежит какая-то хрень, то именно поэтому не работает нормально инструкция cmp и условные переходы b, точнее они срабатывают, но с одним и тем же результатом, потому что в старших 32 битах регистра неизменно торчит какая то каша

Почему mov x1, #100 не запишет всё биты целевого регистра? Нашел что значения из инструкции берутся от 0 до 4095, но неужели остальные старшие не обнуляются? А как тогда всё обнулить? sub x1, x1, x1???

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

 , ,

I-Love-Microsoft
()

PythonAnywhere как сделать его HTTPSным

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

Использую python anywhere + django. Как его обшттпээсить? Это что, настройка хостинга, настройка самого сайта, или нужно регистрировать свой домен и в нем указывать его https-режим?

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

 ,

I-Love-Microsoft
()

Консольная отладка кода с ассемблерными вставками

Есть виртуальная машина QEMU AArch64 есть программа, которую можно компилировать с отладочными символами и без оптимизации. Как ее отлаживать?

Допустим я пробовал cgdb и я вижу там исходный код, можно ходить по шагам. Включив какой-то режим дизасма следующей строки, когда натыкаюсь на нее, оно входит во «вставку» и может и там ходить по шагам.

Но можно ли повесить окошко со значением некоторых регистров, или заставить gdb выводить ряд некоторых регистров после исполнения каждого шага и последующей остановки?

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

Попытки повесить окошко с регистрами в текстовом интерфейсе cgdb не сработали, какой то глюк, видимо не поддерживается на aarch64.

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

 , ,

I-Love-Microsoft
()

RSS подписка на новые темы