LINUX.ORG.RU

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

 

Минимальный модуль памяти

Форум — Linux-hardware

Интересует, есть ли минимально допустимый размер модуля памяти? Например, что если сделать на базе FPGA совместимый DDR2/3/4 модуль памяти, который будет сообщать, что доступно лишь 64/128 килобайта памяти? Это как-то может зависеть от конкретного BIOS-а. Будет ли он нормально приниматься системой? Возможно в самом стандарте памяти прописаны какие-то лимиты по объемам...

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

Спрашивал на спец форумах по ПЛИС, но уверенных ответов мне не попалось, всё же это дики изврат. Впрочем, можно для начала опробовать это с каким-то микроконтроллером, у которого поддерживается DDR2 интерфейс, если такие есть.

 ,

I-Love-Microsoft
()

Заставить программу рисовать программно

Форум — Development

Есть программа на Qt 5.9.2. Она запускается на моем компе, запускается она и в виртуальной машине без 3D ускорения. Используется новомодный QOpenGLWidget. Программу переношу с библиотеками, библиотеки полный фарш - всё есть.

Прикол в том, что уже на другом компе с Debian 8.9 с llvmpipe рендером и OpenGL 3.0 оно запускается но окошко как повисшее, просвечивает, а в консоль ошибка QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled. В итоге интерфейса нет, только рамка.

Я собирал программу в Ubuntu 14.04.5 и такой вот результат при запуске. Попробовал собрать в Debian 8.9 виртуалке вообще без 3D ускорителя - и смешно, но там запускается - а на целевом компе нет! Подозревал разные версии библиотек.

Но самый шок у меня вызывает то, что будучи собранной из исходников на том компе с Debian 8.9 - программа работает как надо и интерфейс рисуется отлично.

На целевом компе две видяхи - HD Graphics 620 и встроенный какой-то AMD/ATI Topaz XT Radeon R7 M260/M265 / M340/M360 / M440/M445.

name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
GLX version: 1.4
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 620 (Kabylake GT2) 
OpenGL core profile version string: 4.5 (Core Profile) Mesa 13.0.6
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 3.0 Mesa 13.0.6
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 13.0.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

Вопрос: можно ли заставить каким-то аргументом к программе заставить рисовать интерфейс софтварно? Помню, например стиль можно было так настроить - в программу компилировался код, обрабатывающий ключ командной строки. А может и режим software rendering можно как-то включить? Ведь на виртуалке без OpenGL всё путем работает.

А может оно видит поддержку OpenGL ES и цепляется за нее, а так как запущены «иксы» то ничего не пашет? Тогда надо как-то замаскировать OpenGL ES для этого приложения?

 ,

I-Love-Microsoft
()

Zeroc ICE ссылается на классы, которых нет в библиотеках

Форум — Development

Пытаюсь собрать самостоятельно библиотеку Zeroc ICE версии 3.6.4. Перехожу в cpp каталог, делаю make и, доустановив то что не хватало, всё наконец собирается. Появляются libIce.so.3.6.4 и libIceUtil.so.3.6.4, указываю includepath, указываю libs. У меня gcc version 4.8.4.

Однако собрать свою программу в итоге не выходит. Сам процесс компиляции проходит успешно, но валится на undefined reference to `IceInternal::Cpp11FnCallbackNC::Cpp11FnCallbackNC и прочих подобных.

Стал выяснять - этих функций и этих классов тупо нет в so-файлах. Само их объявление появляется в таких блоках:

#ifdef ICE_CPP11
::Ice::AsyncResultPtr
IceProxy::IceMX::MetricsAdmin::__begin_getMetricsViewNames(const ::Ice::Context* __ctx, const ::IceInternal::Function<void (const ::Ice::StringSeq&, const ::Ice::StringSeq&)>& __response, const ::IceInternal::Function<void (const ::Ice::Exception&)>& __exception, const ::IceInternal::Function<void (bool)>& __sent)
{
    class Cpp11CB : public ::IceInternal::Cpp11FnCallbackNC

Стал смотреть - в файле Config.h библиотеки есть такой участок:

#if (__cplusplus >= 201103) || \
    ((defined(__GNUC__) && defined(__GXX_EXPERIMENTAL_CXX0X__) && ((__GNUC__* 100) + __GNUC_MINOR__) >= 405)) || \
    (defined(_MSC_VER) && (_MSC_VER >= 1600))
#   define ICE_CPP11
#endif
Получается, что оно, увидев что компилятор больше чем GCC 4.5 (а у меня gcc version 4.8.4), пытается сувать какие-то куски кода, которых в итоге я и не вижу нигде.

Как побороть эту проблему? Не понимаю, при сборке ни разу ни пикнуло об варнингах, не то что ошибках.

Я даже явно пробовал подсовывать все файлы и каталоги:

CONFIG += c++11
QMAKE_CXXFLAGS+="-std=c++11"
INCLUDEPATH += /home/user/work/w/ice-3.6.4/cpp/include
LIBS += -L/home/user/work/w/ice-3.6.4/cpp/lib/x86_64-linux-gnu -l:libIce.so.3.6.4 -l:libIceUtil.so.3.6.4

 

I-Love-Microsoft
()

Совместить программу на Qt и ZeroC ICE 3.6

Форум — Development

Сабж. Есть обычная программа на Qt 5например9, а есть отдельный самодельный пример работы сервера на C++ (и тестовый клиент на Python набросал) - плюснутый сервер и питонский клиент работают замечательно.

Теперь же стоит задача грамотно объединить сервер в приложение на Qt. Сам ZeroC ICE предоставляет какие-то свои базовые классы типа Ice::Application, есть же механизмы колбэков, а также AMI (Asynchronous Method Invocation) - тоже на колобяках. Мне кажется всё это будет не очень красиво смешиваться с Qt.

Есть ли у кого-то опыт успешного объединения Qt + ZeroC ICE? Нужно чтобы ICE крутился в своем потоке и периодически отвечал на запросы клиента, и одновременно чтобы можно было подсунуть новые данные из остальной части программы на Qt. Как такое лучше сделать?

P.S. Пока думаю на своим вариантом, выложу когда сделаю.

 ,

I-Love-Microsoft
()

Подмножество Python для своих сценариев

Форум — Development

Есть некая программа (+устройство), которым можно и нужно управлять. Причем сценарии работы с устройством могут быть самыми разнообразными.

Сначала я делал свои текстовые программы работы. Затем реализовал функцию загрузки Python-файлов, которые исполняются в программе и выводят в stdout текст в нужном формате.

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

Как можно загнать скрипт на Python в некую песочницу? Ограничить возможности до необходимого минимума. Может даже есть специальные модули для реализации подобной задумки. Использую libpython из программы на C++.

 ,

I-Love-Microsoft
()

Работа с USB-serial в нативной программе

Форум — Development

Возникла мысль использовать дешевый Android-планшет для управления самодельным прибором (если ставить на планшет Linux это может быть сложно или будут проблемы с драйверами, особенно графическими).

У FTDI есть некие преобразователи с поддержкой Android, там упоминается Java. Но вот вопрос: а я смогу это использовать через QSerialPort в программе Qt 5 на Android? У кого есть опыт?

P.S. Пока что рабочий вариант это процессорный модуль с тач-LCD от Starterkit.

 , ,

I-Love-Microsoft
()

Как вывести в файл чтобы интерактивно смотреть

Форум — Development

Есть Matplotlib. Хороша, всё работает. Но хочу выводить графики в отчет, для этого вызываю savefig и оно падает в файл (например jpg). Но для этого приходится подстраивать масштаб, DPI и размер в дюймах. Не всегда это удобно. Иногда нужно увеличить части графика чтобы рассмотреть детальнее.

Существует ли в Matbplolib возможность вывода в какой-то удобный формат вместо plot в картинку? Чтобы затем ковыряться интерактивной программой. Примерно как это происходит при обычном show(), когда появляется окно. Вопрос в какой формат это выводить чтобы какая-то графосмотрелка открывала.

 ,

I-Love-Microsoft
()

Поднять USB-интерфейс на МК Миландр

Форум — Job

Надеюсь я не ошибся с разделом, вроде и маленькие работки допустимо размешать тут, не только полноценные предложения о работе.

Требуется поднять USB-интерфейс на МК Миландр USB (К1986ВЕ92QI), т.е. создать некий базовый код обмена, который можно будет доработать до нужной задачи впоследствии. На стороне ПК - работа через libusb. Есть готовый пример от производителя для USB CDC (вроде драйвер не требуется на стороне ПК в этом случае). В общем, нужно просто поднять.

Вторая задача, это заставить работать MicroPython на этом МК.

Может ли кто-то взяться за такую работу? Сколько это может стоить? Лучше конечно в Санкт-Петербурге, можно было бы встретиться лично.

 ,

I-Love-Microsoft
()

два MSI-прерывания от одного устройства

Форум — Development

С помощью pci_enable_msi и devm_request_irq удается заставить драйвер реагировать на прерывание с индексом 0 (MSI 0). Возникла необходимость добавить реакцию на MSI 1.

Чтение http://lxr.free-electrons.com/source/Documentation/PCI/MSI-HOWTO.txt достичь просветления не помогло. Тут я четко вижу что у struct pci_dev есть только одно поле unsigned int irq: http://lxr.free-electrons.com/source/include/linux/pci.h#L335

Может это не нужно явно прописывать и в обработчике можно в любой момент получить номер MSI?

 ,

I-Love-Microsoft
()

создать виджет для отображения

Форум — Development

Спустя много лет, хочу повторно освоить Qt3D. Вижу в Qt 5.7 он существенно изменился. Для этой цели смотрю Qt/Examples/Qt-5.7/qt3d/simple-cpp. Там используется Qt3DWindow и QEntity в качестве корневого объекта.

Вопрос: как запихнуть сцену Qt3D на обычное окно среди прочих виджетов типа кнопок? Нужно именно C++-версия.

В примере вижу лишь Qt3DWindow, которое наследовано от QWindow - разве это можно засунуть рядом с другими виджетами? Никаких Qt3DWidget и подобного - не вижу, хотя помнится ранее оно могло вставляться подобно QGLWidget-у...

 , qt3d

I-Love-Microsoft
()

скрипты в микроконтроллер

Форум — Development

Посоветуйте самый минималистичный скриптовый язык, чтобы влезал в 32-64К флэш памяти (лучше меньше) и 4-16 Кбайт ОЗУ (микроконтроллер Cortex-M3). Нужно что-то совершенно простейшее. То, чем вы уже пользовались сами, не просто в инете видели.

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

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

 ,

I-Love-Microsoft
()

Получать числа от скрипта по мере выполнения

Форум — Development

Ранее я создавал тему с вопросом: как получить результат работы скрипта Pyhton 3 в память при вызове через Python C-API (libpython). Это успешно удалось решить: после завершения работы программы получаем unicode-строку. Запускаю в отдельном QThread. Код привожу ниже.

Теперь же стала задача: нужно получать от скрипта если не вывод stdout, то хотя бы периодически одно число, а именно процент выполнения. Т.е. скрипт выполняется долго, но сам скрипт знает что он выполнил 67% работы. Надо как-то «наверх» передать.

Как можно это сделать? Какие-то экзепшены, колбэки, может представить всё выполнение как генератор и периодически дергать yield на каждый процент работы? А может получить указатель на PyObject куда скрипт кладет проценты и дергать раз в секунду, будет ли это потокобезопасно. Не представляю пока как.

void c_py::slot_py(QString py)
{
	QString _redirect =
"import sys\n\
class _redirect:\n\
	def __init__(self):\n\
		self.value = ''\n\
	def write(self, text):\n\
		self.value += text\n\
redirect = _redirect()\n\
sys.stdout = redirect\n\
sys.stderr = redirect\n";

	Py_Initialize();
	PyObject *module = PyImport_AddModule("__main__");
	PyRun_SimpleString(_redirect.toLatin1().data());
	PyRun_SimpleString(py.toUtf8().data());
	PyRun_SimpleString("sys_stdout = redirect.value");
	PyObject *_out = PyObject_GetAttrString(module, "sys_stdout");
	char *c_str = PyUnicode_AsUTF8(_out);
	QString out = QString(c_str);
	Py_Finalize();
	sig_py(out);
}

hizel Virtuos86

 , ,

I-Love-Microsoft
()

Qt Creator 4.2.1, Qt 5.8.0 - не переключается язык

Форум — Development

Обновился до новой версии Qt 5.8.0, а заодно креатор подтянул. В итоге не переключается язык ни в нем самом, ни в программах собранных на Qt 5.8.0. Использую Ubuntu 14.04.5 64-бит + Unity (дефолт).

У кого еще такая проблема? И как ее решили, если удалось?

Кто-то создал багрепорт уже (я нашел), пожалуйста ватчите и завотьте там: https://bugreports.qt.io/browse/QTCREATORBUG-17704 может чем больше будет голосов и наблюдателей, тем быстрее решат.

upd: под оффтопом сэмь язык переключается нормально в программах с 5.8.0, быть может под редхатом тоже всё норм

 ,

I-Love-Microsoft
()

Получить значение строки через C-API

Форум — Development

Есть некая программа, которая использует Python через C-API. Подскажите как в ней получить значение строки? Допустим, после выполнения простой строки при помощи PyRun_SimpleString образовалась текстовая переменная test:

Py_Initialize();
PyObject *module = PyImport_AddModule("__main__");
qDebug() << "python=" << PyRun_SimpleString("import math\ntest = 'haha'\nprint('%d -> %s' % (math.sqrt(144), test))\n");
PyObject *_out = PyObject_GetAttrString(module, "test");
char *c_str = PyByteArray_AsString(_out);
QString out = QString(c_str);
qDebug() << "out=" << out;
Py_Finalize();
Как получить значение этой строки?

Вышеприведенный пример не падает, но на выходе пустая строка. Есть еще способ через PyUnicode_FromString но опять же он не работает. Вообще непонятно, может PyObject_GetAttrString это неверный путь? PySys_GetObject тоже не дает результата совместно с PyUnicode_FromString.

Если кто работал с C-API, подскажите пожалуйста, уже второй день гуглю, но ни примеры из инета ни документация не помогает разобраться. Хотя странно, вроде самая простая задача.

 ,

I-Love-Microsoft
()

Получить вывод встроенного Python 3

Форум — Development

Есть программа, в которой требуется на лету выполнять скрипты. Для этого я задействовал libpython, что (поправьте если ошибаюсь) позволяет с собой таскать полноценный интерпретатор в виде дополнительный библиотеки к C++ программе, т.е. не просто API доступа к установленному в системе Python, а именно библиотека с полноценной реализацией интерпретатора. Чтобы иметь возможность парсить вывод скрипта, я перенаправляю stdout в файл, который попадает не в файловую систему а остается в памяти. Мне требуется именно вывод скрипта в stdout. Для начала Python 2.7:

#include <python2.7/Python.h>
...
Py_Initialize();
PyObject *sys = PyImport_ImportModule("sys");
PyObject *out = PyFile_FromString("python_out", "w+");
PyObject_SetAttrString(sys, "stdout", out);
FILE *output = PyFile_AsFile(out);
qDebug() << "python=" << PyRun_SimpleString("import math\n"
	"print('%d' % math.sqrt(144))\n");
rewind(output);
QTextStream ts(output);
qDebug() << "ts=" << ts.readAll();
Py_Finalize();
На выходе видим правильный результат (достаточно лишь получить окончательный вывод, выхлоп в процессе не требуется):
python= 0
ts= "12\n"

При #include <python3.4m/Python.h> нет никаких PyFile_*. Как решить эту задачу для Python 3? Гугление постоянно выдает трюк с PyFile_.

 , ,

I-Love-Microsoft
()

Установка пакетов в MSys2 и Anaconda

Форум — Development

Это двойной вопрос, две разные системы, а проблема одна: установив Anadonda 2 и MSys2/MinGW на компьютере без интернета с ОС Windows 7, теперь требуется установить несколько пакетов поверх. В MSys2 нужно доустановить лишь make, в Anaconda нужно доустановить два пакета mingw и libpython. Когда есть интернет - всё просто и легко и всё работает, когда его нет - нужно придумать способ установить без интернета.

Есть ли у MSys2 и Anaconda нечто вроде /var/cache/apt где скачанные пакеты валяются?

 , , , ,

I-Love-Microsoft
()

запустить MinGW и выполнить в нем команду

Форум — Development

Мне стыдно в этом признаться, делаю скрипт на Python для Windows 7, но меня оправдывает то что в Linux это всё уже работает, теперь вот еще платформу добавить надо.

Чтобы использовать нужную инфраструктуру, я использую MinGW 64-bit. Всё что я хочу оно работает если запускать MinGW вручную и там команду вбивать. Но как запустить MinGW окружение при помощи вызова os.system? Там есть msys2_shell.cmd - да, открывается shell в отдельном окне.

Мне нужно чтобы MinGW окружение просто стартануло в текущей сессии, либо как-то заставить появившееся MinGW выполнить нужную мне команду (без прописки каких-либо конфиг файлов). Как это сделать?

P.S. Похоже просто прописывание bin каталога в PATH не помогает, нужно «полное погружение» чтобы скрипт отработал.

 , ,

I-Love-Microsoft
()

Кроссплатформенный скрипт запуска

Форум — Development

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

Поэтому я бы взял Python для этой задачи, версии 2.7.x. На Linux проблем нет - взлетит на любом дистре. А как быть с оффтопиком?

Подскажите какой-нибудь минималистичный рантайм или как его сформировать без особых страданий (но лучше готовый), чтобы на оффтопике был небольшой exe не более пары мегабайт. Чтобы пользователь кликнул батю (run.bat) и у него пошел такой же процесс как и на Linux по поиску ПО нужных поддерживаемых версий.

(нужна удобная запускалка тестового окружения, и для этого нужен поиск симуляторов типа Aldec или Modelsim, а также еще некоего софта в зависимости от типа найденного подходящего симулятора - такое только сложный скрипт на Python решит, а на оффтопе его надо чем-то еще запустить)

 ,

I-Love-Microsoft
()

не собрать llvmlite, не видит llvm-config-3.8

Форум — Development

При попытке сборки llvmlite, которая нужна для нормальной скорости работы кое какой библиотеки, вываливается ошибка:

RuntimeError: Building llvmlite requires LLVM 3.8.x. Be sure to set LLVM_CONFIG to the right executable path
Однако llvm-config-3.8 установлено и работает (как и прочие компоненты llvm-3.8). Хорошо, а если так?
export LLVM_CONFIG=/usr/bin/llvm-config-3.8
printenv | grep LLVM
LLVM_CONFIG=/usr/bin/llvm-config-3.8
sudo pip install llvmlite
А оно опять за своё, и не собирает. Что же не так? Пробовал LLVM_CONFIG=/usr/bin и не помогло.

 ,

I-Love-Microsoft
()

получать случайные числа по имеющейся плотности

Форум — Development

Предположим, имеется некое распределение плотности вероятности. Оно задано 1000 точками для числа, которое может меняться в диапазоне от -1 до 1. Как генерировать случайные числа так, чтобы в итоге они сложились именно как в этой заданной плотности вероятности (для самопроверки)? Понятное дело, что в рамках 1/1000 кусочка плотности вероятности можем считать распределение равномерным.

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

А что если я хочу вообще задать плотность произвольной формы: лесенки + башенки, треугольники и синусы, наконец силуэт какого-то города, ну так, чисто для проверки возможности )))

 ,

I-Love-Microsoft
()

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