LINUX.ORG.RU

Сообщения karak

 

Qt Data Visualization, Q3DSurface + линии

Форум — Development

Всем привет! Помогите пожалуйста разобраться, с тем, можно ли при использовании Q3DSurface дополнительно нарисовать линии, по заданным точкам. Т.е. есть стандартный пример, который рисует поверхность, но нужно ее «проткнуть» своей линией. Спасибо.

Пример, о котором идет речь. https://doc.qt.io/qt-5/qtdatavisualization-surface-example.html

 

karak
()

Помогите получить координатную сетку из QHeightMapSurfaceDataProxy

Форум — Development

Всем привет!

Подскажите, пожалуйста, можно ли получить данные координатной сетки из 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);

Благодарю за помощь.

 

karak
()

Qt приложение с возможностью перетаскивать виджеты

Форум — Development

Всем добрый день! Ребята, подскажите пожалуйста, как сделать так, чтобы при старте все виджеты располагались в основном окне, но можно было виджеты перетаскивать, чтобы они были как отдельные окна. Как в «фотошопе». Расположение виджетов основного окна по ссылке: https://drive.google.com/file/d/11NkHLHssTmYAmaKc4liFR6OMJvUpdDJb/view?usp=sharing

Сейчас эксперементирую с QDockWidget. Создаю и загружаю виджеты так:

	QDockWidget *dock2 = new QDockWidget(this);
	dock2->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
	dock2->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
	dock2->setWidget(ui->widgetLinePlot0);
	dock2->show();

	QDockWidget *dock3 = new QDockWidget(this);
	dock3->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
	dock3->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
	dock3->setWidget(ui->widgetLinePlot1);
	dock3->show();

	QDockWidget *dock4 = new QDockWidget(this);
	dock4->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
	dock4->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
	dock4->setWidget(ui->widgetLinePlot2);
	dock4->show();

В Qt не силен. Подскажите направление,как проще решить данную задачу. Буду балгодарен за фрагмент кода, с данным функционалом. Благодарю за помощь.

 

karak
()

platform driver & device_tree

Форум — Development

Здравствуйте всем!

Для модуля на платформе zynq пытаюсь написать platform_driver. Это достаточно новая тема для меня. В модуле есть источник данных DDS, который выдает их через AXI_DMA в DDR3. Написал приложение, программируя регистры узлов через mmap(). Все работает: DMA, GPIO, DDS. Приложение использовалось для отладки прошивки FPGA. Теперь нужно написать «правильно» с использованием драйвера и подсистемы dmaengine linux.

За основу взял вот это: https://github.com/Xilinx/linux-xlnx/blob/master/drivers/dma/xilinx/axidmatest.c

И столкнулся со следующими вопросами:

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.

Вот фрагмент моего dts:

                axi_dma_0: dma@40400000 {
                        #dma-cells = <1>;
                        compatible = "xlnx,axi-dma-1.00.a";
                        dma-channel@40400030 {
                                compatible = "xlnx,axi-dma-s2mm-channel";
                                dma-channels = <0x1>;
                                interrupts = <0 29 4>;
                                xlnx,datawidth = <0x40>;
                                xlnx,device-id = <0x0>;
                        };
                };
                axi_gpio_0: gpio@41200000 {
                        #gpio-cells = <2>;
                        compatible = "xlnx,xps-gpio-1.00.a";
                        gpio-controller ;
                        reg = <0x41200000 0x10000>;
                };
                custom_device: custom {
                        compatible = "custom,axi-dma-test-1.00.a";
                        dmas = <&axi_dma_0 0>;
                        dma-names = "dma";
                        gpio0 = <&axi_gpio_0>;
                };

Могу предоставить любую дополнительную информацию. Буду балгодарен за любую помощь. Спасибо.

 ,

karak
()

MCBC + Ubuntu

Форум — Linux-install

Помогите с установкой Linux MCBC и Ubuntu 12.04 на одной машине. Делал следующее: 1) Устанавливал MCBC (/dev/sda5) 2) Устанавливал Ubuntu (/dev/sda6 or /dev/sda1) После этого не загружается MCBC, хотя в списке загружаемых систем он виден. При выборе МСВС комп сразу перегружается. Ubuntu грузится нормально. Может нужно что-то добавить в grub.cfg? я погуглил пару вариантов, но ответа пока не нашел. Спасибо.

karak
()

undefined reference in shared library

Форум — Development

После обновления дистрибтива 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

$gcc --version
gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

########################################################
# Makefile fo shared library
########################################################

BASENAME := libtest.so
SONAME := $(BASENAME).0
LIBNAME := $(BASENAME).0.0

all: $(LIBNAME)

LIBDIR := $(shell pwd)

INC := $(addprefix -I, . ..)
SRC := $(wildcard *.cpp)
OBJ := $(SRC:.cpp=.o)

CFLAGS := -O2 -fPIC $(INC)

CC := $(CTOOLS_PREFIX)g++
LD := $(CTOOLS_PREFIX)g++

$(LIBNAME): $(OBJ)
$(LD) -shared -Wl,-soname,$(SONAME) -o $(LIBNAME) $(notdir $(OBJ)) -ldl -lrt -lc
chmod 666 $(LIBNAME)
ln -sf $(LIBDIR)/$(LIBNAME) $(LIBDIR)/$(SONAME)
ln -sf $(LIBDIR)/$(SONAME) $(LIBDIR)/$(BASENAME)

%.o: %.cpp
$(CC) $(CFLAGS) -c -MD $<

clean:
rm -fv *.o *.d *.so*

########################################################
# Makefile for application
########################################################

TARGET_NAME := test

all: $(TARGET_NAME)

ROOT_DIR := $(shell pwd)
LIBPATH := $(HOME)/shlibtest/shlib

CC := g++
LD := g++

CFLAGS := -g -Wall
LFLAGS := -Wl,-rpath,$(LIBPATH) -L"$(LIBPATH)" -ltest

$(TARGET_NAME): $(patsubst %.cpp,%.o, $(wildcard *.cpp))
$(LD) $(LFLAGS) $^ -o $(TARGET_NAME)
rm -f *.o *~ core

%.o: %.cpp
$(CC) $(CFLAGS) -c -MD $<

include $(wildcard *.d)

distclean:
clean:
rm -f *.o *~ core
rm -f *.d *~ core
rm -f $(TARGET_NAME)

karak
()

dma_alloc_coherent() and mmap

Форум — Development

Есть модуль ядра для 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. Подскажите в каком направлении копать. Куски кода приложу какие будут нужны. Спасибо.

karak
()

вопрос о get_usr_pages()

Форум — Development

В приложении пространстве пользователя выделяется большой объем памяти, 128 Мб и более. Необходимо получить физические адреса всех страниц этой памяти для формирования DMA буфера. Адрес буфера пользователя передается в модуль ядра в функцию get_user_pages():

  int	 n_pages = 0;
  struct page** locked_pages = kmalloc(
         (userSpaceSize/PAGE_SIZE)*sizeof(struct page*),
         GFP_KERNEL));
 
  down_read(&current->mm->mmap_sem);
  n_pages = get_user_pages(current, 
			  current->mm,
			  userSpaceAddress,
			  (userSpaceSize/PAGE_SIZE),
			  1, 
			  0,
			  locked_pages, NULL);
  up_read(&current->mm->mmap_sem);
функция выолняется без ошибок и возвращает необходимое число страниц. Когда начинаю смотреть содержимое буфера locked_pages, то там во всех элементах один и тот же указатель хранится.

for(i=0; i<n_pages; i++) {
    printk("<0>%s - %s(): page[%d] = %p\n", 
           DRVNAME, __FUNCTION__, i,              
           locked_pages[i]);
}

log при userSpaceSize = 0x4000: (при больших размерах результат такой же)

UserMemoryLock(): Lock 4 memory pages
UserMemoryLock(): page[0] = c17625e0
UserMemoryLock(): page[1] = c17625e0
UserMemoryLock(): page[2] = c17625e0
UserMemoryLock(): page[3] = c17625e0
Подскажите почему адреса в locked_pages все одинаковые? Может я неправильно применил get_user_pages(). Просто непонятно что делать дальше с «таким» результатом. Спасибо.

karak
()

Kernel Memory Allocation

Форум — Development

Нужно выделить максимально возможное количество памяти в системе. Интересует выделение памяти как в 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().

Правильно ли я выбрал направление, может есть способы проще решить эту задачу?

Спасибо.

karak
()

частота процессора

Форум — Development

Подскажите, как можно-ли определить частоту процессора минуя /proc? 
Спасибо.

>>>

karak
()

Непонятная ошибка при компиляции модуля ядра

Форум — Development

Помогите разобраться с проблемой при компиляции модуля ядра!

Дистрибутив 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, то все в порядке.

>>>

karak
()

XFCE

Форум — Linux-install

Подскажите где почитать как установить XFCE 4.2 на gentoo 2006.0. Спасибо.

karak
()

_POSIX_PROCESS_SHARED

Форум — Development

Скажите пожалуйста, кто нибудь использовал
phtread_mutex_t для синхронизации процессов,
а не потоков. 
Как это сделать, если эта
константа _POSIX_PROCESS_SHARED не определена?
Спасибо.

karak
()

Makefile для модуля ядра

Форум — Development

Помгите с Makefile для модуля ядра версии 2.6.х. при условии что проект разделен на каталоги и не все исходные файлы находятся в одной директори. Спасибо.

karak
()

Помогите с компиляцией в модуле.

Форум — Development

Не могу скомпилировать модуль ядра с типом данных:

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. Спасибо.
karak
()

Install linux on VR6

Форум — Linux-install

Подскажите как установить Linux на машину без CD. Есть сетевая карта и floppy. Машина VR6 SBS Technologies. Буду признателен за ссылки или советы. Спасибо.

karak
()

Перенести прогу с Windows на Linux

Форум — Development

Нужно перенести прогу с Windows на Linux.
Подскажите плиз, есть-ли в Linux библиотеки в которых реализованы
функции аналогичные WaitForSingleObject(...) с параметром timeout.
Чтобы не изобретать велосипед снова. Спасибо.
karak
()

Real time

Форум — Development

Есть система работающая на связке NT4+RTX. Средне время обмена между
устройствами 1000 - 1500 мкс. Обмен небольшим количеством данных порядка 100 32-разрядных слов.
Нужно перенести ее на Linux-2.6.х. Подскажите пожалуйста как подойти к выбору патча. Как этот патч поставить. Если кто-то похожим занимался поделитесь опытом. Спасибо.
karak
()

sem_open

Форум — Development

Помогите плиз! Как создать семафор? То, что я сделал работает только под 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 - не помогло.
karak
()

Kernel configuration

Форум — Development

После обновления ядра с 2.6.9 (ASPLinux) патчем до версии 2.6.10 перестал работать драйвер для PCI-устройства в части bus mastering. Драйвер в 2.6.9 и в 2.6.10 компилится без ошибок и предупреждений. Подскажите плиз в каком напрвлении копать. Или кто сталкивался с подобными проблемами? Может поделитесь ссылками по конфигурированию ядра? Спасибо.

karak
()

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