Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
buildroot-2019.02 на базе ядра 4.14.78-1.0.0 для i.mx6 quad/dual/solo
sasamy
Добавлено 12.03.2019 14:20 Редактировалось 19.03.2019 00:45
0
Сообщение: 1
sasamy
4.71

Пункты: 83770
Регистрация: 14.08.2009
https://yadi.sk/d/trD81uMrJYonuQ

насктройка и сборка аналогичны

http://www.starterkit.ru/html/index.php?name=forum&op=view&id=28554

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

0) дефолтные конфиги используют кросскомпилятор arm/linaro и собираются только на 64-битной хост-системе Linux. Связано с тем что библиотекам OpenGL от NXP требуется glibc версии не ниже 2.27, для 32-битных систем Linaro кросскомпилятор использует версию 2.25. Можно сконфигурировать buildroot для сборки своего тулчейна с более свежей версией glibc, но это не тестировалось или уствновить в виртуалке 64-битную систему.

1) не поддерживает размещение данных на MLC NAND

http://www.starterkit.ru/html/index.php?name=forum&op=view&id=29907&last#29907

2) Не работает SPDIF (по крайней мере выход) - подозрение на новый скрипт SDMA, на референсах NXP используется только вход

3) В обновленном gstreamer 1.14 изменилось поведение tee в результате чего с ним перестали работать плагины gstreamer-imx

https://github.com/Freescale/gstreamer-imx/issues/223

как временное решение проблемы - использовать дополнительный элемент перед tee

... ! identity drop-allocation=true ! tee ....

пример есть в испраленном скрипте vcv4.sh, этот элемент просто заставляет работать tee как раньше
Спуститься к концу Подняться к началу
Персональная информация
ask2000
Добавлено 29.03.2019 15:42 Сообщение: 2
ask2000
0

Пункты: 2598
Регистрация: 10.08.2016
Привет, коллеги.
Никто еще не собирал свои проекты под новым билрутом?

У меня что-то не срастается :
заменил в
Код
BRDIR ?= /home/ask/work/buildroot-2017.08-sk
cross_compile = $(BRDIR)/output/host/bin/arm-buildroot-linux-gnueabihf-
SYSROOT = $(BRDIR)/output/staging

2017.08 на 2019.02 и arm-buildroot-linux-gnueabihf- на arm-linux-gnueabihf- и посыпались ошибки : не найдены .h файлы. Подставил
Код
-I $(BRDIR)/output/build/linux-custom/include

файлы нашлись, но появились другие ошибки, уже в системных включаемых файлах.
Что делать, ума не приложу, помогите заклинанием
Спуститься к концу Подняться к началу
Персональная информация
DeD
Добавлено 30.03.2019 08:55 Сообщение: 3
DeD
0

Пункты: 393
Регистрация: 27.02.2012
У меня собралось. Штатная конфигурация под HolaDuo+VCEB, и моя конфигурация с другими настройками ядра под SODIMM-DUO.

Но есть вопрос, который меня беспокоит: по Qt в данном релизе.
Плата HolaDuo, конфигурация imx6sk_qt5gst_defconfig.
Хост: виртуальная машина Ubuntu 18.04 64-bit, Qt Creator 4.8.2.

Описание:
Любое оконное приложение при закрытии завершается "SegmentationFault" при запуске с консоли самой платы, и "Process killed by signal" при удаленном запуске из qtcreator. Даже если создать простейшее окно из проводника New Project->Qt Widgets Application->OK-OK. То есть приложение работает, но при штатном завершении работы всегда такие сообщения. Пробовал и SLOT(close()), и через отлавливание SIGINT, через завршение qApp->quit(), всегда проявляет сбой при заверении приложения. Деструктор окна отрабатывается нормально, сбой при выходе из основной функции main.
Спуститься к концу Подняться к началу
Персональная информация
ask2000
Добавлено 30.03.2019 16:41 Сообщение: 4
ask2000
0

Пункты: 2598
Регистрация: 10.08.2016
Не выходит. Разные варианты компиляторов, разные конфигурации, никак
Причем билдрут 2017.08 собирает норм.
Вот пример для тестов:
Makefile
Код
#BRDIR ?= /home/ask/work/buildroot-2017.08-sk
#cross_compile = $(BRDIR)/output/host/bin/arm-buildroot-linux-gnueabihf-
#SYSROOT = $(BRDIR)/output/staging

BRDIR ?= /home/ask/work/buildroot-2019.02-sk
cross_compile = $(BRDIR)/output/host/bin/arm-buildroot-linux-gnueabihf-
SYSROOT = $(BRDIR)/output/staging/usr/include

CC = ${cross_compile}gcc
STRIP = $(cross_compile)strip

LIBS = -lncurses
LIBS += -lgomp
LIBS += -lpanel
LIBS += -lmenu
LIBS += -lm -lpthread
LIBS += -lzip
LIBS += -limxvpuapi
LIBS += -lzip
LIBS += -lg2d
LIBS += -lvpu

CFLAGS = -mthumb -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -ftree-parallelize-loops=4
CFLAGS += -mfloat-abi=hard
CFLAGS += -O2
CFLAGS += -mfpu=neon -mvectorize-with-neon-quad
CFLAGS += -ffast-math
CFLAGS += -fopenmp
CFLAGS += -g

SRCS = main.c
OBJS = test

$(OBJS): $(SRCS)
$(CC) $(INC) $(CFLAGS) $^ -o $@ $(LIBS)

all: $(OBJS)
$(STRIP) $(OBJS)

.PHONY: clean

clean:
rm -f $(OBJS) *.elf *.gdb *.o



main.c
Код
#include <unistd.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <g2d.h>
#include <linux/fb.h>
#include <linux/ipu.h>
#include <ncurses.h>
#include <omp.h>
#include <pthread.h>
#include <semaphore.h>
#include <sys/ioctl.h>
#include <sys/ipc.h>
#include <sys/mman.h>
#include <sys/msg.h>
#include <sys/prctl.h>
#include <sys/time.h>

int omp(const uint8_t * a, uint8_t * restrict n, uint32_t sx, uint32_t sy) {
uint32_t x,y;
int rv = 0;
#pragma omp parallel for num_threads(4)
for (y = 1; y<(sy-1); y++) {
for (x = 1; x<(sx-1); x++) {
n[y*sx+x] += (a[y*sx+x-1] + a[y*sx+x+1] + a[y*sx+x-sx] + a[y*sx+x+sx]);
}
rv += n[y*sx];
}


return 0;
}


int main(int argc, char **argv) {
uint8_t *output_image;
void * g2d_handle;
struct g2d_buf *s_buf;
int fbfd = 0;
uint8_t *fbp = 0;
struct fb_var_screeninfo vinfo;
struct fb_fix_screeninfo finfo;
long int screensize;
int rv;
//
output_image = malloc( 1456 * 1088* 4 );

initscr();
cbreak();
noecho();

g2d_open(&g2d_handle);
s_buf = g2d_alloc(1456 * 1088 * 4, 0);

fbfd = open("/dev/fb0", O_RDWR);
if (fbfd == -1) {
perror("Error: cannot open framebuffer device");
exit(1);
}
if (ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo) == -1) {
perror("Error reading fixed information");
exit(2);
}
if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo) == -1) {
perror("Error reading variable information");
exit(3);
}
screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8;
fbp = (char *)mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fbfd, 0);

rv = omp((uint8_t*)output_image, (uint8_t*)s_buf->buf_vaddr, 1456, 1088);

free(output_image);
munmap(fbp,screensize);
g2d_free(s_buf);
g2d_close(g2d_handle);
return rv;
}
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 31.03.2019 16:41 Сообщение: 5
sasamy
4.71

Пункты: 83770
Регистрация: 14.08.2009
Цитата
Описание:
Любое оконное приложение при закрытии завершается "SegmentationFault" при запуске с консоли самой платы, и "Process killed by signal" при удаленном запуске из qtcreator.


в дефолтном конфиге собираются примеры

/usr/lib/qt/examples/

на каком примере можно воспроизвести это ?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 31.03.2019 16:47 Редактировалось 31.03.2019 16:48 Сообщение: 6
sasamy
4.71

Пункты: 83770
Регистрация: 14.08.2009
Цитата

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


у вас есть переменная окружения SYSROOT но вы не сообщаете о ней компилятору

--sysroot=$(SYSROOT)

https://github.com/sasamy/v4l2-event-tst/blob/master/Makefile#L12
Спуститься к концу Подняться к началу
Персональная информация
DeD
Добавлено 01.04.2019 11:54 Сообщение: 7
DeD
0

Пункты: 393
Регистрация: 27.02.2012
Цитата
Цитата
Описание:
Любое оконное приложение при закрытии завершается "SegmentationFault" при запуске с консоли самой платы, и "Process killed by signal" при удаленном запуске из qtcreator.


в дефолтном конфиге собираются примеры

/usr/lib/qt/examples/

на каком примере можно воспроизвести это ?


Можно просто создать по шаблону пустой проект c MainWindow, добавить в него любой способ закрытия (по таймеру, кнопкой, через сигналы, как угодно) и при выходе из main будет вылет. В любойм примере с gui тоже проявлется, все рабоатет, но при выходе Segmentation fault.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 01.04.2019 12:11 Редактировалось 01.04.2019 12:15 Сообщение: 8
sasamy
4.71

Пункты: 83770
Регистрация: 14.08.2009
Цитата

В любойм примере с gui тоже проявлется, все рабоатет, но при выходе Segmentation fault.


запукаю у себя примеры - выход без сегфолтов, с кнопкой выхода на qml

/usr/lib/qt/examples/multimedia/video/qmlvideo/qmlvideo

у вас оно тоже сегфолтится при выходе ? какой готовый пример с виджетами или с qml можно запустить чтобы проверить у себя ?
Спуститься к концу Подняться к началу
Персональная информация
DeD
Добавлено 01.04.2019 14:53 Редактировалось 01.04.2019 14:55 Сообщение: 9
DeD
0

Пункты: 393
Регистрация: 27.02.2012
Цитата
Цитата

В любойм примере с gui тоже проявлется, все рабоатет, но при выходе Segmentation fault.


запукаю у себя примеры - выход без сегфолтов, с кнопкой выхода на qml

/usr/lib/qt/examples/multimedia/video/qmlvideo/qmlvideo

у вас оно тоже сегфолтится при выходе ? какой готовый пример с виджетами или с qml можно запустить чтобы проверить у себя ?


С виджетами, без qml. При запуске из qtcreator сообщение "Process killed by signal", при запуске из консоли устройства "Segmentation fault". Любой готовый пример с виджетами, я сборку примеров отключил, сбираю из qtcreator.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 01.04.2019 15:46 Сообщение: 10
sasamy
4.71

Пункты: 83770
Регистрация: 14.08.2009
Цитата

Любой готовый пример с виджетами, я сборку примеров отключил, сбираю из qtcreator.


нашел готовые примеры с кнопками выхода на виджетах - действительно сегфолтятся при закрытии, на qml штатно завершают работу. Не знаю пока в чем дело - я не спец в Qt.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux