Всем привет! Помогите пожалуйста разобраться, с тем, можно ли при использовании Q3DSurface дополнительно нарисовать линии, по заданным точкам. Т.е. есть стандартный пример, который рисует поверхность, но нужно ее «проткнуть» своей линией. Спасибо.
Подскажите, пожалуйста, можно ли получить данные координатной сетки из
QHeightMapSurfaceDataProxy? Поверхность отрисовывается нормально. Я делал попытки
получить данные через const QSurfaceDataArray *array = layerNewProxy->array();
но все что, пробовал возвращает 0 или ASSERT(...).
Q3DSurface *surface = new Q3DSurface();
QImage layerOneHMap(":/maps/layer_1.png");
QHeightMapSurfaceDataProxy *layerOneProxy = new QHeightMapSurfaceDataProxy(layerOneHMap);
QSurface3DSeries *layerOneSeries = new QSurface3DSeries(layerOneProxy);
layerOneSeries->setItemLabelFormat(QStringLiteral("(@xLabel, @zLabel): @yLabel"));
layerOneProxy->setValueRanges(34.0f, 40.0f, 18.0f, 24.0f);
layerOneSeries->setDrawMode(QSurface3DSeries::DrawSurface);
layerOneSeries->setFlatShadingEnabled(false);
surface->addSeries(layerOneSeries);
Всем добрый день! Ребята, подскажите пожалуйста, как сделать так, чтобы при старте все виджеты располагались в основном окне, но можно было виджеты перетаскивать, чтобы они были как отдельные окна. Как в «фотошопе». Расположение виджетов основного окна по ссылке:
https://drive.google.com/file/d/11NkHLHssTmYAmaKc4liFR6OMJvUpdDJb/view?usp=sharing
Сейчас эксперементирую с QDockWidget. Создаю и загружаю виджеты
так:
Для модуля на платформе zynq пытаюсь написать platform_driver. Это достаточно новая тема для меня. В модуле есть источник данных DDS, который выдает их через AXI_DMA в DDR3. Написал приложение, программируя регистры узлов через mmap(). Все работает: DMA, GPIO, DDS. Приложение использовалось для отладки прошивки FPGA. Теперь нужно написать «правильно» с использованием драйвера и подсистемы dmaengine linux.
1) Как еще можно получить дескриптор конкретного канала DMA, кроме: dma_request_slave_channel(&pdev->dev, «dma») + создание дополнительного виртуального устройства в dts (см. ниже метка - custom_device)? Т.е. можно ли получить дескриптор канала не из platform_device? Пытался добавлять dmas и dma-names непосредственно в axi_dma_0 - результата не получил.
2) Как можно получить ресурсы узла gpio@41200000, если у меня в виртуальном устройстве есть phandle этого узла. (нужно для синхронизации и сброса) Ну или как можно получить эти ресурсы из dtb? Т.к. в поле dev->dev.of_node есть только phandle.
Помогите с установкой Linux MCBC и Ubuntu 12.04 на одной машине.
Делал следующее:
1) Устанавливал MCBC (/dev/sda5)
2) Устанавливал Ubuntu (/dev/sda6 or /dev/sda1)
После этого не загружается MCBC, хотя в списке загружаемых систем он виден. При выборе МСВС комп сразу перегружается. Ubuntu грузится нормально. Может нужно что-то добавить в grub.cfg? я погуглил пару вариантов, но ответа пока не нашел.
Спасибо.
После обновления дистрибтива Ubuntu с 11.04 на 11.10 перестали собираться мои приложения использующие мои разделяемые библиотеки. Сами библиотеки собираются. С предыдущей системой все собиралось и работало. В 10.10 так же никаких проблем нее было. Подскажите, куда копать. Может быть в моих Makefile есть ошибки которых я не вижу. Прочитал что стало нового в gcc - ответа не нашел. Спасибо.
$uname -a
Linux u32 3.0.0-12-generic-pae #20-Ubuntu SMP Fri Oct 7 16:37:17 UTC 2011 i686 i686 i386 GNU/Linux
Есть модуль ядра для PCI-устройства, который нормально работает на разных версиях Linux c различными ядрами до 2.6.35 на процессорах Intel Core Dou и других x86, кроме Core i7 (на остальных Core iX не проверял).
В модуле выделяются блоки памяти с помощью dma_alloc_coherent() для выполнения DMA в режиме bus mastering. Для блоков устанавливаю флаги SetPageReserved(). Физические адреса этих блоков передаются в приложение пользователя, где для них вызывается mmap() (в модуле remap_pfn_range()). Так вот при чтении данных всегда получаю 0xFFFFFFFF, хотя устройство непрерывно заполняет выделенные блоки памяти данными. Т.е. bus mastering DMA работает, формируются прерывания, ничего не подвисает. И такое поведение наблюдается только на Core i7. Подскажите в каком направлении копать. Куски кода приложу какие будут нужны. Спасибо.
В приложении пространстве пользователя выделяется большой объем памяти, 128 Мб и более. Необходимо получить физические адреса всех страниц этой памяти для формирования DMA буфера. Адрес буфера пользователя передается в модуль ядра в функцию get_user_pages():
функция выолняется без ошибок и возвращает необходимое число страниц. Когда начинаю смотреть содержимое буфера locked_pages,
то там во всех элементах один и тот же указатель хранится.
Подскажите почему адреса в locked_pages все одинаковые? Может я неправильно применил get_user_pages(). Просто непонятно что делать дальше с «таким» результатом.
Спасибо.
Нужно выделить максимально возможное количество памяти в системе. Интересует выделение памяти как в 32 так и 64 битном Linux. Я написал простенький модуль для ядра 2.6, с тестовым приложением для проверки:
http://narod.ru/disk/12704488000/ALLOCATOR.tgz.html Ядро для выделения памяти из зон ZONE_NORMAL, ZONE_DMA и ZONE_HIGMEM составляет набор функций:
__get_free_pages(), alloc_pages(), kmap().
Правильно ли я выбрал направление, может есть способы проще решить эту задачу?
Помогите разобраться с проблемой при компиляции модуля ядра!
Дистрибутив Debian.
$gcc --version
gcc (GCC) 4.1.2 20061028 (prerelease) (Debian 4.1.1-19)
$uname -a
Linux idle 2.6.18-3-686 #1 SMP Mon Dec 4 16:41:14 UTC 2006 i686 GNU/Linux
При использовании имени битового поля CS - в объединении -
// ID ROM Auxiliary Register structure
typedef union _DEV_IDROM {
u32 AsWhole; // Board Mode Register as a Whole Word
struct { // Mode Register as Bit Pattern
ULONG DI : 1, // Data Input
WR : 1, // Write Flag
CS : 1; // CS EEPROM (Такое имя почему-то недопустимое)
} ByBits;
} DEV_IDROM;
получаю ошибку и предупреждение компилятора:
error: expected identifier or ‘(’ before numeric constant
warning: no semicolon at end of struct or union
Если переименовать поле скажем в CHS, то все в порядке.
Скажите пожалуйста, кто нибудь использовал
phtread_mutex_t для синхронизации процессов,
а не потоков.
Как это сделать, если эта
константа _POSIX_PROCESS_SHARED не определена?
Спасибо.
Помгите с Makefile для модуля ядра версии 2.6.х. при условии что
проект разделен на каталоги и не все исходные файлы находятся в одной
директори. Спасибо.
Не могу скомпилировать модуль ядра с типом данных:
typedef union _IDROM {
u32 AsWhole; // Board Mode Register as a Whole Word
struct { // Mode Register as Bit Pattern
u32 DI : 1, // Data Input
WR : 1, // Write Flag
CS : 1; // CS EEPROM
} ByBits;
} IDROM;
init_idrom()
{
IDROM id;
id.ByBits.CS = 0;
id.ByBits.WR = 0;
id.ByBits.DI = 0;
}
Почему-то gcc не хочет понимать CS. Как только меняю CS на _CS
все проходит без ошибок. Помогите разобраться!
Ядро 2.6.9. Дистрибутив ASPLinux 10. Спасибо.
Подскажите как установить Linux на машину без CD. Есть сетевая карта и floppy. Машина VR6 SBS Technologies. Буду признателен за ссылки или советы. Спасибо.
Нужно перенести прогу с Windows на Linux.
Подскажите плиз, есть-ли в Linux библиотеки в которых реализованы
функции аналогичные WaitForSingleObject(...) с параметром timeout.
Чтобы не изобретать велосипед снова. Спасибо.
Есть система работающая на связке NT4+RTX. Средне время обмена между
устройствами 1000 - 1500 мкс. Обмен небольшим количеством данных порядка 100 32-разрядных слов.
Нужно перенести ее на Linux-2.6.х. Подскажите пожалуйста как подойти к выбору патча. Как этот патч поставить. Если кто-то похожим занимался поделитесь опытом. Спасибо.
Помогите плиз! Как создать семафор? То, что я сделал работает только под root-ом. Под user-ом выдает: Permission denied!
sem_t *Sem_open( char *sname, char *file, int line)
{
sem_t *semid = sem_open( sname, (O_CREAT|O_EXCL), (S_IWOTH|S_IROTH), 1 );
//printf(" Sem_open: sem = 0x%X\n", (int)semid);
if( semid == SEM_FAILED ) {
printf( "\n FILE %s, LINE %d, %s", file, line, strerror( errno ) );
return semid;
}
//Sem_getvalue( semid, NULL, sname, file, line );
return semid;
}
Спасибо. P.S. Эксперементировал с разными oflag и mode_t - не помогло.
После обновления ядра с 2.6.9 (ASPLinux) патчем до версии 2.6.10
перестал работать драйвер для PCI-устройства в части bus mastering.
Драйвер в 2.6.9 и в 2.6.10 компилится без ошибок и
предупреждений. Подскажите плиз в каком напрвлении копать. Или
кто сталкивался с подобными проблемами? Может поделитесь ссылками
по конфигурированию ядра? Спасибо.